UNPKG

@mobileaction/ui-modules

Version:

Mobile Action common modules for Vue projects

170 lines (143 loc) 4.34 kB
# ui-modules ## Using modules ### MaLogger First install plugin to vue ```js import { MaLoggerPlugin } from '@mobileaction/ui-modules'; app.use(MaLoggerPlugin, { isDebug: () => true, // enable debug level output }); ``` Then you can either use: ```js app.config.globalProperties.$log.info('Hello world!'); ``` or from component with component path (e.g. components/MyButton.vue): ```js export default { name: 'my-button', mounted() { this.$log.warn('Not implemented yet') } } ``` ``` components/MyButton Not implemented yet ``` ### MaSessionStorage and MaLocalStorage #### Installing Plugin Install plugin with reducers ```js import { MaSessionStorage } from '@mobileaction/ui-modules'; app.use(MaSessionStorage, [ 'firstVar', // only name is given, and it will be used as key as well { name: 'secondVar' }, // object form { // reducer is given as a different string, note that it will be still prefixed name: 'thirdVar', reducer: 'thirdVarCustomStorageKey', }, { // a custom reducer function, it can use `this.reduce` name: 'fourthVar', reducer(val) { // can use this.reduce to customize storing and returning return this.reduce('fourthVarCustomStorageKey', val === true) === true; }, }, ], { windowGlobal: NODE_ENV !== 'production', // enable global on window for dev }); ``` `reduce` function takes 1 required key and one optional value. If value is given stores given value and returns otherwise just returns the stored value (null if nothing is stored). `MaLocalStorage` has appVersion predefined in it with default value of '0.0.0'. ### Usage You can either use instance or global version through `$maLocalStorage` and `$maSessionStorage`. You can access the reducers as properties e.g: ```js export default { // ... data() { return { clicked: this.$maLocalStorage.firstVar, }; }, methods: { storeOnClick() { this.$maLocalStorage.firstVar = true; }, }, // ... } ``` ### MaFullStory #### Installing Install the plugin and initialize with user object. You **MUST** give the list of domain on which plugin will be loaded. ```js import { MaFullStory } from '@mobileaction/ui-modules'; app.use(MaFullStory, { domains: ['YOUR_DOMAIN_1', 'YOUR_DOMAIN_2'], fsParams: { namespace: 'FS', org: 'YOUR_FS_ORG_ID', // this is required } }); ``` #### Usage You can use `$maFullStory` through either global or instance scope. You can also get `window.FS` through `$maFullStory.fs()` e.g: ```js export default { methods: { onUserFetch(user) { this.$maFullStory.initialize(user, 'my-user'); } }, mounted() { const sessionURL = this.$maFullStory.fs().getCurrentSessionURL(); console.log('FS session url: ', sessionURL); }, } ``` ### MaIntercom #### Installing Install the plugin and boot with user object. You **MUST** give the app ID on which plugin will be loaded. ```js import { MaIntercom } from '@mobileaction/ui-modules'; app.use(MaIntercom, { appId: 'app_id', // required autoStart: true, // optional, default is false }); ``` #### Usage You can use `$maIntercom` through either global or instance scope. You can also get `window.Intercom` after intercom script is successfully loaded: ```js export default { methods: { onUserFetch(user) { const settings = { name: user.name, email: user.username, created_at: user.createdAt, user_hash: user.userHash, user_id: user.userId, }; this.$maIntercom.boot(settings); } }, } ``` ### MaGoogleRecaptcha #### Installing Install the plugin and boot with user object. You **MUST** give **h** and **siteKey** on which plugin will render using it. ```js import { h } from 'vue'; import { MaGoogleRecaptcha } from '@mobileaction/ui-modules'; import { GOOGLE_RECAPTCHA_SITE_KEY } from '@/common/config'; app.use(MaGoogleRecaptcha, { h, // required siteKey: GOOGLE_RECAPTCHA_SITE_KEY // required }); ``` ## Possible Problems and Solutions If the library you depend on have process.env usages, then you can use https://www.npmjs.com/package/@rollup/plugin-replace