UNPKG

@mekari/mekari-ui-vue

Version:

--- General web components in Mekari. The components are made using vue.js as its framework. Styling of components on Mekari UI Vue uses [Mekari UI Toolkit](https://bitbucket.org/mid-kelola-indonesia/mekari-ui-toolkit/src/master/). Don't forget to import

84 lines (77 loc) 1.94 kB
import ToastContainer from './index'; import eventBus from './bus'; const allTimeout = []; const Api = (Vue, globalOptions = {}) => { return { openSingleToast(propsData) { allTimeout.forEach(timeout => { clearTimeout(timeout); }); this.clear(); allTimeout.push(setTimeout(() => { return new (Vue.extend(ToastContainer))({ el: document.createElement('div'), propsData, }); }, 250)); }, openMultipleToast(propsData) { return new (Vue.extend(ToastContainer))({ el: document.createElement('div'), propsData, }); }, open(options) { let description; if (typeof options === 'string') description = options; const defaultOptions = { description, }; let propsData = { ...defaultOptions, ...globalOptions }; if (typeof options !== 'string') propsData = { ...propsData, ...options }; if (options.singleToast) { return this.openSingleToast(propsData); } return this.openMultipleToast(propsData); }, clear() { eventBus.emit('toast-clear'); }, success(message, options = {}) { return this.open({ description: message, type: 'success', ...options, }); }, error(message, options = {}) { return this.open({ description: message, type: 'error', ...options, }); }, info(message, options = {}) { return this.open({ description: message, type: 'info', ...options, }); }, warning(message, options = {}) { return this.open({ description: message, type: 'warning', ...options, }); }, default(message, options = {}) { return this.open({ description: message, type: 'default', ...options, }); }, }; }; export default Api;