@liuzengwei/element-ui 2.15.5-xn.52 → 2.15.5-xn.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/lib/alert.js +2 -2
  2. package/lib/area-picker.js +2 -2
  3. package/lib/aside.js +2 -2
  4. package/lib/backtop.js +2 -2
  5. package/lib/badge.js +2 -2
  6. package/lib/breadcrumb-item.js +2 -2
  7. package/lib/breadcrumb.js +2 -2
  8. package/lib/button-group.js +2 -2
  9. package/lib/button.js +2 -2
  10. package/lib/calendar.js +2 -2
  11. package/lib/card.js +2 -2
  12. package/lib/carousel-item.js +2 -2
  13. package/lib/carousel.js +2 -2
  14. package/lib/cascader-panel.js +2 -2
  15. package/lib/cascader.js +4 -4
  16. package/lib/checkbox-button.js +2 -2
  17. package/lib/checkbox-group.js +2 -2
  18. package/lib/checkbox.js +2 -2
  19. package/lib/collapse-item.js +2 -2
  20. package/lib/collapse.js +2 -2
  21. package/lib/color-picker.js +4 -4
  22. package/lib/container.js +2 -2
  23. package/lib/date-picker.js +5 -5
  24. package/lib/dialog.js +2 -2
  25. package/lib/divider.js +2 -2
  26. package/lib/drawer.js +423 -23
  27. package/lib/dropdown-item.js +2 -2
  28. package/lib/dropdown-menu.js +2 -2
  29. package/lib/element-ui.common.js +393 -14
  30. package/lib/footer.js +2 -2
  31. package/lib/form.js +2 -2
  32. package/lib/header.js +2 -2
  33. package/lib/icon.js +2 -2
  34. package/lib/image.js +2 -2
  35. package/lib/index.js +1 -1
  36. package/lib/input-number.js +2 -2
  37. package/lib/link.js +2 -2
  38. package/lib/loading.js +2 -2
  39. package/lib/main.js +2 -2
  40. package/lib/menu-item-group.js +2 -2
  41. package/lib/menu-item.js +2 -2
  42. package/lib/message-box.js +4 -4
  43. package/lib/message.js +2 -2
  44. package/lib/notification.js +2 -2
  45. package/lib/option-group.js +2 -2
  46. package/lib/page-header.js +2 -2
  47. package/lib/pagination.js +2 -2
  48. package/lib/popover.js +2 -2
  49. package/lib/progress.js +2 -2
  50. package/lib/radio-button.js +2 -2
  51. package/lib/radio-group.js +2 -2
  52. package/lib/radio.js +9 -9
  53. package/lib/rate.js +2 -2
  54. package/lib/select.js +2 -2
  55. package/lib/spinner.js +2 -2
  56. package/lib/step.js +2 -2
  57. package/lib/steps.js +2 -2
  58. package/lib/switch.js +2 -2
  59. package/lib/tab-pane.js +2 -2
  60. package/lib/table.js +4 -4
  61. package/lib/time-picker.js +5 -5
  62. package/lib/time-select.js +2 -2
  63. package/lib/timeline-item.js +2 -2
  64. package/lib/tooltip.js +2 -2
  65. package/lib/transfer.js +2 -2
  66. package/lib/trigger.js +5 -5
  67. package/lib/upload.js +8 -8
  68. package/package.json +1 -1
  69. package/packages/drawer/src/main.vue +184 -9
  70. package/src/index.js +1 -1
@@ -113,19 +113,19 @@ module.exports = require("@liuzengwei/element-ui/lib/mixins/emitter");
113
113
  /* 4 */
114
114
  /***/ (function(module, exports) {
115
115
 
116
- module.exports = require("@liuzengwei/element-ui/lib/utils/vue-popper");
116
+ module.exports = require("vue");
117
117
 
118
118
  /***/ }),
119
119
  /* 5 */
120
120
  /***/ (function(module, exports) {
121
121
 
122
- module.exports = require("@liuzengwei/element-ui/lib/mixins/locale");
122
+ module.exports = require("@liuzengwei/element-ui/lib/utils/vue-popper");
123
123
 
124
124
  /***/ }),
