@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.
- package/lib/alert.js +2 -2
- package/lib/area-picker.js +2 -2
- package/lib/aside.js +2 -2
- package/lib/backtop.js +2 -2
- package/lib/badge.js +2 -2
- package/lib/breadcrumb-item.js +2 -2
- package/lib/breadcrumb.js +2 -2
- package/lib/button-group.js +2 -2
- package/lib/button.js +2 -2
- package/lib/calendar.js +2 -2
- package/lib/card.js +2 -2
- package/lib/carousel-item.js +2 -2
- package/lib/carousel.js +2 -2
- package/lib/cascader-panel.js +2 -2
- package/lib/cascader.js +4 -4
- package/lib/checkbox-button.js +2 -2
- package/lib/checkbox-group.js +2 -2
- package/lib/checkbox.js +2 -2
- package/lib/collapse-item.js +2 -2
- package/lib/collapse.js +2 -2
- package/lib/color-picker.js +4 -4
- package/lib/container.js +2 -2
- package/lib/date-picker.js +5 -5
- package/lib/dialog.js +2 -2
- package/lib/divider.js +2 -2
- package/lib/drawer.js +423 -23
- package/lib/dropdown-item.js +2 -2
- package/lib/dropdown-menu.js +2 -2
- package/lib/element-ui.common.js +393 -14
- package/lib/footer.js +2 -2
- package/lib/form.js +2 -2
- package/lib/header.js +2 -2
- package/lib/icon.js +2 -2
- package/lib/image.js +2 -2
- package/lib/index.js +1 -1
- package/lib/input-number.js +2 -2
- package/lib/link.js +2 -2
- package/lib/loading.js +2 -2
- package/lib/main.js +2 -2
- package/lib/menu-item-group.js +2 -2
- package/lib/menu-item.js +2 -2
- package/lib/message-box.js +4 -4
- package/lib/message.js +2 -2
- package/lib/notification.js +2 -2
- package/lib/option-group.js +2 -2
- package/lib/page-header.js +2 -2
- package/lib/pagination.js +2 -2
- package/lib/popover.js +2 -2
- package/lib/progress.js +2 -2
- package/lib/radio-button.js +2 -2
- package/lib/radio-group.js +2 -2
- package/lib/radio.js +9 -9
- package/lib/rate.js +2 -2
- package/lib/select.js +2 -2
- package/lib/spinner.js +2 -2
- package/lib/step.js +2 -2
- package/lib/steps.js +2 -2
- package/lib/switch.js +2 -2
- package/lib/tab-pane.js +2 -2
- package/lib/table.js +4 -4
- package/lib/time-picker.js +5 -5
- package/lib/time-select.js +2 -2
- package/lib/timeline-item.js +2 -2
- package/lib/tooltip.js +2 -2
- package/lib/transfer.js +2 -2
- package/lib/trigger.js +5 -5
- package/lib/upload.js +8 -8
- package/package.json +1 -1
- package/packages/drawer/src/main.vue +184 -9
- package/src/index.js +1 -1
package/lib/drawer.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 =
|
|
85
|
+
/******/ return __webpack_require__(__webpack_require__.s = 92);
|
|
86
86
|
/******/ })
|
|
87
87
|
/************************************************************************/
|
|
88
88
|
/******/ ({
|
|
@@ -189,7 +189,35 @@ function normalizeComponent (
|
|
|
189
189
|
|
|
190
190
|
/***/ }),
|
|
191
191
|
|
|
192
|
-
/***/
|
|
192
|
+
/***/ 14:
|
|
193
|
+
/***/ (function(module, exports) {
|
|
194
|
+
|
|
195
|
+
module.exports = require("@liuzengwei/element-ui/lib/utils/popup");
|
|
196
|
+
|
|
197
|
+
/***/ }),
|
|
198
|
+
|
|
199
|
+
/***/ 2:
|
|
200
|
+
/***/ (function(module, exports) {
|
|
201
|
+
|
|
202
|
+
module.exports = require("@liuzengwei/element-ui/lib/utils/dom");
|
|
203
|
+
|
|
204
|
+
/***/ }),
|
|
205
|
+
|
|
206
|
+
/***/ 4:
|
|
207
|
+
/***/ (function(module, exports) {
|
|
208
|
+
|
|
209
|
+
module.exports = require("@liuzengwei/element-ui/lib/mixins/emitter");
|
|
210
|
+
|
|
211
|
+
/***/ }),
|
|
212
|
+
|
|
213
|
+
/***/ 6:
|
|
214
|
+
/***/ (function(module, exports) {
|
|
215
|
+
|
|
216
|
+
module.exports = require("vue");
|
|
217
|
+
|
|
218
|
+
/***/ }),
|
|
219
|
+
|
|
220
|
+
/***/ 92:
|
|
193
221
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
194
222
|
|
|
195
223
|
"use strict";
|
|
@@ -221,6 +249,7 @@ var render = function() {
|
|
|
221
249
|
class: _vm.referenceMode
|
|
222
250
|
? "el-drawer__wrapper-reference"
|
|
223
251
|
: "el-drawer__wrapper",
|
|
252
|
+
style: _vm.wrapperStyle,
|
|
224
253
|
attrs: { tabindex: "-1" }
|
|
225
254
|
},
|
|
226
255
|
[
|
|
@@ -329,6 +358,210 @@ render._withStripped = true
|
|
|
329
358
|
var popup_ = __webpack_require__(14);
|
|
330
359
|
var popup_default = /*#__PURE__*/__webpack_require__.n(popup_);
|
|
331
360
|
|
|
361
|
+
// EXTERNAL MODULE: external "vue"
|
|
362
|
+
var external_vue_ = __webpack_require__(6);
|
|
363
|
+
var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
|
|
364
|
+
|
|
365
|
+
// EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/utils/dom"
|
|
366
|
+
var dom_ = __webpack_require__(2);
|
|
367
|
+
|
|
368
|
+
// CONCATENATED MODULE: ./src/utils/popup/popup-manager.js
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
var hasModal = false;
|
|
373
|
+
var hasInitZIndex = false;
|
|
374
|
+
var popup_manager_zIndex = void 0;
|
|
375
|
+
|
|
376
|
+
var popup_manager_getModal = function getModal() {
|
|
377
|
+
if (external_vue_default.a.prototype.$isServer) return;
|
|
378
|
+
var modalDom = PopupManager.modalDom;
|
|
379
|
+
if (modalDom) {
|
|
380
|
+
hasModal = true;
|
|
381
|
+
} else {
|
|
382
|
+
hasModal = false;
|
|
383
|
+
modalDom = document.createElement('div');
|
|
384
|
+
PopupManager.modalDom = modalDom;
|
|
385
|
+
|
|
386
|
+
modalDom.addEventListener('touchmove', function (event) {
|
|
387
|
+
event.preventDefault();
|
|
388
|
+
event.stopPropagation();
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
modalDom.addEventListener('click', function () {
|
|
392
|
+
PopupManager.doOnModalClick && PopupManager.doOnModalClick();
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
return modalDom;
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
var instances = {};
|
|
400
|
+
|
|
401
|
+
var PopupManager = {
|
|
402
|
+
modalFade: true,
|
|
403
|
+
|
|
404
|
+
getInstance: function getInstance(id) {
|
|
405
|
+
return instances[id];
|
|
406
|
+
},
|
|
407
|
+
|
|
408
|
+
register: function register(id, instance) {
|
|
409
|
+
if (id && instance) {
|
|
410
|
+
instances[id] = instance;
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
|
|
414
|
+
deregister: function deregister(id) {
|
|
415
|
+
if (id) {
|
|
416
|
+
instances[id] = null;
|
|
417
|
+
delete instances[id];
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
|
|
421
|
+
nextZIndex: function nextZIndex() {
|
|
422
|
+
return PopupManager.zIndex++;
|
|
423
|
+
},
|
|
424
|
+
|
|
425
|
+
modalStack: [],
|
|
426
|
+
|
|
427
|
+
doOnModalClick: function doOnModalClick() {
|
|
428
|
+
var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
|
|
429
|
+
if (!topItem) return;
|
|
430
|
+
|
|
431
|
+
var instance = PopupManager.getInstance(topItem.id);
|
|
432
|
+
if (instance && instance.closeOnClickModal) {
|
|
433
|
+
instance.close();
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
|
|
437
|
+
openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {
|
|
438
|
+
if (external_vue_default.a.prototype.$isServer) return;
|
|
439
|
+
if (!id || zIndex === undefined) return;
|
|
440
|
+
this.modalFade = modalFade;
|
|
441
|
+
|
|
442
|
+
var modalStack = this.modalStack;
|
|
443
|
+
|
|
444
|
+
for (var i = 0, j = modalStack.length; i < j; i++) {
|
|
445
|
+
var item = modalStack[i];
|
|
446
|
+
if (item.id === id) {
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
var modalDom = popup_manager_getModal();
|
|
452
|
+
|
|
453
|
+
Object(dom_["addClass"])(modalDom, 'v-modal');
|
|
454
|
+
if (this.modalFade && !hasModal) {
|
|
455
|
+
Object(dom_["addClass"])(modalDom, 'v-modal-enter');
|
|
456
|
+
}
|
|
457
|
+
if (modalClass) {
|
|
458
|
+
var classArr = modalClass.trim().split(/\s+/);
|
|
459
|
+
classArr.forEach(function (item) {
|
|
460
|
+
return Object(dom_["addClass"])(modalDom, item);
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
setTimeout(function () {
|
|
464
|
+
Object(dom_["removeClass"])(modalDom, 'v-modal-enter');
|
|
465
|
+
}, 200);
|
|
466
|
+
|
|
467
|
+
if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
|
|
468
|
+
dom.parentNode.appendChild(modalDom);
|
|
469
|
+
} else {
|
|
470
|
+
document.body.appendChild(modalDom);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
if (zIndex) {
|
|
474
|
+
modalDom.style.zIndex = zIndex;
|
|
475
|
+
}
|
|
476
|
+
modalDom.tabIndex = 0;
|
|
477
|
+
modalDom.style.display = '';
|
|
478
|
+
|
|
479
|
+
this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
|
|
480
|
+
},
|
|
481
|
+
|
|
482
|
+
closeModal: function closeModal(id) {
|
|
483
|
+
var modalStack = this.modalStack;
|
|
484
|
+
var modalDom = popup_manager_getModal();
|
|
485
|
+
|
|
486
|
+
if (modalStack.length > 0) {
|
|
487
|
+
var topItem = modalStack[modalStack.length - 1];
|
|
488
|
+
if (topItem.id === id) {
|
|
489
|
+
if (topItem.modalClass) {
|
|
490
|
+
var classArr = topItem.modalClass.trim().split(/\s+/);
|
|
491
|
+
classArr.forEach(function (item) {
|
|
492
|
+
return Object(dom_["removeClass"])(modalDom, item);
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
modalStack.pop();
|
|
497
|
+
if (modalStack.length > 0) {
|
|
498
|
+
modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
|
|
499
|
+
}
|
|
500
|
+
} else {
|
|
501
|
+
for (var i = modalStack.length - 1; i >= 0; i--) {
|
|
502
|
+
if (modalStack[i].id === id) {
|
|
503
|
+
modalStack.splice(i, 1);
|
|
504
|
+
break;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
if (modalStack.length === 0) {
|
|
511
|
+
if (this.modalFade) {
|
|
512
|
+
Object(dom_["addClass"])(modalDom, 'v-modal-leave');
|
|
513
|
+
}
|
|
514
|
+
setTimeout(function () {
|
|
515
|
+
if (modalStack.length === 0) {
|
|
516
|
+
if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
|
|
517
|
+
modalDom.style.display = 'none';
|
|
518
|
+
PopupManager.modalDom = undefined;
|
|
519
|
+
}
|
|
520
|
+
Object(dom_["removeClass"])(modalDom, 'v-modal-leave');
|
|
521
|
+
}, 200);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
|
|
526
|
+
Object.defineProperty(PopupManager, 'zIndex', {
|
|
527
|
+
configurable: true,
|
|
528
|
+
get: function get() {
|
|
529
|
+
if (!hasInitZIndex) {
|
|
530
|
+
popup_manager_zIndex = popup_manager_zIndex || (external_vue_default.a.prototype.$ELEMENT || {}).zIndex || 2000;
|
|
531
|
+
hasInitZIndex = true;
|
|
532
|
+
}
|
|
533
|
+
return popup_manager_zIndex;
|
|
534
|
+
},
|
|
535
|
+
set: function set(value) {
|
|
536
|
+
popup_manager_zIndex = value;
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
var popup_manager_getTopPopup = function getTopPopup() {
|
|
541
|
+
if (external_vue_default.a.prototype.$isServer) return;
|
|
542
|
+
if (PopupManager.modalStack.length > 0) {
|
|
543
|
+
var topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];
|
|
544
|
+
if (!topPopup) return;
|
|
545
|
+
var instance = PopupManager.getInstance(topPopup.id);
|
|
546
|
+
|
|
547
|
+
return instance;
|
|
548
|
+
}
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
if (!external_vue_default.a.prototype.$isServer) {
|
|
552
|
+
// handle `esc` key when the popup is shown
|
|
553
|
+
window.addEventListener('keydown', function (event) {
|
|
554
|
+
if (event.keyCode === 27) {
|
|
555
|
+
var topPopup = popup_manager_getTopPopup();
|
|
556
|
+
|
|
557
|
+
if (topPopup && topPopup.closeOnPressEscape) {
|
|
558
|
+
topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
/* harmony default export */ var popup_manager = (PopupManager);
|
|
332
565
|
// EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/mixins/emitter"
|
|
333
566
|
var emitter_ = __webpack_require__(4);
|
|
334
567
|
var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
|
|
@@ -384,6 +617,9 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
384
617
|
//
|
|
385
618
|
//
|
|
386
619
|
//
|
|
620
|
+
//
|
|
621
|
+
|
|
622
|
+
|
|
387
623
|
|
|
388
624
|
|
|
389
625
|
|
|
@@ -450,7 +686,7 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
450
686
|
default: true
|
|
451
687
|
},
|
|
452
688
|
reference: {
|
|
453
|
-
type: [String, Object],
|
|
689
|
+
type: [String, Object, typeof window !== 'undefined' ? window.HTMLElement : Object],
|
|
454
690
|
default: null
|
|
455
691
|
},
|
|
456
692
|
placement: {
|
|
@@ -488,6 +724,13 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
488
724
|
}
|
|
489
725
|
return this.direction;
|
|
490
726
|
},
|
|
727
|
+
wrapperStyle: function wrapperStyle() {
|
|
728
|
+
// 在 reference 模式下,将 z-index 设置在 wrapper 上,与全局模式保持一致
|
|
729
|
+
if (this.referenceMode && this.drawerZIndex) {
|
|
730
|
+
return { zIndex: this.drawerZIndex };
|
|
731
|
+
}
|
|
732
|
+
return null;
|
|
733
|
+
},
|
|
491
734
|
drawerStyle: function drawerStyle() {
|
|
492
735
|
if (this.referenceMode) {
|
|
493
736
|
var style = _extends({}, this.position);
|
|
@@ -506,7 +749,9 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
506
749
|
return {
|
|
507
750
|
closed: false,
|
|
508
751
|
prevActiveElement: null,
|
|
509
|
-
position: {}
|
|
752
|
+
position: {},
|
|
753
|
+
drawerZIndex: null,
|
|
754
|
+
modalZIndex: null
|
|
510
755
|
};
|
|
511
756
|
},
|
|
512
757
|
|
|
@@ -518,19 +763,36 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
518
763
|
this.closed = false;
|
|
519
764
|
this.$emit('open');
|
|
520
765
|
if (this.referenceMode) {
|
|
766
|
+
// z-index 已经通过 drawerStyle computed 属性设置
|
|
521
767
|
var referenceEl = this.getReferenceElement();
|
|
522
768
|
if (referenceEl) {
|
|
523
769
|
referenceEl.appendChild(this.$el);
|
|
524
770
|
}
|
|
525
|
-
|
|
526
|
-
document.body.appendChild(this.$el);
|
|
527
|
-
}
|
|
528
|
-
this.prevActiveElement = document.activeElement;
|
|
529
|
-
if (this.referenceMode) {
|
|
771
|
+
// 在 drawer 挂载后创建 modal
|
|
530
772
|
this.$nextTick(function () {
|
|
773
|
+
// drawer 的 z-index 已经在 appendChild 前设置
|
|
774
|
+
|
|
775
|
+
// 创建/显示 modal(使用预分配的较低值)
|
|
776
|
+
if (_this.modal) {
|
|
777
|
+
_this.createReferenceModal({
|
|
778
|
+
modalClass: _this.modalClass,
|
|
779
|
+
modalFade: _this.modalFade
|
|
780
|
+
});
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
// 更新位置
|
|
531
784
|
_this.updatePosition();
|
|
785
|
+
|
|
786
|
+
// 清理可能被 PopupManager 创建的全局 modal
|
|
787
|
+
// 延迟执行,确保全局 modal 已经被创建后再移除
|
|
788
|
+
setTimeout(function () {
|
|
789
|
+
_this.removeGlobalModal();
|
|
790
|
+
}, 300);
|
|
532
791
|
});
|
|
792
|
+
} else if (this.appendToBody) {
|
|
793
|
+
document.body.appendChild(this.$el);
|
|
533
794
|
}
|
|
795
|
+
this.prevActiveElement = document.activeElement;
|
|
534
796
|
} else {
|
|
535
797
|
if (!this.closed) {
|
|
536
798
|
this.$emit('close');
|
|
@@ -538,6 +800,10 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
538
800
|
this.rendered = false;
|
|
539
801
|
}
|
|
540
802
|
}
|
|
803
|
+
// 关闭 reference 模式的 modal
|
|
804
|
+
if (this.referenceMode) {
|
|
805
|
+
this.closeReferenceModal();
|
|
806
|
+
}
|
|
541
807
|
this.$nextTick(function () {
|
|
542
808
|
if (_this.prevActiveElement) {
|
|
543
809
|
_this.prevActiveElement.focus();
|
|
@@ -547,6 +813,122 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
547
813
|
}
|
|
548
814
|
},
|
|
549
815
|
methods: {
|
|
816
|
+
doOpen: function doOpen(props) {
|
|
817
|
+
// 在 reference 模式下,需要让遮罩层挂载到参考元素而不是 body
|
|
818
|
+
if (this.referenceMode) {
|
|
819
|
+
// 手动实现 doOpen 的逻辑,但将 modal 挂载到 reference 元素
|
|
820
|
+
if (this.$isServer) return;
|
|
821
|
+
if (this.willOpen && !this.willOpen()) return;
|
|
822
|
+
if (this.opened) return;
|
|
823
|
+
|
|
824
|
+
this._opening = true;
|
|
825
|
+
|
|
826
|
+
var dom = this.$el;
|
|
827
|
+
var zIndex = props.zIndex;
|
|
828
|
+
|
|
829
|
+
if (zIndex) {
|
|
830
|
+
popup_manager.zIndex = zIndex;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
// modal 的创建已经移到 watch visible 中,在 drawer 挂载后执行
|
|
834
|
+
// 这里预先分配 z-index,确保 modal 和 drawer 的层级关系正确
|
|
835
|
+
// 每次打开都重新分配,避免复用时的 z-index 错乱
|
|
836
|
+
this.modalZIndex = popup_manager.nextZIndex();
|
|
837
|
+
this.drawerZIndex = popup_manager.nextZIndex();
|
|
838
|
+
|
|
839
|
+
if (Object(dom_["getStyle"])(dom, 'position') === 'static') {
|
|
840
|
+
dom.style.position = 'absolute';
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
// z-index 的设置已经移到 watch visible 中,在 modal 创建后设置
|
|
844
|
+
this.opened = true;
|
|
845
|
+
|
|
846
|
+
this.onOpen && this.onOpen();
|
|
847
|
+
|
|
848
|
+
this.doAfterOpen();
|
|
849
|
+
} else {
|
|
850
|
+
// 非 reference 模式,使用原始的 doOpen
|
|
851
|
+
this.$options.mixins[0].methods.doOpen.call(this, props);
|
|
852
|
+
}
|
|
853
|
+
},
|
|
854
|
+
createReferenceModal: function createReferenceModal(props) {
|
|
855
|
+
var _this2 = this;
|
|
856
|
+
|
|
857
|
+
// 创建并挂载 modal 到 reference 元素
|
|
858
|
+
var referenceEl = this.getReferenceElement();
|
|
859
|
+
if (!referenceEl) return;
|
|
860
|
+
|
|
861
|
+
// 创建或复用 modal DOM
|
|
862
|
+
var modalDom = this._referenceModalDom;
|
|
863
|
+
if (!modalDom) {
|
|
864
|
+
modalDom = document.createElement('div');
|
|
865
|
+
modalDom.className = 'v-modal';
|
|
866
|
+
modalDom.tabIndex = 0;
|
|
867
|
+
|
|
868
|
+
// 使用预先分配的 modal z-index,确保 drawer 已经有更高的 z-index
|
|
869
|
+
var modalZIndex = this.modalZIndex || popup_manager.nextZIndex();
|
|
870
|
+
modalDom.style.zIndex = modalZIndex;
|
|
871
|
+
|
|
872
|
+
// 关键:在 reference 模式下使用 absolute 定位,而不是 fixed
|
|
873
|
+
modalDom.style.position = 'absolute';
|
|
874
|
+
modalDom.style.left = '0';
|
|
875
|
+
modalDom.style.top = '0';
|
|
876
|
+
modalDom.style.width = '100%';
|
|
877
|
+
modalDom.style.height = '100%';
|
|
878
|
+
|
|
879
|
+
if (props.modalClass) {
|
|
880
|
+
var classArr = props.modalClass.trim().split(/\s+/);
|
|
881
|
+
classArr.forEach(function (cls) {
|
|
882
|
+
return modalDom.classList.add(cls);
|
|
883
|
+
});
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
// 添加淡入动画
|
|
887
|
+
if (props.modalFade) {
|
|
888
|
+
modalDom.classList.add('v-modal-enter');
|
|
889
|
+
setTimeout(function () {
|
|
890
|
+
modalDom.classList.remove('v-modal-enter');
|
|
891
|
+
}, 200);
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
// 直接挂载到 reference 元素内部
|
|
895
|
+
referenceEl.appendChild(modalDom);
|
|
896
|
+
|
|
897
|
+
// 点击 modal 时的处理
|
|
898
|
+
modalDom.addEventListener('click', function () {
|
|
899
|
+
if (_this2.closeOnClickModal) {
|
|
900
|
+
_this2.closeDrawer();
|
|
901
|
+
}
|
|
902
|
+
});
|
|
903
|
+
|
|
904
|
+
// 保存引用以便后续清理
|
|
905
|
+
this._referenceModalDom = modalDom;
|
|
906
|
+
} else {
|
|
907
|
+
// 复用 modal 时,使用预分配的 z-index
|
|
908
|
+
modalDom.style.display = '';
|
|
909
|
+
modalDom.style.zIndex = this.modalZIndex || popup_manager.nextZIndex();
|
|
910
|
+
}
|
|
911
|
+
},
|
|
912
|
+
closeReferenceModal: function closeReferenceModal() {
|
|
913
|
+
// 关闭 reference 模式的 modal
|
|
914
|
+
if (this._referenceModalDom) {
|
|
915
|
+
this._referenceModalDom.style.display = 'none';
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
removeGlobalModal: function removeGlobalModal() {
|
|
919
|
+
// 移除 PopupManager 可能创建的全局 modal(在 body 下的)
|
|
920
|
+
// 只在 reference 模式下调用此方法
|
|
921
|
+
if (this.referenceMode) {
|
|
922
|
+
// 查找并移除 body 下与此 drawer 关联的 modal
|
|
923
|
+
var globalModals = document.body.querySelectorAll('.v-modal');
|
|
924
|
+
globalModals.forEach(function (modal) {
|
|
925
|
+
// 移除 body 下的所有 modal(它们不应该存在)
|
|
926
|
+
if (modal.parentNode === document.body) {
|
|
927
|
+
document.body.removeChild(modal);
|
|
928
|
+
}
|
|
929
|
+
});
|
|
930
|
+
}
|
|
931
|
+
},
|
|
550
932
|
afterEnter: function afterEnter() {
|
|
551
933
|
this.$emit('opened');
|
|
552
934
|
},
|
|
@@ -650,6 +1032,16 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
650
1032
|
}
|
|
651
1033
|
}
|
|
652
1034
|
},
|
|
1035
|
+
beforeMount: function beforeMount() {
|
|
1036
|
+
// 在 reference 模式下,我们不使用 PopupManager 的 modal
|
|
1037
|
+
// 设置一个内部标志来阻止 PopupManager 创建 modal
|
|
1038
|
+
if (this.referenceMode) {
|
|
1039
|
+
// 保存原始的 modal 属性
|
|
1040
|
+
this._originalModal = this.modal;
|
|
1041
|
+
// 临时将 modal 设为 false,这样 Popup mixin 的逻辑不会调用 PopupManager.openModal
|
|
1042
|
+
// 注意:这个技巧可能不work,因为 modal 是 prop
|
|
1043
|
+
}
|
|
1044
|
+
},
|
|
653
1045
|
mounted: function mounted() {
|
|
654
1046
|
if (this.visible) {
|
|
655
1047
|
this.rendered = true;
|
|
@@ -668,6 +1060,23 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
668
1060
|
window.addEventListener('resize', this.handleResize);
|
|
669
1061
|
}
|
|
670
1062
|
},
|
|
1063
|
+
beforeDestroy: function beforeDestroy() {
|
|
1064
|
+
// 在 reference 模式下,不使用 PopupManager 管理 modal
|
|
1065
|
+
// 所以需要阻止 Popup mixin 的 beforeDestroy 调用 PopupManager.closeModal
|
|
1066
|
+
if (!this.referenceMode) {
|
|
1067
|
+
// 非 reference 模式,调用 mixin 的 beforeDestroy
|
|
1068
|
+
if (this.$options.mixins && this.$options.mixins[0].beforeDestroy) {
|
|
1069
|
+
this.$options.mixins[0].beforeDestroy.call(this);
|
|
1070
|
+
}
|
|
1071
|
+
} else {
|
|
1072
|
+
// reference 模式,只执行必要的清理
|
|
1073
|
+
if (this._popupId) {
|
|
1074
|
+
popup_manager.deregister(this._popupId);
|
|
1075
|
+
// 不调用 PopupManager.closeModal,因为我们用的是自定义 modal
|
|
1076
|
+
}
|
|
1077
|
+
this.restoreBodyStyle();
|
|
1078
|
+
}
|
|
1079
|
+
},
|
|
671
1080
|
destroyed: function destroyed() {
|
|
672
1081
|
// if appendToBody is true, remove DOM node after destroy
|
|
673
1082
|
if (this.appendToBody && this.$el && this.$el.parentNode) {
|
|
@@ -676,6 +1085,11 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
|
|
|
676
1085
|
if (this.referenceMode && this.$el && this.$el.parentNode) {
|
|
677
1086
|
this.$el.parentNode.removeChild(this.$el);
|
|
678
1087
|
}
|
|
1088
|
+
// 清理 reference modal
|
|
1089
|
+
if (this.referenceMode && this._referenceModalDom && this._referenceModalDom.parentNode) {
|
|
1090
|
+
this._referenceModalDom.parentNode.removeChild(this._referenceModalDom);
|
|
1091
|
+
this._referenceModalDom = null;
|
|
1092
|
+
}
|
|
679
1093
|
if (this.referenceMode) {
|
|
680
1094
|
window.removeEventListener('scroll', this.handleScroll, true);
|
|
681
1095
|
window.removeEventListener('resize', this.handleResize);
|
|
@@ -720,20 +1134,6 @@ main.install = function (Vue) {
|
|
|
720
1134
|
|
|
721
1135
|
/* harmony default export */ var drawer = __webpack_exports__["default"] = (main);
|
|
722
1136
|
|
|
723
|
-
/***/ }),
|
|
724
|
-
|
|
725
|
-
/***/ 14:
|
|
726
|
-
/***/ (function(module, exports) {
|
|
727
|
-
|
|
728
|
-
module.exports = require("@liuzengwei/element-ui/lib/utils/popup");
|
|
729
|
-
|
|
730
|
-
/***/ }),
|
|
731
|
-
|
|
732
|
-
/***/ 4:
|
|
733
|
-
/***/ (function(module, exports) {
|
|
734
|
-
|
|
735
|
-
module.exports = require("@liuzengwei/element-ui/lib/mixins/emitter");
|
|
736
|
-
|
|
737
1137
|
/***/ })
|
|
738
1138
|
|
|
739
1139
|
/******/ });
|
package/lib/dropdown-item.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 =
|
|
85
|
+
/******/ return __webpack_require__(__webpack_require__.s = 96);
|
|
86
86
|
/******/ })
|
|
87
87
|
/************************************************************************/
|
|
88
88
|
/******/ ({
|
|
@@ -196,7 +196,7 @@ module.exports = require("@liuzengwei/element-ui/lib/mixins/emitter");
|
|
|
196
196
|
|
|
197
197
|
/***/ }),
|
|
198
198
|
|
|
199
|
-
/***/
|
|
199
|
+
/***/ 96:
|
|
200
200
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
201
201
|
|
|
202
202
|
"use strict";
|
package/lib/dropdown-menu.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 =
|
|
85
|
+
/******/ return __webpack_require__(__webpack_require__.s = 95);
|
|
86
86
|
/******/ })
|
|
87
87
|
/************************************************************************/
|
|
88
88
|
/******/ ({
|
|
@@ -196,7 +196,7 @@ module.exports = require("@liuzengwei/element-ui/lib/utils/vue-popper");
|
|
|
196
196
|
|
|
197
197
|
/***/ }),
|
|
198
198
|
|
|
199
|
-
/***/
|
|
199
|
+
/***/ 95:
|
|
200
200
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
201
201
|
|
|
202
202
|
"use strict";
|