ivue-material-plus
Version:
A high quality UI components Library with Vue.js
1 lines • 8.14 kB
Source Map (JSON)
{"version":3,"file":"loading-bar.mjs","sources":["../../../../../src/components/ivue-loading-bar/loading-bar.ts"],"sourcesContent":["import { createVNode, render } from 'vue';\r\nimport LoadingBar from './index.vue';\r\n\r\ntype options = {\r\n percent?: number;\r\n status?: string;\r\n color?: string;\r\n failedColor?: string;\r\n height?: number;\r\n visible?: boolean;\r\n duration?: number;\r\n};\r\n\r\n// 实例列表\r\nlet instances;\r\n\r\n// 进度条的颜色\r\nlet color = 'primary';\r\n// 失败时的进度条颜色\r\nlet failedColor = 'error';\r\n// 进度条高度\r\nlet height = 2;\r\n// 隐藏时的持续时间\r\nlet duration = 800;\r\nlet timer: ReturnType<typeof setInterval> | null;\r\n\r\nconst newInstance = (options: options) => {\r\n // 实例对象\r\n const vm = instances || createVNode(LoadingBar, options);\r\n\r\n const container = document.createElement('div');\r\n\r\n // 清除通知元素防止内存泄漏\r\n vm.props.onDestroy = () => {\r\n // 既然元素被销毁了,那么VNode也应该被GC回收\r\n // 我们不想造成任何内存泄漏,因为我们已经返回 vm 作为对用户的引用\r\n // 以便我们手动将其设置为 false。\r\n render(null, container);\r\n };\r\n\r\n render(vm, container);\r\n\r\n // 当 close 函数被调用时,实例将删除此项。 所以我们不需要担心。\r\n instances = vm;\r\n\r\n document.body.appendChild(container.firstElementChild);\r\n\r\n return {\r\n update(options: options) {\r\n const data = vm.component.proxy.data;\r\n\r\n if (options.percent !== undefined) {\r\n data.percent = options.percent;\r\n }\r\n\r\n data.visible = options.visible;\r\n\r\n if (options.status) {\r\n data.status = options.status;\r\n }\r\n },\r\n component: vm,\r\n // 销毁\r\n destroy() {\r\n document.body.removeChild(\r\n document.getElementsByClassName('ivue-loading-bar')[0]\r\n );\r\n },\r\n };\r\n};\r\n\r\n// 获取组件实例\r\nconst getIvueLoadingBarInstance = () => {\r\n instances =\r\n instances ||\r\n newInstance({\r\n color: color,\r\n failedColor: failedColor,\r\n height: height,\r\n });\r\n\r\n return instances;\r\n};\r\n\r\n// 更新组件\r\nconst update = (options: options) => {\r\n const instance = getIvueLoadingBarInstance();\r\n\r\n instance.update(options);\r\n};\r\n\r\n// 清除定时器\r\nconst clearTimer = () => {\r\n if (timer) {\r\n clearInterval(timer);\r\n timer = null;\r\n }\r\n};\r\n\r\n// 隐藏组件\r\nconst hide = () => {\r\n setTimeout(() => {\r\n update({\r\n visible: false,\r\n });\r\n\r\n setTimeout(() => {\r\n update({\r\n percent: 0,\r\n });\r\n }, 500);\r\n }, duration);\r\n};\r\n\r\nexport default {\r\n // 开始\r\n start() {\r\n // 如果已经开始了不执行\r\n if (timer) {\r\n return;\r\n }\r\n\r\n let percent = 0;\r\n\r\n update({\r\n percent: percent,\r\n status: 'success',\r\n visible: true,\r\n });\r\n\r\n // 设置进度\r\n timer = setInterval(() => {\r\n percent += Math.floor(Math.random() * 3 + 1);\r\n\r\n // 进度大于95清除定时器\r\n if (percent > 95) {\r\n clearTimer();\r\n }\r\n\r\n update({\r\n percent: percent,\r\n status: 'success',\r\n visible: true,\r\n });\r\n }, 200);\r\n },\r\n // 更新\r\n update(percent: number) {\r\n clearTimer();\r\n\r\n update({\r\n percent: percent,\r\n status: 'success',\r\n visible: true,\r\n });\r\n },\r\n // 完成\r\n finish() {\r\n clearTimer();\r\n\r\n update({\r\n percent: 100,\r\n status: 'success',\r\n visible: true,\r\n });\r\n\r\n // 隐藏组件\r\n hide();\r\n },\r\n // 错误\r\n error() {\r\n clearTimer();\r\n\r\n update({\r\n percent: 100,\r\n status: 'error',\r\n visible: true,\r\n });\r\n\r\n // 隐藏组件\r\n hide();\r\n },\r\n // 公共参数\r\n config(options: options) {\r\n if (options.color) {\r\n color = options.color;\r\n }\r\n\r\n if (options.failedColor) {\r\n failedColor = options.failedColor;\r\n }\r\n\r\n if (options.height) {\r\n height = options.height;\r\n }\r\n\r\n if (options.duration) {\r\n duration = options.duration;\r\n }\r\n },\r\n // 销毁\r\n destroy() {\r\n clearTimer();\r\n const _instance = getIvueLoadingBarInstance();\r\n\r\n instances = null;\r\n\r\n _instance.destroy();\r\n },\r\n};\r\n"],"names":["LoadingBar","options"],"mappings":"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"}