125
125
  /* 6 */
126
126
  /***/ (function(module, exports) {
127
127
 
128
- module.exports = require("vue");
128
+ module.exports = require("@liuzengwei/element-ui/lib/mixins/locale");
129
129
 
130
130
  /***/ }),
131
131
  /* 7 */
@@ -810,7 +810,7 @@ var input_ = __webpack_require__(8);
810
810
  var input_default = /*#__PURE__*/__webpack_require__.n(input_);
811
811
 
812
812
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/mixins/locale"
813
- var locale_ = __webpack_require__(5);
813
+ var locale_ = __webpack_require__(6);
814
814
  var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
815
815
 
816
816
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/utils/util"
@@ -1850,7 +1850,7 @@ autocomplete_suggestionsvue_type_template_id_cd10dcf0_render._withStripped = tru
1850
1850
  // CONCATENATED MODULE: ./packages/autocomplete/src/autocomplete-suggestions.vue?vue&type=template&id=cd10dcf0&
1851
1851
 
1852
1852
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/utils/vue-popper"
1853
- var vue_popper_ = __webpack_require__(4);
1853
+ var vue_popper_ = __webpack_require__(5);
1854
1854
  var vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_);
1855
1855
 
1856
1856
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/scrollbar"
@@ -10428,7 +10428,7 @@ var mousewheel_mousewheel = function mousewheel(element, callback) {
10428
10428
  }
10429
10429
  });
10430
10430
  // EXTERNAL MODULE: external "vue"
10431
- var external_vue_ = __webpack_require__(6);
10431
+ var external_vue_ = __webpack_require__(4);
10432
10432
  var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
10433
10433
 
10434
10434
  // CONCATENATED MODULE: ./packages/table/src/util.js
@@ -41940,6 +41940,7 @@ var mainvue_type_template_id_a4885264_render = function() {
41940
41940
  class: _vm.referenceMode
41941
41941
  ? "el-drawer__wrapper-reference"
41942
41942
  : "el-drawer__wrapper",
41943
+ style: _vm.wrapperStyle,
41943
41944
  attrs: { tabindex: "-1" }
41944
41945
  },
