From 1cb67ddba8759c430e935d38cbe7ec42909628cf Mon Sep 17 00:00:00 2001 From: sajjad Date: Mon, 18 Mar 2024 04:03:05 -0700 Subject: [PATCH] fix --- .gitignore | 2 + build/rollup.config.js | 18 + package-lock.json | 9011 +++++++++++++++++++++++++++ package.json | 36 + src/MeshkeeToast.vue | 192 + src/api.js | 55 + src/bus.js | 3 + src/helpers.js | 49 + src/main.js | 51 + src/positions.js | 8 + src/theme/_animations.scss | 59 + src/theme/bootstrap/_variables.scss | 1 + src/theme/bootstrap/index.scss | 5 + src/theme/default/_main.scss | 78 + src/theme/default/_variables.scss | 9 + src/theme/default/index.scss | 3 + src/theme/sugar/_variables.scss | 12 + src/theme/sugar/icons.scss | 36 + src/theme/sugar/icons/error.svg | 4 + src/theme/sugar/icons/info.svg | 4 + src/theme/sugar/icons/success.svg | 4 + src/theme/sugar/icons/warning.svg | 4 + src/theme/sugar/index.scss | 4 + src/timer.js | 24 + 24 files changed, 9672 insertions(+) create mode 100644 .gitignore create mode 100644 build/rollup.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/MeshkeeToast.vue create mode 100644 src/api.js create mode 100644 src/bus.js create mode 100644 src/helpers.js create mode 100644 src/main.js create mode 100644 src/positions.js create mode 100644 src/theme/_animations.scss create mode 100644 src/theme/bootstrap/_variables.scss create mode 100644 src/theme/bootstrap/index.scss create mode 100644 src/theme/default/_main.scss create mode 100644 src/theme/default/_variables.scss create mode 100644 src/theme/default/index.scss create mode 100644 src/theme/sugar/_variables.scss create mode 100644 src/theme/sugar/icons.scss create mode 100644 src/theme/sugar/icons/error.svg create mode 100644 src/theme/sugar/icons/info.svg create mode 100644 src/theme/sugar/icons/success.svg create mode 100644 src/theme/sugar/icons/warning.svg create mode 100644 src/theme/sugar/index.scss create mode 100644 src/timer.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76add87 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist \ No newline at end of file diff --git a/build/rollup.config.js b/build/rollup.config.js new file mode 100644 index 0000000..b0bdf52 --- /dev/null +++ b/build/rollup.config.js @@ -0,0 +1,18 @@ +import commonjs from '@rollup/plugin-commonjs'; // Convert CommonJS modules to ES6 +import vue from 'rollup-plugin-vue'; // Handle .vue SFC files +import buble from '@rollup/plugin-buble'; // Transpile/polyfill with reasonable browser support +export default { + input: 'src/main.js', // Path relative to package.json + output: { + name: 'MeshkeeToast', + exports: 'named', + }, + plugins: [ + commonjs(), + vue({ + css: true, // Dynamically inject css as a \ No newline at end of file diff --git a/src/api.js b/src/api.js new file mode 100644 index 0000000..811a1d0 --- /dev/null +++ b/src/api.js @@ -0,0 +1,55 @@ +import MeshkeeToast from './MeshkeeToast.vue' +import { createComponent } from './helpers'; +import eventBus from './bus.js'; + +export const useToast = (globalProps = {}) => { + return { + open(options) { + let message = null; + if (typeof options === 'string') message = options; + + const defaultProps = { + message + }; + + const propsData = Object.assign({}, defaultProps, globalProps, options); + const instance = createComponent(MeshkeeToast, propsData, document.body); + return { + dismiss: instance.dismiss + } + }, + clear() { + eventBus.emit('toast-clear') + }, + success(message, options = {}) { + return this.open(Object.assign({}, { + message, + type: 'success' + }, options)) + }, + error(message, options = {}) { + return this.open(Object.assign({}, { + message, + type: 'error' + }, options)) + }, + info(message, options = {}) { + return this.open(Object.assign({}, { + message, + type: 'info' + }, options)) + }, + warning(message, options = {}) { + return this.open(Object.assign({}, { + message, + type: 'warning' + }, options)) + }, + default(message, options = {}) { + return this.open(Object.assign({}, { + message, + type: 'default' + }, options)) + } + } +}; diff --git a/src/bus.js b/src/bus.js new file mode 100644 index 0000000..f6505f0 --- /dev/null +++ b/src/bus.js @@ -0,0 +1,3 @@ +import mitt from 'mitt' +const eventBus = mitt(); +export default eventBus; \ No newline at end of file diff --git a/src/helpers.js b/src/helpers.js new file mode 100644 index 0000000..fab2da6 --- /dev/null +++ b/src/helpers.js @@ -0,0 +1,49 @@ +import Vue from 'vue'; +export const removeElement = (el) => { + console.log(el); + if (typeof el.remove !== 'undefined') { + el.remove() + } else { + if (el.parentNode) el.parentNode.removeChild(el) + } +} + +export const createComponent = (component, props, parentContainer, slots = {}) => { + // const vNode = h(component, props, slots) + // const container = document.createElement('div'); + // console.log(parentContainer, container); + // container.classList.add('v-toast--pending') + // parentContainer.appendChild(container); + // h(vNode, container); + + // return vNode.component + // return Vue.component('MeshkeeToast', { + // render: (createElement) => { + // return createElement( + // 'div', + // { class: { 'v-toast--pending': true } }, + // MeshkeeToast + // ) + // } + // }); + const toastTpl = Vue.extend({ + data() { + return { + } + }, + render(h) { + return h( + component, + { + class: ['lx-toast', 'lx-toast-lx-word-wrap'], + style: this.extStyle, + props + } + ) + } + }); + let toastVM = new toastTpl(); + const tpl = toastVM.$mount().$el; + parentContainer.appendChild(tpl); + return toastVM.$children[0]; +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..e442c42 --- /dev/null +++ b/src/main.js @@ -0,0 +1,51 @@ +// Import vue component +import Vue from 'vue'; +import MeshkeeToast from './MeshkeeToast.vue'; +import { useToast } from './api'; + +// Vue.prototype.$meshkeeToast = function () { +// console.log(324); +// return 321; +// } +// // Declare install function executed by Vue.use() +// export function install(Vue) { +// console.log(43); + +// if (install.installed) return; +// install.installed = true; +// Vue.prototype.$meshkeeToast = function () { +// console.log(324); +// return 321; +// } +// Vue.component('MeshkeeToast', MeshkeeToast); +// } + +// // Create module definition for Vue.use() +// const plugin = { +// install, +// }; + +// // Auto-install when vue is found (eg. in browser via