index.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. "use strict";
  2. function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = exports.VxeModal = exports.ModalController = exports.Modal = void 0;
  7. var _vue = _interopRequireDefault(require("vue"));
  8. var _core = require("@vxe-ui/core");
  9. var _xeUtils = _interopRequireDefault(require("xe-utils"));
  10. var _modal = _interopRequireWildcard(require("./src/modal"));
  11. var _dynamics = require("../dynamics");
  12. function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
  13. 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; }
  14. function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
  15. function handleModal(options) {
  16. // 使用动态组件渲染动态弹框
  17. (0, _dynamics.checkDynamic)();
  18. return new Promise(function (resolve) {
  19. var opts = Object.assign({}, options);
  20. if (opts.id && _modal.allActiveModals.some(function (comp) {
  21. return comp.id === opts.id;
  22. })) {
  23. resolve('exist');
  24. } else {
  25. var events = Object.assign({}, opts.events);
  26. var modalOpts = {
  27. key: _xeUtils.default.uniqueId(),
  28. props: Object.assign(opts, {
  29. value: true
  30. }),
  31. on: Object.assign(Object.assign({}, events), {
  32. hide: function hide(params) {
  33. var modalList = _dynamics.dynamicStore.modals;
  34. if (events.hide) {
  35. events.hide.call(this, params);
  36. }
  37. _dynamics.dynamicStore.modals = modalList.filter(function (item) {
  38. return item.key !== modalOpts.key;
  39. });
  40. resolve(params.type);
  41. }
  42. })
  43. };
  44. _dynamics.dynamicStore.modals.push(modalOpts);
  45. }
  46. });
  47. }
  48. function getModal(id) {
  49. return _xeUtils.default.find(_modal.allActiveModals, function ($modal) {
  50. return $modal.id === id;
  51. });
  52. }
  53. /**
  54. * 全局关闭动态的活动窗口(只能用于关闭动态的创建的活动窗口)
  55. * 如果传 id 则关闭指定的窗口
  56. * 如果不传则关闭所有窗口
  57. */
  58. function closeModal(id) {
  59. var modals = id ? [getModal(id)] : _modal.allActiveModals;
  60. var restPromises = [];
  61. modals.forEach(function ($modal) {
  62. if ($modal) {
  63. restPromises.push($modal.close());
  64. }
  65. });
  66. return Promise.all(restPromises);
  67. }
  68. function handleOpen(defOpts, content, title, options) {
  69. var opts;
  70. if (_xeUtils.default.isObject(content)) {
  71. opts = content;
  72. } else {
  73. opts = {
  74. content: _xeUtils.default.toValueString(content),
  75. title: title
  76. };
  77. }
  78. return handleModal(Object.assign(Object.assign(Object.assign({}, defOpts), options), opts));
  79. }
  80. function openModal(options) {
  81. return handleOpen({
  82. type: 'modal'
  83. }, options);
  84. }
  85. function openAlert(content, title, options) {
  86. return handleOpen({
  87. type: 'alert',
  88. lockScroll: true,
  89. showHeader: true,
  90. showFooter: true
  91. }, content, title, options);
  92. }
  93. function openConfirm(content, title, options) {
  94. return handleOpen({
  95. type: 'confirm',
  96. status: 'question',
  97. lockScroll: true,
  98. showHeader: true,
  99. showFooter: true
  100. }, content, title, options);
  101. }
  102. function openMessage(content, options) {
  103. return handleOpen({
  104. type: 'message',
  105. mask: false,
  106. lockView: false,
  107. lockScroll: false,
  108. showHeader: false
  109. }, content, '', options);
  110. }
  111. function openNotification(content, title, options) {
  112. return handleOpen({
  113. type: 'notification',
  114. mask: false,
  115. lockView: false,
  116. lockScroll: false,
  117. showHeader: true,
  118. draggable: false,
  119. position: 'top-right',
  120. width: 320
  121. }, content, title, options);
  122. }
  123. var ModalController = exports.ModalController = {
  124. get: getModal,
  125. close: closeModal,
  126. open: openModal,
  127. alert: openAlert,
  128. confirm: openConfirm,
  129. message: openMessage,
  130. notification: openNotification
  131. };
  132. var VxeModal = exports.VxeModal = Object.assign(_modal.default, {
  133. install: function install(app) {
  134. app.component(_modal.default.name, _modal.default);
  135. // 兼容老版本
  136. if (!_vue.default.prototype.$vxe) {
  137. _vue.default.prototype.$vxe = {
  138. modal: ModalController
  139. };
  140. } else {
  141. _vue.default.prototype.$vxe.modal = ModalController;
  142. }
  143. }
  144. });
  145. _core.VxeUI.modal = ModalController;
  146. _dynamics.dynamicApp.use(VxeModal);
  147. _core.VxeUI.component(_modal.default);
  148. var Modal = exports.Modal = VxeModal;
  149. var _default = exports.default = VxeModal;