41945
41946
  [
@@ -42044,6 +42045,203 @@ mainvue_type_template_id_a4885264_render._withStripped = true
42044
42045
 
42045
42046
  // CONCATENATED MODULE: ./packages/drawer/src/main.vue?vue&type=template&id=a4885264&
42046
42047
 
42048
+ // CONCATENATED MODULE: ./src/utils/popup/popup-manager.js
42049
+
42050
+
42051
+
42052
+ var hasModal = false;
42053
+ var hasInitZIndex = false;
42054
+ var popup_manager_zIndex = void 0;
42055
+
42056
+ var popup_manager_getModal = function getModal() {
42057
+ if (external_vue_default.a.prototype.$isServer) return;
42058
+ var modalDom = popup_manager_PopupManager.modalDom;
42059
+ if (modalDom) {
42060
+ hasModal = true;
42061
+ } else {
42062
+ hasModal = false;
42063
+ modalDom = document.createElement('div');
42064
+ popup_manager_PopupManager.modalDom = modalDom;
42065
+
42066
+ modalDom.addEventListener('touchmove', function (event) {
42067
+ event.preventDefault();
42068
+ event.stopPropagation();
42069
+ });
42070
+
42071
+ modalDom.addEventListener('click', function () {
42072
+ popup_manager_PopupManager.doOnModalClick && popup_manager_PopupManager.doOnModalClick();
42073
+ });
42074
+ }
42075
+
42076
+ return modalDom;
42077
+ };
42078
+
42079
+ var popup_manager_instances = {};
42080
+
42081
+ var popup_manager_PopupManager = {
42082
+ modalFade: true,
42083
+
42084
+ getInstance: function getInstance(id) {
42085
+ return popup_manager_instances[id];
42086
+ },
42087
+
42088
+ register: function register(id, instance) {
42089
+ if (id && instance) {
42090
+ popup_manager_instances[id] = instance;
42091
+ }
42092
+ },
42093
+
42094
+ deregister: function deregister(id) {
42095
+ if (id) {
42096
+ popup_manager_instances[id] = null;
42097
+ delete popup_manager_instances[id];
42098
+ }
42099
+ },
42100
+
42101
+ nextZIndex: function nextZIndex() {
42102
+ return popup_manager_PopupManager.zIndex++;
42103
+ },
42104
+
42105
+ modalStack: [],
42106
+
42107
+ doOnModalClick: function doOnModalClick() {
42108
+ var topItem = popup_manager_PopupManager.modalStack[popup_manager_PopupManager.modalStack.length - 1];
42109
+ if (!topItem) return;
42110
+
42111
+ var instance = popup_manager_PopupManager.getInstance(topItem.id);
42112
+ if (instance && instance.closeOnClickModal) {
42113
+ instance.close();
42114
+ }
42115
+ },
42116
+
42117
+ openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {
42118
+ if (external_vue_default.a.prototype.$isServer) return;
42119
+ if (!id || zIndex === undefined) return;
42120
+ this.modalFade = modalFade;
42121
+
42122
+ var modalStack = this.modalStack;
42123
+
42124
+ for (var i = 0, j = modalStack.length; i < j; i++) {
42125
+ var item = modalStack[i];
42126
+ if (item.id === id) {
42127
+ return;
42128
+ }
42129
+ }
42130
+
42131
+ var modalDom = popup_manager_getModal();
42132
+
42133
+ Object(dom_["addClass"])(modalDom, 'v-modal');
42134
+ if (this.modalFade && !hasModal) {
42135
+ Object(dom_["addClass"])(modalDom, 'v-modal-enter');
42136
+ }
42137
+ if (modalClass) {
42138
+ var classArr = modalClass.trim().split(/\s+/);
42139
+ classArr.forEach(function (item) {
42140
+ return Object(dom_["addClass"])(modalDom, item);
42141
+ });
42142
+ }
42143
+ setTimeout(function () {
42144
+ Object(dom_["removeClass"])(modalDom, 'v-modal-enter');
42145
+ }, 200);
42146
+
42147
+ if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
42148
+ dom.parentNode.appendChild(modalDom);
42149
+ } else {
42150
+ document.body.appendChild(modalDom);
42151
+ }
42152
+
42153
+ if (zIndex) {
42154
+ modalDom.style.zIndex = zIndex;
42155
+ }
42156
+ modalDom.tabIndex = 0;
42157
+ modalDom.style.display = '';
42158
+
42159
+ this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
42160
+ },
42161
+
42162
+ closeModal: function closeModal(id) {
42163
+ var modalStack = this.modalStack;
42164
+ var modalDom = popup_manager_getModal();
42165
+
42166
+ if (modalStack.length > 0) {
42167
+ var topItem = modalStack[modalStack.length - 1];
42168
+ if (topItem.id === id) {
42169
+ if (topItem.modalClass) {
42170
+ var classArr = topItem.modalClass.trim().split(/\s+/);
42171
+ classArr.forEach(function (item) {
42172
+ return Object(dom_["removeClass"])(modalDom, item);
42173
+ });
42174
+ }
42175
+
42176
+ modalStack.pop();
42177
+ if (modalStack.length > 0) {
42178
+ modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
42179
+ }
42180
+ } else {
42181
+ for (var i = modalStack.length - 1; i >= 0; i--) {
42182
+ if (modalStack[i].id === id) {
42183
+ modalStack.splice(i, 1);
42184
+ break;
42185
+ }
42186
+ }
42187
+ }
42188
+ }
42189
+
42190
+ if (modalStack.length === 0) {
42191
+ if (this.modalFade) {
42192
+ Object(dom_["addClass"])(modalDom, 'v-modal-leave');
42193
+ }
42194
+ setTimeout(function () {
42195
+ if (modalStack.length === 0) {
42196
+ if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
42197
+ modalDom.style.display = 'none';
42198
+ popup_manager_PopupManager.modalDom = undefined;
42199
+ }
42200
+ Object(dom_["removeClass"])(modalDom, 'v-modal-leave');
42201
+ }, 200);
42202
+ }
42203
+ }
42204
+ };
42205
+
42206
+ Object.defineProperty(popup_manager_PopupManager, 'zIndex', {
42207
+ configurable: true,
42208
+ get: function get() {
42209
+ if (!hasInitZIndex) {
42210
+ popup_manager_zIndex = popup_manager_zIndex || (external_vue_default.a.prototype.$ELEMENT || {}).zIndex || 2000;
42211
+ hasInitZIndex = true;
42212
+ }
42213
+ return popup_manager_zIndex;
42214
+ },
42215
+ set: function set(value) {
42216
+ popup_manager_zIndex = value;
42217
+ }
42218
+ });
42219
+
42220
+ var popup_manager_getTopPopup = function getTopPopup() {
42221
+ if (external_vue_default.a.prototype.$isServer) return;
42222
+ if (popup_manager_PopupManager.modalStack.length > 0) {
42223
+ var topPopup = popup_manager_PopupManager.modalStack[popup_manager_PopupManager.modalStack.length - 1];
42224
+ if (!topPopup) return;
42225
+ var instance = popup_manager_PopupManager.getInstance(topPopup.id);
42226
+
42227
+ return instance;
42228
+ }
42229
+ };
42230
+
42231
+ if (!external_vue_default.a.prototype.$isServer) {
42232
+ // handle `esc` key when the popup is shown
42233
+ window.addEventListener('keydown', function (event) {
42234
+ if (event.keyCode === 27) {
42235
+ var topPopup = popup_manager_getTopPopup();
42236
+
42237
+ if (topPopup && topPopup.closeOnPressEscape) {
42238
+ topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();
42239
+ }
42240
+ }
42241
+ });
42242
+ }
42243
+
42244
+ /* harmony default export */ var popup_manager = (popup_manager_PopupManager);
42047
42245
  // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/drawer/src/main.vue?vue&type=script&lang=js&
