mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 03:27:52 +00:00
feat: Vite + vue 3 💚 (#10047)
Fixes https://github.com/chatwoot/chatwoot/issues/8436 Fixes https://github.com/chatwoot/chatwoot/issues/9767 Fixes https://github.com/chatwoot/chatwoot/issues/10156 Fixes https://github.com/chatwoot/chatwoot/issues/6031 Fixes https://github.com/chatwoot/chatwoot/issues/5696 Fixes https://github.com/chatwoot/chatwoot/issues/9250 Fixes https://github.com/chatwoot/chatwoot/issues/9762 --------- Co-authored-by: Pranav <pranavrajs@gmail.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
This commit is contained in:
60
app/javascript/entrypoints/widget.js
Normal file
60
app/javascript/entrypoints/widget.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import { createApp } from 'vue';
|
||||
import { createI18n } from 'vue-i18n';
|
||||
|
||||
import VueDOMPurifyHTML from 'vue-dompurify-html';
|
||||
import store from '../widget/store';
|
||||
import App from '../widget/App.vue';
|
||||
import ActionCableConnector from '../widget/helpers/actionCable';
|
||||
import i18nMessages from '../widget/i18n';
|
||||
import router from '../widget/router';
|
||||
import { directive as onClickaway } from 'vue3-click-away';
|
||||
import { domPurifyConfig } from '../shared/helpers/HTMLSanitizer';
|
||||
import { plugin, defaultConfig } from '@formkit/vue';
|
||||
|
||||
// import { emitter } from 'shared/helpers/mitt';
|
||||
|
||||
// https://github.com/wearebraid/vue-formulate/issues/198
|
||||
// [VITE] [TODO] Re-enable this later
|
||||
// import VueFormulate from '@braid/vue-formulate';
|
||||
import {
|
||||
startsWithPlus,
|
||||
isPhoneNumberValidWithDialCode,
|
||||
} from 'shared/helpers/Validators';
|
||||
// const PhoneInput = () => import('../widget/components/Form/PhoneInput.vue');
|
||||
|
||||
const i18n = createI18n({
|
||||
legacy: false, // https://github.com/intlify/vue-i18n/issues/1902
|
||||
locale: 'en',
|
||||
messages: i18nMessages,
|
||||
});
|
||||
|
||||
const app = createApp(App);
|
||||
app.use(i18n);
|
||||
app.use(store);
|
||||
app.use(router);
|
||||
app.use(VueDOMPurifyHTML, domPurifyConfig);
|
||||
app.directive('on-clickaway', onClickaway);
|
||||
|
||||
app.use(
|
||||
plugin,
|
||||
defaultConfig({
|
||||
rules: {
|
||||
startsWithPlus: ({ value }) => startsWithPlus(value),
|
||||
isValidPhoneNumber: ({ value }) => isPhoneNumberValidWithDialCode(value),
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
// Event Bus
|
||||
// We can use the useEmitter directly
|
||||
// Vue.prototype.$emitter = emitter;
|
||||
|
||||
// Vue.config.productionTip = false;
|
||||
|
||||
window.onload = () => {
|
||||
window.WOOT_WIDGET = app.mount('#app');
|
||||
window.actionCable = new ActionCableConnector(
|
||||
window.WOOT_WIDGET,
|
||||
window.chatwootPubsubToken
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user