@mdsfe/mds-ui 0.2.0 → 0.2.9-rc.1

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 (131) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/README.md +9 -9
  3. package/dist/_mixin/popper.js +1 -0
  4. package/dist/_util/_popper/dom-helper.js +284 -0
  5. package/dist/_util/_popper/popper-mixin.js +35 -0
  6. package/dist/_util/_popper/popper.js +1267 -0
  7. package/dist/_util/_popper/popup/popup-main.js +224 -0
  8. package/dist/_util/_popper/popup/popup-manager.js +205 -0
  9. package/dist/_util/_popper/vue-popper.js +204 -0
  10. package/dist/_util/popup/index.js +1 -1
  11. package/dist/_util/tree/node.js +2 -0
  12. package/dist/_util/tree/tree.js +65 -21
  13. package/dist/_util/util.js +29 -1
  14. package/dist/affix.js +18 -18
  15. package/dist/anchor.js +18 -18
  16. package/dist/avatar.js +17 -17
  17. package/dist/backtop.js +19 -19
  18. package/dist/badge.js +21 -21
  19. package/dist/bordershadow.js +20 -9
  20. package/dist/breadcrumb.js +18 -18
  21. package/dist/button.js +21 -21
  22. package/dist/card.js +18 -18
  23. package/dist/carousel.js +76 -76
  24. package/dist/cascader.js +4980 -0
  25. package/dist/cascaderpanel.js +645 -603
  26. package/dist/checkbox.js +23 -23
  27. package/dist/col.js +14 -14
  28. package/dist/collapse.js +6 -6
  29. package/dist/color.js +6 -6
  30. package/dist/datepicker.js +2487 -266
  31. package/dist/divider.js +19 -19
  32. package/dist/drawer.js +787 -37
  33. package/dist/dropdown.js +150 -104
  34. package/dist/empty.js +19 -19
  35. package/dist/font/iconfont.28359fa.ttf +0 -0
  36. package/dist/font/iconfont.486e3d3.woff2 +0 -0
  37. package/dist/font/iconfont.675049e.woff +0 -0
  38. package/dist/font.js +6 -6
  39. package/dist/form.js +28 -26
  40. package/dist/icon.js +55 -47
  41. package/dist/index.js +1 -1
  42. package/dist/input.js +65 -49
  43. package/dist/inputnumber.js +59 -39
  44. package/dist/layout.js +25 -25
  45. package/dist/list.js +17 -17
  46. package/dist/loading.js +21 -8
  47. package/dist/mds-ui.min.css +3 -3
  48. package/dist/mds-ui.min.js +19183 -15407
  49. package/dist/menu.js +31 -31
  50. package/dist/message.js +773 -24
  51. package/dist/modal.js +1146 -307
  52. package/dist/notification.js +27 -27
  53. package/dist/pagination.js +78 -55
  54. package/dist/popconfirm.js +36 -36
  55. package/dist/popover.js +2778 -48
  56. package/dist/progress.js +107 -65
  57. package/dist/radio.js +56 -54
  58. package/dist/rate.js +67 -59
  59. package/dist/row.js +14 -14
  60. package/dist/select.js +847 -503
  61. package/dist/slider.js +25 -25
  62. package/dist/slottable.js +2663 -129
  63. package/dist/steps.js +18 -18
  64. package/dist/style/affix.css +224 -2
  65. package/dist/style/anchor.css +224 -2
  66. package/dist/style/avatar.css +224 -2
  67. package/dist/style/badge.css +224 -2
  68. package/dist/style/bordershadow.css +236 -59
  69. package/dist/style/breadcrumb.css +224 -2
  70. package/dist/style/button.css +234 -5
  71. package/dist/style/card.css +224 -2
  72. package/dist/style/carousel.css +224 -2
  73. package/dist/style/cascader.css +214 -0
  74. package/dist/style/cascaderpanel.css +13 -16
  75. package/dist/style/checkbox.css +230 -8
  76. package/dist/style/col.css +225 -3
  77. package/dist/style/collapse.css +224 -2
  78. package/dist/style/color.css +224 -2
  79. package/dist/style/datepicker.css +236 -2
  80. package/dist/style/divider.css +227 -2
  81. package/dist/style/drawer.css +224 -2
  82. package/dist/style/dropdown.css +234 -5
  83. package/dist/style/empty.css +224 -2
  84. package/dist/style/font.css +226 -4
  85. package/dist/style/form.css +224 -2
  86. package/dist/style/icon.css +226 -3
  87. package/dist/style/input.css +231 -5
  88. package/dist/style/inputnumber.css +224 -2
  89. package/dist/style/layout.css +224 -2
  90. package/dist/style/list.css +224 -2
  91. package/dist/style/loading.css +2527 -2
  92. package/dist/style/menu.css +340 -129
  93. package/dist/style/message.css +1 -4
  94. package/dist/style/modal.css +247 -25
  95. package/dist/style/notification.css +224 -2
  96. package/dist/style/pagination.css +236 -7
  97. package/dist/style/popconfirm.css +334 -180
  98. package/dist/style/popover.css +324 -177
  99. package/dist/style/progress.css +226 -3
  100. package/dist/style/radio.css +225 -3
  101. package/dist/style/rate.css +226 -3
  102. package/dist/style/row.css +225 -3
  103. package/dist/style/select.css +240 -12
  104. package/dist/style/slider.css +224 -2
  105. package/dist/style/slottable.css +350 -149
  106. package/dist/style/steps.css +224 -2
  107. package/dist/style/switch.css +224 -2
  108. package/dist/style/table.css +458 -314
  109. package/dist/style/tabs.css +225 -18
  110. package/dist/style/tag.css +224 -2
  111. package/dist/style/text.css +224 -2
  112. package/dist/style/timeline.css +224 -2
  113. package/dist/style/timepicker.css +231 -6
  114. package/dist/style/tooltip.css +340 -129
  115. package/dist/style/tree.css +228 -6
  116. package/dist/style/typography.css +224 -2
  117. package/dist/style/upload.css +224 -2
  118. package/dist/switch.js +20 -20
  119. package/dist/table.js +3071 -201
  120. package/dist/tabs.js +24 -22
  121. package/dist/tag.js +17 -23
  122. package/dist/text.js +38 -22
  123. package/dist/timeline.js +14 -14
  124. package/dist/timepicker.js +3063 -172
  125. package/dist/tooltip.js +2550 -27
  126. package/dist/transfer.js +28 -28
  127. package/dist/transition.js +6 -6
  128. package/dist/tree.js +316 -171
  129. package/dist/typography.js +6 -6
  130. package/dist/upload.js +46 -38
  131. package/package.json +9 -5
package/dist/modal.js CHANGED
@@ -1,13 +1,13 @@
1
1
  (function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("./icon"), require("vue"), require("./button"));
3
+ module.exports = factory(require("vue"), require("./icon"), require("./transition"), require("./button"));
4
4
  else if(typeof define === 'function' && define.amd)
5
- define(["./icon", "vue", "./button"], factory);
5
+ define(["vue", "./icon", "./transition", "./button"], factory);
6
6
  else {
7
- var a = typeof exports === 'object' ? factory(require("./icon"), require("vue"), require("./button")) : factory(root["./icon"], root["Vue"], root["./button"]);
7
+ var a = typeof exports === 'object' ? factory(require("vue"), require("./icon"), require("./transition"), require("./button")) : factory(root["Vue"], root["./icon"], root["./transition"], root["./button"]);
8
8
  for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
9
  }
