UNPKG

tass-ui

Version:

A high quality UI Toolkit built on Vue.js3+.

84 lines (83 loc) 2.67 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const message$1 = require("./message.js"); const message_vue_vue_type_script_setup_true_lang = require("./message.vue.js"); const vue = require("vue"); const common = require("../../../utils/common.js"); let seed = 1; let instances = []; let zIndex = 2e3; const message = function(options = {}, context) { if (common.isString(options) || vue.isVNode(options)) { options = { message: options }; } const id = `message_${seed++}`; let offset = 20; instances.forEach((v) => { var _a; offset += ((_a = v.el) == null ? void 0 : _a.offsetHeight) + 16; }); const userOnClose = options.onClose; const props = { ...options, zIndex: zIndex++, id, offset, onClose: () => { close(id, userOnClose); } }; const messageContent = props.message; const vm = vue.createVNode( message_vue_vue_type_script_setup_true_lang.default, props, common.isFunction(messageContent) ? { default: messageContent } : vue.isVNode(messageContent) ? { default: () => messageContent } : null ); vm.props.onDestroy = () => { vue.render(null, container); }; const container = document.createElement("div"); vue.render(vm, container); let appendTo = document.body; if (common.isString(options.appendTo)) { appendTo = document.querySelector(options.appendTo); } else if (options.appendTo && options.appendTo instanceof Element) { appendTo = options.appendTo; } appendTo.appendChild(container.firstElementChild); instances.push(vm); return { close: () => vm.component.proxy.visible = false }; }; message$1.messageTypes.forEach((type) => { message[type] = (options = {}, appContext) => { if (common.isString(options) || vue.isVNode(options)) { options = { message: options }; } message({ ...options, type }); }; }); function close(id, userClose) { var _a; const idx = instances.findIndex((vm2) => vm2.props.id === id); if (idx === -1) return; const vm = instances[idx]; userClose && userClose(vm); instances.splice(idx, 1); const removeHeight = vm.el.offsetHeight; for (let i = idx; i < instances.length; i++) { const pos = parseInt((_a = instances[i].el) == null ? void 0 : _a.style.top) - removeHeight + -16; instances[i].component.props.offset = pos; } } function closeAll() { for (let i = instances.length - 1; i >= 0; i--) { const instance = instances[i].component; (instance == null ? void 0 : instance.proxy).close(); } } message.closeAll = closeAll; exports.closeAll = closeAll; exports.default = message;