UNPKG

sohelp-ele

Version:

SohelpEle Library

114 lines (113 loc) 3.42 kB
"use strict"; var Vue = require("vue"); var sohelpVformModal = require("../sohelp-vform-modal"); function _interopDefaultLegacy(e) { return e && typeof e === "object" && "default" in e ? e : { "default": e }; } var Vue__default = /* @__PURE__ */ _interopDefaultLegacy(Vue); var sohelpVformModal__default = /* @__PURE__ */ _interopDefaultLegacy(sohelpVformModal); const sohelpVformModalConstructor = Vue__default["default"].extend(sohelpVformModal__default["default"]); function _isRefid(refid) { if (!refid) { return false; } return !refid.startsWith("/") && `/${refid}` || refid; } function _createInstance(_refid, config) { let date = +new Date(); const closeId = "modal-" + Math.floor(Math.random() * 100 + 1) + date; let _config = Object.assign( { title: "", refid: _refid, closeId, close: () => { SohelpModals.close(_refid, closeId); } }, config ); const instance = new sohelpVformModalConstructor(); Object.assign(instance, _config); instance.$mount(); let _poolNode = document.querySelector(".modal-pool"); if (_poolNode) { instance.$el.classList.add(closeId); document.body.querySelector(".modal-pool").appendChild(instance.$el); } else { let _pool = document.createElement("div"); _pool.className = "modal-pool"; instance.$el.classList.add(closeId); _pool.appendChild(instance.$el); document.body.appendChild(_pool); } return new Promise((resolve, reject) => { if (instance.done) { resolve(instance); } else { let timer = setInterval(() => { if (instance.done) { clearInterval(timer); resolve(instance); } }, 17); } }); } const SohelpModals = { list: {}, open: async function(refid, config = {}) { let _refid = _isRefid(refid); if (!_refid) { throw new Error("\u8BF7\u8BBE\u7F6E refid"); } const _instance = this.list[_refid]; if (_instance) { _instance.show(); return _instance; } else { const _instance2 = await _createInstance(_refid, config); this.list[_refid] = _instance2; return _instance2; } }, get: function(refid) { var _a; let _refid = _isRefid(refid); if (!_refid) { throw new Error("\u8BF7\u586B\u5199\u8981\u83B7\u53D6\u7684 refid"); } return (_a = this.list[_refid]) != null ? _a : void 0; }, hide: function(refid) { var _a, _b; let _refid = _isRefid(refid); if (!_refid) { throw new Error("\u8BF7\u586B\u5199\u8981\u9690\u85CF\u7684 refid"); } return (_b = (_a = this.list[_refid]) == null ? void 0 : _a.hide()) != null ? _b : void 0; }, show: function(refid, config = {}) { let _refid = _isRefid(refid); if (!_refid || !this.list[_refid]) { throw new Error("\u8BF7\u586B\u5199\u8981\u663E\u793A\u7684 refid"); } return this.list[_refid].show(config); }, close: function(refid, closeId) { let _refid = _isRefid(refid); if (!_refid) { throw new Error("\u8BF7\u586B\u5199\u8981\u5173\u95ED\u7684 refid"); } delete this.list[_refid]; if (closeId) { let _p = document.querySelector("." + closeId); _p && document.querySelector(".modal-pool").removeChild(_p); } }, destroyAll: function() { this.list = {}; document.body.removeChild(document.querySelector(".modal-pool")); } }; module.exports = SohelpModals;