10
- })(window, function(__WEBPACK_EXTERNAL_MODULE__4__, __WEBPACK_EXTERNAL_MODULE__5__, __WEBPACK_EXTERNAL_MODULE__7__) {
10
+ })(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__8__, __WEBPACK_EXTERNAL_MODULE__11__, __WEBPACK_EXTERNAL_MODULE__13__) {
11
11
  return /******/ (function(modules) { // webpackBootstrap
12
12
  /******/ // The module cache
13
13
  /******/ var installedModules = {};
@@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap
91
91
  /******/
92
92
  /******/
93
93
  /******/ // Load entry module and return exports
94
- /******/ return __webpack_require__(__webpack_require__.s = 118);
94
+ /******/ return __webpack_require__(__webpack_require__.s = 126);
95
95
  /******/ })
96
96
  /************************************************************************/
97
97
  /******/ ({
@@ -203,185 +203,303 @@ function normalizeComponent (
203
203
 
204
204
  /***/ }),
205
205
 
206
- /***/ 11:
206
+ /***/ 1:
207
207
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
208
208
 
209
209
  "use strict";
210
- /* unused harmony export noop */
211
- /* unused harmony export getOffsetLeft */
212
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return getValueByPath; });
213
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return valueEquals; });
214
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return arrayFindIndex; });
215
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return arrayFind; });
216
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return coerceTruthyValueToArray; });
217
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return isIE; });
218
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isEdge; });
219
- /* unused harmony export isFirefox */
220
- /* unused harmony export assert */
221
- /* unused harmony export escapeRegexpString */
222
- /* unused harmony export getOffsetWidth */
223
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return isFunction; });
224
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
225
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
210
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return on; });
211
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return off; });
212
+ /* unused harmony export once */
213
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return hasClass; });
214
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addClass; });
215
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return removeClass; });
216
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getStyle; });
217
+ /* unused harmony export setStyle */
218
+ /* unused harmony export isScroll */
219
+ /* unused harmony export getScrollContainer */
220
+ /* unused harmony export isInContainer */
221
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return merge; });
222
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getScrollBarWidth; });
223
+ /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
224
+ /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);
225
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
226
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);
227
+
228
+
229
+
230
+ /* eslint-disable */
231
+ var isServer = vue__WEBPACK_IMPORTED_MODULE_1___default.a.prototype.$isServer;
232
+ var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
233
+ var MOZ_HACK_REGEXP = /^moz([A-Z])/;
234
+ var ieVersion = isServer ? 0 : Number(document.documentMode);
226
235
 
227
- var noop = function noop() {};
236
+ /* istanbul ignore next */
237
+ var trim = function trim(string) {
238
+ return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
239
+ };
240
+ /* istanbul ignore next */
241
+ var camelCase = function camelCase(name) {
242
+ return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {
243
+ return offset ? letter.toUpperCase() : letter;
244
+ }).replace(MOZ_HACK_REGEXP, 'Moz$1');
245
+ };
228
246
 