42048
42246
  var mainvue_type_script_lang_js_extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
42049
42247
 
@@ -42095,6 +42293,9 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42095
42293
  //
42096
42294
  //
42097
42295
  //
42296
+ //
42297
+
42298
+
42098
42299
 
42099
42300
 
42100
42301
 
@@ -42161,7 +42362,7 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42161
42362
  default: true
42162
42363
  },
42163
42364
  reference: {
42164
- type: [String, Object],
42365
+ type: [String, Object, typeof window !== 'undefined' ? window.HTMLElement : Object],
42165
42366
  default: null
42166
42367
  },
42167
42368
  placement: {
@@ -42199,6 +42400,13 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42199
42400
  }
42200
42401
  return this.direction;
42201
42402
  },
42403
+ wrapperStyle: function wrapperStyle() {
42404
+ // 在 reference 模式下,将 z-index 设置在 wrapper 上,与全局模式保持一致
42405
+ if (this.referenceMode && this.drawerZIndex) {
42406
+ return { zIndex: this.drawerZIndex };
42407
+ }
42408
+ return null;
42409
+ },
42202
42410
  drawerStyle: function drawerStyle() {
42203
42411
  if (this.referenceMode) {
42204
42412
  var style = mainvue_type_script_lang_js_extends({}, this.position);
@@ -42217,7 +42425,9 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42217
42425
  return {
42218
42426
  closed: false,
42219
42427
  prevActiveElement: null,
42220
- position: {}
42428
+ position: {},
42429
+ drawerZIndex: null,
42430
+ modalZIndex: null
42221
42431
  };
42222
42432
  },
42223
42433
 
@@ -42229,19 +42439,36 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42229
42439
  this.closed = false;
42230
42440
  this.$emit('open');
42231
42441
  if (this.referenceMode) {
42442
+ // z-index 已经通过 drawerStyle computed 属性设置
42232
42443
  var referenceEl = this.getReferenceElement();
42233
42444
  if (referenceEl) {
42234
42445
  referenceEl.appendChild(this.$el);
42235
42446
  }
42236
- } else if (this.appendToBody) {
42237
- document.body.appendChild(this.$el);
42238
- }
42239
- this.prevActiveElement = document.activeElement;
42240
- if (this.referenceMode) {
42447
+ // drawer 挂载后创建 modal
42241
42448
  this.$nextTick(function () {
42449
+ // drawer 的 z-index 已经在 appendChild 前设置
42450
+
42451
+ // 创建/显示 modal(使用预分配的较低值)
42452
+ if (_this.modal) {
42453
+ _this.createReferenceModal({
42454
+ modalClass: _this.modalClass,
42455
+ modalFade: _this.modalFade
42456
+ });
42457
+ }
42458
+
42459
+ // 更新位置
42242
42460
  _this.updatePosition();
42461
+
42462
+ // 清理可能被 PopupManager 创建的全局 modal
42463
+ // 延迟执行,确保全局 modal 已经被创建后再移除
42464
+ setTimeout(function () {
42465
+ _this.removeGlobalModal();
42466
+ }, 300);
42243
42467
  });
42468
+ } else if (this.appendToBody) {
42469
+ document.body.appendChild(this.$el);
42244
42470
  }
42471
+ this.prevActiveElement = document.activeElement;
42245
42472
  } else {
42246
42473
  if (!this.closed) {
42247
42474
  this.$emit('close');
@@ -42249,6 +42476,10 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42249
42476
  this.rendered = false;
42250
42477
  }
42251
42478
  }
