130 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.default = exports.VxeModal = exports.ModalController = exports.Modal = void 0;
 | 
						|
var _core = require("@vxe-ui/core");
 | 
						|
var _xeUtils = _interopRequireDefault(require("xe-utils"));
 | 
						|
var _modal = _interopRequireWildcard(require("./src/modal"));
 | 
						|
var _dynamics = require("../dynamics");
 | 
						|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
 | 
						|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
 | 
						|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 | 
						|
function handleModal(options) {
 | 
						|
  // 使用动态组件渲染动态弹框
 | 
						|
  (0, _dynamics.checkDynamic)();
 | 
						|
  return new Promise(resolve => {
 | 
						|
    const opts = Object.assign({}, options);
 | 
						|
    if (opts.id && _modal.allActiveModals.some(comp => comp.props.id === opts.id)) {
 | 
						|
      resolve('exist');
 | 
						|
    } else {
 | 
						|
      const _onHide = opts.onHide;
 | 
						|
      const modalOpts = Object.assign(opts, {
 | 
						|
        key: _xeUtils.default.uniqueId(),
 | 
						|
        modelValue: true,
 | 
						|
        onHide(params) {
 | 
						|
          const modalList = _dynamics.dynamicStore.modals;
 | 
						|
          if (_onHide) {
 | 
						|
            _onHide(params);
 | 
						|
          }
 | 
						|
          _dynamics.dynamicStore.modals = modalList.filter(item => item.key !== modalOpts.key);
 | 
						|
          resolve(params.type);
 | 
						|
        }
 | 
						|
      });
 | 
						|
      _dynamics.dynamicStore.modals.push(modalOpts);
 | 
						|
    }
 | 
						|
  });
 | 
						|
}
 | 
						|
function getModal(id) {
 | 
						|
  return _xeUtils.default.find(_modal.allActiveModals, $modal => $modal.props.id === id);
 | 
						|
}
 | 
						|
/**
 | 
						|
 * 全局关闭动态的活动窗口(只能用于关闭动态的创建的活动窗口)
 | 
						|
 * 如果传 id 则关闭指定的窗口
 | 
						|
 * 如果不传则关闭所有窗口
 | 
						|
 */
 | 
						|
function closeModal(id) {
 | 
						|
  const modals = id ? [getModal(id)] : _modal.allActiveModals;
 | 
						|
  const restPromises = [];
 | 
						|
  modals.forEach($modal => {
 | 
						|
    if ($modal) {
 | 
						|
      restPromises.push($modal.close());
 | 
						|
    }
 | 
						|
  });
 | 
						|
  return Promise.all(restPromises);
 | 
						|
}
 | 
						|
function handleOpen(defOpts, content, title, options) {
 | 
						|
  let opts;
 | 
						|
  if (_xeUtils.default.isObject(content)) {
 | 
						|
    opts = content;
 | 
						|
  } else {
 | 
						|
    opts = {
 | 
						|
      content: _xeUtils.default.toValueString(content),
 | 
						|
      title
 | 
						|
    };
 | 
						|
  }
 | 
						|
  return handleModal(Object.assign(Object.assign(Object.assign({}, defOpts), options), opts));
 | 
						|
}
 | 
						|
function openModal(options) {
 | 
						|
  return handleOpen({
 | 
						|
    type: 'modal'
 | 
						|
  }, options);
 | 
						|
}
 | 
						|
function openAlert(content, title, options) {
 | 
						|
  return handleOpen({
 | 
						|
    type: 'alert',
 | 
						|
    lockScroll: true,
 | 
						|
    showHeader: true,
 | 
						|
    showFooter: true
 | 
						|
  }, content, title, options);
 | 
						|
}
 | 
						|
function openConfirm(content, title, options) {
 | 
						|
  return handleOpen({
 | 
						|
    type: 'confirm',
 | 
						|
    status: 'question',
 | 
						|
    lockScroll: true,
 | 
						|
    showHeader: true,
 | 
						|
    showFooter: true
 | 
						|
  }, content, title, options);
 | 
						|
}
 | 
						|
function openMessage(content, options) {
 | 
						|
  return handleOpen({
 | 
						|
    type: 'message',
 | 
						|
    mask: false,
 | 
						|
    lockView: false,
 | 
						|
    lockScroll: false,
 | 
						|
    showHeader: false
 | 
						|
  }, content, '', options);
 | 
						|
}
 | 
						|
function openNotification(content, title, options) {
 | 
						|
  return handleOpen({
 | 
						|
    type: 'notification',
 | 
						|
    mask: false,
 | 
						|
    lockView: false,
 | 
						|
    lockScroll: false,
 | 
						|
    showHeader: true,
 | 
						|
    draggable: false,
 | 
						|
    position: 'top-right',
 | 
						|
    width: 320
 | 
						|
  }, content, title, options);
 | 
						|
}
 | 
						|
const ModalController = exports.ModalController = {
 | 
						|
  get: getModal,
 | 
						|
  close: closeModal,
 | 
						|
  open: openModal,
 | 
						|
  alert: openAlert,
 | 
						|
  confirm: openConfirm,
 | 
						|
  message: openMessage,
 | 
						|
  notification: openNotification
 | 
						|
};
 | 
						|
const VxeModal = exports.VxeModal = Object.assign(_modal.default, {
 | 
						|
  install: function (app) {
 | 
						|
    app.component(_modal.default.name, _modal.default);
 | 
						|
  }
 | 
						|
});
 | 
						|
_core.VxeUI.modal = ModalController;
 | 
						|
_dynamics.dynamicApp.use(VxeModal);
 | 
						|
_core.VxeUI.component(_modal.default);
 | 
						|
const Modal = exports.Modal = VxeModal;
 | 
						|
var _default = exports.default = VxeModal; |