sohelp-ele
Version:
SohelpEle Library
114 lines (113 loc) • 3.42 kB
JavaScript
;
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;