42479
+ // 关闭 reference 模式的 modal
42480
+ if (this.referenceMode) {
42481
+ this.closeReferenceModal();
42482
+ }
42252
42483
  this.$nextTick(function () {
42253
42484
  if (_this.prevActiveElement) {
42254
42485
  _this.prevActiveElement.focus();
@@ -42258,6 +42489,122 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42258
42489
  }
42259
42490
  },
42260
42491
  methods: {
42492
+ doOpen: function doOpen(props) {
42493
+ // 在 reference 模式下,需要让遮罩层挂载到参考元素而不是 body
42494
+ if (this.referenceMode) {
42495
+ // 手动实现 doOpen 的逻辑,但将 modal 挂载到 reference 元素
42496
+ if (this.$isServer) return;
42497
+ if (this.willOpen && !this.willOpen()) return;
42498
+ if (this.opened) return;
42499
+
42500
+ this._opening = true;
42501
+
42502
+ var dom = this.$el;
42503
+ var zIndex = props.zIndex;
42504
+
42505
+ if (zIndex) {
42506
+ popup_manager.zIndex = zIndex;
42507
+ }
42508
+
42509
+ // modal 的创建已经移到 watch visible 中,在 drawer 挂载后执行
42510
+ // 这里预先分配 z-index,确保 modal 和 drawer 的层级关系正确
42511
+ // 每次打开都重新分配,避免复用时的 z-index 错乱
42512
+ this.modalZIndex = popup_manager.nextZIndex();
42513
+ this.drawerZIndex = popup_manager.nextZIndex();
42514
+
42515
+ if (Object(dom_["getStyle"])(dom, 'position') === 'static') {
42516
+ dom.style.position = 'absolute';
42517
+ }
42518
+
42519
+ // z-index 的设置已经移到 watch visible 中,在 modal 创建后设置
42520
+ this.opened = true;
42521
+
42522
+ this.onOpen && this.onOpen();
42523
+
42524
+ this.doAfterOpen();
42525
+ } else {
42526
+ // 非 reference 模式,使用原始的 doOpen
42527
+ this.$options.mixins[0].methods.doOpen.call(this, props);
42528
+ }
42529
+ },
42530
+ createReferenceModal: function createReferenceModal(props) {
42531
+ var _this2 = this;
42532
+
42533
+ // 创建并挂载 modal 到 reference 元素
42534
+ var referenceEl = this.getReferenceElement();
42535
+ if (!referenceEl) return;
42536
+
42537
+ // 创建或复用 modal DOM
42538
+ var modalDom = this._referenceModalDom;
42539
+ if (!modalDom) {
42540
+ modalDom = document.createElement('div');
42541
+ modalDom.className = 'v-modal';
42542
+ modalDom.tabIndex = 0;
42543
+
42544
+ // 使用预先分配的 modal z-index,确保 drawer 已经有更高的 z-index
42545
+ var modalZIndex = this.modalZIndex || popup_manager.nextZIndex();
42546
+ modalDom.style.zIndex = modalZIndex;
42547
+
42548
+ // 关键:在 reference 模式下使用 absolute 定位,而不是 fixed
42549
+ modalDom.style.position = 'absolute';
42550
+ modalDom.style.left = '0';
42551
+ modalDom.style.top = '0';
42552
+ modalDom.style.width = '100%';
42553
+ modalDom.style.height = '100%';
42554
+
42555
+ if (props.modalClass) {
42556
+ var classArr = props.modalClass.trim().split(/\s+/);
42557
+ classArr.forEach(function (cls) {
42558
+ return modalDom.classList.add(cls);
42559
+ });
42560
+ }
42561
+
42562
+ // 添加淡入动画
42563
+ if (props.modalFade) {
42564
+ modalDom.classList.add('v-modal-enter');
42565
+ setTimeout(function () {
42566
+ modalDom.classList.remove('v-modal-enter');
42567
+ }, 200);
42568
+ }
42569
+
42570
+ // 直接挂载到 reference 元素内部
42571
+ referenceEl.appendChild(modalDom);
42572
+
42573
+ // 点击 modal 时的处理
42574
+ modalDom.addEventListener('click', function () {
42575
+ if (_this2.closeOnClickModal) {
42576
+ _this2.closeDrawer();
42577
+ }
42578
+ });
42579
+
42580
+ // 保存引用以便后续清理
42581
+ this._referenceModalDom = modalDom;
42582
+ } else {
42583
+ // 复用 modal 时,使用预分配的 z-index
42584
+ modalDom.style.display = '';
42585
+ modalDom.style.zIndex = this.modalZIndex || popup_manager.nextZIndex();
42586
+ }
42587
+ },
42588
+ closeReferenceModal: function closeReferenceModal() {
42589
+ // 关闭 reference 模式的 modal
42590
+ if (this._referenceModalDom) {
42591
+ this._referenceModalDom.style.display = 'none';
42592
+ }
42593
+ },
42594
+ removeGlobalModal: function removeGlobalModal() {
42595
+ // 移除 PopupManager 可能创建的全局 modal(在 body 下的)
42596
+ // 只在 reference 模式下调用此方法
42597
+ if (this.referenceMode) {
42598
+ // 查找并移除 body 下与此 drawer 关联的 modal
42599
+ var globalModals = document.body.querySelectorAll('.v-modal');
42600
+ globalModals.forEach(function (modal) {
42601
+ // 移除 body 下的所有 modal(它们不应该存在)
42602
+ if (modal.parentNode === document.body) {
42603
+ document.body.removeChild(modal);
42604
+ }
42605
+ });
42606
+ }
42607
+ },
42261
42608
  afterEnter: function afterEnter() {
42262
42609
  this.$emit('opened');
42263
42610
  },
@@ -42361,6 +42708,16 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42361
42708
  }
42362
42709
  }