229
- var getScroll = function getScroll(w, top) {
230
- var ret = top ? w.pageYOffset : w.pageXOffset;
231
- var method = top ? 'scrollTop' : 'scrollLeft';
232
- if (typeof ret !== 'number') {
233
- var d = w.document;
234
- // ie6,7,8 standard mode
235
- ret = d.documentElement[method];
236
- if (typeof ret !== 'number') {
237
- // quirks mode
238
- ret = d.body[method];
239
- }
247
+ /* istanbul ignore next */
248
+ var on = function () {
249
+ if (!isServer && document.addEventListener) {
250
+ return function (element, event, handler) {
251
+ if (element && event && handler) {
252
+ element.addEventListener(event, handler, false);
253
+ }
254
+ };
255
+ } else {
256
+ return function (element, event, handler) {
257
+ if (element && event && handler) {
258
+ element.attachEvent('on' + event, handler);
259
+ }
260
+ };
240
261
  }
241
- return ret;
242
- };
262
+ }();
243
263
 
244
- var getClientPosition = function getClientPosition(elem) {
245
- var box = void 0;
246
- var x = void 0;
247
- var y = void 0;
248
- var doc = elem.ownerDocument;
249
- var body = doc.body;
250
- var docElem = doc && doc.documentElement;
251
- box = elem.getBoundingClientRect();
252
- x = box.left;
253
- y = box.top;
254
- x -= docElem.clientLeft || body.clientLeft || 0;
255
- y -= docElem.clientTop || body.clientTop || 0;
256
- return {
257
- left: x,
258
- top: y
264
+ /* istanbul ignore next */
265
+ var off = function () {
266
+ if (!isServer && document.removeEventListener) {
267
+ return function (element, event, handler) {
268
+ if (element && event) {
269
+ element.removeEventListener(event, handler, false);
270
+ }
271
+ };
272
+ } else {
273
+ return function (element, event, handler) {
274
+ if (element && event) {
275
+ element.detachEvent('on' + event, handler);
276
+ }
277
+ };
278
+ }
279
+ }();
280
+
281
+ /* istanbul ignore next */
282
+ var once = function once(el, event, fn) {
283
+ var listener = function listener() {
284
+ if (fn) {
285
+ fn.apply(this, arguments);
286
+ }
287
+ off(el, event, listener);
259
288
  };
289
+ on(el, event, listener);
260
290
  };
261
291
 
262
- var getOffsetLeft = function getOffsetLeft(el) {
263
- var pos = getClientPosition(el);
264
- var doc = el.ownerDocument;
265
- var w = doc.defaultView || doc.parentWindow;
266
- pos.left += getScroll(w);
267
- return pos.left;
268
- };
269
- /**
270
- * 获取对象深层级的对象,避免循环
271
- * @export
272
- * @param {*} sourceObj 源对象 {a:{b:{d:1}}}
273
- * @param {*} pathName path组成的数组 例如:'a.b.c'
274
- * @param {*} defaultValue 如果没有值默认的值 []
275
- */
276
- function getValueByPath(sourceObj, pathName, defaultValue) {
277
- var getValue = function getValue(sourceObj, pathNameArray) {
278
- var key = pathNameArray.shift();
279
- var value = sourceObj[key];
280
- if (value === undefined || value === null) {
281
- return defaultValue;
282
- } else if (pathNameArray.length === 0) {
283
- return value;
284
- } else if (pathNameArray.length > 0) {
285
- return getValue(value, pathNameArray);
292
+ /* istanbul ignore next */
293
+ function hasClass(el, cls) {
294
+ if (!el || !cls) return false;
295
+ if (cls.indexOf(' ') !== -1) {
296
+ throw new Error('className should not contain space.');
297
+ }
298
+ if (el.classList) {
299
+ return el.classList.contains(cls);
300
+ } else {
301
+ return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
302
+ }
303
+ }
304
+
305
+ /* istanbul ignore next */
306
+ function addClass(el, cls) {
307
+ if (!el) return;
308
+ var curClass = el.className;
309
+ var classes = (cls || '').split(' ');
310
+
311
+ for (var i = 0, j = classes.length; i < j; i++) {
312
+ var clsName = classes[i];
313
+ if (!clsName) continue;
314
+
315
+ if (el.classList) {
316
+ el.classList.add(clsName);
317
+ } else if (!hasClass(el, clsName)) {
318
+ curClass += ' ' + clsName;
286
319
  }
287
- };
288
- var pathNameArray = pathName.split('.');
289
- return getValue(sourceObj, pathNameArray);
320
+ }
321
+ if (!el.classList) {
322
+ el.setAttribute('class', curClass);
323
+ }
290
324
  }
291
- /**
292
- *
293
- * 判断两个数是否相等
294
- * @param {*} a
295
- * @param {*} b
296
- * @returns
297
- */
298
- var valueEquals = function valueEquals(a, b) {
299
- // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
300
- if (a === b) return true;
301
- if (!(a instanceof Array)) return false;
302
- if (!(b instanceof Array)) return false;
303
- if (a.length !== b.length) return false;
304
- for (var i = 0; i !== a.length; ++i) {
305
- if (a[i] !== b[i]) return false;
325
+
326
+ /* istanbul ignore next */
327
+ function removeClass(el, cls) {
328
+ if (!el || !cls) return;
329
+ var classes = cls.split(' ');
330
+ var curClass = ' ' + el.className + ' ';
331
+
332
+ for (var i = 0, j = classes.length; i < j; i++) {
333
+ var clsName = classes[i];
334
+ if (!clsName) continue;
335
+
336
+ if (el.classList) {
337
+ el.classList.remove(clsName);
338
+ } else if (hasClass(el, clsName)) {
339
+ curClass = curClass.replace(' ' + clsName + ' ', ' ');
340
+ }
306
341
  }
307
- return true;
308
- };
309
- // TODO: use native Array.find, Array.findIndex when IE support is dropped
310
- var arrayFindIndex = function arrayFindIndex(arr, pred) {
311
- for (var i = 0; i !== arr.length; ++i) {
312
- if (pred(arr[i])) {
313
- return i;
342
+ if (!el.classList) {
343
+ el.setAttribute('class', trim(curClass));
344
+ }
345
+ }
346
+
347
+ /* istanbul ignore next */
348
+ var getStyle = ieVersion < 9 ? function (element, styleName) {
349
+ if (isServer) return;
350
+ if (!element || !styleName) return null;
351
+ styleName = camelCase(styleName);
352
+ if (styleName === 'float') {
353
+ styleName = 'styleFloat';
354
+ }
355
+ try {
356
+ switch (styleName) {
357
+ case 'opacity':
358
+ try {
359
+ return element.filters.item('alpha').opacity / 100;
360
+ } catch (e) {
361
+ return 1.0;
362
+ }
363
+ default:
364
+ return element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null;
314
365
  }
366
+ } catch (e) {
367
+ return element.style[styleName];
368
+ }
369
+ } : function (element, styleName) {
370
+ if (isServer) return;
371
+ if (!element || !styleName) return null;
372
+ styleName = camelCase(styleName);
373
+ if (styleName === 'float') {
374
+ styleName = 'cssFloat';
375
+ }
376
+ try {
377
+ var computed = document.defaultView.getComputedStyle(element, '');
378
+ return element.style[styleName] || computed ? computed[styleName] : null;
379
+ } catch (e) {
380
+ return element.style[styleName];
315
381
  }
316
- return -1;
317
382
  };
318
383
 
319
- var arrayFind = function arrayFind(arr, pred) {
320
- var idx = arrayFindIndex(arr, pred);
321
- return idx !== -1 ? arr[idx] : undefined;
322
- };
384
+ /* istanbul ignore next */
385
+ function setStyle(element, styleName, value) {
386
+ if (!element || !styleName) return;
323
387
 
324
- // coerce truthy value to array
325
- var coerceTruthyValueToArray = function coerceTruthyValueToArray(val) {
326
- if (Array.isArray(val)) {
327
- return val;
328
- } else if (val) {
329
- return [val];
388
+ if ((typeof styleName === 'undefined' ? 'undefined' : babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(styleName)) === 'object') {
389
+ for (var prop in styleName) {
390
+ if (styleName.hasOwnProperty(prop)) {
391
+ setStyle(element, prop, styleName[prop]);
392
+ }
393
+ }
330
394
  } else {
331
- return [];
395
+ styleName = camelCase(styleName);
396
+ if (styleName === 'opacity' && ieVersion < 9) {
397
+ element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';
398
+ } else {
399
+ element.style[styleName] = value;
400
+ }
332
401
  }
333
- };
402
+ }
334
403
 
335
- var isIE = function isIE() {
336
- return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && !isNaN(Number(document.documentMode));
337
- };
404
+ var isScroll = function isScroll(el, vertical) {
405
+ if (isServer) return;
338
406
 
339
- var isEdge = function isEdge() {
340
- return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;
341
- };
407
+ var determinedDirection = vertical !== null && vertical !== undefined;
408
+ var overflow = determinedDirection ? vertical ? getStyle(el, 'overflow-y') : getStyle(el, 'overflow-x') : getStyle(el, 'overflow');
342
409
 
343
- var isFirefox = function isFirefox() {
344
- return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);
410
+ return overflow.match(/(scroll|auto|overlay)/);
345
411
  };
346
412
 
347
- var assert = function assert(condition, msg) {
348
- if (!condition) throw new Error('[mds-ui] ' + msg);
349
- };
350
- /**
351
- *
352
- * 特殊字符转译
353
- * @param {string} [value='']
354
- */
355
- var escapeRegexpString = function escapeRegexpString() {
356
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
357
- return String(value).replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
358
- };
359
- /**
360
- * Get element offset width
361
- * @param {*} node HTMLDOMElemment
362
- * @return {Number} width
363
- */
364
- /**
365
- * Get element offset width
366
- * @param {*} node HTMLDOMElemment
367
- * @return {Number} width
368
- */
369
- var getOffsetWidth = function getOffsetWidth(node) {
370
- return node ? node.offsetWidth : 0;
413
+ var getScrollContainer = function getScrollContainer(el, vertical) {
414
+ if (isServer) return;
415
+
416
+ var parent = el;
417
+ while (parent) {
418
+ if ([window, document, document.documentElement].includes(parent)) {
419
+ return window;
420
+ }
421
+ if (isScroll(parent, vertical)) {
422
+ return parent;
423
+ }
424
+ parent = parent.parentNode;
425
+ }
426
+
427
+ return parent;
371
428
  };
372
429
 
373
- /** 判断是否为函数
374
- * @param {*} functionToCheck
375
- * @returns
376
- */
377
- var isFunction = function isFunction(functionToCheck) {
378
- var getType = {};
379
- return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
430
+ var isInContainer = function isInContainer(el, container) {
431
+ if (isServer || !el || !container) return false;
432
+
433
+ var elRect = el.getBoundingClientRect();
434
+ var containerRect = void 0;
435
+
436
+ if ([window, document, document.documentElement, null, undefined].includes(container)) {
437
+ containerRect = {
438
+ top: 0,
439
+ right: window.innerWidth,
440
+ bottom: window.innerHeight,
441
+ left: 0
442
+ };
443
+ } else {
444
+ containerRect = container.getBoundingClientRect();
445
+ }
446
+
447
+ return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;
380
448
  };
381
449
 
450
+ function merge(target) {
451
+ for (var i = 1, j = arguments.length; i < j; i++) {
452
+ var source = arguments[i] || {};
453
+ for (var prop in source) {
454
+ if (source.hasOwnProperty(prop)) {
455
+ var value = source[prop];
456
+ if (value !== undefined) {
457
+ target[prop] = value;
458
+ }
459
+ }
460
+ }
461
+ }
462
+
463
+ return target;
464
+ }
465
+
466
+ var scrollBarWidth = void 0;
467
+ function getScrollBarWidth() {
468
+ if (vue__WEBPACK_IMPORTED_MODULE_1___default.a.prototype.$isServer) return 0;
469
+ if (scrollBarWidth !== undefined) return scrollBarWidth;
470
+
471
+ var outer = document.createElement('div');
472
+ outer.className = 'el-scrollbar__wrap';
473
+ outer.style.visibility = 'hidden';
474
+ outer.style.width = '100px';
475
+ outer.style.position = 'absolute';
476
+ outer.style.top = '-9999px';
477
+ document.body.appendChild(outer);
478
+
479
+ var widthNoScroll = outer.offsetWidth;
480
+ outer.style.overflow = 'scroll';
481
+
482
+ var inner = document.createElement('div');
483
+ inner.style.width = '100%';
484
+ outer.appendChild(inner);
485
+
486
+ var widthWithScroll = inner.offsetWidth;
487
+ outer.parentNode.removeChild(outer);
488
+ scrollBarWidth = widthNoScroll - widthWithScroll;
489
+
490
+ return scrollBarWidth;
491
+ }
492
+
493
+ /***/ }),
494
+
495
+ /***/ 11:
496
+ /***/ (function(module, exports) {
497
+
498
+ module.exports = __WEBPACK_EXTERNAL_MODULE__11__;
499
+
382
500
  /***/ }),
383
501
 
384
- /***/ 118:
502
+ /***/ 126:
385
503
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
386
504
 
387
505
  "use strict";
@@ -389,10 +507,10 @@ var isFunction = function isFunction(functionToCheck) {
389
507
  __webpack_require__.r(__webpack_exports__);
390
508
 
391
509
  // EXTERNAL MODULE: ./components/style/index.less
392
- var style = __webpack_require__(131);
510
+ var style = __webpack_require__(139);
393
511
 
394
512
  // EXTERNAL MODULE: ./components/modal/style/index.less
395
- var modal_style = __webpack_require__(183);
513
+ var modal_style = __webpack_require__(193);
396
514
 
397
515
  // CONCATENATED MODULE: ./components/modal/style/index.js
398
516
 
@@ -403,164 +521,170 @@ var render = function () {
403
521
  var _vm = this
404
522
  var _h = _vm.$createElement
405
523
  var _c = _vm._self._c || _h
406
- return _c(
407
- "div",
408
- {
409
- directives: [
410
- {
411
- name: "show",
412
- rawName: "v-show",
413
- value: _vm.visibility,
414
- expression: "visibility",
415
- },
416
- ],
417
- ref: "root",
418
- staticClass: "mds-modal-container",
419
- },
420
- [
421
- _c("div", {
524
+ return _c("mds-transition", { attrs: { type: "fade" } }, [
525
+ _c(
526
+ "div",
527
+ {
422
528
  directives: [
423
529
  {
424
530
  name: "show",
425
531
  rawName: "v-show",
426
- value: _vm.mask,
427
- expression: "mask",
532
+ value: _vm.visibility,
533
+ expression: "visibility",
428
534
  },
429
535
  ],
430
- class: _vm.prefixClsMask,
431
- on: { click: _vm.handleCancel },
432
- }),
433
- _c(
434
- "div",
435
- {
436
- class: _vm.prefixClsWrap,
437
- on: {
438
- click: function (e) {
439
- return _vm.onMaskClick(e)
536
+ ref: "root",
537
+ class: ["mds-modal-container", _vm.customClass],
538
+ },
539
+ [
540
+ _c("div", {
541
+ directives: [
542
+ {
543
+ name: "show",
544
+ rawName: "v-show",
545
+ value: _vm.mask,
546
+ expression: "mask",
547
+ },
548
+ ],
549
+ class: _vm.prefixClsMask,
550
+ on: { click: _vm.handleCancel },
551
+ }),
552
+ _c(
553
+ "div",
554
+ {
555
+ class: _vm.prefixClsWrap,
556
+ on: {
557
+ click: function (e) {
558
+ return _vm.onMaskClick(e)
559
+ },
440
560
  },
441
561
  },
442
- },
443
- [
444
- _c("div", { class: _vm.prefixCls, style: _vm.styles }, [
445
- _c("div", { class: _vm.prefixClsContent }, [
562
+ [
563
+ _c("div", { class: _vm.prefixCls, style: _vm.styles }, [
446
564
  _c(
447
565
  "div",
448
- {
449
- directives: [
566
+ { class: [_vm.prefixClsContent, _vm.customContentClass] },
567
+ [
568
+ _c(
569
+ "div",
570
+ {
571
+ directives: [
572
+ {
573
+ name: "show",
574
+ rawName: "v-show",
575
+ value: _vm.showClose,
576
+ expression: "showClose",
577
+ },
578
+ ],
579
+ class: _vm.prefixClsClose,
580
+ on: { click: _vm.handleCancel },
581
+ },
582
+ [
583
+ _vm.modalType === "base"
584
+ ? _c("mds-icon", { attrs: { type: "line-close" } })
585
+ : _vm._e(),
586
+ ],
587
+ 1
588
+ ),
589
+ _c(
590
+ "div",
450
591
  {
451
- name: "show",
452
- rawName: "v-show",
453
- value: _vm.showClose,
454
- expression: "showClose",
592
+ class: [
593
+ _vm.prefixClsHeader,
594
+ _vm.modalType === "base" ? _vm.prefixClsBottom : "",
595
+ ],
455
596
  },
456
- ],
457
- class: _vm.prefixClsClose,
458
- on: { click: _vm.handleCancel },
459
- },
460
- [
461
- _vm.modalType === "base"
462
- ? _c("mds-icon", { attrs: { type: "line-close" } })
463
- : _vm._e(),
464
- ],
465
- 1
466
- ),
467
- _c(
468
- "div",
469
- {
470
- class: [
471
- _vm.prefixClsHeader,
472
- _vm.modalType === "base" ? _vm.prefixClsBottom : "",
473
- ],
474
- },
475
- [
476
- _vm.modalType !== "base"
477
- ? _c(
478
- "div",
479
- { class: _vm.prefixClsIcon },
480
- [
481
- _c("mds-icon", {
482
- style: _vm.iconStyle,
483
- attrs: { type: _vm.iconType },
484
- }),
485
- ],
486
- 1
487
- )
488
- : _vm._e(),
597
+ [
598
+ _vm.modalType !== "base"
599
+ ? _c(
600
+ "div",
601
+ { class: _vm.prefixClsIcon },
602
+ [
603
+ _c("mds-icon", {
604
+ style: _vm.iconStyle,
605
+ attrs: { type: _vm.iconType },
606
+ }),
607
+ ],
608
+ 1
609
+ )
610
+ : _vm._e(),
611
+ _vm.renderSlot
612
+ ? _c(
613
+ "div",
614
+ {
615
+ class:
616
+ ((_obj = {}),
617
+ (_obj["" + _vm.prefixClsTitle] = true),
618
+ (_obj.center = _vm.modalType !== "base"),
619
+ _obj),
620
+ },
621
+ [
622
+ _vm._t("title", [
623
+ _vm._v(
624
+ "\n " +
625
+ _vm._s(_vm.title) +
626
+ "\n "
627
+ ),
628
+ ]),
629
+ ],
630
+ 2
631
+ )
632
+ : _vm._e(),
633
+ ]
634
+ ),
489
635
  _vm.renderSlot
490
636
  ? _c(
491
637
  "div",
492
638
  {
493
- class:
494
- ((_obj = {}),
495
- (_obj["" + _vm.prefixClsTitle] = true),
496
- (_obj.center = _vm.modalType !== "base"),
497
- _obj),
639
+ class: [
640
+ _vm.prefixClsBody,
641
+ _vm.modalType === "base" ? _vm.prefixClsBottom : "",
642
+ ],
498
643
  },
499
- [
500
- _vm._t("title", [
501
- _vm._v(
502
- "\n " +
503
- _vm._s(_vm.title) +
504
- "\n "
505
- ),
506
- ]),
507
- ],
644
+ [_vm._t("default")],
508
645
  2
509
646
  )
510
647
  : _vm._e(),
511
- ]
512
- ),
513
- _vm.renderSlot
514
- ? _c(
515
- "div",
516
- {
517
- class: [
518
- _vm.prefixClsBody,
519
- _vm.modalType === "base" ? _vm.prefixClsBottom : "",
520
- ],
521
- },
522
- [_vm._t("default")],
523
- 2
524
- )
525
- : _vm._e(),
526
- _vm.footer && _vm.renderSlot
527
- ? _c("div", { class: _vm.prefixClsFooter }, [
528
- _vm.$slots.footer
529
- ? _c("div", [_vm._t("footer")], 2)
530
- : _c(
531
- "div",
532
- { class: _vm.prefixClsFooterDefault },
533
- [
534
- _vm.modalType !== "success"
535
- ? _c(
648
+ _vm.footer && _vm.renderSlot
649
+ ? _c("div", { class: _vm.prefixClsFooter }, [
650
+ _vm.$slots.footer
651
+ ? _c("div", [_vm._t("footer")], 2)
652
+ : _c(
653
+ "div",
654
+ { class: _vm.prefixClsFooterDefault },
655
+ [
656
+ _vm.modalType !== "success"
657
+ ? _c(
658
+ "mds-button",
659
+ {
660
+ class: _vm.prefixClsButton,
661
+ on: { click: _vm.handleCancel },
662
+ },
663
+ [_vm._v(_vm._s(_vm.cancelText))]
664
+ )
665
+ : _vm._e(),
666
+ _c(
536
667
  "mds-button",
537
668
  {
538
- class: _vm.prefixClsButton,
539
- on: { click: _vm.handleCancel },
669
+ style: _vm.okButtonStyle,
670
+ attrs: { type: "primary" },
671
+ on: { click: _vm.handleOk },
540
672
  },
541
- [_vm._v(_vm._s(_vm.cancelText))]
542
- )
543
- : _vm._e(),
544
- _c(
545
- "mds-button",
546
- {
547
- style: _vm.okButtonStyle,
548
- attrs: { type: "primary" },
549
- on: { click: _vm.handleOk },
550
- },
551
- [_vm._v(_vm._s(_vm.okText))]
673
+ [_vm._v(_vm._s(_vm.okText))]
674
+ ),
675
+ ],
676
+ 1
552
677
  ),
553
- ],
554
- 1
555
- ),
556
- ])
557
- : _vm._e(),
678
+ ])
679
+ : _vm._e(),
680
+ ]
681
+ ),
558
682
  ]),
559
- ]),
560
- ]
561
- ),
562
- ]
563
- )
683
+ ]
684
+ ),
685
+ ]
686
+ ),
687
+ ])
564
688
  }
565
689
  var staticRenderFns = []
566
690
  render._withStripped = true
@@ -569,19 +693,26 @@ render._withStripped = true
569
693
  // CONCATENATED MODULE: ./components/modal/modal.vue?vue&type=template&id=64c3d160&
570
694
 
571
695
  // EXTERNAL MODULE: external "babel-runtime/core-js/number/is-finite"
572
- var is_finite_ = __webpack_require__(64);
696
+ var is_finite_ = __webpack_require__(70);
573
697
  var is_finite_default = /*#__PURE__*/__webpack_require__.n(is_finite_);
574
698
 
575
699
  // EXTERNAL MODULE: external "./icon"
576
- var external_icon_ = __webpack_require__(4);
700
+ var external_icon_ = __webpack_require__(8);
577
701
  var external_icon_default = /*#__PURE__*/__webpack_require__.n(external_icon_);
578
702
 
579
703
  // EXTERNAL MODULE: external "./button"
580
- var external_button_ = __webpack_require__(7);
704
+ var external_button_ = __webpack_require__(13);
581
705
  var external_button_default = /*#__PURE__*/__webpack_require__.n(external_button_);
582
706
 
583
707
  // EXTERNAL MODULE: ./components/_util/util.js
584
- var util = __webpack_require__(11);
708
+ var util = __webpack_require__(15);
709
+
710
+ // EXTERNAL MODULE: ./components/_util/_popper/popup/popup-main.js
711
+ var popup_main = __webpack_require__(14);
712
+
713
+ // EXTERNAL MODULE: external "./transition"
714
+ var external_transition_ = __webpack_require__(11);
715
+ var external_transition_default = /*#__PURE__*/__webpack_require__.n(external_transition_);
585
716
 
586
717
  // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/modal/modal.vue?vue&type=script&lang=js&
587
718
 
@@ -627,6 +758,43 @@ var util = __webpack_require__(11);
627
758
  //
628
759
  //
629
760
  //
761
+ //
762
+ //
763
+ //
764
+ //
765
+ //
766
+ //
767
+ //
768
+ //
769
+ //
770
+ //
771
+ //
772
+ //
773
+ //
774
+ //
775
+ //
776
+ //
777
+ //
778
+ //
779
+ //
780
+ //
781
+ //
782
+ //
783
+ //
784
+ //
785
+ //
786
+ //
787
+ //
788
+ //
789
+ //
790
+ //
791
+ //
792
+ //
793
+ //
794
+ //
795
+ //
796
+
797
+
630
798
 
631
799
 
632
800
 
@@ -637,8 +805,10 @@ var PREFIXCLS = 'mds-modal';
637
805
  name: 'MdsModal',
638
806
  components: {
639
807
  MdsIcon: external_icon_default.a,
640
- MdsButton: external_button_default.a
808
+ MdsButton: external_button_default.a,
809
+ mdsTransition: external_transition_default.a
641
810
  },
811
+ mixins: [popup_main["b" /* default */]],
642
812
  props: {
643
813
  width: {
644
814
  type: [String, Number],
@@ -692,8 +862,14 @@ var PREFIXCLS = 'mds-modal';
692
862
  type: Boolean,
693
863
  default: true
694
864
  },
865
+ customClass: String,
866
+ customContentClass: String,
695
867
  destroyOnClose: Boolean,
696
- beforeClose: Function
868
+ beforeClose: Function,
869
+ disabledScroll: {
870
+ type: Boolean,
871
+ default: true
872
+ }
697
873
  },
698
874
  data: function data() {
699
875
  return {
@@ -767,6 +943,12 @@ var PREFIXCLS = 'mds-modal';
767
943
 
768
944
  watch: {
769
945
  visibility: function visibility(newVal, oldVal) {
946
+ if (newVal === oldVal) {
947
+ return;
948
+ }
949
+ if (this.disabledScroll) {
950
+ Object(util["d" /* fixBodyScroll */])(newVal);
951
+ }
770
952
  if (newVal) {
771
953
  this.renderSlot = newVal;
772
954
  } else {
@@ -785,7 +967,7 @@ var PREFIXCLS = 'mds-modal';
785
967
  _this.$emit('close');
786
968
  _this.$emit('update:visibility', false);
787
969
  };
788
- if (Object(util["f" /* isFunction */])(this.beforeClose)) {
970
+ if (Object(util["g" /* isFunction */])(this.beforeClose)) {
789
971
  this.beforeClose(done);
790
972
  } else {
791
973
  done();
@@ -798,14 +980,26 @@ var PREFIXCLS = 'mds-modal';
798
980
  if (e.target === e.currentTarget && this.maskClosable) {
799
981
  this.handleCancel();
800
982
  }
983
+ },
984
+ initZindex: function initZindex() {
985
+ var _this2 = this;
986
+
987
+ if (this._opening) return;
988
+ if (!this.rendered) {
989
+ this.rendered = true;
990
+ this.$nextTick(function () {
991
+ _this2.open();
992
+ });
993
+ } else {
994
+ this.open();
995
+ }
801
996
  }
802
997
  },
803
- beforeDestroy: function beforeDestroy() {
804
- document.body.removeChild(this.$refs.root);
805
- },
998
+
806
999
  mounted: function mounted() {
807
1000
  if (this.visibility) {
808
1001
  this.renderSlot = true;
1002
+ this.initZindex();
809
1003
  }
810
1004
  document.body.appendChild(this.$refs.root);
811
1005
  }
@@ -849,45 +1043,690 @@ modal.install = function (Vue) {
849
1043
 
850
1044
  /***/ }),
851
1045
 
852
- /***/ 131:
1046
+ /***/ 13:
1047
+ /***/ (function(module, exports) {
1048
+
1049
+ module.exports = __WEBPACK_EXTERNAL_MODULE__13__;
1050
+
1051
+ /***/ }),
1052
+
1053
+ /***/ 139:
853
1054
  /***/ (function(module, exports) {
854
1055
 
855
1056
  // removed by extract-text-webpack-plugin
856
1057
 
857
1058
  /***/ }),
858
1059
 
859
- /***/ 183:
1060
+ /***/ 14:
1061
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1062
+
1063
+ "use strict";
1064
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
1065
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
1066
+ /* harmony import */ var _dom_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
1067
+ /* harmony import */ var _popup_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
1068
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _popup_manager__WEBPACK_IMPORTED_MODULE_2__["a"]; });
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+ var idSeed = 1;
1075
+
1076
+ var scrollBarWidth = void 0;
1077
+
1078
+ /* harmony default export */ __webpack_exports__["b"] = ({
1079
+ props: {
1080
+ visibility: {
1081
+ type: Boolean,
1082
+ default: false
1083
+ },
1084
+ openDelay: {},
1085
+ closeDelay: {},
1086
+ zIndex: {},
1087
+ modal: {
1088
+ type: Boolean,
1089
+ default: false
1090
+ },
1091
+ modalFade: {
1092
+ type: Boolean,
1093
+ default: true
1094
+ },
1095
+ modalClass: {},
1096
+ modalAppendToBody: {
1097
+ type: Boolean,
1098
+ default: false
1099
+ },
1100
+ lockScroll: {
1101
+ type: Boolean,
1102
+ default: true
1103
+ },
1104
+ closeOnPressEscape: {
1105
+ type: Boolean,
1106
+ default: false
1107
+ },
1108
+ closeOnClickModal: {
1109
+ type: Boolean,
1110
+ default: false
1111
+ }
1112
+ },
1113
+
1114
+ beforeMount: function beforeMount() {
1115
+ this._popupId = 'popup-' + idSeed++;
1116
+ _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].register(this._popupId, this);
1117
+ },
1118
+ beforeDestroy: function beforeDestroy() {
1119
+ _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].deregister(this._popupId);
1120
+ _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].closeModal(this._popupId);
1121
+
1122
+ this.restoreBodyStyle();
1123
+ },
1124
+ data: function data() {
1125
+ return {
1126
+ opened: false,
1127
+ bodyPaddingRight: null,
1128
+ computedBodyPaddingRight: 0,
1129
+ withoutHiddenClass: true,
1130
+ rendered: false
1131
+ };
1132
+ },
1133
+
1134
+
1135
+ watch: {
1136
+ visibility: function visibility(val) {
1137
+ var _this = this;
1138
+
1139
+ if (val) {
1140
+ if (this._opening) return;
1141
+ if (!this.rendered) {
1142
+ this.rendered = true;
1143
+ vue__WEBPACK_IMPORTED_MODULE_0___default.a.nextTick(function () {
1144
+ _this.open();
1145
+ });
1146
+ } else {
1147
+ this.open();
1148
+ }
1149
+ } else {
1150
+ this.close();
1151
+ }
1152
+ }
1153
+ },
1154
+
1155
+ methods: {
1156
+ open: function open(options) {
1157
+ var _this2 = this;
1158
+
1159
+ if (!this.rendered) {
1160
+ this.rendered = true;
1161
+ }
1162
+ var props = Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* merge */ "e"])({}, this.$props || this, options);
1163
+
1164
+ if (this._closeTimer) {
1165
+ clearTimeout(this._closeTimer);
1166
+ this._closeTimer = null;
1167
+ }
1168
+ clearTimeout(this._openTimer);
1169
+
1170
+ var openDelay = Number(props.openDelay);
1171
+ if (openDelay > 0) {
1172
+ this._openTimer = setTimeout(function () {
1173
+ _this2._openTimer = null;
1174
+ _this2.doOpen(props);
1175
+ }, openDelay);
1176
+ } else {
1177
+ this.doOpen(props);
1178
+ }
1179
+ },
1180
+ doOpen: function doOpen(props) {
1181
+ if (this.$isServer) return;
1182
+ if (this.willOpen && !this.willOpen()) return;
1183
+ if (this.opened) return;
1184
+
1185
+ this._opening = true;
1186
+
1187
+ var dom = this.$el;
1188
+
1189
+ var modal = props.modal;
1190
+
1191
+ var zIndex = props.zIndex;
1192
+ if (zIndex) {
1193
+ _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].zIndex = zIndex;
1194
+ }
1195
+
1196
+ if (modal) {
1197
+ if (this._closing) {
1198
+ _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].closeModal(this._popupId);
1199
+ this._closing = false;
1200
+ }
1201
+ _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].openModal(this._popupId, _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);
1202
+ if (props.lockScroll) {
1203
+ this.withoutHiddenClass = !Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* hasClass */ "d"])(document.body, 'mds-popup-parent--hidden');
1204
+ if (this.withoutHiddenClass) {
1205
+ this.bodyPaddingRight = document.body.style.paddingRight;
1206
+ this.computedBodyPaddingRight = parseInt(Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* getStyle */ "c"])(document.body, 'paddingRight'), 10);
1207
+ }
1208
+ scrollBarWidth = Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* getScrollBarWidth */ "b"])();
1209
+ var bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
1210
+ var bodyOverflowY = Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* getStyle */ "c"])(document.body, 'overflowY');
1211
+ if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {
1212
+ document.body.style.paddingRight = this.computedBodyPaddingRight + scrollBarWidth + 'px';
1213
+ }
1214
+ Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(document.body, 'mds-popup-parent--hidden');
1215
+ }
1216
+ }
1217
+
1218
+ if (getComputedStyle(dom).position === 'static') {
1219
+ dom.style.position = 'absolute';
1220
+ }
1221
+
1222
+ dom.style.zIndex = _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].nextZIndex();
1223
+ this.opened = true;
1224
+
1225
+ this.onOpen && this.onOpen();
1226
+
1227
+ this.doAfterOpen();
1228
+ },
1229
+ doAfterOpen: function doAfterOpen() {
1230
+ this._opening = false;
1231
+ },
1232
+ close: function close() {
1233
+ var _this3 = this;
1234
+
1235
+ if (this.willClose && !this.willClose()) return;
1236
+
1237
+ if (this._openTimer !== null) {
1238
+ clearTimeout(this._openTimer);
1239
+ this._openTimer = null;
1240
+ }
1241
+ clearTimeout(this._closeTimer);
1242
+
1243
+ var closeDelay = Number(this.closeDelay);
1244
+
1245
+ if (closeDelay > 0) {
1246
+ this._closeTimer = setTimeout(function () {
1247
+ _this3._closeTimer = null;
1248
+ _this3.doClose();
1249
+ }, closeDelay);
1250
+ } else {
1251
+ this.doClose();
1252
+ }
1253
+ },
1254
+ doClose: function doClose() {
1255
+ this._closing = true;
1256
+
1257
+ this.onClose && this.onClose();
1258
+
1259
+ if (this.lockScroll) {
1260
+ setTimeout(this.restoreBodyStyle, 200);
1261
+ }
1262
+
1263
+ this.opened = false;
1264
+
1265
+ this.doAfterClose();
1266
+ },
1267
+ doAfterClose: function doAfterClose() {
1268
+ _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].closeModal(this._popupId);
1269
+ this._closing = false;
1270
+ },
1271
+ restoreBodyStyle: function restoreBodyStyle() {
1272
+ if (this.modal && this.withoutHiddenClass) {
1273
+ document.body.style.paddingRight = this.bodyPaddingRight;
1274
+ Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(document.body, 'mds-popup-parent--hidden');
1275
+ }
1276
+ this.withoutHiddenClass = true;
1277
+ }
1278
+ }
1279
+ });
1280
+
1281
+
1282
+
1283
+ /***/ }),
1284
+
1285
+ /***/ 15:
1286
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1287
+
1288
+ "use strict";
1289
+ /* unused harmony export noop */
1290
+ /* unused harmony export getOffsetLeft */
1291
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getValueByPath; });
1292
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return valueEquals; });
1293
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return arrayFindIndex; });
1294
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return arrayFind; });
1295
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return coerceTruthyValueToArray; });
1296
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return isIE; });
1297
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return isEdge; });
1298
+ /* unused harmony export isFirefox */
1299
+ /* unused harmony export assert */
1300
+ /* unused harmony export escapeRegexpString */
1301
+ /* unused harmony export getOffsetWidth */
1302
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return isFunction; });
1303
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return fixBodyScroll; });
1304
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
1305
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
1306
+
1307
+
1308
+ // import { getScrollBarWidth } from './_popper/dom-helper'
1309
+ var currentBodyOverflow = '';
1310
+ // let currentBodyPaddingRight = ''
1311
+ var noop = function noop() {};
1312
+
1313
+ var getScroll = function getScroll(w, top) {
1314
+ var ret = top ? w.pageYOffset : w.pageXOffset;
1315
+ var method = top ? 'scrollTop' : 'scrollLeft';
1316
+ if (typeof ret !== 'number') {
1317
+ var d = w.document;
1318
+ // ie6,7,8 standard mode
1319
+ ret = d.documentElement[method];
1320
+ if (typeof ret !== 'number') {
1321
+ // quirks mode
1322
+ ret = d.body[method];
1323
+ }
1324
+ }
1325
+ return ret;
1326
+ };
1327
+
1328
+ var getClientPosition = function getClientPosition(elem) {
1329
+ var box = void 0;
1330
+ var x = void 0;
1331
+ var y = void 0;
1332
+ var doc = elem.ownerDocument;
1333
+ var body = doc.body;
1334
+ var docElem = doc && doc.documentElement;
1335
+ box = elem.getBoundingClientRect();
1336
+ x = box.left;
1337
+ y = box.top;
1338
+ x -= docElem.clientLeft || body.clientLeft || 0;
1339
+ y -= docElem.clientTop || body.clientTop || 0;
1340
+ return {
1341
+ left: x,
1342
+ top: y
1343
+ };
1344
+ };
1345
+
1346
+ var getOffsetLeft = function getOffsetLeft(el) {
1347
+ var pos = getClientPosition(el);
1348
+ var doc = el.ownerDocument;
1349
+ var w = doc.defaultView || doc.parentWindow;
1350
+ pos.left += getScroll(w);
1351
+ return pos.left;
1352
+ };
1353
+ /**
1354
+ * 获取对象深层级的对象,避免循环
1355
+ * @export
1356
+ * @param {*} sourceObj 源对象 {a:{b:{d:1}}}
1357
+ * @param {*} pathName path组成的数组 例如:'a.b.c'
1358
+ * @param {*} defaultValue 如果没有值默认的值 []
1359
+ */
1360
+ function getValueByPath(sourceObj, pathName, defaultValue) {
1361
+ var getValue = function getValue(sourceObj, pathNameArray) {
1362
+ var key = pathNameArray.shift();
1363
+ var value = sourceObj[key];
1364
+ if (value === undefined || value === null) {
1365
+ return defaultValue;
1366
+ } else if (pathNameArray.length === 0) {
1367
+ return value;
1368
+ } else if (pathNameArray.length > 0) {
1369
+ return getValue(value, pathNameArray);
1370
+ }
1371
+ };
1372
+ var pathNameArray = pathName.split('.');
1373
+ return getValue(sourceObj, pathNameArray);
1374
+ }
1375
+ /**
1376
+ *
1377
+ * 判断两个数是否相等
1378
+ * @param {*} a
1379
+ * @param {*} b
1380
+ * @returns
1381
+ */
1382
+ var valueEquals = function valueEquals(a, b) {
1383
+ // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
1384
+ if (a === b) return true;
1385
+ if (!(a instanceof Array)) return false;
1386
+ if (!(b instanceof Array)) return false;
1387
+ if (a.length !== b.length) return false;
1388
+ for (var i = 0; i !== a.length; ++i) {
1389
+ if (a[i] !== b[i]) return false;
1390
+ }
1391
+ return true;
1392
+ };
1393
+ // TODO: use native Array.find, Array.findIndex when IE support is dropped
1394
+ var arrayFindIndex = function arrayFindIndex(arr, pred) {
1395
+ for (var i = 0; i !== arr.length; ++i) {
1396
+ if (pred(arr[i])) {
1397
+ return i;
1398
+ }
1399
+ }
1400
+ return -1;
1401
+ };
1402
+
1403
+ var arrayFind = function arrayFind(arr, pred) {
1404
+ var idx = arrayFindIndex(arr, pred);
1405
+ return idx !== -1 ? arr[idx] : undefined;
1406
+ };
1407
+
1408
+ // coerce truthy value to array
1409
+ var coerceTruthyValueToArray = function coerceTruthyValueToArray(val) {
1410
+ if (Array.isArray(val)) {
1411
+ return val;
1412
+ } else if (val) {
1413
+ return [val];
1414
+ } else {
1415
+ return [];
1416
+ }
1417
+ };
1418
+
1419
+ var isIE = function isIE() {
1420
+ return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && !isNaN(Number(document.documentMode));
1421
+ };
1422
+
1423
+ var isEdge = function isEdge() {
1424
+ return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;
1425
+ };
1426
+
1427
+ var isFirefox = function isFirefox() {
1428
+ return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);
1429
+ };
1430
+
1431
+ var assert = function assert(condition, msg) {
1432
+ if (!condition) throw new Error('[mds-ui] ' + msg);
1433
+ };
1434
+ /**
1435
+ *
1436
+ * 特殊字符转译
1437
+ * @param {string} [value='']
1438
+ */
1439
+ var escapeRegexpString = function escapeRegexpString() {
1440
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1441
+ return String(value).replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
1442
+ };
1443
+ /**
1444
+ * Get element offset width
1445
+ * @param {*} node HTMLDOMElemment
1446
+ * @return {Number} width
1447
+ */
1448
+ /**
1449
+ * Get element offset width
1450
+ * @param {*} node HTMLDOMElemment
1451
+ * @return {Number} width
1452
+ */
1453
+ var getOffsetWidth = function getOffsetWidth(node) {
1454
+ return node ? node.offsetWidth : 0;
1455
+ };
1456
+
1457
+ /** 判断是否为函数
1458
+ * @param {*} functionToCheck
1459
+ * @returns
1460
+ */
1461
+ var isFunction = function isFunction(functionToCheck) {
1462
+ var getType = {};
1463
+ return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
1464
+ };
1465
+
1466
+ /**
1467
+ * 弹窗类组件显现时修正body滚动
1468
+ * @param {Boolean} visible 弹窗显现状态
1469
+ */
1470
+ function fixBodyScroll(visible) {
1471
+ var bodyStyle = document.body.style;
1472
+ if (visible) {
1473
+ currentBodyOverflow = bodyStyle.overflow;
1474
+ // currentBodyPaddingRight = bodyStyle.paddingRight
1475
+ bodyStyle.overflow = 'hidden';
1476
+ // const basePaddingRight = parseInt(currentBodyPaddingRight || 0)
1477
+ // const baseScrollWidth = parseInt(getScrollBarWidth())
1478
+ // 防止页面抖动,后续需要自定义滚动条解决
1479
+ // bodyStyle.paddingRight = basePaddingRight + baseScrollWidth + 'px'
1480
+ } else {
1481
+ var timer = setTimeout(function () {
1482
+ clearTimeout(timer);
1483
+ bodyStyle.overflow = currentBodyOverflow;
1484
+ // bodyStyle.paddingRight = currentBodyPaddingRight
1485
+ // currentBodyPaddingRight = ''
1486
+ }, 180);
1487
+ }
1488
+ }
1489
+
1490
+ /***/ }),
1491
+
1492
+ /***/ 193:
860
1493
  /***/ (function(module, exports) {
861
1494
 
862
1495
  // removed by extract-text-webpack-plugin
863
1496
 
864
1497
  /***/ }),
