@mdsfe/mds-ui 0.2.0
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/CHANGELOG.md +778 -0
- package/LICENSE +21 -0
- package/README.md +106 -0
- package/dist/_locale/index.js +18 -0
- package/dist/_locale/zh-CN.js +123 -0
- package/dist/_mixin/emitter.js +35 -0
- package/dist/_mixin/focus.js +13 -0
- package/dist/_mixin/locale.js +17 -0
- package/dist/_mixin/popper.js +192 -0
- package/dist/_mixin/tooltip.js +218 -0
- package/dist/_util/__test__/switchcase.test.js +43 -0
- package/dist/_util/autoprefixer.js +249 -0
- package/dist/_util/clickoutside.js +79 -0
- package/dist/_util/date.js +368 -0
- package/dist/_util/dateUtil.js +311 -0
- package/dist/_util/dom.js +240 -0
- package/dist/_util/getRequestAnimationFrame.js +50 -0
- package/dist/_util/getScroll.js +21 -0
- package/dist/_util/loaders/loaders.css.js +52 -0
- package/dist/_util/loaders/loading.js +53 -0
- package/dist/_util/merge.js +18 -0
- package/dist/_util/popper.js +1261 -0
- package/dist/_util/popup/index.js +232 -0
- package/dist/_util/popup/popup-manager.js +205 -0
- package/dist/_util/proptype.js +12 -0
- package/dist/_util/repeatClick.js +30 -0
- package/dist/_util/resize.js +61 -0
- package/dist/_util/resizeEvent.js +59 -0
- package/dist/_util/scrollIntoView.js +38 -0
- package/dist/_util/scrollbar-width.js +37 -0
- package/dist/_util/soda.js +54 -0
- package/dist/_util/switchcase.js +22 -0
- package/dist/_util/throttleByAnimationFrame.js +70 -0
- package/dist/_util/tree/node.js +412 -0
- package/dist/_util/tree/tree.js +410 -0
- package/dist/_util/util.js +166 -0
- package/dist/_util/vue-popper.js +213 -0
- package/dist/affix.js +509 -0
- package/dist/anchor.js +522 -0
- package/dist/avatar.js +437 -0
- package/dist/backtop.js +469 -0
- package/dist/badge.js +439 -0
- package/dist/bordershadow.js +310 -0
- package/dist/breadcrumb.js +434 -0
- package/dist/button.js +579 -0
- package/dist/card.js +514 -0
- package/dist/carousel.js +1326 -0
- package/dist/cascaderpanel.js +2320 -0
- package/dist/checkbox.js +681 -0
- package/dist/col.js +546 -0
- package/dist/collapse.js +671 -0
- package/dist/color.js +306 -0
- package/dist/datepicker.js +8089 -0
- package/dist/divider.js +346 -0
- package/dist/drawer.js +652 -0
- package/dist/dropdown.js +687 -0
- package/dist/empty.js +416 -0
- package/dist/font.js +306 -0
- package/dist/form.js +878 -0
- package/dist/icon.js +401 -0
- package/dist/index.js +1 -0
- package/dist/input.js +1251 -0
- package/dist/inputnumber.js +689 -0
- package/dist/layout.js +786 -0
- package/dist/list.js +789 -0
- package/dist/loading.js +430 -0
- package/dist/mds-ui.min.css +7 -0
- package/dist/mds-ui.min.js +64911 -0
- package/dist/menu.js +1131 -0
- package/dist/message.js +1016 -0
- package/dist/modal.js +895 -0
- package/dist/notification.js +818 -0
- package/dist/pagination.js +1213 -0
- package/dist/popconfirm.js +336 -0
- package/dist/popover.js +206 -0
- package/dist/progress.js +1023 -0
- package/dist/radio.js +760 -0
- package/dist/rate.js +765 -0
- package/dist/row.js +546 -0
- package/dist/select.js +4950 -0
- package/dist/slider.js +1411 -0
- package/dist/slottable.js +1414 -0
- package/dist/steps.js +546 -0
- package/dist/style/affix.css +5524 -0
- package/dist/style/anchor.css +5572 -0
- package/dist/style/avatar.css +5587 -0
- package/dist/style/backtop.css +34 -0
- package/dist/style/badge.css +5655 -0
- package/dist/style/bordershadow.css +5601 -0
- package/dist/style/breadcrumb.css +5551 -0
- package/dist/style/button.css +7679 -0
- package/dist/style/card.css +5670 -0
- package/dist/style/carousel.css +5731 -0
- package/dist/style/cascaderpanel.css +125 -0
- package/dist/style/checkbox.css +5700 -0
- package/dist/style/col.css +8121 -0
- package/dist/style/collapse.css +5593 -0
- package/dist/style/color.css +6136 -0
- package/dist/style/datepicker.css +5977 -0
- package/dist/style/divider.css +5558 -0
- package/dist/style/drawer.css +7979 -0
- package/dist/style/dropdown.css +7950 -0
- package/dist/style/empty.css +5563 -0
- package/dist/style/font.css +5559 -0
- package/dist/style/form.css +5662 -0
- package/dist/style/icon.css +5538 -0
- package/dist/style/input.css +6256 -0
- package/dist/style/inputnumber.css +5828 -0
- package/dist/style/layout.css +5572 -0
- package/dist/style/list.css +5655 -0
- package/dist/style/loading.css +5540 -0
- package/dist/style/menu.css +6183 -0
- package/dist/style/message.css +194 -0
- package/dist/style/modal.css +5637 -0
- package/dist/style/notification.css +5706 -0
- package/dist/style/pagination.css +6683 -0
- package/dist/style/popconfirm.css +7951 -0
- package/dist/style/popover.css +5727 -0
- package/dist/style/progress.css +5714 -0
- package/dist/style/radio.css +5769 -0
- package/dist/style/rate.css +5616 -0
- package/dist/style/row.css +8121 -0
- package/dist/style/select.css +5729 -0
- package/dist/style/slider.css +5594 -0
- package/dist/style/slottable.css +5831 -0
- package/dist/style/steps.css +6100 -0
- package/dist/style/switch.css +5624 -0
- package/dist/style/table.css +8392 -0
- package/dist/style/tabs.css +6047 -0
- package/dist/style/tag.css +5935 -0
- package/dist/style/text.css +5636 -0
- package/dist/style/timeline.css +5602 -0
- package/dist/style/timepicker.css +5904 -0
- package/dist/style/tooltip.css +5686 -0
- package/dist/style/transfer.css +101 -0
- package/dist/style/transition.css +1417 -0
- package/dist/style/tree.css +5598 -0
- package/dist/style/typography.css +5640 -0
- package/dist/style/upload.css +5834 -0
- package/dist/switch.js +448 -0
- package/dist/table.js +3809 -0
- package/dist/tabs.js +1273 -0
- package/dist/tag.js +478 -0
- package/dist/text.js +1100 -0
- package/dist/timeline.js +495 -0
- package/dist/timepicker.js +1567 -0
- package/dist/tooltip.js +179 -0
- package/dist/transfer.js +981 -0
- package/dist/transition.js +246 -0
- package/dist/tree.js +1866 -0
- package/dist/typography.js +469 -0
- package/dist/upload.js +1990 -0
- package/package.json +144 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.PopupManager = undefined;
|
|
5
|
+
|
|
6
|
+
var _vue = require('vue');
|
|
7
|
+
|
|
8
|
+
var _vue2 = _interopRequireDefault(_vue);
|
|
9
|
+
|
|
10
|
+
var _merge = require('./../merge');
|
|
11
|
+
|
|
12
|
+
var _merge2 = _interopRequireDefault(_merge);
|
|
13
|
+
|
|
14
|
+
var _popupManager = require('./popup-manager');
|
|
15
|
+
|
|
16
|
+
var _popupManager2 = _interopRequireDefault(_popupManager);
|
|
17
|
+
|
|
18
|
+
var _scrollbarWidth = require('../scrollbar-width');
|
|
19
|
+
|
|
20
|
+
var _scrollbarWidth2 = _interopRequireDefault(_scrollbarWidth);
|
|
21
|
+
|
|
22
|
+
var _dom = require('../dom');
|
|
23
|
+
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
26
|
+
var idSeed = 1;
|
|
27
|
+
|
|
28
|
+
var scrollBarWidth = void 0;
|
|
29
|
+
|
|
30
|
+
exports.default = {
|
|
31
|
+
props: {
|
|
32
|
+
visible: {
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: false
|
|
35
|
+
},
|
|
36
|
+
openDelay: {},
|
|
37
|
+
closeDelay: {},
|
|
38
|
+
zIndex: {},
|
|
39
|
+
modal: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
default: false
|
|
42
|
+
},
|
|
43
|
+
modalFade: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
default: true
|
|
46
|
+
},
|
|
47
|
+
modalClass: {},
|
|
48
|
+
modalAppendToBody: {
|
|
49
|
+
type: Boolean,
|
|
50
|
+
default: false
|
|
51
|
+
},
|
|
52
|
+
lockScroll: {
|
|
53
|
+
type: Boolean,
|
|
54
|
+
default: true
|
|
55
|
+
},
|
|
56
|
+
closeOnPressEscape: {
|
|
57
|
+
type: Boolean,
|
|
58
|
+
default: false
|
|
59
|
+
},
|
|
60
|
+
closeOnClickModal: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
default: false
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
beforeMount: function beforeMount() {
|
|
67
|
+
this._popupId = 'popup-' + idSeed++;
|
|
68
|
+
_popupManager2.default.register(this._popupId, this);
|
|
69
|
+
},
|
|
70
|
+
beforeDestroy: function beforeDestroy() {
|
|
71
|
+
_popupManager2.default.deregister(this._popupId);
|
|
72
|
+
_popupManager2.default.closeModal(this._popupId);
|
|
73
|
+
|
|
74
|
+
this.restoreBodyStyle();
|
|
75
|
+
},
|
|
76
|
+
data: function data() {
|
|
77
|
+
return {
|
|
78
|
+
opened: false,
|
|
79
|
+
bodyPaddingRight: null,
|
|
80
|
+
computedBodyPaddingRight: 0,
|
|
81
|
+
withoutHiddenClass: true,
|
|
82
|
+
rendered: false
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
watch: {
|
|
88
|
+
visible: function visible(val) {
|
|
89
|
+
var _this = this;
|
|
90
|
+
|
|
91
|
+
if (val) {
|
|
92
|
+
if (this._opening) return;
|
|
93
|
+
if (!this.rendered) {
|
|
94
|
+
this.rendered = true;
|
|
95
|
+
_vue2.default.nextTick(function () {
|
|
96
|
+
_this.open();
|
|
97
|
+
});
|
|
98
|
+
} else {
|
|
99
|
+
this.open();
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
this.close();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
methods: {
|
|
108
|
+
open: function open(options) {
|
|
109
|
+
var _this2 = this;
|
|
110
|
+
|
|
111
|
+
if (!this.rendered) {
|
|
112
|
+
this.rendered = true;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
var props = (0, _merge2.default)({}, this.$props || this, options);
|
|
116
|
+
|
|
117
|
+
if (this._closeTimer) {
|
|
118
|
+
clearTimeout(this._closeTimer);
|
|
119
|
+
this._closeTimer = null;
|
|
120
|
+
}
|
|
121
|
+
clearTimeout(this._openTimer);
|
|
122
|
+
|
|
123
|
+
var openDelay = Number(props.openDelay);
|
|
124
|
+
if (openDelay > 0) {
|
|
125
|
+
this._openTimer = setTimeout(function () {
|
|
126
|
+
_this2._openTimer = null;
|
|
127
|
+
_this2.doOpen(props);
|
|
128
|
+
}, openDelay);
|
|
129
|
+
} else {
|
|
130
|
+
this.doOpen(props);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
doOpen: function doOpen(props) {
|
|
134
|
+
if (this.$isServer) return;
|
|
135
|
+
if (this.willOpen && !this.willOpen()) return;
|
|
136
|
+
if (this.opened) return;
|
|
137
|
+
|
|
138
|
+
this._opening = true;
|
|
139
|
+
|
|
140
|
+
var dom = this.$el;
|
|
141
|
+
|
|
142
|
+
var modal = props.modal;
|
|
143
|
+
|
|
144
|
+
var zIndex = props.zIndex;
|
|
145
|
+
if (zIndex) {
|
|
146
|
+
_popupManager2.default.zIndex = zIndex;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (modal) {
|
|
150
|
+
if (this._closing) {
|
|
151
|
+
_popupManager2.default.closeModal(this._popupId);
|
|
152
|
+
this._closing = false;
|
|
153
|
+
}
|
|
154
|
+
_popupManager2.default.openModal(this._popupId, _popupManager2.default.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);
|
|
155
|
+
if (props.lockScroll) {
|
|
156
|
+
this.withoutHiddenClass = !(0, _dom.hasClass)(document.body, 'mds-popup-parent--hidden');
|
|
157
|
+
if (this.withoutHiddenClass) {
|
|
158
|
+
this.bodyPaddingRight = document.body.style.paddingRight;
|
|
159
|
+
this.computedBodyPaddingRight = parseInt((0, _dom.getStyle)(document.body, 'paddingRight'), 10);
|
|
160
|
+
}
|
|
161
|
+
scrollBarWidth = (0, _scrollbarWidth2.default)();
|
|
162
|
+
var bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
|
|
163
|
+
var bodyOverflowY = (0, _dom.getStyle)(document.body, 'overflowY');
|
|
164
|
+
if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {
|
|
165
|
+
document.body.style.paddingRight = this.computedBodyPaddingRight + scrollBarWidth + 'px';
|
|
166
|
+
}
|
|
167
|
+
(0, _dom.addClass)(document.body, 'mds-popup-parent--hidden');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (getComputedStyle(dom).position === 'static') {
|
|
172
|
+
dom.style.position = 'absolute';
|
|
173
|
+
}
|
|
174
|
+
dom.style.zIndex = _popupManager2.default.nextZIndex();
|
|
175
|
+
this.opened = true;
|
|
176
|
+
|
|
177
|
+
this.onOpen && this.onOpen();
|
|
178
|
+
|
|
179
|
+
this.doAfterOpen();
|
|
180
|
+
},
|
|
181
|
+
doAfterOpen: function doAfterOpen() {
|
|
182
|
+
this._opening = false;
|
|
183
|
+
},
|
|
184
|
+
close: function close() {
|
|
185
|
+
var _this3 = this;
|
|
186
|
+
|
|
187
|
+
if (this.willClose && !this.willClose()) return;
|
|
188
|
+
|
|
189
|
+
if (this._openTimer !== null) {
|
|
190
|
+
clearTimeout(this._openTimer);
|
|
191
|
+
this._openTimer = null;
|
|
192
|
+
}
|
|
193
|
+
clearTimeout(this._closeTimer);
|
|
194
|
+
|
|
195
|
+
var closeDelay = Number(this.closeDelay);
|
|
196
|
+
|
|
197
|
+
if (closeDelay > 0) {
|
|
198
|
+
this._closeTimer = setTimeout(function () {
|
|
199
|
+
_this3._closeTimer = null;
|
|
200
|
+
_this3.doClose();
|
|
201
|
+
}, closeDelay);
|
|
202
|
+
} else {
|
|
203
|
+
this.doClose();
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
doClose: function doClose() {
|
|
207
|
+
this._closing = true;
|
|
208
|
+
|
|
209
|
+
this.onClose && this.onClose();
|
|
210
|
+
|
|
211
|
+
if (this.lockScroll) {
|
|
212
|
+
setTimeout(this.restoreBodyStyle, 200);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
this.opened = false;
|
|
216
|
+
|
|
217
|
+
this.doAfterClose();
|
|
218
|
+
},
|
|
219
|
+
doAfterClose: function doAfterClose() {
|
|
220
|
+
_popupManager2.default.closeModal(this._popupId);
|
|
221
|
+
this._closing = false;
|
|
222
|
+
},
|
|
223
|
+
restoreBodyStyle: function restoreBodyStyle() {
|
|
224
|
+
if (this.modal && this.withoutHiddenClass) {
|
|
225
|
+
document.body.style.paddingRight = this.bodyPaddingRight;
|
|
226
|
+
(0, _dom.removeClass)(document.body, 'mds-popup-parent--hidden');
|
|
227
|
+
}
|
|
228
|
+
this.withoutHiddenClass = true;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
exports.PopupManager = _popupManager2.default;
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _vue = require('vue');
|
|
6
|
+
|
|
7
|
+
var _vue2 = _interopRequireDefault(_vue);
|
|
8
|
+
|
|
9
|
+
var _dom = require('../dom');
|
|
10
|
+
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
|
|
13
|
+
var hasModal = false;
|
|
14
|
+
var hasInitZIndex = false;
|
|
15
|
+
var zIndex = void 0;
|
|
16
|
+
|
|
17
|
+
var getModal = function getModal() {
|
|
18
|
+
if (_vue2.default.prototype.$isServer) return;
|
|
19
|
+
var modalDom = PopupManager.modalDom;
|
|
20
|
+
if (modalDom) {
|
|
21
|
+
hasModal = true;
|
|
22
|
+
} else {
|
|
23
|
+
hasModal = false;
|
|
24
|
+
modalDom = document.createElement('div');
|
|
25
|
+
PopupManager.modalDom = modalDom;
|
|
26
|
+
|
|
27
|
+
modalDom.addEventListener('touchmove', function (event) {
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
event.stopPropagation();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
modalDom.addEventListener('click', function () {
|
|
33
|
+
PopupManager.doOnModalClick && PopupManager.doOnModalClick();
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return modalDom;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var instances = {};
|
|
41
|
+
|
|
42
|
+
var PopupManager = {
|
|
43
|
+
modalFade: true,
|
|
44
|
+
|
|
45
|
+
getInstance: function getInstance(id) {
|
|
46
|
+
return instances[id];
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
register: function register(id, instance) {
|
|
50
|
+
if (id && instance) {
|
|
51
|
+
instances[id] = instance;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
deregister: function deregister(id) {
|
|
56
|
+
if (id) {
|
|
57
|
+
instances[id] = null;
|
|
58
|
+
delete instances[id];
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
nextZIndex: function nextZIndex() {
|
|
63
|
+
return PopupManager.zIndex++;
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
modalStack: [],
|
|
67
|
+
|
|
68
|
+
doOnModalClick: function doOnModalClick() {
|
|
69
|
+
var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
|
|
70
|
+
if (!topItem) return;
|
|
71
|
+
|
|
72
|
+
var instance = PopupManager.getInstance(topItem.id);
|
|
73
|
+
if (instance && instance.closeOnClickModal) {
|
|
74
|
+
instance.close();
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {
|
|
79
|
+
if (_vue2.default.prototype.$isServer) return;
|
|
80
|
+
if (!id || zIndex === undefined) return;
|
|
81
|
+
this.modalFade = modalFade;
|
|
82
|
+
|
|
83
|
+
var modalStack = this.modalStack;
|
|
84
|
+
|
|
85
|
+
for (var i = 0, j = modalStack.length; i < j; i++) {
|
|
86
|
+
var item = modalStack[i];
|
|
87
|
+
if (item.id === id) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
var modalDom = getModal();
|
|
93
|
+
|
|
94
|
+
(0, _dom.addClass)(modalDom, 'v-modal');
|
|
95
|
+
if (this.modalFade && !hasModal) {
|
|
96
|
+
(0, _dom.addClass)(modalDom, 'v-modal-enter');
|
|
97
|
+
}
|
|
98
|
+
if (modalClass) {
|
|
99
|
+
var classArr = modalClass.trim().split(/\s+/);
|
|
100
|
+
classArr.forEach(function (item) {
|
|
101
|
+
return (0, _dom.addClass)(modalDom, item);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
setTimeout(function () {
|
|
105
|
+
(0, _dom.removeClass)(modalDom, 'v-modal-enter');
|
|
106
|
+
}, 200);
|
|
107
|
+
|
|
108
|
+
if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
|
|
109
|
+
dom.parentNode.appendChild(modalDom);
|
|
110
|
+
} else {
|
|
111
|
+
document.body.appendChild(modalDom);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (zIndex) {
|
|
115
|
+
modalDom.style.zIndex = zIndex;
|
|
116
|
+
}
|
|
117
|
+
modalDom.tabIndex = 0;
|
|
118
|
+
modalDom.style.display = '';
|
|
119
|
+
|
|
120
|
+
this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
closeModal: function closeModal(id) {
|
|
124
|
+
var modalStack = this.modalStack;
|
|
125
|
+
var modalDom = getModal();
|
|
126
|
+
|
|
127
|
+
if (modalStack.length > 0) {
|
|
128
|
+
var topItem = modalStack[modalStack.length - 1];
|
|
129
|
+
if (topItem.id === id) {
|
|
130
|
+
if (topItem.modalClass) {
|
|
131
|
+
var classArr = topItem.modalClass.trim().split(/\s+/);
|
|
132
|
+
classArr.forEach(function (item) {
|
|
133
|
+
return (0, _dom.removeClass)(modalDom, item);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
modalStack.pop();
|
|
138
|
+
if (modalStack.length > 0) {
|
|
139
|
+
modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
|
|
140
|
+
}
|
|
141
|
+
} else {
|
|
142
|
+
for (var i = modalStack.length - 1; i >= 0; i--) {
|
|
143
|
+
if (modalStack[i].id === id) {
|
|
144
|
+
modalStack.splice(i, 1);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (modalStack.length === 0) {
|
|
152
|
+
if (this.modalFade) {
|
|
153
|
+
(0, _dom.addClass)(modalDom, 'v-modal-leave');
|
|
154
|
+
}
|
|
155
|
+
setTimeout(function () {
|
|
156
|
+
if (modalStack.length === 0) {
|
|
157
|
+
if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
|
|
158
|
+
modalDom.style.display = 'none';
|
|
159
|
+
PopupManager.modalDom = undefined;
|
|
160
|
+
}
|
|
161
|
+
(0, _dom.removeClass)(modalDom, 'v-modal-leave');
|
|
162
|
+
}, 200);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
Object.defineProperty(PopupManager, 'zIndex', {
|
|
168
|
+
configurable: true,
|
|
169
|
+
get: function get() {
|
|
170
|
+
if (!hasInitZIndex) {
|
|
171
|
+
zIndex = zIndex || (_vue2.default.prototype.$ELEMENT || {}).zIndex || 2000;
|
|
172
|
+
hasInitZIndex = true;
|
|
173
|
+
}
|
|
174
|
+
return zIndex;
|
|
175
|
+
},
|
|
176
|
+
set: function set(value) {
|
|
177
|
+
zIndex = value;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
var getTopPopup = function getTopPopup() {
|
|
182
|
+
if (_vue2.default.prototype.$isServer) return;
|
|
183
|
+
if (PopupManager.modalStack.length > 0) {
|
|
184
|
+
var topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];
|
|
185
|
+
if (!topPopup) return;
|
|
186
|
+
var instance = PopupManager.getInstance(topPopup.id);
|
|
187
|
+
|
|
188
|
+
return instance;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
if (!_vue2.default.prototype.$isServer) {
|
|
193
|
+
// handle `esc` key when the popup is shown
|
|
194
|
+
window.addEventListener('keydown', function (event) {
|
|
195
|
+
if (event.keyCode === 27) {
|
|
196
|
+
var topPopup = getTopPopup();
|
|
197
|
+
|
|
198
|
+
if (topPopup && topPopup.closeOnPressEscape) {
|
|
199
|
+
topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
exports.default = PopupManager;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
/**
|
|
5
|
+
* Check if a value in validList
|
|
6
|
+
* @param {String} value
|
|
7
|
+
* @param {Array} validList
|
|
8
|
+
* @return {Boolean}
|
|
9
|
+
*/
|
|
10
|
+
var oneOf = exports.oneOf = function oneOf(value, validList) {
|
|
11
|
+
return validList.indexOf(value) > -1;
|
|
12
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _dom = require('./dom.js');
|
|
6
|
+
|
|
7
|
+
exports.default = {
|
|
8
|
+
bind: function bind(el, binding, vnode) {
|
|
9
|
+
var interval = null;
|
|
10
|
+
var startTime = void 0;
|
|
11
|
+
var handler = function handler() {
|
|
12
|
+
return vnode.context[binding.expression].apply();
|
|
13
|
+
};
|
|
14
|
+
var clear = function clear() {
|
|
15
|
+
if (Date.now() - startTime < 100) {
|
|
16
|
+
handler();
|
|
17
|
+
}
|
|
18
|
+
clearInterval(interval);
|
|
19
|
+
interval = null;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
(0, _dom.on)(el, 'mousedown', function (e) {
|
|
23
|
+
if (e.button !== 0) return;
|
|
24
|
+
startTime = Date.now();
|
|
25
|
+
(0, _dom.once)(document, 'mouseup', clear);
|
|
26
|
+
clearInterval(interval);
|
|
27
|
+
interval = setInterval(handler, 100);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.removeResizeListener = exports.addResizeListener = undefined;
|
|
5
|
+
|
|
6
|
+
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
|
|
7
|
+
|
|
8
|
+
var _getIterator3 = _interopRequireDefault(_getIterator2);
|
|
9
|
+
|
|
10
|
+
var _resizeObserverPolyfill = require('resize-observer-polyfill');
|
|
11
|
+
|
|
12
|
+
var _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
var isServer = typeof window === 'undefined';
|
|
17
|
+
|
|
18
|
+
/* istanbul ignore next */
|
|
19
|
+
var resizeHandler = function resizeHandler(entries) {
|
|
20
|
+
for (var _iterator = entries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
|
|
21
|
+
var _ref;
|
|
22
|
+
|
|
23
|
+
if (_isArray) {
|
|
24
|
+
if (_i >= _iterator.length) break;
|
|
25
|
+
_ref = _iterator[_i++];
|
|
26
|
+
} else {
|
|
27
|
+
_i = _iterator.next();
|
|
28
|
+
if (_i.done) break;
|
|
29
|
+
_ref = _i.value;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var entry = _ref;
|
|
33
|
+
|
|
34
|
+
var listeners = entry.target.__resizeListeners__ || [];
|
|
35
|
+
if (listeners.length) {
|
|
36
|
+
listeners.forEach(function (fn) {
|
|
37
|
+
fn();
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/* istanbul ignore next */
|
|
44
|
+
var addResizeListener = exports.addResizeListener = function addResizeListener(element, fn) {
|
|
45
|
+
if (isServer) return;
|
|
46
|
+
if (!element.__resizeListeners__) {
|
|
47
|
+
element.__resizeListeners__ = [];
|
|
48
|
+
element.__ro__ = new _resizeObserverPolyfill2.default(resizeHandler);
|
|
49
|
+
element.__ro__.observe(element);
|
|
50
|
+
}
|
|
51
|
+
element.__resizeListeners__.push(fn);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/* istanbul ignore next */
|
|
55
|
+
var removeResizeListener = exports.removeResizeListener = function removeResizeListener(element, fn) {
|
|
56
|
+
if (!element || !element.__resizeListeners__) return;
|
|
57
|
+
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
|
|
58
|
+
if (!element.__resizeListeners__.length) {
|
|
59
|
+
element.__ro__.disconnect();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.removeResizeListener = exports.addResizeListener = undefined;
|
|
5
|
+
|
|
6
|
+
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
|
|
7
|
+
|
|
8
|
+
var _getIterator3 = _interopRequireDefault(_getIterator2);
|
|
9
|
+
|
|
10
|
+
var _resizeObserverPolyfill = require('resize-observer-polyfill');
|
|
11
|
+
|
|
12
|
+
var _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
var isServer = typeof window === 'undefined';
|
|
17
|
+
|
|
18
|
+
var resizeHandler = function resizeHandler(entries) {
|
|
19
|
+
for (var _iterator = entries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
|
|
20
|
+
var _ref;
|
|
21
|
+
|
|
22
|
+
if (_isArray) {
|
|
23
|
+
if (_i >= _iterator.length) break;
|
|
24
|
+
_ref = _iterator[_i++];
|
|
25
|
+
} else {
|
|
26
|
+
_i = _iterator.next();
|
|
27
|
+
if (_i.done) break;
|
|
28
|
+
_ref = _i.value;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var entry = _ref;
|
|
32
|
+
|
|
33
|
+
var listeners = entry.target.__resizeListeners__ || [];
|
|
34
|
+
if (listeners.length) {
|
|
35
|
+
listeners.forEach(function (fn) {
|
|
36
|
+
fn();
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
var addResizeListener = exports.addResizeListener = function addResizeListener(element, fn) {
|
|
43
|
+
if (isServer) return;
|
|
44
|
+
if (!element.__resizeListeners__) {
|
|
45
|
+
element.__resizeListeners__ = [];
|
|
46
|
+
element.__ro__ = new _resizeObserverPolyfill2.default(resizeHandler);
|
|
47
|
+
element.__ro__.observe(element);
|
|
48
|
+
}
|
|
49
|
+
element.__resizeListeners__.push(fn);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/* istanbul ignore next */
|
|
53
|
+
var removeResizeListener = exports.removeResizeListener = function removeResizeListener(element, fn) {
|
|
54
|
+
if (!element || !element.__resizeListeners__) return;
|
|
55
|
+
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
|
|
56
|
+
if (!element.__resizeListeners__.length) {
|
|
57
|
+
element.__ro__.disconnect();
|
|
58
|
+
}
|
|
59
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = scrollIntoView;
|
|
5
|
+
|
|
6
|
+
var _vue = require('vue');
|
|
7
|
+
|
|
8
|
+
var _vue2 = _interopRequireDefault(_vue);
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
function scrollIntoView(container, selected) {
|
|
13
|
+
if (_vue2.default.prototype.$isServer) return;
|
|
14
|
+
|
|
15
|
+
if (!selected) {
|
|
16
|
+
container.scrollTop = 0;
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
var offsetParents = [];
|
|
21
|
+
var pointer = selected.offsetParent;
|
|
22
|
+
while (pointer && container !== pointer && container.contains(pointer)) {
|
|
23
|
+
offsetParents.push(pointer);
|
|
24
|
+
pointer = pointer.offsetParent;
|
|
25
|
+
}
|
|
26
|
+
var top = selected.offsetTop + offsetParents.reduce(function (prev, curr) {
|
|
27
|
+
return prev + curr.offsetTop;
|
|
28
|
+
}, 0);
|
|
29
|
+
var bottom = top + selected.offsetHeight;
|
|
30
|
+
var viewRectTop = container.scrollTop;
|
|
31
|
+
var viewRectBottom = viewRectTop + container.clientHeight;
|
|
32
|
+
|
|
33
|
+
if (top < viewRectTop) {
|
|
34
|
+
container.scrollTop = top;
|
|
35
|
+
} else if (bottom > viewRectBottom) {
|
|
36
|
+
container.scrollTop = bottom - container.clientHeight;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
exports.default = function () {
|
|
6
|
+
if (_vue2.default.prototype.$isServer) return 0;
|
|
7
|
+
if (scrollBarWidth !== undefined) return scrollBarWidth;
|
|
8
|
+
|
|
9
|
+
var outer = document.createElement('div');
|
|
10
|
+
outer.className = 'mds-scrollbar__wrap';
|
|
11
|
+
outer.style.visibility = 'hidden';
|
|
12
|
+
outer.style.width = '100px';
|
|
13
|
+
outer.style.position = 'absolute';
|
|
14
|
+
outer.style.top = '-9999px';
|
|
15
|
+
document.body.appendChild(outer);
|
|
16
|
+
|
|
17
|
+
var widthNoScroll = outer.offsetWidth;
|
|
18
|
+
outer.style.overflow = 'scroll';
|
|
19
|
+
|
|
20
|
+
var inner = document.createElement('div');
|
|
21
|
+
inner.style.width = '100%';
|
|
22
|
+
outer.appendChild(inner);
|
|
23
|
+
|
|
24
|
+
var widthWithScroll = inner.offsetWidth;
|
|
25
|
+
outer.parentNode.removeChild(outer);
|
|
26
|
+
scrollBarWidth = widthNoScroll - widthWithScroll;
|
|
27
|
+
|
|
28
|
+
return scrollBarWidth;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
var _vue = require('vue');
|
|
32
|
+
|
|
33
|
+
var _vue2 = _interopRequireDefault(_vue);
|
|
34
|
+
|
|
35
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
36
|
+
|
|
37
|
+
var scrollBarWidth = void 0;
|