42363
42710
  },
42711
+ beforeMount: function beforeMount() {
42712
+ // 在 reference 模式下,我们不使用 PopupManager 的 modal
42713
+ // 设置一个内部标志来阻止 PopupManager 创建 modal
42714
+ if (this.referenceMode) {
42715
+ // 保存原始的 modal 属性
42716
+ this._originalModal = this.modal;
42717
+ // 临时将 modal 设为 false,这样 Popup mixin 的逻辑不会调用 PopupManager.openModal
42718
+ // 注意:这个技巧可能不work,因为 modal 是 prop
42719
+ }
42720
+ },
42364
42721
  mounted: function mounted() {
42365
42722
  if (this.visible) {
42366
42723
  this.rendered = true;
@@ -42379,6 +42736,23 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42379
42736
  window.addEventListener('resize', this.handleResize);
42380
42737
  }
42381
42738
  },
42739
+ beforeDestroy: function beforeDestroy() {
42740
+ // 在 reference 模式下,不使用 PopupManager 管理 modal
42741
+ // 所以需要阻止 Popup mixin 的 beforeDestroy 调用 PopupManager.closeModal
42742
+ if (!this.referenceMode) {
42743
+ // 非 reference 模式,调用 mixin 的 beforeDestroy
42744
+ if (this.$options.mixins && this.$options.mixins[0].beforeDestroy) {
42745
+ this.$options.mixins[0].beforeDestroy.call(this);
42746
+ }
42747
+ } else {
42748
+ // reference 模式,只执行必要的清理
42749
+ if (this._popupId) {
42750
+ popup_manager.deregister(this._popupId);
42751
+ // 不调用 PopupManager.closeModal,因为我们用的是自定义 modal
42752
+ }
42753
+ this.restoreBodyStyle();
42754
+ }
42755
+ },
42382
42756
  destroyed: function destroyed() {
42383
42757
  // if appendToBody is true, remove DOM node after destroy
42384
42758
  if (this.appendToBody && this.$el && this.$el.parentNode) {
@@ -42387,6 +42761,11 @@ var mainvue_type_script_lang_js_extends = Object.assign || function (target) { f
42387
42761
  if (this.referenceMode && this.$el && this.$el.parentNode) {
42388
42762
  this.$el.parentNode.removeChild(this.$el);
42389
42763
  }
42764
+ // 清理 reference modal
42765
+ if (this.referenceMode && this._referenceModalDom && this._referenceModalDom.parentNode) {
42766
+ this._referenceModalDom.parentNode.removeChild(this._referenceModalDom);
42767
+ this._referenceModalDom = null;
42768
+ }
42390
42769
  if (this.referenceMode) {
42391
42770
  window.removeEventListener('scroll', this.handleScroll, true);
42392
42771
  window.removeEventListener('resize', this.handleResize);
@@ -51952,7 +52331,7 @@ if (typeof window !== 'undefined' && window.Vue) {
51952
52331
  }
51953
52332
 
51954
52333
  /* harmony default export */ var src_0 = __webpack_exports__["default"] = ({
51955
- version: '2.15.5-xn.52',
52334
+ version: '2.15.5-xn.54',
51956
52335
  locale: lib_locale_default.a.use,
51957
52336
  i18n: lib_locale_default.a.i18n,
51958
52337
  install: src_install,
package/lib/footer.js CHANGED
@@ -82,7 +82,7 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 131);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 132);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -189,7 +189,7 @@ function normalizeComponent (
189
189
 
190
190
  /***/ }),
191
191
 
192
- /***/ 131:
192
+ /***/ 132:
193
193
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
194
194
 
195
195
  "use strict";
package/lib/form.js CHANGED
@@ -82,7 +82,7 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 111);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 112);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -189,7 +189,7 @@ function normalizeComponent (
189
189
 
190
190
  /***/ }),