865
1498
 
866
- /***/ 4:
1499
+ /***/ 2:
867
1500
  /***/ (function(module, exports) {
868
1501
 
869
- module.exports = __WEBPACK_EXTERNAL_MODULE__4__;
1502
+ module.exports = __WEBPACK_EXTERNAL_MODULE__2__;
870
1503
 
871
1504
  /***/ }),
872
1505
 
873
1506
  /***/ 5:
874
- /***/ (function(module, exports) {
1507
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
875
1508
 
876
- module.exports = __WEBPACK_EXTERNAL_MODULE__5__;
1509
+ "use strict";
1510
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
1511
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
1512
+ /* harmony import */ var _dom_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
1513
+
1514
+
1515
+
1516
+ var hasModal = false;
1517
+ var hasInitZIndex = false;
1518
+ var zIndex = void 0;
1519
+
1520
+ var getModal = function getModal() {
1521
+ if (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) return;
1522
+ var modalDom = PopupManager.modalDom;
1523
+ if (modalDom) {
1524
+ hasModal = true;
1525
+ } else {
1526
+ hasModal = false;
1527
+ modalDom = document.createElement('div');
1528
+ PopupManager.modalDom = modalDom;
1529
+
1530
+ modalDom.addEventListener('touchmove', function (event) {
1531
+ event.preventDefault();
1532
+ event.stopPropagation();
1533
+ });
1534
+
1535
+ modalDom.addEventListener('click', function () {
1536
+ PopupManager.doOnModalClick && PopupManager.doOnModalClick();
1537
+ });
1538
+ }
1539
+
1540
+ return modalDom;
1541
+ };
1542
+
1543
+ var instances = {};
1544
+
1545
+ var PopupManager = {
1546
+ modalFade: true,
1547
+
1548
+ getInstance: function getInstance(id) {
1549
+ return instances[id];
1550
+ },
1551
+
1552
+ register: function register(id, instance) {
1553
+ if (id && instance) {
1554
+ instances[id] = instance;
1555
+ }
1556
+ },
1557
+
1558
+ deregister: function deregister(id) {
1559
+ if (id) {
1560
+ instances[id] = null;
1561
+ delete instances[id];
1562
+ }
1563
+ },
1564
+
1565
+ nextZIndex: function nextZIndex() {
1566
+ return PopupManager.zIndex++;
1567
+ },
1568
+
1569
+ modalStack: [],
1570
+
1571
+ doOnModalClick: function doOnModalClick() {
1572
+ var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
1573
+ if (!topItem) return;
1574
+
1575
+ var instance = PopupManager.getInstance(topItem.id);
1576
+ if (instance && instance.closeOnClickModal) {
1577
+ instance.close();
1578
+ }
1579
+ },
1580
+
1581
+ openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {
1582
+ if (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) return;
1583
+ if (!id || zIndex === undefined) return;
1584
+ this.modalFade = modalFade;
1585
+
1586
+ var modalStack = this.modalStack;
1587
+
1588
+ for (var i = 0, j = modalStack.length; i < j; i++) {
1589
+ var item = modalStack[i];
1590
+ if (item.id === id) {
1591
+ return;
1592
+ }
1593
+ }
1594
+
1595
+ var modalDom = getModal();
1596
+
1597
+ Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, 'v-modal');
1598
+ if (this.modalFade && !hasModal) {
1599
+ Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, 'v-modal-enter');
1600
+ }
1601
+ if (modalClass) {
1602
+ var classArr = modalClass.trim().split(/\s+/);
1603
+ classArr.forEach(function (item) {
1604
+ return Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, item);
1605
+ });
1606
+ }
1607
+ setTimeout(function () {
1608
+ Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(modalDom, 'v-modal-enter');
1609
+ }, 200);
1610
+
1611
+ if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
1612
+ dom.parentNode.appendChild(modalDom);
1613
+ } else {
1614
+ document.body.appendChild(modalDom);
1615
+ }
1616
+
1617
+ if (zIndex) {
1618
+ modalDom.style.zIndex = zIndex;
1619
+ }
1620
+ modalDom.tabIndex = 0;
1621
+ modalDom.style.display = '';
1622
+
1623
+ this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
1624
+ },
1625
+
1626
+ closeModal: function closeModal(id) {
1627
+ var modalStack = this.modalStack;
1628
+ var modalDom = getModal();
1629
+
1630
+ if (modalStack.length > 0) {
1631
+ var topItem = modalStack[modalStack.length - 1];
1632
+ if (topItem.id === id) {
1633
+ if (topItem.modalClass) {
1634
+ var classArr = topItem.modalClass.trim().split(/\s+/);
1635
+ classArr.forEach(function (item) {
1636
+ return Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(modalDom, item);
1637
+ });
1638
+ }
1639
+
1640
+ modalStack.pop();
1641
+ if (modalStack.length > 0) {
1642
+ modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
1643
+ }
1644
+ } else {
1645
+ for (var i = modalStack.length - 1; i >= 0; i--) {
1646
+ if (modalStack[i].id === id) {
1647
+ modalStack.splice(i, 1);
1648
+ break;
1649
+ }
1650
+ }
1651
+ }
1652
+ }
1653
+
1654
+ if (modalStack.length === 0) {
1655
+ if (this.modalFade) {
1656
+ Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, 'v-modal-leave');
1657
+ }
1658
+ setTimeout(function () {
1659
+ if (modalStack.length === 0) {
1660
+ if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
1661
+ modalDom.style.display = 'none';
1662
+ PopupManager.modalDom = undefined;
1663
+ }
1664
+ Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(modalDom, 'v-modal-leave');
1665
+ }, 200);
1666
+ }
1667
+ }
1668
+ };
1669
+
1670
+ Object.defineProperty(PopupManager, 'zIndex', {
1671
+ configurable: true,
1672
+ get: function get() {
1673
+ if (!hasInitZIndex) {
1674
+ zIndex = zIndex || (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$ELEMENT || {}).zIndex || 2000;
1675
+ hasInitZIndex = true;
1676
+ }
1677
+ return zIndex;
1678
+ },
1679
+ set: function set(value) {
1680
+ zIndex = value;
1681
+ }
1682
+ });
1683
+
1684
+ var getTopPopup = function getTopPopup() {
1685
+ if (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) return;
1686
+ if (PopupManager.modalStack.length > 0) {
1687
+ var topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];
1688
+ if (!topPopup) return;
1689
+ var instance = PopupManager.getInstance(topPopup.id);
1690
+
1691
+ return instance;
1692
+ }
1693
+ };
1694
+
1695
+ if (!vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) {
1696
+ // handle `esc` key when the popup is shown
1697
+ window.addEventListener('keydown', function (event) {
1698
+ if (event.keyCode === 27) {
1699
+ var topPopup = getTopPopup();
1700
+
1701
+ if (topPopup && topPopup.closeOnPressEscape) {
1702
+ topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();
1703
+ }
1704
+ }
1705
+ });
1706
+ }
1707
+
1708
+ /* harmony default export */ __webpack_exports__["a"] = (PopupManager);
877
1709
 
878
1710
  /***/ }),
879
1711
 
880
- /***/ 64:
1712
+ /***/ 70:
881
1713
  /***/ (function(module, exports) {
882
1714
 
883
1715
  module.exports = require("babel-runtime/core-js/number/is-finite");
884
1716
 
885
1717
  /***/ }),
886
1718
 
887
- /***/ 7:
1719
+ /***/ 8:
1720
+ /***/ (function(module, exports) {
1721
+
1722
+ module.exports = __WEBPACK_EXTERNAL_MODULE__8__;
1723
+
1724
+ /***/ }),
1725
+
1726
+ /***/ 9:
888
1727
  /***/ (function(module, exports) {
889
1728
 
890
- module.exports = __WEBPACK_EXTERNAL_MODULE__7__;
1729
+ module.exports = require("babel-runtime/helpers/typeof");
891
1730
 
892
1731
  /***/ })
893
1732