UNPKG

sohelp-ele

Version:

SohelpEle Library

108 lines (107 loc) 3.1 kB
import Vue from "vue"; import sohelpVformModal from "../sohelp-vform-modal"; const sohelpVformModalConstructor = Vue.extend(sohelpVformModal); 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")); } }; export { SohelpModals as default };