191
191
 
192
- /***/ 111:
192
+ /***/ 112:
193
193
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
194
194
 
195
195
  "use strict";
package/lib/header.js CHANGED
@@ -82,7 +82,7 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 128);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 129);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -189,7 +189,7 @@ function normalizeComponent (
189
189
 
190
190
  /***/ }),
191
191
 
192
- /***/ 128:
192
+ /***/ 129:
193
193
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
194
194
 
195
195
  "use strict";
package/lib/icon.js CHANGED
@@ -82,7 +82,7 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 114);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 115);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -189,7 +189,7 @@ function normalizeComponent (
189
189
 
190
190
  /***/ }),
191
191
 
192
- /***/ 114:
192
+ /***/ 115:
193
193
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
194
194
 
195
195
  "use strict";
package/lib/image.js CHANGED
@@ -224,7 +224,7 @@ module.exports = require("@liuzengwei/element-ui/lib/utils/util");
224
224
 
225
225
  /***/ }),
226
226
 
227
- /***/ 6:
227
+ /***/ 7:
228
228
  /***/ (function(module, exports) {
229
229
 
230
230
  module.exports = require("@liuzengwei/element-ui/lib/mixins/locale");
@@ -828,7 +828,7 @@ if (false) { var api; }
828
828
  component.options.__file = "packages/image/src/image-viewer.vue"
829
829
  /* harmony default export */ var image_viewer = (component.exports);
830
830
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/mixins/locale"
831
- var locale_ = __webpack_require__(6);
831
+ var locale_ = __webpack_require__(7);
832
832
  var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
833
833
 
834
834
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/utils/types"