diff --git a/app/javascript/entrypoints/ui.js b/app/javascript/entrypoints/ui.js index 28b126787..d18521326 100644 --- a/app/javascript/entrypoints/ui.js +++ b/app/javascript/entrypoints/ui.js @@ -1,34 +1,25 @@ -import { h, defineCustomElement } from 'vue'; +import { defineCustomElement } from 'vue'; -// Import dashboard styles import '../dashboard/assets/scss/app.scss'; import 'vue-multiselect/dist/vue-multiselect.css'; -// Import floating-vue styles from dashboard.js import 'floating-vue/dist/style.css'; -const ChatButton = { - name: 'ChatButton', - props: { - label: { - type: String, - default: 'Click me', - }, - }, - render() { - return h( - 'button', - { - class: 'cha-button', - onClick: this.handleClick, - }, - this.label - ); - }, - methods: { - handleClick() { - // console.log('Button clicked'); - }, - }, -}; +import store from 'dashboard/store'; +import constants from 'dashboard/constants/globals'; +import axios from 'axios'; +import createAxios from 'dashboard/helper/APIHelper'; +import commonHelpers from 'dashboard/helper/commons'; + +import ChatButton from '../ui/ChatButton.vue'; + +commonHelpers(); +window.WootConstants = constants; +window.axios = createAxios(axios); export const buttonElement = defineCustomElement(ChatButton); + +// eslint-disable-next-line no-underscore-dangle +window.__CHATWOOT_STORE__ = store; +customElements.define('chat-button', buttonElement); + +export { store, ChatButton }; diff --git a/app/javascript/ui/ChatButton.vue b/app/javascript/ui/ChatButton.vue new file mode 100644 index 000000000..c95670231 --- /dev/null +++ b/app/javascript/ui/ChatButton.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/app/javascript/ui/usage.md b/app/javascript/ui/usage.md new file mode 100644 index 000000000..2e19bf1d9 --- /dev/null +++ b/app/javascript/ui/usage.md @@ -0,0 +1,46 @@ +# Chatwoot UI Components Usage Guide + +This document explains how to use the Chatwoot UI components library, which can be used both as Web Components (Custom Elements) and as Vue components. + +## Installation + +```bash +npm install @chatwoot/ui +# or +yarn add @chatwoot/ui +# or +pnpm add @chatwoot/ui +``` + +## Usage + +### As Web Components (Custom Elements) + +Web Components can be used in any HTML page or application, regardless of the framework. + +```html + + + + + +``` + +When the script loads, it automatically registers all custom elements with the browser, making them immediately available for use. + +#### Accessing the Store in Web Components + +The components have access to a global store instance. When using Web Components, the store is available through `window.__CHATWOOT_STORE__`. + +You can interact with the store from your JavaScript: + +```javascript +// Access the store +const store = window.__CHATWOOT_STORE__; + +// Check store state +console.log(store.state.someData); + +// Dispatch actions +store.dispatch('someAction', { data: 'example' }); +```