UNPKG

317 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory(require("vue"), require("./_util/dateUtil"), require("./_util/proptype"), require("./icon"), require("./_mixin/emitter"), require("./button"), require("./input"), require("./_util/util"), require("./_mixin/locale"), require("./_util/clickoutside"), require("./_util/merge"), require("./_util/repeatClick"), require("./_util/dom"));
4 else if(typeof define === 'function' && define.amd)
5 define(["vue", "./_util/dateUtil", "./_util/proptype", "./icon", "./_mixin/emitter", "./button", "./input", "./_util/util", "./_mixin/locale", "./_util/clickoutside", "./_util/merge", "./_util/repeatClick", "./_util/dom"], factory);
6 else {
7 var a = typeof exports === 'object' ? factory(require("vue"), require("./_util/dateUtil"), require("./_util/proptype"), require("./icon"), require("./_mixin/emitter"), require("./button"), require("./input"), require("./_util/util"), require("./_mixin/locale"), require("./_util/clickoutside"), require("./_util/merge"), require("./_util/repeatClick"), require("./_util/dom")) : factory(root["Vue"], root["./_util/dateUtil"], root["./_util/proptype"], root["./icon"], root["./_mixin/emitter"], root["./button"], root["./input"], root["./_util/util"], root["./_mixin/locale"], root["./_util/clickoutside"], root["./_util/merge"], root["./_util/repeatClick"], root["./_util/dom"]);
8 for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9 }
10})(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__4__, __WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__8__, __WEBPACK_EXTERNAL_MODULE__12__, __WEBPACK_EXTERNAL_MODULE__13__, __WEBPACK_EXTERNAL_MODULE__16__, __WEBPACK_EXTERNAL_MODULE__20__, __WEBPACK_EXTERNAL_MODULE__25__, __WEBPACK_EXTERNAL_MODULE__33__, __WEBPACK_EXTERNAL_MODULE__49__, __WEBPACK_EXTERNAL_MODULE__66__, __WEBPACK_EXTERNAL_MODULE__67__) {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14/******/
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17/******/
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId]) {
20/******/ return installedModules[moduleId].exports;
21/******/ }
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ i: moduleId,
25/******/ l: false,
26/******/ exports: {}
27/******/ };
28/******/
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31/******/
32/******/ // Flag the module as loaded
33/******/ module.l = true;
34/******/
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38/******/
39/******/
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42/******/
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45/******/
46/******/ // define getter function for harmony exports
47/******/ __webpack_require__.d = function(exports, name, getter) {
48/******/ if(!__webpack_require__.o(exports, name)) {
49/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50/******/ }
51/******/ };
52/******/
53/******/ // define __esModule on exports
54/******/ __webpack_require__.r = function(exports) {
55/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57/******/ }
58/******/ Object.defineProperty(exports, '__esModule', { value: true });
59/******/ };
60/******/
61/******/ // create a fake namespace object
62/******/ // mode & 1: value is a module id, require it
63/******/ // mode & 2: merge all properties of value into the ns
64/******/ // mode & 4: return value when already ns object
65/******/ // mode & 8|1: behave like require
66/******/ __webpack_require__.t = function(value, mode) {
67/******/ if(mode & 1) value = __webpack_require__(value);
68/******/ if(mode & 8) return value;
69/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70/******/ var ns = Object.create(null);
71/******/ __webpack_require__.r(ns);
72/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74/******/ return ns;
75/******/ };
76/******/
77/******/ // getDefaultExport function for compatibility with non-harmony modules
78/******/ __webpack_require__.n = function(module) {
79/******/ var getter = module && module.__esModule ?
80/******/ function getDefault() { return module['default']; } :
81/******/ function getModuleExports() { return module; };
82/******/ __webpack_require__.d(getter, 'a', getter);
83/******/ return getter;
84/******/ };
85/******/
86/******/ // Object.prototype.hasOwnProperty.call
87/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88/******/
89/******/ // __webpack_public_path__
90/******/ __webpack_require__.p = "/dist/";
91/******/
92/******/
93/******/ // Load entry module and return exports
94/******/ return __webpack_require__(__webpack_require__.s = 87);
95/******/ })
96/************************************************************************/
97/******/ ({
98
99/***/ 0:
100/***/ (function(module, __webpack_exports__, __webpack_require__) {
101
102"use strict";
103/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
104/* globals __VUE_SSR_CONTEXT__ */
105
106// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
107// This module is a runtime utility for cleaner component module output and will
108// be included in the final webpack user bundle.
109
110function normalizeComponent (
111 scriptExports,
112 render,
113 staticRenderFns,
114 functionalTemplate,
115 injectStyles,
116 scopeId,
117 moduleIdentifier, /* server only */
118 shadowMode /* vue-cli only */
119) {
120 // Vue.extend constructor export interop
121 var options = typeof scriptExports === 'function'
122 ? scriptExports.options
123 : scriptExports
124
125 // render functions
126 if (render) {
127 options.render = render
128 options.staticRenderFns = staticRenderFns
129 options._compiled = true
130 }
131
132 // functional template
133 if (functionalTemplate) {
134 options.functional = true
135 }
136
137 // scopedId
138 if (scopeId) {
139 options._scopeId = 'data-v-' + scopeId
140 }
141
142 var hook
143 if (moduleIdentifier) { // server build
144 hook = function (context) {
145 // 2.3 injection
146 context =
147 context || // cached call
148 (this.$vnode && this.$vnode.ssrContext) || // stateful
149 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
150 // 2.2 with runInNewContext: true
151 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
152 context = __VUE_SSR_CONTEXT__
153 }
154 // inject component styles
155 if (injectStyles) {
156 injectStyles.call(this, context)
157 }
158 // register component module identifier for async chunk inferrence
159 if (context && context._registeredComponents) {
160 context._registeredComponents.add(moduleIdentifier)
161 }
162 }
163 // used by ssr in case component is cached and beforeCreate
164 // never gets called
165 options._ssrRegister = hook
166 } else if (injectStyles) {
167 hook = shadowMode
168 ? function () {
169 injectStyles.call(
170 this,
171 (options.functional ? this.parent : this).$root.$options.shadowRoot
172 )
173 }
174 : injectStyles
175 }
176
177 if (hook) {
178 if (options.functional) {
179 // for template-only hot-reload because in that case the render fn doesn't
180 // go through the normalizer
181 options._injectStyles = hook
182 // register for functional component in vue file
183 var originalRender = options.render
184 options.render = function renderWithStyleInjection (h, context) {
185 hook.call(context)
186 return originalRender(h, context)
187 }
188 } else {
189 // inject component registration as beforeCreate hook
190 var existing = options.beforeCreate
191 options.beforeCreate = existing
192 ? [].concat(existing, hook)
193 : [hook]
194 }
195 }
196
197 return {
198 exports: scriptExports,
199 options: options
200 }
201}
202
203
204/***/ }),
205
206/***/ 1:
207/***/ (function(module, __webpack_exports__, __webpack_require__) {
208
209"use strict";
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 */
231var isServer = vue__WEBPACK_IMPORTED_MODULE_1___default.a.prototype.$isServer;
232var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
233var MOZ_HACK_REGEXP = /^moz([A-Z])/;
234var ieVersion = isServer ? 0 : Number(document.documentMode);
235
236/* istanbul ignore next */
237var trim = function trim(string) {
238 return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
239};
240/* istanbul ignore next */
241var 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};
246
247/* istanbul ignore next */
248var 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 };
261 }
262}();
263
264/* istanbul ignore next */
265var 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 */
282var 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);
288 };
289 on(el, event, listener);
290};
291
292/* istanbul ignore next */
293function 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 */
306function 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;
319 }
320 }
321 if (!el.classList) {
322 el.setAttribute('class', curClass);
323 }
324}
325
326/* istanbul ignore next */
327function 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 }
341 }
342 if (!el.classList) {
343 el.setAttribute('class', trim(curClass));
344 }
345}
346
347/* istanbul ignore next */
348var 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;
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];
381 }
382};
383
384/* istanbul ignore next */
385function setStyle(element, styleName, value) {
386 if (!element || !styleName) return;
387
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 }
394 } else {
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 }
401 }
402}
403
404var isScroll = function isScroll(el, vertical) {
405 if (isServer) return;
406
407 var determinedDirection = vertical !== null && vertical !== undefined;
408 var overflow = determinedDirection ? vertical ? getStyle(el, 'overflow-y') : getStyle(el, 'overflow-x') : getStyle(el, 'overflow');
409
410 return overflow.match(/(scroll|auto|overlay)/);
411};
412
413var 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;
428};
429
430var 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;
448};
449
450function 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
466var scrollBarWidth = void 0;
467function 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/***/ 10:
496/***/ (function(module, exports) {
497
498module.exports = require("babel-runtime/core-js/object/keys");
499
500/***/ }),
501
502/***/ 12:
503/***/ (function(module, exports) {
504
505module.exports = __WEBPACK_EXTERNAL_MODULE__12__;
506
507/***/ }),
508
509/***/ 13:
510/***/ (function(module, exports) {
511
512module.exports = __WEBPACK_EXTERNAL_MODULE__13__;
513
514/***/ }),
515
516/***/ 139:
517/***/ (function(module, exports) {
518
519// removed by extract-text-webpack-plugin
520
521/***/ }),
522
523/***/ 14:
524/***/ (function(module, __webpack_exports__, __webpack_require__) {
525
526"use strict";
527/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
528/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
529/* harmony import */ var _dom_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
530/* harmony import */ var _popup_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
531/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _popup_manager__WEBPACK_IMPORTED_MODULE_2__["a"]; });
532
533
534
535
536
537var idSeed = 1;
538
539var scrollBarWidth = void 0;
540
541/* harmony default export */ __webpack_exports__["b"] = ({
542 props: {
543 visibility: {
544 type: Boolean,
545 default: false
546 },
547 openDelay: {},
548 closeDelay: {},
549 zIndex: {},
550 modal: {
551 type: Boolean,
552 default: false
553 },
554 modalFade: {
555 type: Boolean,
556 default: true
557 },
558 modalClass: {},
559 modalAppendToBody: {
560 type: Boolean,
561 default: false
562 },
563 lockScroll: {
564 type: Boolean,
565 default: true
566 },
567 closeOnPressEscape: {
568 type: Boolean,
569 default: false
570 },
571 closeOnClickModal: {
572 type: Boolean,
573 default: false
574 }
575 },
576
577 beforeMount: function beforeMount() {
578 this._popupId = 'popup-' + idSeed++;
579 _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].register(this._popupId, this);
580 },
581 beforeDestroy: function beforeDestroy() {
582 _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].deregister(this._popupId);
583 _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].closeModal(this._popupId);
584
585 this.restoreBodyStyle();
586 },
587 data: function data() {
588 return {
589 opened: false,
590 bodyPaddingRight: null,
591 computedBodyPaddingRight: 0,
592 withoutHiddenClass: true,
593 rendered: false
594 };
595 },
596
597
598 watch: {
599 visibility: function visibility(val) {
600 var _this = this;
601
602 if (val) {
603 if (this._opening) return;
604 if (!this.rendered) {
605 this.rendered = true;
606 vue__WEBPACK_IMPORTED_MODULE_0___default.a.nextTick(function () {
607 _this.open();
608 });
609 } else {
610 this.open();
611 }
612 } else {
613 this.close();
614 }
615 }
616 },
617
618 methods: {
619 open: function open(options) {
620 var _this2 = this;
621
622 if (!this.rendered) {
623 this.rendered = true;
624 }
625 var props = Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* merge */ "e"])({}, this.$props || this, options);
626
627 if (this._closeTimer) {
628 clearTimeout(this._closeTimer);
629 this._closeTimer = null;
630 }
631 clearTimeout(this._openTimer);
632
633 var openDelay = Number(props.openDelay);
634 if (openDelay > 0) {
635 this._openTimer = setTimeout(function () {
636 _this2._openTimer = null;
637 _this2.doOpen(props);
638 }, openDelay);
639 } else {
640 this.doOpen(props);
641 }
642 },
643 doOpen: function doOpen(props) {
644 if (this.$isServer) return;
645 if (this.willOpen && !this.willOpen()) return;
646 if (this.opened) return;
647
648 this._opening = true;
649
650 var dom = this.$el;
651
652 var modal = props.modal;
653
654 var zIndex = props.zIndex;
655 if (zIndex) {
656 _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].zIndex = zIndex;
657 }
658
659 if (modal) {
660 if (this._closing) {
661 _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].closeModal(this._popupId);
662 this._closing = false;
663 }
664 _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);
665 if (props.lockScroll) {
666 this.withoutHiddenClass = !Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* hasClass */ "d"])(document.body, 'mds-popup-parent--hidden');
667 if (this.withoutHiddenClass) {
668 this.bodyPaddingRight = document.body.style.paddingRight;
669 this.computedBodyPaddingRight = parseInt(Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* getStyle */ "c"])(document.body, 'paddingRight'), 10);
670 }
671 scrollBarWidth = Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* getScrollBarWidth */ "b"])();
672 var bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
673 var bodyOverflowY = Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* getStyle */ "c"])(document.body, 'overflowY');
674 if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {
675 document.body.style.paddingRight = this.computedBodyPaddingRight + scrollBarWidth + 'px';
676 }
677 Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(document.body, 'mds-popup-parent--hidden');
678 }
679 }
680
681 if (getComputedStyle(dom).position === 'static') {
682 dom.style.position = 'absolute';
683 }
684
685 dom.style.zIndex = _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].nextZIndex();
686 this.opened = true;
687
688 this.onOpen && this.onOpen();
689
690 this.doAfterOpen();
691 },
692 doAfterOpen: function doAfterOpen() {
693 this._opening = false;
694 },
695 close: function close() {
696 var _this3 = this;
697
698 if (this.willClose && !this.willClose()) return;
699
700 if (this._openTimer !== null) {
701 clearTimeout(this._openTimer);
702 this._openTimer = null;
703 }
704 clearTimeout(this._closeTimer);
705
706 var closeDelay = Number(this.closeDelay);
707
708 if (closeDelay > 0) {
709 this._closeTimer = setTimeout(function () {
710 _this3._closeTimer = null;
711 _this3.doClose();
712 }, closeDelay);
713 } else {
714 this.doClose();
715 }
716 },
717 doClose: function doClose() {
718 this._closing = true;
719
720 this.onClose && this.onClose();
721
722 if (this.lockScroll) {
723 setTimeout(this.restoreBodyStyle, 200);
724 }
725
726 this.opened = false;
727
728 this.doAfterClose();
729 },
730 doAfterClose: function doAfterClose() {
731 _popup_manager__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].closeModal(this._popupId);
732 this._closing = false;
733 },
734 restoreBodyStyle: function restoreBodyStyle() {
735 if (this.modal && this.withoutHiddenClass) {
736 document.body.style.paddingRight = this.bodyPaddingRight;
737 Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(document.body, 'mds-popup-parent--hidden');
738 }
739 this.withoutHiddenClass = true;
740 }
741 }
742});
743
744
745
746/***/ }),
747
748/***/ 15:
749/***/ (function(module, __webpack_exports__, __webpack_require__) {
750
751"use strict";
752/* unused harmony export noop */
753/* unused harmony export getOffsetLeft */
754/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getValueByPath; });
755/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return valueEquals; });
756/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return arrayFindIndex; });
757/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return arrayFind; });
758/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return coerceTruthyValueToArray; });
759/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return isIE; });
760/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return isEdge; });
761/* unused harmony export isFirefox */
762/* unused harmony export assert */
763/* unused harmony export escapeRegexpString */
764/* unused harmony export getOffsetWidth */
765/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return isFunction; });
766/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return fixBodyScroll; });
767/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
768/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
769
770
771// import { getScrollBarWidth } from './_popper/dom-helper'
772var currentBodyOverflow = '';
773// let currentBodyPaddingRight = ''
774var noop = function noop() {};
775
776var getScroll = function getScroll(w, top) {
777 var ret = top ? w.pageYOffset : w.pageXOffset;
778 var method = top ? 'scrollTop' : 'scrollLeft';
779 if (typeof ret !== 'number') {
780 var d = w.document;
781 // ie6,7,8 standard mode
782 ret = d.documentElement[method];
783 if (typeof ret !== 'number') {
784 // quirks mode
785 ret = d.body[method];
786 }
787 }
788 return ret;
789};
790
791var getClientPosition = function getClientPosition(elem) {
792 var box = void 0;
793 var x = void 0;
794 var y = void 0;
795 var doc = elem.ownerDocument;
796 var body = doc.body;
797 var docElem = doc && doc.documentElement;
798 box = elem.getBoundingClientRect();
799 x = box.left;
800 y = box.top;
801 x -= docElem.clientLeft || body.clientLeft || 0;
802 y -= docElem.clientTop || body.clientTop || 0;
803 return {
804 left: x,
805 top: y
806 };
807};
808
809var getOffsetLeft = function getOffsetLeft(el) {
810 var pos = getClientPosition(el);
811 var doc = el.ownerDocument;
812 var w = doc.defaultView || doc.parentWindow;
813 pos.left += getScroll(w);
814 return pos.left;
815};
816/**
817 * 获取对象深层级的对象,避免循环
818 * @export
819 * @param {*} sourceObj 源对象 {a:{b:{d:1}}}
820 * @param {*} pathName path组成的数组 例如:'a.b.c'
821 * @param {*} defaultValue 如果没有值默认的值 []
822 */
823function getValueByPath(sourceObj, pathName, defaultValue) {
824 var getValue = function getValue(sourceObj, pathNameArray) {
825 var key = pathNameArray.shift();
826 var value = sourceObj[key];
827 if (value === undefined || value === null) {
828 return defaultValue;
829 } else if (pathNameArray.length === 0) {
830 return value;
831 } else if (pathNameArray.length > 0) {
832 return getValue(value, pathNameArray);
833 }
834 };
835 var pathNameArray = pathName.split('.');
836 return getValue(sourceObj, pathNameArray);
837}
838/**
839 *
840 * 判断两个数是否相等
841 * @param {*} a
842 * @param {*} b
843 * @returns
844 */
845var valueEquals = function valueEquals(a, b) {
846 // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
847 if (a === b) return true;
848 if (!(a instanceof Array)) return false;
849 if (!(b instanceof Array)) return false;
850 if (a.length !== b.length) return false;
851 for (var i = 0; i !== a.length; ++i) {
852 if (a[i] !== b[i]) return false;
853 }
854 return true;
855};
856// TODO: use native Array.find, Array.findIndex when IE support is dropped
857var arrayFindIndex = function arrayFindIndex(arr, pred) {
858 for (var i = 0; i !== arr.length; ++i) {
859 if (pred(arr[i])) {
860 return i;
861 }
862 }
863 return -1;
864};
865
866var arrayFind = function arrayFind(arr, pred) {
867 var idx = arrayFindIndex(arr, pred);
868 return idx !== -1 ? arr[idx] : undefined;
869};
870
871// coerce truthy value to array
872var coerceTruthyValueToArray = function coerceTruthyValueToArray(val) {
873 if (Array.isArray(val)) {
874 return val;
875 } else if (val) {
876 return [val];
877 } else {
878 return [];
879 }
880};
881
882var isIE = function isIE() {
883 return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && !isNaN(Number(document.documentMode));
884};
885
886var isEdge = function isEdge() {
887 return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;
888};
889
890var isFirefox = function isFirefox() {
891 return !vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);
892};
893
894var assert = function assert(condition, msg) {
895 if (!condition) throw new Error('[mds-ui] ' + msg);
896};
897/**
898 *
899 * 特殊字符转译
900 * @param {string} [value='']
901 */
902var escapeRegexpString = function escapeRegexpString() {
903 var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
904 return String(value).replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
905};
906/**
907 * Get element offset width
908 * @param {*} node HTMLDOMElemment
909 * @return {Number} width
910 */
911/**
912 * Get element offset width
913 * @param {*} node HTMLDOMElemment
914 * @return {Number} width
915 */
916var getOffsetWidth = function getOffsetWidth(node) {
917 return node ? node.offsetWidth : 0;
918};
919
920/** 判断是否为函数
921 * @param {*} functionToCheck
922 * @returns
923 */
924var isFunction = function isFunction(functionToCheck) {
925 var getType = {};
926 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
927};
928
929/**
930 * 弹窗类组件显现时修正body滚动
931 * @param {Boolean} visible 弹窗显现状态
932 */
933function fixBodyScroll(visible) {
934 var bodyStyle = document.body.style;
935 if (visible) {
936 currentBodyOverflow = bodyStyle.overflow;
937 // currentBodyPaddingRight = bodyStyle.paddingRight
938 bodyStyle.overflow = 'hidden';
939 // const basePaddingRight = parseInt(currentBodyPaddingRight || 0)
940 // const baseScrollWidth = parseInt(getScrollBarWidth())
941 // 防止页面抖动,后续需要自定义滚动条解决
942 // bodyStyle.paddingRight = basePaddingRight + baseScrollWidth + 'px'
943 } else {
944 var timer = setTimeout(function () {
945 clearTimeout(timer);
946 bodyStyle.overflow = currentBodyOverflow;
947 // bodyStyle.paddingRight = currentBodyPaddingRight
948 // currentBodyPaddingRight = ''
949 }, 180);
950 }
951}
952
953/***/ }),
954
955/***/ 16:
956/***/ (function(module, exports) {
957
958module.exports = __WEBPACK_EXTERNAL_MODULE__16__;
959
960/***/ }),
961
962/***/ 17:
963/***/ (function(module, __webpack_exports__, __webpack_require__) {
964
965"use strict";
966
967// EXTERNAL MODULE: ./components/_util/_popper/popup/popup-main.js
968var popup_main = __webpack_require__(14);
969
970// EXTERNAL MODULE: external "babel-runtime/core-js/object/get-own-property-descriptor"
971var get_own_property_descriptor_ = __webpack_require__(18);
972var get_own_property_descriptor_default = /*#__PURE__*/__webpack_require__.n(get_own_property_descriptor_);
973
974// EXTERNAL MODULE: external "babel-runtime/core-js/object/keys"
975var keys_ = __webpack_require__(10);
976var keys_default = /*#__PURE__*/__webpack_require__.n(keys_);
977
978// EXTERNAL MODULE: external "babel-runtime/core-js/object/assign"
979var assign_ = __webpack_require__(6);
980var assign_default = /*#__PURE__*/__webpack_require__.n(assign_);
981
982// CONCATENATED MODULE: ./components/_util/_popper/popper.js
983
984
985
986/**
987 * @fileOverview Kickass library to create and place poppers near their reference elements.
988 * @version {{version}}
989 * @license
990 * Copyright (c) 2016 Federico Zivolo and contributors
991 *
992 * Permission is hereby granted, free of charge, to any person obtaining a copy
993 * of this software and associated documentation files (the "Software"), to deal
994 * in the Software without restriction, including without limitation the rights
995 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
996 * copies of the Software, and to permit persons to whom the Software is
997 * furnished to do so, subject to the following conditions:
998 *
999 * The above copyright notice and this permission notice shall be included in all
1000 * copies or substantial portions of the Software.
1001 *
1002 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1003 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1004 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1005 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1006 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1007 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1008 * SOFTWARE.
1009 */
1010/* eslint-disable */
1011// Cross module loader
1012// Supported: Node, AMD, Browser globals
1013//
1014function popper_createPopper() {
1015 'use strict';
1016
1017 var root = window;
1018
1019 // default options
1020 var DEFAULTS = {
1021 // placement of the popper
1022 placement: 'bottom',
1023
1024 gpuAcceleration: false,
1025
1026 // shift popper from its origin by the given amount of pixels (can be negative)
1027 offset: 0,
1028
1029 // the element which will act as boundary of the popper
1030 boundariesElement: 'viewport',
1031
1032 // amount of pixel used to define a minimum distance between the boundaries and the popper
1033 boundariesPadding: 5,
1034
1035 // popper will try to prevent overflow following this order,
1036 // by default, then, it could overflow on the left and on top of the boundariesElement
1037 preventOverflowOrder: ['left', 'right', 'top', 'bottom'],
1038
1039 // the behavior used by flip to change the placement of the popper
1040 flipBehavior: 'flip',
1041
1042 arrowElement: '[x-arrow]',
1043
1044 arrowOffset: 0,
1045
1046 // list of functions used to modify the offsets before they are applied to the popper
1047 modifiers: ['shift', 'offset', 'preventOverflow', 'keepTogether', 'arrow', 'flip', 'applyStyle'],
1048
1049 modifiersIgnored: [],
1050
1051 forceAbsolute: false
1052
1053 /**
1054 * Create a new Popper.js instance
1055 * @constructor Popper
1056 * @param {HTMLElement} reference - The reference element used to position the popper
1057 * @param {HTMLElement|Object} popper
1058 * The HTML element used as popper, or a configuration used to generate the popper.
1059 * @param {String} [popper.tagName='div'] The tag name of the generated popper.
1060 * @param {Array} [popper.classNames=['popper']] Array of classes to apply to the generated popper.
1061 * @param {Array} [popper.attributes] Array of attributes to apply, specify `attr:value` to assign a value to it.
1062 * @param {HTMLElement|String} [popper.parent=window.document.body] The parent element, given as HTMLElement or as query string.
1063 * @param {String} [popper.content=''] The content of the popper, it can be text, html, or node; if it is not text, set `contentType` to `html` or `node`.
1064 * @param {String} [popper.contentType='text'] If `html`, the `content` will be parsed as HTML. If `node`, it will be appended as-is.
1065 * @param {String} [popper.arrowTagName='div'] Same as `popper.tagName` but for the arrow element.
1066 * @param {Array} [popper.arrowClassNames='popper__arrow'] Same as `popper.classNames` but for the arrow element.
1067 * @param {String} [popper.arrowAttributes=['x-arrow']] Same as `popper.attributes` but for the arrow element.
1068 * @param {Object} options
1069 * @param {String} [options.placement=bottom]
1070 * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -right),
1071 * left(-start, -end)`
1072 *
1073 * @param {HTMLElement|String} [options.arrowElement='[x-arrow]']
1074 * The DOM Node used as arrow for the popper, or a CSS selector used to get the DOM node. It must be child of
1075 * its parent Popper. Popper.js will apply to the given element the style required to align the arrow with its
1076 * reference element.
1077 * By default, it will look for a child node of the popper with the `x-arrow` attribute.
1078 *
1079 * @param {Boolean} [options.gpuAcceleration=true]
1080 * When this property is set to true, the popper position will be applied using CSS3 translate3d, allowing the
1081 * browser to use the GPU to accelerate the rendering.
1082 * If set to false, the popper will be placed using `top` and `left` properties, not using the GPU.
1083 *
1084 * @param {Number} [options.offset=0]
1085 * Amount of pixels the popper will be shifted (can be negative).
1086 *
1087 * @param {String|Element} [options.boundariesElement='viewport']
1088 * The element which will define the boundaries of the popper position, the popper will never be placed outside
1089 * of the defined boundaries (except if `keepTogether` is enabled)
1090 *
1091 * @param {Number} [options.boundariesPadding=5]
1092 * Additional padding for the boundaries
1093 *
1094 * @param {Array} [options.preventOverflowOrder=['left', 'right', 'top', 'bottom']]
1095 * Order used when Popper.js tries to avoid overflows from the boundaries, they will be checked in order,
1096 * this means that the last ones will never overflow
1097 *
1098 * @param {String|Array} [options.flipBehavior='flip']
1099 * The behavior used by the `flip` modifier to change the placement of the popper when the latter is trying to
1100 * overlap its reference element. Defining `flip` as value, the placement will be flipped on
1101 * its axis (`right - left`, `top - bottom`).
1102 * You can even pass an array of placements (eg: `['right', 'left', 'top']` ) to manually specify
1103 * how alter the placement when a flip is needed. (eg. in the above example, it would first flip from right to left,
1104 * then, if even in its new placement, the popper is overlapping its reference element, it will be moved to top)
1105 *
1106 * @param {Array} [options.modifiers=[ 'shift', 'offset', 'preventOverflow', 'keepTogether', 'arrow', 'flip', 'applyStyle']]
1107 * List of functions used to modify the data before they are applied to the popper, add your custom functions
1108 * to this array to edit the offsets and placement.
1109 * The function should reflect the @params and @returns of preventOverflow
1110 *
1111 * @param {Array} [options.modifiersIgnored=[]]
1112 * Put here any built-in modifier name you want to exclude from the modifiers list
1113 * The function should reflect the @params and @returns of preventOverflow
1114 *
1115 * @param {Boolean} [options.removeOnDestroy=false]
1116 * Set to true if you want to automatically remove the popper when you call the `destroy` method.
1117 */
1118 };function Popper(reference, popper, options) {
1119 this._reference = reference.jquery ? reference[0] : reference;
1120 this.state = {};
1121
1122 // if the popper variable is a configuration object, parse it to generate an HTMLElement
1123 // generate a default popper if is not defined
1124 var isNotDefined = typeof popper === 'undefined' || popper === null;
1125 var isConfig = popper && Object.prototype.toString.call(popper) === '[object Object]';
1126 if (isNotDefined || isConfig) {
1127 this._popper = this.parse(isConfig ? popper : {});
1128 }
1129 // otherwise, use the given HTMLElement as popper
1130 else {
1131 this._popper = popper.jquery ? popper[0] : popper;
1132 }
1133
1134 // with {} we create a new object with the options inside it
1135 this._options = assign_default()({}, DEFAULTS, options);
1136
1137 // refactoring modifiers' list
1138 this._options.modifiers = this._options.modifiers.map(function (modifier) {
1139 // remove ignored modifiers
1140 if (this._options.modifiersIgnored.indexOf(modifier) !== -1) return;
1141
1142 // set the x-placement attribute before everything else because it could be used to add margins to the popper
1143 // margins needs to be calculated to get the correct popper offsets
1144 if (modifier === 'applyStyle') {
1145 this._popper.setAttribute('x-placement', this._options.placement);
1146 }
1147
1148 // return predefined modifier identified by string or keep the custom one
1149 return this.modifiers[modifier] || modifier;
1150 }.bind(this));
1151
1152 // make sure to apply the popper position before any computation
1153 this.state.position = this._getPosition(this._popper, this._reference);
1154 setStyle(this._popper, { position: this.state.position, top: 0 });
1155
1156 // fire the first update to position the popper in the right place
1157 this.update();
1158
1159 // setup event listeners, they will take care of update the position in specific situations
1160 this._setupEventListeners();
1161 return this;
1162 }
1163
1164 //
1165 // Methods
1166 //
1167 /**
1168 * Destroy the popper
1169 * @method
1170 * @memberof Popper
1171 */
1172 Popper.prototype.destroy = function () {
1173 this._popper.removeAttribute('x-placement');
1174 this._popper.style.left = '';
1175 this._popper.style.position = '';
1176 this._popper.style.top = '';
1177 this._popper.style[getSupportedPropertyName('transform')] = '';
1178 this._removeEventListeners();
1179
1180 // remove the popper if user explicity asked for the deletion on destroy
1181 if (this._options.removeOnDestroy) {
1182 this._popper.remove();
1183 }
1184 return this;
1185 };
1186
1187 /**
1188 * Updates the position of the popper, computing the new offsets and applying the new style
1189 * @method
1190 * @memberof Popper
1191 */
1192 Popper.prototype.update = function () {
1193 var data = { instance: this, styles: {}
1194
1195 // store placement inside the data object, modifiers will be able to edit `placement` if needed
1196 // and refer to _originalPlacement to know the original value
1197 };data.placement = this._options.placement;
1198 data._originalPlacement = this._options.placement;
1199
1200 // compute the popper and reference offsets and put them inside data.offsets
1201 data.offsets = this._getOffsets(this._popper, this._reference, data.placement);
1202
1203 // get boundaries
1204 data.boundaries = this._getBoundaries(data, this._options.boundariesPadding, this._options.boundariesElement);
1205
1206 data = this.runModifiers(data, this._options.modifiers);
1207
1208 if (typeof this.state.updateCallback === 'function') {
1209 this.state.updateCallback(data);
1210 }
1211 };
1212
1213 /**
1214 * If a function is passed, it will be executed after the initialization of popper with as first argument the Popper instance.
1215 * @method
1216 * @memberof Popper
1217 * @param {Function} callback
1218 */
1219 Popper.prototype.onCreate = function (callback) {
1220 // the createCallbacks return as first argument the popper instance
1221 callback(this);
1222 return this;
1223 };
1224
1225 /**
1226 * If a function is passed, it will be executed after each update of popper with as first argument the set of coordinates and informations
1227 * used to style popper and its arrow.
1228 * NOTE: it doesn't get fired on the first call of the `Popper.update()` method inside the `Popper` constructor!
1229 * @method
1230 * @memberof Popper
1231 * @param {Function} callback
1232 */
1233 Popper.prototype.onUpdate = function (callback) {
1234 this.state.updateCallback = callback;
1235 return this;
1236 };
1237
1238 /**
1239 * Helper used to generate poppers from a configuration file
1240 * @method
1241 * @memberof Popper
1242 * @param config {Object} configuration
1243 * @returns {HTMLElement} popper
1244 */
1245 Popper.prototype.parse = function (config) {
1246 var defaultConfig = {
1247 tagName: 'div',
1248 classNames: ['popper'],
1249 attributes: [],
1250 parent: root.document.body,
1251 content: '',
1252 contentType: 'text',
1253 arrowTagName: 'div',
1254 arrowClassNames: ['popper__arrow'],
1255 arrowAttributes: ['x-arrow']
1256 };
1257 config = assign_default()({}, defaultConfig, config);
1258
1259 var d = root.document;
1260
1261 var popper = d.createElement(config.tagName);
1262 addClassNames(popper, config.classNames);
1263 addAttributes(popper, config.attributes);
1264 if (config.contentType === 'node') {
1265 popper.appendChild(config.content.jquery ? config.content[0] : config.content);
1266 } else if (config.contentType === 'html') {
1267 popper.innerHTML = config.content;
1268 } else {
1269 popper.textContent = config.content;
1270 }
1271
1272 if (config.arrowTagName) {
1273 var arrow = d.createElement(config.arrowTagName);
1274 addClassNames(arrow, config.arrowClassNames);
1275 addAttributes(arrow, config.arrowAttributes);
1276 popper.appendChild(arrow);
1277 }
1278
1279 var parent = config.parent.jquery ? config.parent[0] : config.parent;
1280
1281 // if the given parent is a string, use it to match an element
1282 // if more than one element is matched, the first one will be used as parent
1283 // if no elements are matched, the script will throw an error
1284 if (typeof parent === 'string') {
1285 parent = d.querySelectorAll(config.parent);
1286 if (parent.length > 1) {
1287 console.warn('WARNING: the given `parent` query(' + config.parent + ') matched more than one element, the first one will be used');
1288 }
1289 if (parent.length === 0) {
1290 throw "ERROR: the given `parent` doesn't exists!";
1291 }
1292 parent = parent[0];
1293 }
1294 // if the given parent is a DOM nodes list or an array of nodes with more than one element,
1295 // the first one will be used as parent
1296 if (parent.length > 1 && parent instanceof Element === false) {
1297 console.warn('WARNING: you have passed as parent a list of elements, the first one will be used');
1298 parent = parent[0];
1299 }
1300
1301 // append the generated popper to its parent
1302 parent.appendChild(popper);
1303
1304 return popper;
1305
1306 /**
1307 * Adds class names to the given element
1308 * @function
1309 * @ignore
1310 * @param {HTMLElement} target
1311 * @param {Array} classes
1312 */
1313 function addClassNames(element, classNames) {
1314 classNames.forEach(function (className) {
1315 element.classList.add(className);
1316 });
1317 }
1318
1319 /**
1320 * Adds attributes to the given element
1321 * @function
1322 * @ignore
1323 * @param {HTMLElement} target
1324 * @param {Array} attributes
1325 * @example
1326 * addAttributes(element, [ 'data-info:foobar' ]);
1327 */
1328 function addAttributes(element, attributes) {
1329 attributes.forEach(function (attribute) {
1330 element.setAttribute(attribute.split(':')[0], attribute.split(':')[1] || '');
1331 });
1332 }
1333 };
1334
1335 /**
1336 * Helper used to get the position which will be applied to the popper
1337 * @method
1338 * @memberof Popper
1339 * @param config {HTMLElement} popper element
1340 * @param reference {HTMLElement} reference element
1341 * @returns {String} position
1342 */
1343 Popper.prototype._getPosition = function (popper, reference) {
1344 var container = getOffsetParent(reference);
1345
1346 if (this._options.forceAbsolute) {
1347 return 'absolute';
1348 }
1349
1350 // Decide if the popper will be fixed
1351 // If the reference element is inside a fixed context, the popper will be fixed as well to allow them to scroll together
1352 var isParentFixed = isFixed(reference, container);
1353 return isParentFixed ? 'fixed' : 'absolute';
1354 };
1355
1356 /**
1357 * Get offsets to the popper
1358 * @method
1359 * @memberof Popper
1360 * @access private
1361 * @param {Element} popper - the popper element
1362 * @param {Element} reference - the reference element (the popper will be relative to this)
1363 * @returns {Object} An object containing the offsets which will be applied to the popper
1364 */
1365 Popper.prototype._getOffsets = function (popper, reference, placement) {
1366 placement = placement.split('-')[0];
1367 var popperOffsets = {};
1368
1369 popperOffsets.position = this.state.position;
1370 var isParentFixed = popperOffsets.position === 'fixed';
1371
1372 //
1373 // Get reference element position
1374 //
1375 var referenceOffsets = getOffsetRectRelativeToCustomParent(reference, getOffsetParent(popper), isParentFixed);
1376
1377 //
1378 // Get popper sizes
1379 //
1380 var popperRect = getOuterSizes(popper);
1381
1382 //
1383 // Compute offsets of popper
1384 //
1385
1386 // depending by the popper placement we have to compute its offsets slightly differently
1387 if (['right', 'left'].indexOf(placement) !== -1) {
1388 popperOffsets.top = referenceOffsets.top + referenceOffsets.height / 2 - popperRect.height / 2;
1389 if (placement === 'left') {
1390 popperOffsets.left = referenceOffsets.left - popperRect.width;
1391 } else {
1392 popperOffsets.left = referenceOffsets.right;
1393 }
1394 } else {
1395 popperOffsets.left = referenceOffsets.left + referenceOffsets.width / 2 - popperRect.width / 2;
1396 if (placement === 'top') {
1397 popperOffsets.top = referenceOffsets.top - popperRect.height;
1398 } else {
1399 popperOffsets.top = referenceOffsets.bottom;
1400 }
1401 }
1402
1403 // Add width and height to our offsets object
1404 popperOffsets.width = popperRect.width;
1405 popperOffsets.height = popperRect.height;
1406
1407 return {
1408 popper: popperOffsets,
1409 reference: referenceOffsets
1410 };
1411 };
1412
1413 /**
1414 * Setup needed event listeners used to update the popper position
1415 * @method
1416 * @memberof Popper
1417 * @access private
1418 */
1419 Popper.prototype._setupEventListeners = function () {
1420 // NOTE: 1 DOM access here
1421 this.state.updateBound = this.update.bind(this);
1422 root.addEventListener('resize', this.state.updateBound);
1423 // if the boundariesElement is window we don't need to listen for the scroll event
1424 if (this._options.boundariesElement !== 'window') {
1425 var target = getScrollParent(this._reference);
1426 // here it could be both `body` or `documentElement` thanks to Firefox, we then check both
1427 if (target === root.document.body || target === root.document.documentElement) {
1428 target = root;
1429 }
1430 target.addEventListener('scroll', this.state.updateBound);
1431 this.state.scrollTarget = target;
1432 }
1433 };
1434
1435 /**
1436 * Remove event listeners used to update the popper position
1437 * @method
1438 * @memberof Popper
1439 * @access private
1440 */
1441 Popper.prototype._removeEventListeners = function () {
1442 // NOTE: 1 DOM access here
1443 root.removeEventListener('resize', this.state.updateBound);
1444 if (this._options.boundariesElement !== 'window' && this.state.scrollTarget) {
1445 this.state.scrollTarget.removeEventListener('scroll', this.state.updateBound);
1446 this.state.scrollTarget = null;
1447 }
1448 this.state.updateBound = null;
1449 };
1450
1451 /**
1452 * Computed the boundaries limits and return them
1453 * @method
1454 * @memberof Popper
1455 * @access private
1456 * @param {Object} data - Object containing the property "offsets" generated by `_getOffsets`
1457 * @param {Number} padding - Boundaries padding
1458 * @param {Element} boundariesElement - Element used to define the boundaries
1459 * @returns {Object} Coordinates of the boundaries
1460 */
1461 Popper.prototype._getBoundaries = function (data, padding, boundariesElement) {
1462 // NOTE: 1 DOM access here
1463 var boundaries = {};
1464 var width, height;
1465 if (boundariesElement === 'window') {
1466 var body = root.document.body,
1467 html = root.document.documentElement;
1468
1469 height = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
1470 width = Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);
1471
1472 boundaries = {
1473 top: 0,
1474 right: width,
1475 bottom: height,
1476 left: 0
1477 };
1478 } else if (boundariesElement === 'viewport') {
1479 var offsetParent = getOffsetParent(this._popper);
1480 var scrollParent = getScrollParent(this._popper);
1481 var offsetParentRect = getOffsetRect(offsetParent);
1482
1483 // Thanks the fucking native API, `document.body.scrollTop` & `document.documentElement.scrollTop`
1484 var getScrollTopValue = function getScrollTopValue(element) {
1485 return element == document.body ? Math.max(document.documentElement.scrollTop, document.body.scrollTop) : element.scrollTop;
1486 };
1487 var getScrollLeftValue = function getScrollLeftValue(element) {
1488 return element == document.body ? Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) : element.scrollLeft;
1489 };
1490
1491 // if the popper is fixed we don't have to substract scrolling from the boundaries
1492 var scrollTop = data.offsets.popper.position === 'fixed' ? 0 : getScrollTopValue(scrollParent);
1493 var scrollLeft = data.offsets.popper.position === 'fixed' ? 0 : getScrollLeftValue(scrollParent);
1494
1495 boundaries = {
1496 top: 0 - (offsetParentRect.top - scrollTop),
1497 right: root.document.documentElement.clientWidth - (offsetParentRect.left - scrollLeft),
1498 bottom: root.document.documentElement.clientHeight - (offsetParentRect.top - scrollTop),
1499 left: 0 - (offsetParentRect.left - scrollLeft)
1500 };
1501 } else {
1502 if (getOffsetParent(this._popper) === boundariesElement) {
1503 boundaries = {
1504 top: 0,
1505 left: 0,
1506 right: boundariesElement.clientWidth,
1507 bottom: boundariesElement.clientHeight
1508 };
1509 } else {
1510 boundaries = getOffsetRect(boundariesElement);
1511 }
1512 }
1513 boundaries.left += padding;
1514 boundaries.right -= padding;
1515 boundaries.top = boundaries.top + padding;
1516 boundaries.bottom = boundaries.bottom - padding;
1517 return boundaries;
1518 };
1519
1520 /**
1521 * Loop trough the list of modifiers and run them in order, each of them will then edit the data object
1522 * @method
1523 * @memberof Popper
1524 * @access public
1525 * @param {Object} data
1526 * @param {Array} modifiers
1527 * @param {Function} ends
1528 */
1529 Popper.prototype.runModifiers = function (data, modifiers, ends) {
1530 var modifiersToRun = modifiers.slice();
1531 if (ends !== undefined) {
1532 modifiersToRun = this._options.modifiers.slice(0, getArrayKeyIndex(this._options.modifiers, ends));
1533 }
1534
1535 modifiersToRun.forEach(function (modifier) {
1536 if (isFunction(modifier)) {
1537 data = modifier.call(this, data);
1538 }
1539 }.bind(this));
1540
1541 return data;
1542 };
1543
1544 /**
1545 * Helper used to know if the given modifier depends from another one.
1546 * @method
1547 * @memberof Popper
1548 * @param {String} requesting - name of requesting modifier
1549 * @param {String} requested - name of requested modifier
1550 * @returns {Boolean}
1551 */
1552 Popper.prototype.isModifierRequired = function (requesting, requested) {
1553 var index = getArrayKeyIndex(this._options.modifiers, requesting);
1554 return !!this._options.modifiers.slice(0, index).filter(function (modifier) {
1555 return modifier === requested;
1556 }).length;
1557 };
1558
1559 //
1560 // Modifiers
1561 //
1562
1563 /**
1564 * Modifiers list
1565 * @namespace Popper.modifiers
1566 * @memberof Popper
1567 * @type {Object}
1568 */
1569 Popper.prototype.modifiers = {};
1570
1571 /**
1572 * Apply the computed styles to the popper element
1573 * @method
1574 * @memberof Popper.modifiers
1575 * @argument {Object} data - The data object generated by `update` method
1576 * @returns {Object} The same data object
1577 */
1578 Popper.prototype.modifiers.applyStyle = function (data) {
1579 // apply the final offsets to the popper
1580 // NOTE: 1 DOM access here
1581 var styles = {
1582 position: data.offsets.popper.position
1583
1584 // round top and left to avoid blurry text
1585 };var left = Math.round(data.offsets.popper.left);
1586 var top = Math.round(data.offsets.popper.top);
1587
1588 // if gpuAcceleration is set to true and transform is supported, we use `translate3d` to apply the position to the popper
1589 // we automatically use the supported prefixed version if needed
1590 var prefixedProperty;
1591 if (this._options.gpuAcceleration && (prefixedProperty = getSupportedPropertyName('transform'))) {
1592 styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
1593 styles.top = 0;
1594 styles.left = 0;
1595 }
1596 // othwerise, we use the standard `left` and `top` properties
1597 else {
1598 styles.left = left;
1599 styles.top = top;
1600 }
1601
1602 // any property present in `data.styles` will be applied to the popper,
1603 // in this way we can make the 3rd party modifiers add custom styles to it
1604 // Be aware, modifiers could override the properties defined in the previous
1605 // lines of this modifier!
1606 assign_default()(styles, data.styles);
1607
1608 setStyle(this._popper, styles);
1609
1610 // set an attribute which will be useful to style the tooltip (use it to properly position its arrow)
1611 // NOTE: 1 DOM access here
1612 if (!this._popper._prevClass.includes('mds-date-picker')) {
1613 this._popper.setAttribute('x-placement', data.placement);
1614 var popper = this._popper;
1615 var instanceType = popper.classList[0];
1616 popper.classList.replace(popper.classList[1], instanceType + '-placement-' + data.placement);
1617 }
1618
1619 // console.log(data.placement)
1620
1621 // if the arrow modifier is required and the arrow style has been computed, apply the arrow style
1622 if (this.isModifierRequired(this.modifiers.applyStyle, this.modifiers.arrow) && data.offsets.arrow) {
1623 setStyle(data.arrowElement, data.offsets.arrow);
1624 }
1625
1626 return data;
1627 };
1628
1629 /**
1630 * Modifier used to shift the popper on the start or end of its reference element side
1631 * @method
1632 * @memberof Popper.modifiers
1633 * @argument {Object} data - The data object generated by `update` method
1634 * @returns {Object} The data object, properly modified
1635 */
1636 Popper.prototype.modifiers.shift = function (data) {
1637 var placement = data.placement;
1638 var basePlacement = placement.split('-')[0];
1639 var shiftVariation = placement.split('-')[1];
1640
1641 // if shift shiftVariation is specified, run the modifier
1642 if (shiftVariation) {
1643 var reference = data.offsets.reference;
1644 var popper = getPopperClientRect(data.offsets.popper);
1645
1646 var shiftOffsets = {
1647 y: {
1648 start: { top: reference.top },
1649 end: { top: reference.top + reference.height - popper.height }
1650 },
1651 x: {
1652 start: { left: reference.left },
1653 end: { left: reference.left + reference.width - popper.width }
1654 }
1655 };
1656
1657 var axis = ['bottom', 'top'].indexOf(basePlacement) !== -1 ? 'x' : 'y';
1658
1659 data.offsets.popper = assign_default()(popper, shiftOffsets[axis][shiftVariation]);
1660 }
1661 return data;
1662 };
1663
1664 /**
1665 * Modifier used to make sure the popper does not overflows from it's boundaries
1666 * @method
1667 * @memberof Popper.modifiers
1668 * @argument {Object} data - The data object generated by `update` method
1669 * @returns {Object} The data object, properly modified
1670 */
1671 Popper.prototype.modifiers.preventOverflow = function (data) {
1672 var order = this._options.preventOverflowOrder;
1673 var popper = getPopperClientRect(data.offsets.popper);
1674
1675 var check = {
1676 left: function left() {
1677 var left = popper.left;
1678 if (popper.left < data.boundaries.left) {
1679 left = Math.max(popper.left, data.boundaries.left);
1680 }
1681 return { left: left };
1682 },
1683 right: function right() {
1684 var left = popper.left;
1685 if (popper.right > data.boundaries.right) {
1686 left = Math.min(popper.left, data.boundaries.right - popper.width);
1687 }
1688 return { left: left };
1689 },
1690 top: function top() {
1691 var top = popper.top;
1692 if (popper.top < data.boundaries.top) {
1693 top = Math.max(popper.top, data.boundaries.top);
1694 }
1695 return { top: top };
1696 },
1697 bottom: function bottom() {
1698 var top = popper.top;
1699 if (popper.bottom > data.boundaries.bottom) {
1700 top = Math.min(popper.top, data.boundaries.bottom - popper.height);
1701 }
1702 return { top: top };
1703 }
1704 };
1705
1706 order.forEach(function (direction) {
1707 data.offsets.popper = assign_default()(popper, check[direction]());
1708 });
1709
1710 return data;
1711 };
1712
1713 /**
1714 * Modifier used to make sure the popper is always near its reference
1715 * @method
1716 * @memberof Popper.modifiers
1717 * @argument {Object} data - The data object generated by _update method
1718 * @returns {Object} The data object, properly modified
1719 */
1720 Popper.prototype.modifiers.keepTogether = function (data) {
1721 var popper = getPopperClientRect(data.offsets.popper);
1722 var reference = data.offsets.reference;
1723 var f = Math.floor;
1724
1725 if (popper.right < f(reference.left)) {
1726 data.offsets.popper.left = f(reference.left) - popper.width;
1727 }
1728 if (popper.left > f(reference.right)) {
1729 data.offsets.popper.left = f(reference.right);
1730 }
1731 if (popper.bottom < f(reference.top)) {
1732 data.offsets.popper.top = f(reference.top) - popper.height;
1733 }
1734 if (popper.top > f(reference.bottom)) {
1735 data.offsets.popper.top = f(reference.bottom);
1736 }
1737
1738 return data;
1739 };
1740
1741 /**
1742 * Modifier used to flip the placement of the popper when the latter is starting overlapping its reference element.
1743 * Requires the `preventOverflow` modifier before it in order to work.
1744 * **NOTE:** This modifier will run all its previous modifiers everytime it tries to flip the popper!
1745 * @method
1746 * @memberof Popper.modifiers
1747 * @argument {Object} data - The data object generated by _update method
1748 * @returns {Object} The data object, properly modified
1749 */
1750 Popper.prototype.modifiers.flip = function (data) {
1751 // check if preventOverflow is in the list of modifiers before the flip modifier.
1752 // otherwise flip would not work as expected.
1753 if (!this.isModifierRequired(this.modifiers.flip, this.modifiers.preventOverflow)) {
1754 console.warn('WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!');
1755 return data;
1756 }
1757
1758 if (data.flipped && data.placement === data._originalPlacement) {
1759 // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
1760 return data;
1761 }
1762
1763 var placement = data.placement.split('-')[0];
1764 var placementOpposite = getOppositePlacement(placement);
1765 var variation = data.placement.split('-')[1] || '';
1766 var flipOrder = [];
1767 if (this._options.flipBehavior === 'flip') {
1768 flipOrder = [placement, placementOpposite];
1769 } else {
1770 flipOrder = this._options.flipBehavior;
1771 }
1772
1773 flipOrder.forEach(function (step, index) {
1774 if (placement !== step || flipOrder.length === index + 1) {
1775 return;
1776 }
1777
1778 placement = data.placement.split('-')[0];
1779 placementOpposite = getOppositePlacement(placement);
1780
1781 var popperOffsets = getPopperClientRect(data.offsets.popper);
1782
1783 // this boolean is used to distinguish right and bottom from top and left
1784 // they need different computations to get flipped
1785 var a = ['right', 'bottom'].indexOf(placement) !== -1;
1786
1787 // using Math.floor because the reference offsets may contain decimals we are not going to consider here
1788 if (a && Math.floor(data.offsets.reference[placement]) > Math.floor(popperOffsets[placementOpposite]) || !a && Math.floor(data.offsets.reference[placement]) < Math.floor(popperOffsets[placementOpposite])) {
1789 // we'll use this boolean to detect any flip loop
1790 data.flipped = true;
1791 data.placement = flipOrder[index + 1];
1792 if (variation) {
1793 data.placement += '-' + variation;
1794 }
1795 data.offsets.popper = this._getOffsets(this._popper, this._reference, data.placement).popper;
1796 data = this.runModifiers(data, this._options.modifiers, this._flip);
1797 }
1798 }.bind(this));
1799 return data;
1800 };
1801
1802 /**
1803 * Modifier used to add an offset to the popper, useful if you more granularity positioning your popper.
1804 * The offsets will shift the popper on the side of its reference element.
1805 * @method
1806 * @memberof Popper.modifiers
1807 * @argument {Object} data - The data object generated by _update method
1808 * @returns {Object} The data object, properly modified
1809 */
1810 Popper.prototype.modifiers.offset = function (data) {
1811 var offset = this._options.offset;
1812 var popper = data.offsets.popper;
1813
1814 if (data.placement.indexOf('left') !== -1) {
1815 popper.top -= offset;
1816 } else if (data.placement.indexOf('right') !== -1) {
1817 popper.top += offset;
1818 } else if (data.placement.indexOf('top') !== -1) {
1819 popper.left -= offset;
1820 } else if (data.placement.indexOf('bottom') !== -1) {
1821 popper.left += offset;
1822 }
1823 return data;
1824 };
1825
1826 /**
1827 * Modifier used to move the arrows on the edge of the popper to make sure them are always between the popper and the reference element
1828 * It will use the CSS outer size of the arrow element to know how many pixels of conjuction are needed
1829 * @method
1830 * @memberof Popper.modifiers
1831 * @argument {Object} data - The data object generated by _update method
1832 * @returns {Object} The data object, properly modified
1833 */
1834 Popper.prototype.modifiers.arrow = function (data) {
1835 var arrow = this._options.arrowElement;
1836 var arrowOffset = this._options.arrowOffset;
1837
1838 // if the arrowElement is a string, suppose it's a CSS selector
1839 if (typeof arrow === 'string') {
1840 arrow = this._popper.querySelector(arrow);
1841 }
1842
1843 // if arrow element is not found, don't run the modifier
1844 if (!arrow) {
1845 return data;
1846 }
1847
1848 // the arrow element must be child of its popper
1849 if (!this._popper.contains(arrow)) {
1850 console.warn('WARNING: `arrowElement` must be child of its popper element!');
1851 return data;
1852 }
1853
1854 // arrow depends on keepTogether in order to work
1855 if (!this.isModifierRequired(this.modifiers.arrow, this.modifiers.keepTogether)) {
1856 console.warn('WARNING: keepTogether modifier is required by arrow modifier in order to work, be sure to include it before arrow!');
1857 return data;
1858 }
1859
1860 var arrowStyle = {};
1861 var placement = data.placement.split('-')[0];
1862 var popper = getPopperClientRect(data.offsets.popper);
1863 var reference = data.offsets.reference;
1864 var isVertical = ['left', 'right'].indexOf(placement) !== -1;
1865
1866 var len = isVertical ? 'height' : 'width';
1867 var side = isVertical ? 'top' : 'left';
1868 var translate = isVertical ? 'translateY' : 'translateX';
1869 var altSide = isVertical ? 'left' : 'top';
1870 var opSide = isVertical ? 'bottom' : 'right';
1871 var arrowSize = getOuterSizes(arrow)[len];
1872
1873 //
1874 // extends keepTogether behavior making sure the popper and its reference have enough pixels in conjuction
1875 //
1876
1877 // top/left side
1878 if (reference[opSide] - arrowSize < popper[side]) {
1879 data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowSize);
1880 }
1881 // bottom/right side
1882 if (reference[side] + arrowSize > popper[opSide]) {
1883 data.offsets.popper[side] += reference[side] + arrowSize - popper[opSide];
1884 }
1885
1886 // compute center of the popper
1887 var center = reference[side] + (arrowOffset || reference[len] / 2 - arrowSize / 2);
1888
1889 var sideValue = center - popper[side];
1890
1891 // prevent arrow from being placed not contiguously to its popper
1892 sideValue = Math.max(Math.min(popper[len] - arrowSize - 8, sideValue), 8);
1893 arrowStyle[side] = sideValue;
1894 arrowStyle[altSide] = ''; // make sure to remove any old style from the arrow
1895
1896 data.offsets.arrow = arrowStyle;
1897 data.arrowElement = arrow;
1898
1899 return data;
1900 };
1901
1902 //
1903 // Helpers
1904 //
1905
1906 /**
1907 * Get the outer sizes of the given element (offset size + margins)
1908 * @function
1909 * @ignore
1910 * @argument {Element} element
1911 * @returns {Object} object containing width and height properties
1912 */
1913 function getOuterSizes(element) {
1914 // NOTE: 1 DOM access here
1915 var _display = element.style.display,
1916 _visibility = element.style.visibility;
1917 element.style.display = 'block';
1918 element.style.visibility = 'hidden';
1919 var calcWidthToForceRepaint = element.offsetWidth;
1920
1921 // original method
1922 var styles = root.getComputedStyle(element);
1923 var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
1924 var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
1925 var result = {
1926 width: element.offsetWidth + y,
1927 height: element.offsetHeight + x
1928
1929 // reset element styles
1930 };element.style.display = _display;
1931 element.style.visibility = _visibility;
1932 return result;
1933 }
1934
1935 /**
1936 * Get the opposite placement of the given one/
1937 * @function
1938 * @ignore
1939 * @argument {String} placement
1940 * @returns {String} flipped placement
1941 */
1942 function getOppositePlacement(placement) {
1943 var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
1944 return placement.replace(/left|right|bottom|top/g, function (matched) {
1945 return hash[matched];
1946 });
1947 }
1948
1949 /**
1950 * Given the popper offsets, generate an output similar to getBoundingClientRect
1951 * @function
1952 * @ignore
1953 * @argument {Object} popperOffsets
1954 * @returns {Object} ClientRect like output
1955 */
1956 function getPopperClientRect(popperOffsets) {
1957 var offsets = assign_default()({}, popperOffsets);
1958 offsets.right = offsets.left + offsets.width;
1959 offsets.bottom = offsets.top + offsets.height;
1960 return offsets;
1961 }
1962
1963 /**
1964 * Given an array and the key to find, returns its index
1965 * @function
1966 * @ignore
1967 * @argument {Array} arr
1968 * @argument keyToFind
1969 * @returns index or null
1970 */
1971 function getArrayKeyIndex(arr, keyToFind) {
1972 var i = 0,
1973 key;
1974 for (key in arr) {
1975 if (arr[key] === keyToFind) {
1976 return i;
1977 }
1978 i++;
1979 }
1980 return null;
1981 }
1982
1983 /**
1984 * Get CSS computed property of the given element
1985 * @function
1986 * @ignore
1987 * @argument {Eement} element
1988 * @argument {String} property
1989 */
1990 function getStyleComputedProperty(element, property) {
1991 // NOTE: 1 DOM access here
1992 var css = root.getComputedStyle(element, null);
1993 return css[property];
1994 }
1995
1996 /**
1997 * Returns the offset parent of the given element
1998 * @function
1999 * @ignore
2000 * @argument {Element} element
2001 * @returns {Element} offset parent
2002 */
2003 function getOffsetParent(element) {
2004 // NOTE: 1 DOM access here
2005 var offsetParent = element.offsetParent;
2006 return offsetParent === root.document.body || !offsetParent ? root.document.documentElement : offsetParent;
2007 }
2008
2009 /**
2010 * Returns the scrolling parent of the given element
2011 * @function
2012 * @ignore
2013 * @argument {Element} element
2014 * @returns {Element} offset parent
2015 */
2016 function getScrollParent(element) {
2017 var parent = element.parentNode;
2018
2019 if (!parent) {
2020 return element;
2021 }
2022
2023 if (parent === root.document) {
2024 // Firefox puts the scrollTOp value on `documentElement` instead of `body`, we then check which of them is
2025 // greater than 0 and return the proper element
2026 if (root.document.body.scrollTop || root.document.body.scrollLeft) {
2027 return root.document.body;
2028 } else {
2029 return root.document.documentElement;
2030 }
2031 }
2032
2033 // Firefox want us to check `-x` and `-y` variations as well
2034 if (['scroll', 'auto'].indexOf(getStyleComputedProperty(parent, 'overflow')) !== -1 || ['scroll', 'auto'].indexOf(getStyleComputedProperty(parent, 'overflow-x')) !== -1 || ['scroll', 'auto'].indexOf(getStyleComputedProperty(parent, 'overflow-y')) !== -1) {
2035 // If the detected scrollParent is body, we perform an additional check on its parentNode
2036 // in this way we'll get body if the browser is Chrome-ish, or documentElement otherwise
2037 // fixes issue #65
2038 return parent;
2039 }
2040 return getScrollParent(element.parentNode);
2041 }
2042
2043 /**
2044 * Check if the given element is fixed or is inside a fixed parent
2045 * @function
2046 * @ignore
2047 * @argument {Element} element
2048 * @argument {Element} customContainer
2049 * @returns {Boolean} answer to "isFixed?"
2050 */
2051 function isFixed(element) {
2052 if (element === root.document.body) {
2053 return false;
2054 }
2055 if (getStyleComputedProperty(element, 'position') === 'fixed') {
2056 return true;
2057 }
2058 return element.parentNode ? isFixed(element.parentNode) : element;
2059 }
2060
2061 /**
2062 * Set the style to the given popper
2063 * @function
2064 * @ignore
2065 * @argument {Element} element - Element to apply the style to
2066 * @argument {Object} styles - Object with a list of properties and values which will be applied to the element
2067 */
2068 function setStyle(element, styles) {
2069 function is_numeric(n) {
2070 return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
2071 }
2072 keys_default()(styles).forEach(function (prop) {
2073 var unit = '';
2074 // add unit if the value is numeric and is one of the following
2075 if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && is_numeric(styles[prop])) {
2076 unit = 'px';
2077 }
2078 element.style[prop] = styles[prop] + unit;
2079 });
2080 }
2081
2082 /**
2083 * Check if the given variable is a function
2084 * @function
2085 * @ignore
2086 * @argument {*} functionToCheck - variable to check
2087 * @returns {Boolean} answer to: is a function?
2088 */
2089 function isFunction(functionToCheck) {
2090 var getType = {};
2091 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
2092 }
2093
2094 /**
2095 * Get the position of the given element, relative to its offset parent
2096 * @function
2097 * @ignore
2098 * @param {Element} element
2099 * @return {Object} position - Coordinates of the element and its `scrollTop`
2100 */
2101 function getOffsetRect(element) {
2102 var elementRect = {
2103 width: element.offsetWidth,
2104 height: element.offsetHeight,
2105 left: element.offsetLeft,
2106 top: element.offsetTop
2107 };
2108
2109 elementRect.right = elementRect.left + elementRect.width;
2110 elementRect.bottom = elementRect.top + elementRect.height;
2111
2112 // position
2113 return elementRect;
2114 }
2115
2116 /**
2117 * Get bounding client rect of given element
2118 * @function
2119 * @ignore
2120 * @param {HTMLElement} element
2121 * @return {Object} client rect
2122 */
2123 function getBoundingClientRect(element) {
2124 var rect = element.getBoundingClientRect();
2125
2126 // whether the IE version is lower than 11
2127 var isIE = navigator.userAgent.indexOf('MSIE') != -1;
2128
2129 // fix ie document bounding top always 0 bug
2130 var rectTop = isIE && element.tagName === 'HTML' ? -element.scrollTop : rect.top;
2131
2132 return {
2133 left: rect.left,
2134 top: rectTop,
2135 right: rect.right,
2136 bottom: rect.bottom,
2137 width: rect.right - rect.left,
2138 height: rect.bottom - rectTop
2139 };
2140 }
2141
2142 /**
2143 * Given an element and one of its parents, return the offset
2144 * @function
2145 * @ignore
2146 * @param {HTMLElement} element
2147 * @param {HTMLElement} parent
2148 * @return {Object} rect
2149 */
2150 function getOffsetRectRelativeToCustomParent(element, parent, fixed) {
2151 var elementRect = getBoundingClientRect(element);
2152 var parentRect = getBoundingClientRect(parent);
2153
2154 if (fixed) {
2155 var scrollParent = getScrollParent(parent);
2156 parentRect.top += scrollParent.scrollTop;
2157 parentRect.bottom += scrollParent.scrollTop;
2158 parentRect.left += scrollParent.scrollLeft;
2159 parentRect.right += scrollParent.scrollLeft;
2160 }
2161
2162 var rect = {
2163 top: elementRect.top - parentRect.top,
2164 left: elementRect.left - parentRect.left,
2165 bottom: elementRect.top - parentRect.top + elementRect.height,
2166 right: elementRect.left - parentRect.left + elementRect.width,
2167 width: elementRect.width,
2168 height: elementRect.height
2169 };
2170 return rect;
2171 }
2172
2173 /**
2174 * Get the prefixed supported property name
2175 * @function
2176 * @ignore
2177 * @argument {String} property (camelCase)
2178 * @returns {String} prefixed property (camelCase)
2179 */
2180 function getSupportedPropertyName(property) {
2181 var prefixes = ['', 'ms', 'webkit', 'moz', 'o'];
2182
2183 for (var i = 0; i < prefixes.length; i++) {
2184 var toCheck = prefixes[i] ? prefixes[i] + property.charAt(0).toUpperCase() + property.slice(1) : property;
2185 if (typeof root.document.body.style[toCheck] !== 'undefined') {
2186 return toCheck;
2187 }
2188 }
2189 return null;
2190 }
2191
2192 /**
2193 * The Object.assign() method is used to copy the values of all enumerable own properties from one or more source
2194 * objects to a target object. It will return the target object.
2195 * This polyfill doesn't support symbol properties, since ES5 doesn't have symbols anyway
2196 * Source: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
2197 * @function
2198 * @ignore
2199 */
2200 if (!assign_default.a) {
2201 Object.defineProperty(Object, 'assign', {
2202 enumerable: false,
2203 configurable: true,
2204 writable: true,
2205 value: function value(target) {
2206 if (target === undefined || target === null) {
2207 throw new TypeError('Cannot convert first argument to object');
2208 }
2209
2210 var to = Object(target);
2211 for (var i = 1; i < arguments.length; i++) {
2212 var nextSource = arguments[i];
2213 if (nextSource === undefined || nextSource === null) {
2214 continue;
2215 }
2216 nextSource = Object(nextSource);
2217
2218 var keysArray = keys_default()(nextSource);
2219 for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
2220 var nextKey = keysArray[nextIndex];
2221 var desc = get_own_property_descriptor_default()(nextSource, nextKey);
2222 if (desc !== undefined && desc.enumerable) {
2223 to[nextKey] = nextSource[nextKey];
2224 }
2225 }
2226 }
2227 return to;
2228 }
2229 });
2230 }
2231
2232 return Popper;
2233}
2234/* harmony default export */ var _popper_popper = (popper_createPopper());
2235// CONCATENATED MODULE: ./components/_util/_popper/vue-popper.js
2236
2237
2238
2239var stop = function stop(e) {
2240 return e.stopPropagation();
2241};
2242/**
2243 * @param {HTMLElement} [reference=$refs.reference] - The reference element used to position the popper.
2244 * @param {HTMLElement} [popper=$refs.popper] - The HTML element used as popper, or a configuration used to generate the popper.
2245 * @param {String} [placement=button] - Placement of the popper accepted values: top(-start, -end), right(-start, -end), bottom(-start, -end), left(-start, -end)
2246 * @param {Number} [offset=0] - Amount of pixels the popper will be shifted (can be negative).
2247 * @param {Boolean} [visible=false] Visibility of the popup element.
2248 * @param {Boolean} [visible-arrow=false] Visibility of the arrow, no style.
2249 */
2250/* harmony default export */ var vue_popper = __webpack_exports__["a"] = ({
2251 props: {
2252 transformOrigin: {
2253 type: [Boolean, String],
2254 default: true
2255 },
2256 placement: {
2257 type: String,
2258 default: 'bottom'
2259 },
2260 boundariesPadding: {
2261 type: Number,
2262 default: 5
2263 },
2264 reference: {},
2265 popper: {},
2266 offset: {
2267 default: 0
2268 },
2269 value: Boolean,
2270 visibleArrow: Boolean,
2271 arrowOffset: {
2272 type: Number,
2273 default: 35
2274 },
2275 appendToBody: {
2276 type: Boolean,
2277 default: true
2278 },
2279 popperOptions: {
2280 type: Object,
2281 default: function _default() {
2282 return {
2283 gpuAcceleration: false
2284 };
2285 }
2286 }
2287 },
2288
2289 data: function data() {
2290 return {
2291 showPopper: false,
2292 currentPlacement: ''
2293 };
2294 },
2295
2296
2297 watch: {
2298 value: {
2299 immediate: true,
2300 handler: function handler(val) {
2301 this.showPopper = val;
2302 this.$emit('input', val);
2303 }
2304 },
2305
2306 showPopper: function showPopper(val) {
2307 if (this.disabled) return;
2308 val ? this.updatePopper() : this.destroyPopper();
2309 this.$emit('input', val);
2310 }
2311 },
2312
2313 methods: {
2314 createPopper: function createPopper() {
2315 var _this = this;
2316
2317 var options = this.popperOptions;
2318 var popper = this.popperElm = this.popperElm || this.popper || this.$refs.popper;
2319 var realPlacement = void 0;
2320 if (popper.__vue__ && popper.__vue__.$parent && popper.__vue__.$parent.$options.name === 'MdsCascader') {
2321 realPlacement = 'bottom-start';
2322 } else {
2323 realPlacement = this.realPlacement || this.placement;
2324 }
2325 this.currentPlacement = this.currentPlacement || realPlacement;
2326 if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement)) {
2327 return;
2328 }
2329
2330 var reference = this.referenceElm = this.referenceElm || this.reference || this.$refs.reference;
2331
2332 if (!reference && this.$slots.reference && this.$slots.reference[0]) {
2333 reference = this.referenceElm = this.$slots.reference[0].elm;
2334 }
2335
2336 if (!popper || !reference) return;
2337 if (this.visibleArrow) this.appendArrow(popper);
2338 if (this.appendToBody) document.body.appendChild(this.popperElm);
2339 if (this.popperJS && this.popperJS.destroy) {
2340 this.popperJS.destroy();
2341 }
2342
2343 options.placement = this.currentPlacement;
2344 options.offset = this.offset;
2345 options.arrowOffset = this.arrowOffset;
2346 this.popperJS = new _popper_popper(reference, popper, options);
2347 this.popperJS.onCreate(function (_) {
2348 _this.$emit('created', _this);
2349 _this.resetTransformOrigin();
2350 _this.$nextTick(_this.updatePopper);
2351 });
2352 if (typeof options.onUpdate === 'function') {
2353 this.popperJS.onUpdate(options.onUpdate);
2354 }
2355 this.popperJS._popper.style.zIndex = popup_main["a" /* PopupMain */].nextZIndex();
2356 this.popperElm.addEventListener('click', stop);
2357 },
2358 updatePopper: function updatePopper(zIndexFlag) {
2359 var popperJS = this.popperJS;
2360 if (popperJS) {
2361 popperJS.update();
2362 if (popperJS._popper) {
2363 if (!zIndexFlag) {
2364 popperJS._popper.style.zIndex = popup_main["a" /* PopupMain */].nextZIndex();
2365 }
2366 }
2367 } else {
2368 this.createPopper();
2369 }
2370 },
2371 doDestroy: function doDestroy(forceDestroy) {
2372 /* istanbul ignore if */
2373 if (!this.popperJS || this.showPopper && !forceDestroy) return;
2374 this.popperJS.destroy();
2375 this.popperJS = null;
2376 },
2377 destroyPopper: function destroyPopper() {
2378 if (this.popperJS) {
2379 this.resetTransformOrigin();
2380 }
2381 },
2382 resetTransformOrigin: function resetTransformOrigin() {
2383 if (!this.transformOrigin) return;
2384 var placementMap = {
2385 top: 'bottom',
2386 bottom: 'top',
2387 left: 'right',
2388 right: 'left'
2389 };
2390 var placement = this.popperJS._popper.getAttribute('x-placement').split('-')[0];
2391 var origin = placementMap[placement];
2392 this.popperJS._popper.style.transformOrigin = typeof this.transformOrigin === 'string' ? this.transformOrigin : ['top', 'bottom'].indexOf(placement) > -1 ? 'center ' + origin : origin + ' center';
2393 },
2394 appendArrow: function appendArrow(element) {
2395 var hash = void 0;
2396 if (this.appended) {
2397 return;
2398 }
2399
2400 this.appended = true;
2401
2402 for (var item in element.attributes) {
2403 if (/^_v-/.test(element.attributes[item].name)) {
2404 hash = element.attributes[item].name;
2405 break;
2406 }
2407 }
2408
2409 var arrow = document.createElement('div');
2410
2411 if (hash) {
2412 arrow.setAttribute(hash, '');
2413 }
2414 arrow.setAttribute('x-arrow', '');
2415 arrow.className = 'popper__arrow';
2416 element.appendChild(arrow);
2417 }
2418 },
2419
2420 beforeDestroy: function beforeDestroy() {
2421 this.doDestroy(true);
2422 if (this.popperElm && this.popperElm.parentNode === document.body) {
2423 this.popperElm.removeEventListener('click', stop);
2424 document.body.removeChild(this.popperElm);
2425 }
2426 },
2427 deactivated: function deactivated() {
2428 this.$options.beforeDestroy[0].call(this);
2429 }
2430});
2431
2432/***/ }),
2433
2434/***/ 171:
2435/***/ (function(module, exports) {
2436
2437// removed by extract-text-webpack-plugin
2438
2439/***/ }),
2440
2441/***/ 173:
2442/***/ (function(module, exports) {
2443
2444// removed by extract-text-webpack-plugin
2445
2446/***/ }),
2447
2448/***/ 18:
2449/***/ (function(module, exports) {
2450
2451module.exports = require("babel-runtime/core-js/object/get-own-property-descriptor");
2452
2453/***/ }),
2454
2455/***/ 2:
2456/***/ (function(module, exports) {
2457
2458module.exports = __WEBPACK_EXTERNAL_MODULE__2__;
2459
2460/***/ }),
2461
2462/***/ 20:
2463/***/ (function(module, exports) {
2464
2465module.exports = __WEBPACK_EXTERNAL_MODULE__20__;
2466
2467/***/ }),
2468
2469/***/ 21:
2470/***/ (function(module, __webpack_exports__, __webpack_require__) {
2471
2472"use strict";
2473/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return on; });
2474/* unused harmony export off */
2475/* unused harmony export once */
2476/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return hasClass; });
2477/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addClass; });
2478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return removeClass; });
2479/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getStyle; });
2480/* unused harmony export setStyle */
2481/* unused harmony export isScroll */
2482/* unused harmony export getScrollContainer */
2483/* unused harmony export isInContainer */
2484/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
2485/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);
2486/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
2487/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);
2488
2489/* istanbul ignore next */
2490
2491
2492
2493var isServer = vue__WEBPACK_IMPORTED_MODULE_1___default.a.prototype.$isServer;
2494
2495/* eslint no-useless-escape: 0 */
2496var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
2497var MOZ_HACK_REGEXP = /^moz([A-Z])/;
2498var ieVersion = isServer ? 0 : Number(document.documentMode);
2499
2500/* istanbul ignore next */
2501var trim = function trim(string) {
2502 return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
2503};
2504/* istanbul ignore next */
2505var camelCase = function camelCase(name) {
2506 return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {
2507 return offset ? letter.toUpperCase() : letter;
2508 }).replace(MOZ_HACK_REGEXP, 'Moz$1');
2509};
2510
2511/* istanbul ignore next */
2512var on = function () {
2513 if (!isServer && document.addEventListener) {
2514 return function (element, event, handler) {
2515 if (element && event && handler) {
2516 element.addEventListener(event, handler, false);
2517 }
2518 };
2519 } else {
2520 return function (element, event, handler) {
2521 if (element && event && handler) {
2522 element.attachEvent('on' + event, handler);
2523 }
2524 };
2525 }
2526}();
2527
2528/* istanbul ignore next */
2529var off = function () {
2530 if (!isServer && document.removeEventListener) {
2531 return function (element, event, handler) {
2532 if (element && event) {
2533 element.removeEventListener(event, handler, false);
2534 }
2535 };
2536 } else {
2537 return function (element, event, handler) {
2538 if (element && event) {
2539 element.detachEvent('on' + event, handler);
2540 }
2541 };
2542 }
2543}();
2544
2545/* istanbul ignore next */
2546var once = function once(el, event, fn) {
2547 var listener = function listener() {
2548 if (fn) {
2549 fn.apply(this, arguments);
2550 }
2551 off(el, event, listener);
2552 };
2553 on(el, event, listener);
2554};
2555
2556/* istanbul ignore next */
2557function hasClass(el, cls) {
2558 if (!el || !cls) return false;
2559 if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');
2560 if (el.classList) {
2561 return el.classList.contains(cls);
2562 } else {
2563 return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
2564 }
2565}
2566
2567/* istanbul ignore next */
2568function addClass(el, cls) {
2569 if (!el) return;
2570 var curClass = el.className;
2571 var classes = (cls || '').split(' ');
2572
2573 for (var i = 0, j = classes.length; i < j; i++) {
2574 var clsName = classes[i];
2575 if (!clsName) continue;
2576
2577 if (el.classList) {
2578 el.classList.add(clsName);
2579 } else if (!hasClass(el, clsName)) {
2580 curClass += ' ' + clsName;
2581 }
2582 }
2583 if (!el.classList) {
2584 el.className = curClass;
2585 }
2586}
2587
2588/* istanbul ignore next */
2589function removeClass(el, cls) {
2590 if (!el || !cls) return;
2591 var classes = cls.split(' ');
2592 var curClass = ' ' + el.className + ' ';
2593
2594 for (var i = 0, j = classes.length; i < j; i++) {
2595 var clsName = classes[i];
2596 if (!clsName) continue;
2597
2598 if (el.classList) {
2599 el.classList.remove(clsName);
2600 } else if (hasClass(el, clsName)) {
2601 curClass = curClass.replace(' ' + clsName + ' ', ' ');
2602 }
2603 }
2604 if (!el.classList) {
2605 el.className = trim(curClass);
2606 }
2607}
2608
2609/* istanbul ignore next */
2610var getStyle = ieVersion < 9 ? function (element, styleName) {
2611 if (isServer) return;
2612 if (!element || !styleName) return null;
2613 styleName = camelCase(styleName);
2614 if (styleName === 'float') {
2615 styleName = 'styleFloat';
2616 }
2617 try {
2618 switch (styleName) {
2619 case 'opacity':
2620 try {
2621 return element.filters.item('alpha').opacity / 100;
2622 } catch (e) {
2623 return 1.0;
2624 }
2625 default:
2626 return element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null;
2627 }
2628 } catch (e) {
2629 return element.style[styleName];
2630 }
2631} : function (element, styleName) {
2632 if (isServer) return;
2633 if (!element || !styleName) return null;
2634 styleName = camelCase(styleName);
2635 if (styleName === 'float') {
2636 styleName = 'cssFloat';
2637 }
2638 try {
2639 var computed = document.defaultView.getComputedStyle(element, '');
2640 return element.style[styleName] || computed ? computed[styleName] : null;
2641 } catch (e) {
2642 return element.style[styleName];
2643 }
2644};
2645
2646/* istanbul ignore next */
2647function setStyle(element, styleName, value) {
2648 if (!element || !styleName) return;
2649
2650 if ((typeof styleName === 'undefined' ? 'undefined' : babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(styleName)) === 'object') {
2651 for (var prop in styleName) {
2652 if (styleName.hasOwnProperty(prop)) {
2653 setStyle(element, prop, styleName[prop]);
2654 }
2655 }
2656 } else {
2657 styleName = camelCase(styleName);
2658 if (styleName === 'opacity' && ieVersion < 9) {
2659 element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';
2660 } else {
2661 element.style[styleName] = value;
2662 }
2663 }
2664}
2665
2666var isScroll = function isScroll(el, vertical) {
2667 if (isServer) return;
2668
2669 var determinedDirection = vertical !== null || vertical !== undefined;
2670 var overflow = determinedDirection ? vertical ? getStyle(el, 'overflow-y') : getStyle(el, 'overflow-x') : getStyle(el, 'overflow');
2671
2672 return overflow.match(/(scroll|auto)/);
2673};
2674
2675var getScrollContainer = function getScrollContainer(el, vertical) {
2676 if (isServer) return;
2677
2678 var parent = el;
2679 while (parent) {
2680 if ([window, document, document.documentElement].includes(parent)) {
2681 return window;
2682 }
2683 if (isScroll(parent, vertical)) {
2684 return parent;
2685 }
2686 parent = parent.parentNode;
2687 }
2688
2689 return parent;
2690};
2691
2692var isInContainer = function isInContainer(el, container) {
2693 if (isServer || !el || !container) return false;
2694
2695 var elRect = el.getBoundingClientRect();
2696 var containerRect = void 0;
2697
2698 if ([window, document, document.documentElement, null, undefined].includes(container)) {
2699 containerRect = {
2700 top: 0,
2701 right: window.innerWidth,
2702 bottom: window.innerHeight,
2703 left: 0
2704 };
2705 } else {
2706 containerRect = container.getBoundingClientRect();
2707 }
2708
2709 return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;
2710};
2711
2712/***/ }),
2713
2714/***/ 24:
2715/***/ (function(module, exports) {
2716
2717module.exports = require("babel-runtime/helpers/toConsumableArray");
2718
2719/***/ }),
2720
2721/***/ 25:
2722/***/ (function(module, exports) {
2723
2724module.exports = __WEBPACK_EXTERNAL_MODULE__25__;
2725
2726/***/ }),
2727
2728/***/ 27:
2729/***/ (function(module, __webpack_exports__, __webpack_require__) {
2730
2731"use strict";
2732
2733// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/scroll-bar/scroll-bar.vue?vue&type=template&id=2fbcec38&
2734var render = function () {
2735 var _vm = this
2736 var _h = _vm.$createElement
2737 var _c = _vm._self._c || _h
2738 return _c(
2739 "ul",
2740 { ref: "wrap", class: _vm.classes, attrs: { role: "mds-scroll-bar" } },
2741 [_vm._t("default")],
2742 2
2743 )
2744}
2745var staticRenderFns = []
2746render._withStripped = true
2747
2748
2749// CONCATENATED MODULE: ./components/scroll-bar/scroll-bar.vue?vue&type=template&id=2fbcec38&
2750
2751// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/scroll-bar/scroll-bar.vue?vue&type=script&lang=js&
2752//
2753//
2754//
2755//
2756//
2757//
2758//
2759//
2760//
2761
2762/* harmony default export */ var scroll_barvue_type_script_lang_js_ = ({
2763 name: 'mdsScrollBar',
2764 props: {
2765 prefixCls: {
2766 type: String,
2767 default: 'mds-scroll-bar'
2768 }
2769 },
2770 data: function data() {
2771 return {};
2772 },
2773
2774 computed: {
2775 classes: function classes() {
2776 var prefixCls = this.prefixCls;
2777 return ['' + prefixCls, prefixCls + '-root'];
2778 },
2779 wrap: function wrap() {
2780 return this.$refs.wrap;
2781 }
2782 },
2783 methods: {},
2784 created: function created() {}
2785});
2786// CONCATENATED MODULE: ./components/scroll-bar/scroll-bar.vue?vue&type=script&lang=js&
2787 /* harmony default export */ var scroll_bar_scroll_barvue_type_script_lang_js_ = (scroll_barvue_type_script_lang_js_);
2788// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
2789var componentNormalizer = __webpack_require__(0);
2790
2791// CONCATENATED MODULE: ./components/scroll-bar/scroll-bar.vue
2792
2793
2794
2795
2796
2797/* normalize component */
2798
2799var component = Object(componentNormalizer["a" /* default */])(
2800 scroll_bar_scroll_barvue_type_script_lang_js_,
2801 render,
2802 staticRenderFns,
2803 false,
2804 null,
2805 null,
2806 null
2807
2808)
2809
2810/* hot reload */
2811if (false) { var api; }
2812component.options.__file = "components/scroll-bar/scroll-bar.vue"
2813/* harmony default export */ var scroll_bar = (component.exports);
2814// CONCATENATED MODULE: ./components/scroll-bar/index.js
2815
2816
2817/* harmony default export */ var components_scroll_bar = __webpack_exports__["a"] = (scroll_bar);
2818
2819/***/ }),
2820
2821/***/ 33:
2822/***/ (function(module, exports) {
2823
2824module.exports = __WEBPACK_EXTERNAL_MODULE__33__;
2825
2826/***/ }),
2827
2828/***/ 4:
2829/***/ (function(module, exports) {
2830
2831module.exports = __WEBPACK_EXTERNAL_MODULE__4__;
2832
2833/***/ }),
2834
2835/***/ 49:
2836/***/ (function(module, exports) {
2837
2838module.exports = __WEBPACK_EXTERNAL_MODULE__49__;
2839
2840/***/ }),
2841
2842/***/ 5:
2843/***/ (function(module, __webpack_exports__, __webpack_require__) {
2844
2845"use strict";
2846/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
2847/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
2848/* harmony import */ var _dom_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
2849
2850
2851
2852var hasModal = false;
2853var hasInitZIndex = false;
2854var zIndex = void 0;
2855
2856var getModal = function getModal() {
2857 if (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) return;
2858 var modalDom = PopupManager.modalDom;
2859 if (modalDom) {
2860 hasModal = true;
2861 } else {
2862 hasModal = false;
2863 modalDom = document.createElement('div');
2864 PopupManager.modalDom = modalDom;
2865
2866 modalDom.addEventListener('touchmove', function (event) {
2867 event.preventDefault();
2868 event.stopPropagation();
2869 });
2870
2871 modalDom.addEventListener('click', function () {
2872 PopupManager.doOnModalClick && PopupManager.doOnModalClick();
2873 });
2874 }
2875
2876 return modalDom;
2877};
2878
2879var instances = {};
2880
2881var PopupManager = {
2882 modalFade: true,
2883
2884 getInstance: function getInstance(id) {
2885 return instances[id];
2886 },
2887
2888 register: function register(id, instance) {
2889 if (id && instance) {
2890 instances[id] = instance;
2891 }
2892 },
2893
2894 deregister: function deregister(id) {
2895 if (id) {
2896 instances[id] = null;
2897 delete instances[id];
2898 }
2899 },
2900
2901 nextZIndex: function nextZIndex() {
2902 return PopupManager.zIndex++;
2903 },
2904
2905 modalStack: [],
2906
2907 doOnModalClick: function doOnModalClick() {
2908 var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
2909 if (!topItem) return;
2910
2911 var instance = PopupManager.getInstance(topItem.id);
2912 if (instance && instance.closeOnClickModal) {
2913 instance.close();
2914 }
2915 },
2916
2917 openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {
2918 if (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) return;
2919 if (!id || zIndex === undefined) return;
2920 this.modalFade = modalFade;
2921
2922 var modalStack = this.modalStack;
2923
2924 for (var i = 0, j = modalStack.length; i < j; i++) {
2925 var item = modalStack[i];
2926 if (item.id === id) {
2927 return;
2928 }
2929 }
2930
2931 var modalDom = getModal();
2932
2933 Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, 'v-modal');
2934 if (this.modalFade && !hasModal) {
2935 Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, 'v-modal-enter');
2936 }
2937 if (modalClass) {
2938 var classArr = modalClass.trim().split(/\s+/);
2939 classArr.forEach(function (item) {
2940 return Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, item);
2941 });
2942 }
2943 setTimeout(function () {
2944 Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(modalDom, 'v-modal-enter');
2945 }, 200);
2946
2947 if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
2948 dom.parentNode.appendChild(modalDom);
2949 } else {
2950 document.body.appendChild(modalDom);
2951 }
2952
2953 if (zIndex) {
2954 modalDom.style.zIndex = zIndex;
2955 }
2956 modalDom.tabIndex = 0;
2957 modalDom.style.display = '';
2958
2959 this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
2960 },
2961
2962 closeModal: function closeModal(id) {
2963 var modalStack = this.modalStack;
2964 var modalDom = getModal();
2965
2966 if (modalStack.length > 0) {
2967 var topItem = modalStack[modalStack.length - 1];
2968 if (topItem.id === id) {
2969 if (topItem.modalClass) {
2970 var classArr = topItem.modalClass.trim().split(/\s+/);
2971 classArr.forEach(function (item) {
2972 return Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(modalDom, item);
2973 });
2974 }
2975
2976 modalStack.pop();
2977 if (modalStack.length > 0) {
2978 modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
2979 }
2980 } else {
2981 for (var i = modalStack.length - 1; i >= 0; i--) {
2982 if (modalStack[i].id === id) {
2983 modalStack.splice(i, 1);
2984 break;
2985 }
2986 }
2987 }
2988 }
2989
2990 if (modalStack.length === 0) {
2991 if (this.modalFade) {
2992 Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* addClass */ "a"])(modalDom, 'v-modal-leave');
2993 }
2994 setTimeout(function () {
2995 if (modalStack.length === 0) {
2996 if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
2997 modalDom.style.display = 'none';
2998 PopupManager.modalDom = undefined;
2999 }
3000 Object(_dom_helper__WEBPACK_IMPORTED_MODULE_1__[/* removeClass */ "h"])(modalDom, 'v-modal-leave');
3001 }, 200);
3002 }
3003 }
3004};
3005
3006Object.defineProperty(PopupManager, 'zIndex', {
3007 configurable: true,
3008 get: function get() {
3009 if (!hasInitZIndex) {
3010 zIndex = zIndex || (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$ELEMENT || {}).zIndex || 2000;
3011 hasInitZIndex = true;
3012 }
3013 return zIndex;
3014 },
3015 set: function set(value) {
3016 zIndex = value;
3017 }
3018});
3019
3020var getTopPopup = function getTopPopup() {
3021 if (vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) return;
3022 if (PopupManager.modalStack.length > 0) {
3023 var topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];
3024 if (!topPopup) return;
3025 var instance = PopupManager.getInstance(topPopup.id);
3026
3027 return instance;
3028 }
3029};
3030
3031if (!vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer) {
3032 // handle `esc` key when the popup is shown
3033 window.addEventListener('keydown', function (event) {
3034 if (event.keyCode === 27) {
3035 var topPopup = getTopPopup();
3036
3037 if (topPopup && topPopup.closeOnPressEscape) {
3038 topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();
3039 }
3040 }
3041 });
3042}
3043
3044/* harmony default export */ __webpack_exports__["a"] = (PopupManager);
3045
3046/***/ }),
3047
3048/***/ 51:
3049/***/ (function(module, exports, __webpack_require__) {
3050
3051var __WEBPACK_AMD_DEFINE_RESULT__;/* Modified from https://github.com/taylorhakes/fecha
3052 *
3053 * The MIT License (MIT)
3054 *
3055 * Copyright (c) 2015 Taylor Hakes
3056 *
3057 * Permission is hereby granted, free of charge, to any person obtaining a copy
3058 * of this software and associated documentation files (the "Software"), to deal
3059 * in the Software without restriction, including without limitation the rights
3060 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3061 * copies of the Software, and to permit persons to whom the Software is
3062 * furnished to do so, subject to the following conditions:
3063 *
3064 * The above copyright notice and this permission notice shall be included in all
3065 * copies or substantial portions of the Software.
3066 *
3067 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3068 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3069 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3070 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3071 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3072 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3073 * SOFTWARE.
3074 */
3075
3076/*eslint-disable*/
3077// 把 YYYY-MM-DD 改成了 yyyy-MM-dd
3078(function (main) {
3079 'use strict';
3080
3081 /**
3082 * Parse or format dates
3083 * @class fecha
3084 */
3085
3086 var fecha = {};
3087 var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g;
3088 var twoDigits = '\\d\\d?';
3089 var threeDigits = '\\d{3}';
3090 var fourDigits = '\\d{4}';
3091 var word = '[^\\s]+';
3092 var literal = /\[([^]*?)\]/gm;
3093 var noop = function noop() {};
3094
3095 function regexEscape(str) {
3096 return str.replace(/[|\\{()[^$+*?.-]/g, '\\$&');
3097 }
3098
3099 function shorten(arr, sLen) {
3100 var newArr = [];
3101 for (var i = 0, len = arr.length; i < len; i++) {
3102 newArr.push(arr[i].substr(0, sLen));
3103 }
3104 return newArr;
3105 }
3106
3107 function monthUpdate(arrName) {
3108 return function (d, v, i18n) {
3109 var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());
3110 if (~index) {
3111 d.month = index;
3112 }
3113 };
3114 }
3115
3116 function pad(val, len) {
3117 val = String(val);
3118 len = len || 2;
3119 while (val.length < len) {
3120 val = '0' + val;
3121 }
3122 return val;
3123 }
3124
3125 var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
3126 var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
3127 var monthNamesShort = shorten(monthNames, 3);
3128 var dayNamesShort = shorten(dayNames, 3);
3129 fecha.i18n = {
3130 dayNamesShort: dayNamesShort,
3131 dayNames: dayNames,
3132 monthNamesShort: monthNamesShort,
3133 monthNames: monthNames,
3134 amPm: ['am', 'pm'],
3135 DoFn: function DoFn(D) {
3136 return D + ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10];
3137 }
3138 };
3139
3140 var formatFlags = {
3141 D: function D(dateObj) {
3142 return dateObj.getDay();
3143 },
3144 DD: function DD(dateObj) {
3145 return pad(dateObj.getDay());
3146 },
3147 Do: function Do(dateObj, i18n) {
3148 return i18n.DoFn(dateObj.getDate());
3149 },
3150 d: function d(dateObj) {
3151 return dateObj.getDate();
3152 },
3153 dd: function dd(dateObj) {
3154 return pad(dateObj.getDate());
3155 },
3156 ddd: function ddd(dateObj, i18n) {
3157 return i18n.dayNamesShort[dateObj.getDay()];
3158 },
3159 dddd: function dddd(dateObj, i18n) {
3160 return i18n.dayNames[dateObj.getDay()];
3161 },
3162 M: function M(dateObj) {
3163 return dateObj.getMonth() + 1;
3164 },
3165 MM: function MM(dateObj) {
3166 return pad(dateObj.getMonth() + 1);
3167 },
3168 MMM: function MMM(dateObj, i18n) {
3169 return i18n.monthNamesShort[dateObj.getMonth()];
3170 },
3171 MMMM: function MMMM(dateObj, i18n) {
3172 return i18n.monthNames[dateObj.getMonth()];
3173 },
3174 yy: function yy(dateObj) {
3175 return pad(String(dateObj.getFullYear()), 4).substr(2);
3176 },
3177 yyyy: function yyyy(dateObj) {
3178 return pad(dateObj.getFullYear(), 4);
3179 },
3180 h: function h(dateObj) {
3181 return dateObj.getHours() % 12 || 12;
3182 },
3183 hh: function hh(dateObj) {
3184 return pad(dateObj.getHours() % 12 || 12);
3185 },
3186 H: function H(dateObj) {
3187 return dateObj.getHours();
3188 },
3189 HH: function HH(dateObj) {
3190 return pad(dateObj.getHours());
3191 },
3192 m: function m(dateObj) {
3193 return dateObj.getMinutes();
3194 },
3195 mm: function mm(dateObj) {
3196 return pad(dateObj.getMinutes());
3197 },
3198 s: function s(dateObj) {
3199 return dateObj.getSeconds();
3200 },
3201 ss: function ss(dateObj) {
3202 return pad(dateObj.getSeconds());
3203 },
3204 S: function S(dateObj) {
3205 return Math.round(dateObj.getMilliseconds() / 100);
3206 },
3207 SS: function SS(dateObj) {
3208 return pad(Math.round(dateObj.getMilliseconds() / 10), 2);
3209 },
3210 SSS: function SSS(dateObj) {
3211 return pad(dateObj.getMilliseconds(), 3);
3212 },
3213 a: function a(dateObj, i18n) {
3214 return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];
3215 },
3216 A: function A(dateObj, i18n) {
3217 return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();
3218 },
3219 ZZ: function ZZ(dateObj) {
3220 var o = dateObj.getTimezoneOffset();
3221 return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);
3222 }
3223 };
3224
3225 var parseFlags = {
3226 d: [twoDigits, function (d, v) {
3227 d.day = v;
3228 }],
3229 Do: [twoDigits + word, function (d, v) {
3230 d.day = parseInt(v, 10);
3231 }],
3232 M: [twoDigits, function (d, v) {
3233 d.month = v - 1;
3234 }],
3235 yy: [twoDigits, function (d, v) {
3236 var da = new Date(),
3237 cent = +('' + da.getFullYear()).substr(0, 2);
3238 d.year = '' + (v > 68 ? cent - 1 : cent) + v;
3239 }],
3240 h: [twoDigits, function (d, v) {
3241 d.hour = v;
3242 }],
3243 m: [twoDigits, function (d, v) {
3244 d.minute = v;
3245 }],
3246 s: [twoDigits, function (d, v) {
3247 d.second = v;
3248 }],
3249 yyyy: [fourDigits, function (d, v) {
3250 d.year = v;
3251 }],
3252 S: ['\\d', function (d, v) {
3253 d.millisecond = v * 100;
3254 }],
3255 SS: ['\\d{2}', function (d, v) {
3256 d.millisecond = v * 10;
3257 }],
3258 SSS: [threeDigits, function (d, v) {
3259 d.millisecond = v;
3260 }],
3261 D: [twoDigits, noop],
3262 ddd: [word, noop],
3263 MMM: [word, monthUpdate('monthNamesShort')],
3264 MMMM: [word, monthUpdate('monthNames')],
3265 a: [word, function (d, v, i18n) {
3266 var val = v.toLowerCase();
3267 if (val === i18n.amPm[0]) {
3268 d.isPm = false;
3269 } else if (val === i18n.amPm[1]) {
3270 d.isPm = true;
3271 }
3272 }],
3273 ZZ: ['[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z', function (d, v) {
3274 var parts = (v + '').match(/([+-]|\d\d)/gi),
3275 minutes;
3276
3277 if (parts) {
3278 minutes = +(parts[1] * 60) + parseInt(parts[2], 10);
3279 d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;
3280 }
3281 }]
3282 };
3283 parseFlags.dd = parseFlags.d;
3284 parseFlags.dddd = parseFlags.ddd;
3285 parseFlags.DD = parseFlags.D;
3286 parseFlags.mm = parseFlags.m;
3287 parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;
3288 parseFlags.MM = parseFlags.M;
3289 parseFlags.ss = parseFlags.s;
3290 parseFlags.A = parseFlags.a;
3291
3292 // Some common format strings
3293 fecha.masks = {
3294 default: 'ddd MMM dd yyyy HH:mm:ss',
3295 shortDate: 'M/D/yy',
3296 mediumDate: 'MMM d, yyyy',
3297 longDate: 'MMMM d, yyyy',
3298 fullDate: 'dddd, MMMM d, yyyy',
3299 shortTime: 'HH:mm',
3300 mediumTime: 'HH:mm:ss',
3301 longTime: 'HH:mm:ss.SSS'
3302
3303 /***
3304 * Format a date
3305 * @method format
3306 * @param {Date|number} dateObj
3307 * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'
3308 */
3309 };fecha.format = function (dateObj, mask, i18nSettings) {
3310 var i18n = i18nSettings || fecha.i18n;
3311
3312 if (typeof dateObj === 'number') {
3313 dateObj = new Date(dateObj);
3314 }
3315
3316 if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {
3317 throw new Error('Invalid Date in fecha.format');
3318 }
3319
3320 mask = fecha.masks[mask] || mask || fecha.masks['default'];
3321
3322 var literals = [];
3323
3324 // Make literals inactive by replacing them with ??
3325 mask = mask.replace(literal, function ($0, $1) {
3326 literals.push($1);
3327 return '@@@';
3328 });
3329 // Apply formatting rules
3330 mask = mask.replace(token, function ($0) {
3331 return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);
3332 });
3333 // Inline literal values back into the formatted value
3334 return mask.replace(/@@@/g, function () {
3335 return literals.shift();
3336 });
3337 };
3338
3339 /**
3340 * Parse a date string into an object, changes - into /
3341 * @method parse
3342 * @param {string} dateStr Date string
3343 * @param {string} format Date parse format
3344 * @returns {Date|boolean}
3345 */
3346 fecha.parse = function (dateStr, format, i18nSettings) {
3347 var i18n = i18nSettings || fecha.i18n;
3348
3349 if (typeof format !== 'string') {
3350 throw new Error('Invalid format in fecha.parse');
3351 }
3352
3353 format = fecha.masks[format] || format;
3354
3355 // Avoid regular expression denial of service, fail early for really long strings
3356 // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS
3357 if (dateStr.length > 1000) {
3358 return null;
3359 }
3360
3361 var dateInfo = {};
3362 var parseInfo = [];
3363 var literals = [];
3364 format = format.replace(literal, function ($0, $1) {
3365 literals.push($1);
3366 return '@@@';
3367 });
3368 var newFormat = regexEscape(format).replace(token, function ($0) {
3369 if (parseFlags[$0]) {
3370 var info = parseFlags[$0];
3371 parseInfo.push(info[1]);
3372 return '(' + info[0] + ')';
3373 }
3374
3375 return $0;
3376 });
3377 newFormat = newFormat.replace(/@@@/g, function () {
3378 return literals.shift();
3379 });
3380 var matches = dateStr.match(new RegExp(newFormat, 'i'));
3381 if (!matches) {
3382 return null;
3383 }
3384
3385 for (var i = 1; i < matches.length; i++) {
3386 parseInfo[i - 1](dateInfo, matches[i], i18n);
3387 }
3388
3389 var today = new Date();
3390 if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {
3391 dateInfo.hour = +dateInfo.hour + 12;
3392 } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {
3393 dateInfo.hour = 0;
3394 }
3395
3396 var date;
3397 if (dateInfo.timezoneOffset != null) {
3398 dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;
3399 date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));
3400 } else {
3401 date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);
3402 }
3403 return date;
3404 };
3405
3406 /* istanbul ignore next */
3407 if ( true && module.exports) {
3408 module.exports = fecha;
3409 } else if (true) {
3410 !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {
3411 return fecha;
3412 }).call(exports, __webpack_require__, exports, module),
3413 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
3414 } else {}
3415})(this);
3416
3417/***/ }),
3418
3419/***/ 56:
3420/***/ (function(module, exports) {
3421
3422module.exports = require("babel-runtime/helpers/slicedToArray");
3423
3424/***/ }),
3425
3426/***/ 6:
3427/***/ (function(module, exports) {
3428
3429module.exports = require("babel-runtime/core-js/object/assign");
3430
3431/***/ }),
3432
3433/***/ 66:
3434/***/ (function(module, exports) {
3435
3436module.exports = __WEBPACK_EXTERNAL_MODULE__66__;
3437
3438/***/ }),
3439
3440/***/ 67:
3441/***/ (function(module, exports) {
3442
3443module.exports = __WEBPACK_EXTERNAL_MODULE__67__;
3444
3445/***/ }),
3446
3447/***/ 7:
3448/***/ (function(module, exports) {
3449
3450module.exports = __WEBPACK_EXTERNAL_MODULE__7__;
3451
3452/***/ }),
3453
3454/***/ 8:
3455/***/ (function(module, exports) {
3456
3457module.exports = __WEBPACK_EXTERNAL_MODULE__8__;
3458
3459/***/ }),
3460
3461/***/ 87:
3462/***/ (function(module, __webpack_exports__, __webpack_require__) {
3463
3464"use strict";
3465// ESM COMPAT FLAG
3466__webpack_require__.r(__webpack_exports__);
3467
3468// EXTERNAL MODULE: ./components/style/index.less
3469var components_style = __webpack_require__(139);
3470
3471// EXTERNAL MODULE: ./components/datepicker/style/index.less
3472var datepicker_style = __webpack_require__(171);
3473
3474// EXTERNAL MODULE: ./components/datepicker/style/transition.less
3475var transition = __webpack_require__(173);
3476
3477// CONCATENATED MODULE: ./components/datepicker/style/index.js
3478
3479
3480
3481// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/picker.vue?vue&type=template&id=311c2352&
3482var render = function () {
3483 var _vm = this
3484 var _h = _vm.$createElement
3485 var _c = _vm._self._c || _h
3486 return !_vm.ranged
3487 ? _c(
3488 "mds-input",
3489 _vm._b(
3490 {
3491 directives: [
3492 {
3493 name: "clickoutside",
3494 rawName: "v-clickoutside",
3495 value: _vm.handleClose,
3496 expression: "handleClose",
3497 },
3498 ],
3499 ref: "reference",
3500 class: _vm.wrapperClass,
3501 attrs: {
3502 readonly:
3503 !_vm.editable ||
3504 _vm.readonly ||
3505 _vm.type === "dates" ||
3506 _vm.type === "week",
3507 disabled: _vm.pickerDisabled,
3508 size: _vm.pickerSize,
3509 name: _vm.name,
3510 placeholder: _vm.placeholder,
3511 value: _vm.displayValue,
3512 validateEvent: false,
3513 role: "picker",
3514 },
3515 on: {
3516 focus: _vm.handleFocus,
3517 input: function (value) {
3518 return (_vm.userInput = value)
3519 },
3520 change: _vm.handleChange,
3521 },
3522 nativeOn: {
3523 keydown: function ($event) {
3524 return _vm.handleKeydown($event)
3525 },
3526 mouseenter: function ($event) {
3527 return _vm.handleMouseEnter($event)
3528 },
3529 mouseleave: function ($event) {
3530 _vm.showClose = false
3531 },
3532 },
3533 },
3534 "mds-input",
3535 _vm.firstInputId,
3536 false
3537 ),
3538 [
3539 _vm.showCalendar
3540 ? _c("i", {
3541 staticClass: "mdsicon mdsicon-line-calendar",
3542 class: _vm.triggerClass,
3543 attrs: { slot: "suffix" },
3544 on: { click: _vm.handleFocus },
3545 slot: "suffix",
3546 })
3547 : _vm._e(),
3548 _vm.haveTrigger
3549 ? _c("i", {
3550 staticClass: "mdsicon",
3551 class: [
3552 _vm.showClose ? "" + _vm.clearIcon : "",
3553 _vm.prefixCls + "-close-icon",
3554 ],
3555 attrs: { slot: "suffix" },
3556 on: { click: _vm.handleClickIcon },
3557 slot: "suffix",
3558 })
3559 : _vm._e(),
3560 ]
3561 )
3562 : _c(
3563 "div",
3564 {
3565 directives: [
3566 {
3567 name: "clickoutside",
3568 rawName: "v-clickoutside",
3569 value: _vm.handleClose,
3570 expression: "handleClose",
3571 },
3572 ],
3573 ref: "reference",
3574 class: _vm.wrapperRangeClass,
3575 on: {
3576 click: _vm.handleRangeClick,
3577 mouseenter: _vm.handleMouseEnter,
3578 mouseleave: function ($event) {
3579 _vm.showClose = false
3580 },
3581 keydown: _vm.handleKeydown,
3582 },
3583 },
3584 [
3585 _c(
3586 "input",
3587 _vm._b(
3588 {
3589 class: _vm.prefixCls + "-editor-range-input",
3590 attrs: {
3591 autocomplete: "off",
3592 placeholder: _vm.startPlaceholder,
3593 disabled: _vm.pickerDisabled,
3594 readonly: !_vm.editable || _vm.readonly,
3595 name: _vm.name && _vm.name[0],
3596 },
3597 domProps: { value: _vm.displayValue && _vm.displayValue[0] },
3598 on: {
3599 input: _vm.handleStartInput,
3600 change: _vm.handleStartChange,
3601 focus: _vm.handleFocus,
3602 },
3603 },
3604 "input",
3605 _vm.firstInputId,
3606 false
3607 )
3608 ),
3609 _vm._t("range-separator", [
3610 _c(
3611 "span",
3612 {
3613 staticClass: "mds-range-separator",
3614 style: {
3615 color: _vm.type === "datetimerangeflat" ? "#303133" : "",
3616 },
3617 },
3618 [_vm._v(_vm._s(_vm.rangeSeparator))]
3619 ),
3620 ]),
3621 _c(
3622 "input",
3623 _vm._b(
3624 {
3625 class: _vm.prefixCls + "-editor-range-input",
3626 attrs: {
3627 autocomplete: "off",
3628 placeholder: _vm.endPlaceholder,
3629 disabled: _vm.pickerDisabled,
3630 readonly: !_vm.editable || _vm.readonly,
3631 name: _vm.name && _vm.name[1],
3632 },
3633 domProps: { value: _vm.displayValue && _vm.displayValue[1] },
3634 on: {
3635 input: _vm.handleEndInput,
3636 change: _vm.handleEndChange,
3637 focus: _vm.handleFocus,
3638 },
3639 },
3640 "input",
3641 _vm.secondInputId,
3642 false
3643 )
3644 ),
3645 _vm.showCalendar
3646 ? _c("i", {
3647 class: [
3648 "mdsicon",
3649 this.prefixCls + "-editor-range-icon-pos",
3650 _vm.triggerClass,
3651 ],
3652 })
3653 : _vm._e(),
3654 _vm.haveTrigger
3655 ? _c("i", {
3656 staticClass: "mdsicon",
3657 class: [
3658 _vm.showClose ? "" + _vm.clearIcon : "",
3659 _vm.prefixCls +
3660 "-close-icon " +
3661 this.prefixCls +
3662 "-editor-range-icon-pos",
3663 ],
3664 on: { click: _vm.handleClickIcon },
3665 })
3666 : _vm._e(),
3667 ],
3668 2
3669 )
3670}
3671var staticRenderFns = []
3672render._withStripped = true
3673
3674
3675// CONCATENATED MODULE: ./components/datepicker/picker/picker.vue?vue&type=template&id=311c2352&
3676
3677// EXTERNAL MODULE: external "babel-runtime/helpers/toConsumableArray"
3678var toConsumableArray_ = __webpack_require__(24);
3679var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray_);
3680
3681// EXTERNAL MODULE: external "babel-runtime/core-js/object/keys"
3682var keys_ = __webpack_require__(10);
3683var keys_default = /*#__PURE__*/__webpack_require__.n(keys_);
3684
3685// EXTERNAL MODULE: external {"root":"Vue","commonjs":"vue","commonjs2":"vue","amd":"vue"}
3686var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_ = __webpack_require__(2);
3687var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default = /*#__PURE__*/__webpack_require__.n(external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_);
3688
3689// EXTERNAL MODULE: external "./_util/clickoutside"
3690var clickoutside_ = __webpack_require__(33);
3691var clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);
3692
3693// EXTERNAL MODULE: external "./_util/dateUtil"
3694var dateUtil_ = __webpack_require__(4);
3695
3696// EXTERNAL MODULE: ./components/_util/_popper/vue-popper.js + 1 modules
3697var vue_popper = __webpack_require__(17);
3698
3699// EXTERNAL MODULE: external "./_mixin/emitter"
3700var emitter_ = __webpack_require__(12);
3701var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
3702
3703// EXTERNAL MODULE: external "./input"
3704var external_input_ = __webpack_require__(16);
3705var external_input_default = /*#__PURE__*/__webpack_require__.n(external_input_);
3706
3707// EXTERNAL MODULE: external "./icon"
3708var external_icon_ = __webpack_require__(8);
3709var external_icon_default = /*#__PURE__*/__webpack_require__.n(external_icon_);
3710
3711// EXTERNAL MODULE: external "./_util/merge"
3712var merge_ = __webpack_require__(49);
3713var merge_default = /*#__PURE__*/__webpack_require__.n(merge_);
3714
3715// EXTERNAL MODULE: external "./_mixin/locale"
3716var locale_ = __webpack_require__(25);
3717var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
3718
3719// EXTERNAL MODULE: external "./_util/proptype"
3720var proptype_ = __webpack_require__(7);
3721
3722// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/picker.vue?vue&type=script&lang=js&
3723
3724
3725//
3726//
3727//
3728//
3729//
3730//
3731//
3732//
3733//
3734//
3735//
3736//
3737//
3738//
3739//
3740//
3741//
3742//
3743//
3744//
3745//
3746//
3747//
3748//
3749//
3750//
3751//
3752//
3753//
3754//
3755//
3756//
3757//
3758//
3759//
3760//
3761//
3762//
3763//
3764//
3765//
3766//
3767//
3768//
3769//
3770//
3771//
3772//
3773//
3774//
3775//
3776//
3777//
3778//
3779//
3780//
3781//
3782//
3783//
3784//
3785//
3786//
3787//
3788//
3789//
3790//
3791//
3792//
3793//
3794//
3795//
3796//
3797//
3798//
3799//
3800//
3801//
3802//
3803//
3804//
3805//
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817var SIZEMAP = {
3818 'mini': 'mn',
3819 'small': 'sm',
3820 'medium': 'md',
3821 'default': '',
3822 'large': 'lg'
3823};
3824var NewPopper = {
3825 props: {
3826 appendToBody: vue_popper["a" /* default */].props.appendToBody,
3827 offset: vue_popper["a" /* default */].props.offset,
3828 boundariesPadding: vue_popper["a" /* default */].props.boundariesPadding,
3829 arrowOffset: vue_popper["a" /* default */].props.arrowOffset
3830 },
3831 methods: vue_popper["a" /* default */].methods,
3832 data: function data() {
3833 return merge_default()({ visibleArrow: true }, vue_popper["a" /* default */].data);
3834 },
3835
3836 beforeDestroy: vue_popper["a" /* default */].beforeDestroy
3837};
3838
3839var DEFAULT_FORMATS = {
3840 date: 'yyyy-MM-dd',
3841 month: 'yyyy-MM',
3842 datetime: 'yyyy-MM-dd HH:mm:ss',
3843 time: 'HH:mm:ss',
3844 week: 'yyyywWW',
3845 timerange: 'HH:mm:ss',
3846 daterange: 'yyyy-MM-dd',
3847 monthrange: 'yyyy-MM',
3848 datetimerange: 'yyyy-MM-dd HH:mm:ss',
3849 datetimerangeflat: 'yyyy-MM-dd HH:mm:ss',
3850 year: 'yyyy'
3851};
3852var HAVE_TRIGGER_TYPES = ['date', 'datetime', 'time', 'time-select', 'week', 'month', 'year', 'daterange', 'monthrange', 'timerange', 'datetimerange', 'dates', 'datetimerangeflat'];
3853var pickervue_type_script_lang_js_DATE_FORMATTER = function DATE_FORMATTER(value, format) {
3854 if (format === 'timestamp') return value.getTime();
3855 return Object(dateUtil_["formatDate"])(value, format);
3856};
3857var pickervue_type_script_lang_js_DATE_PARSER = function DATE_PARSER(text, format) {
3858 if (format === 'timestamp') return new Date(Number(text));
3859 return Object(dateUtil_["parseDate"])(text, format);
3860};
3861var RANGE_FORMATTER = function RANGE_FORMATTER(value, format) {
3862 if (Array.isArray(value) && value.length === 2) {
3863 var start = value[0];
3864 var end = value[1];
3865
3866 if (start && end) {
3867 return [pickervue_type_script_lang_js_DATE_FORMATTER(start, format), pickervue_type_script_lang_js_DATE_FORMATTER(end, format)];
3868 }
3869 }
3870 return '';
3871};
3872var RANGE_PARSER = function RANGE_PARSER(array, format, separator) {
3873 if (!Array.isArray(array)) {
3874 array = array.split(separator);
3875 }
3876 if (array.length === 2) {
3877 var range1 = array[0];
3878 var range2 = array[1];
3879
3880 return [pickervue_type_script_lang_js_DATE_PARSER(range1, format), pickervue_type_script_lang_js_DATE_PARSER(range2, format)];
3881 }
3882 return [];
3883};
3884var TYPE_VALUE_RESOLVER_MAP = {
3885 default: {
3886 formatter: function formatter(value) {
3887 if (!value) return '';
3888 return '' + value;
3889 },
3890 parser: function parser(text) {
3891 if (text === undefined || text === '') return null;
3892 return text;
3893 }
3894 },
3895 week: {
3896 formatter: function formatter(value, format) {
3897 var week = Object(dateUtil_["getWeekNumber"])(value);
3898 var month = value.getMonth();
3899 var trueDate = new Date(value);
3900 if (week === 1 && month === 11) {
3901 trueDate.setHours(0, 0, 0, 0);
3902 trueDate.setDate(trueDate.getDate() + 3 - (trueDate.getDay() + 6) % 7);
3903 }
3904 var date = Object(dateUtil_["formatDate"])(trueDate, format);
3905
3906 date = /WW/.test(date) ? date.replace(/WW/, week < 10 ? '0' + week : week) : date.replace(/W/, week);
3907 return date;
3908 },
3909 parser: function parser(text, format) {
3910 // parse as if a normal date
3911 return TYPE_VALUE_RESOLVER_MAP.date.parser(text, format);
3912 }
3913 },
3914 date: {
3915 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
3916 parser: pickervue_type_script_lang_js_DATE_PARSER
3917 },
3918 datetime: {
3919 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
3920 parser: pickervue_type_script_lang_js_DATE_PARSER
3921 },
3922 daterange: {
3923 formatter: RANGE_FORMATTER,
3924 parser: RANGE_PARSER
3925 },
3926 monthrange: {
3927 formatter: RANGE_FORMATTER,
3928 parser: RANGE_PARSER
3929 },
3930 datetimerange: {
3931 formatter: RANGE_FORMATTER,
3932 parser: RANGE_PARSER
3933 },
3934 datetimerangeflat: {
3935 formatter: RANGE_FORMATTER,
3936 parser: RANGE_PARSER
3937 },
3938 timerange: {
3939 formatter: RANGE_FORMATTER,
3940 parser: RANGE_PARSER
3941 },
3942 time: {
3943 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
3944 parser: pickervue_type_script_lang_js_DATE_PARSER
3945 },
3946 month: {
3947 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
3948 parser: pickervue_type_script_lang_js_DATE_PARSER
3949 },
3950 year: {
3951 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
3952 parser: pickervue_type_script_lang_js_DATE_PARSER
3953 },
3954 number: {
3955 formatter: function formatter(value) {
3956 if (!value) return '';
3957 return '' + value;
3958 },
3959 parser: function parser(text) {
3960 var result = Number(text);
3961
3962 if (!isNaN(text)) {
3963 return result;
3964 } else {
3965 return null;
3966 }
3967 }
3968 },
3969 dates: {
3970 formatter: function formatter(value, format) {
3971 return value.map(function (date) {
3972 return pickervue_type_script_lang_js_DATE_FORMATTER(date, format);
3973 });
3974 },
3975 parser: function parser(value, format) {
3976 return (typeof value === 'string' ? value.split(', ') : value).map(function (date) {
3977 return date instanceof Date ? date : pickervue_type_script_lang_js_DATE_PARSER(date, format);
3978 });
3979 }
3980 }
3981};
3982var PLACEMENT_MAP = {
3983 left: 'bottom-start',
3984 center: 'bottom',
3985 right: 'bottom-end'
3986};
3987
3988var parseAsFormatAndType = function parseAsFormatAndType(value, customFormat, type) {
3989 var rangeSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '-';
3990
3991 if (!value) return null;
3992 var parser = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).parser;
3993 var format = customFormat || DEFAULT_FORMATS[type];
3994 return parser(value, format, rangeSeparator);
3995};
3996
3997var formatAsFormatAndType = function formatAsFormatAndType(value, customFormat, type) {
3998 if (!value) return null;
3999 var formatter = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).formatter;
4000 var format = customFormat || DEFAULT_FORMATS[type];
4001 return formatter(value, format);
4002};
4003
4004/*
4005 * Considers:
4006 * 1. Date object
4007 * 2. date string
4008 * 3. array of 1 or 2
4009 */
4010var valueEquals = function valueEquals(a, b) {
4011 // considers Date object and string
4012 var dateEquals = function dateEquals(a, b) {
4013 var aIsDate = a instanceof Date;
4014 var bIsDate = b instanceof Date;
4015 if (aIsDate && bIsDate) {
4016 return a.getTime() === b.getTime();
4017 }
4018 if (!aIsDate && !bIsDate) {
4019 return a === b;
4020 }
4021 return false;
4022 };
4023
4024 var aIsArray = a instanceof Array;
4025 var bIsArray = b instanceof Array;
4026 if (aIsArray && bIsArray) {
4027 if (a.length !== b.length) {
4028 return false;
4029 }
4030 return a.every(function (item, index) {
4031 return dateEquals(item, b[index]);
4032 });
4033 }
4034 if (!aIsArray && !bIsArray) {
4035 return dateEquals(a, b);
4036 }
4037 return false;
4038};
4039
4040var isString = function isString(val) {
4041 return typeof val === 'string' || val instanceof String;
4042};
4043
4044var pickervue_type_script_lang_js_validator = function validator(val) {
4045 // either: String, Array of String, null / undefined
4046 return val === null || val === undefined || isString(val) || Array.isArray(val) && val.length === 2 && val.every(isString);
4047};
4048
4049/* harmony default export */ var pickervue_type_script_lang_js_ = ({
4050 mixins: [emitter_default.a, NewPopper, locale_default.a],
4051 props: {
4052 size: {
4053 validator: function validator(value) {
4054 return Object(proptype_["oneOf"])(value, keys_default()(SIZEMAP));
4055 },
4056 default: 'medium'
4057 },
4058 listenScroll: {
4059 type: Boolean,
4060 default: true
4061 },
4062 step: {
4063 type: Number,
4064 default: 1
4065 },
4066 format: String,
4067 valueFormat: String,
4068 readonly: Boolean,
4069 placeholder: String,
4070 startPlaceholder: String,
4071 endPlaceholder: String,
4072 prefixIcon: String,
4073 clearIcon: {
4074 type: String,
4075 default: 'mdsicon-line-close'
4076 },
4077 name: {
4078 default: '',
4079 validator: pickervue_type_script_lang_js_validator
4080 },
4081 disabled: Boolean,
4082 clearable: {
4083 type: Boolean,
4084 default: true
4085 },
4086 prefixCls: {
4087 type: String,
4088 default: 'mds-date'
4089 },
4090 id: {
4091 default: '',
4092 validator: pickervue_type_script_lang_js_validator
4093 },
4094 popperClass: String,
4095 editable: {
4096 type: Boolean,
4097 default: true
4098 },
4099 align: {
4100 type: String,
4101 default: 'left'
4102 },
4103 value: {},
4104 defaultValue: {},
4105 defaultTime: {},
4106 rangeSeparator: {
4107 default: '-'
4108 },
4109 pickerOptions: {},
4110 unlinkPanels: Boolean,
4111 validateEvent: {
4112 type: Boolean,
4113 default: true
4114 }
4115 },
4116
4117 components: { MdsInput: external_input_default.a, MdsIcon: external_icon_default.a },
4118
4119 directives: { Clickoutside: clickoutside_default.a },
4120
4121 data: function data() {
4122 return {
4123 pickerVisible: false,
4124 showClose: false,
4125 userInput: null,
4126 valueOnOpen: null, // value when picker opens, used to determine whether to emit change
4127 unwatchPickerOptions: null
4128 };
4129 },
4130
4131
4132 watch: {
4133 pickerVisible: function pickerVisible(val) {
4134 if (this.readonly || this.pickerDisabled) return;
4135 if (val) {
4136 this.showPicker();
4137 this.valueOnOpen = Array.isArray(this.value) ? [].concat(toConsumableArray_default()(this.value)) : this.value;
4138 } else {
4139 this.hidePicker();
4140 this.emitChange(this.value);
4141 this.userInput = null;
4142 this.$emit('blur', this);
4143 this.blur();
4144 this.dispatch('MdsFormItem', 'formItemBlur');
4145 }
4146 },
4147
4148 parsedValue: {
4149 immediate: true,
4150 handler: function handler(val) {
4151 if (this.picker) {
4152 this.picker.value = val;
4153 }
4154 }
4155 },
4156 defaultValue: function defaultValue(val) {
4157 // NOTE: should eventually move to jsx style picker + panel ?
4158 if (this.picker) {
4159 this.picker.defaultValue = val;
4160 }
4161 },
4162 listenScroll: function listenScroll(val) {
4163 if (this.picker) {
4164 this.picker.listenScroll = val;
4165 }
4166 },
4167 step: function step(val) {
4168 if (this.picker) {
4169 this.picker.step = val;
4170 }
4171 }
4172 },
4173
4174 computed: {
4175 selectSize: function selectSize() {
4176 var size = this.size;
4177 return SIZEMAP[size];
4178 },
4179 showCalendar: function showCalendar() {
4180 return !this.showClose;
4181 },
4182 wrapperClass: function wrapperClass() {
4183 return [this.prefixCls + '-editor', this.prefixCls + '-editor-' + this.type];
4184 },
4185 wrapperRangeClass: function wrapperRangeClass() {
4186 return [this.prefixCls + '-editor', this.prefixCls + '-editor-range', this.prefixCls + '-editor-input-inner', this.selectSize ? this.prefixCls + '-' + this.selectSize : '', this.pickerSize ? 'mds-range-editor--' + this.pickerSize : '', this.pickerDisabled ? 'is-disabled' : '', this.pickerVisible ? 'is-active' : ''];
4187 },
4188 ranged: function ranged() {
4189 return this.type.indexOf('range') > -1;
4190 },
4191 reference: function reference() {
4192 var reference = this.$refs.reference;
4193 return reference.$el || reference;
4194 },
4195 refInput: function refInput() {
4196 if (this.reference) {
4197 return [].slice.call(this.reference.querySelectorAll('input'));
4198 }
4199 return [];
4200 },
4201 valueIsEmpty: function valueIsEmpty() {
4202 var val = this.value;
4203 if (Array.isArray(val)) {
4204 for (var i = 0, len = val.length; i < len; i++) {
4205 if (val[i]) {
4206 return false;
4207 }
4208 }
4209 } else {
4210 if (val) {
4211 return false;
4212 }
4213 }
4214 return true;
4215 },
4216 triggerClass: function triggerClass() {
4217 return this.prefixIcon || (this.type.indexOf('time') !== -1 ? 'mdsicon-line-calendar ' + this.prefixCls + '-other-icon' : 'mdsicon-line-calendar ' + this.prefixCls + '-other-icon');
4218 },
4219 selectionMode: function selectionMode() {
4220 if (this.type === 'week') {
4221 return 'week';
4222 } else if (this.type === 'month') {
4223 return 'month';
4224 } else if (this.type === 'year') {
4225 return 'year';
4226 } else if (this.type === 'dates') {
4227 return 'dates';
4228 }
4229
4230 return 'day';
4231 },
4232 haveTrigger: function haveTrigger() {
4233 if (typeof this.showTrigger !== 'undefined') {
4234 return this.showTrigger;
4235 }
4236 return HAVE_TRIGGER_TYPES.indexOf(this.type) !== -1;
4237 },
4238 displayValue: function displayValue() {
4239 var formattedValue = formatAsFormatAndType(this.parsedValue, this.format, this.type, this.rangeSeparator);
4240 if (Array.isArray(this.userInput)) {
4241 return [this.userInput[0] || formattedValue && formattedValue[0] || '', this.userInput[1] || formattedValue && formattedValue[1] || ''];
4242 } else if (this.userInput !== null) {
4243 return this.userInput;
4244 } else if (formattedValue) {
4245 return this.type === 'dates' ? formattedValue.join(', ') : formattedValue;
4246 } else {
4247 return '';
4248 }
4249 },
4250 parsedValue: function parsedValue() {
4251 if (!this.value) return this.value; // component value is not set
4252 if (this.type === 'time-select') return this.value; // time-select does not require parsing, this might change in next major version
4253
4254 var valueIsDateObject = Object(dateUtil_["isDateObject"])(this.value) || Array.isArray(this.value) && this.value.every(dateUtil_["isDateObject"]);
4255 if (valueIsDateObject) {
4256 return this.value;
4257 }
4258
4259 if (this.valueFormat) {
4260 return parseAsFormatAndType(this.value, this.valueFormat, this.type, this.rangeSeparator) || this.value;
4261 }
4262
4263 // NOTE: deal with common but incorrect usage, should remove in next major version
4264 // user might provide string / timestamp without value-format, coerce them into date (or array of date)
4265 return Array.isArray(this.value) ? this.value.map(function (val) {
4266 return new Date(val);
4267 }) : new Date(this.value);
4268 },
4269 pickerSize: function pickerSize() {
4270 return this.size;
4271 },
4272 pickerDisabled: function pickerDisabled() {
4273 return this.disabled;
4274 },
4275 firstInputId: function firstInputId() {
4276 var obj = {};
4277 var id = void 0;
4278 if (this.ranged) {
4279 id = this.id && this.id[0];
4280 } else {
4281 id = this.id;
4282 }
4283 if (id) obj.id = id;
4284 return obj;
4285 },
4286 secondInputId: function secondInputId() {
4287 var obj = {};
4288 var id = void 0;
4289 if (this.ranged) {
4290 id = this.id && this.id[1];
4291 }
4292 if (id) obj.id = id;
4293 return obj;
4294 }
4295 },
4296
4297 created: function created() {
4298 // vue-popper
4299 this.popperOptions = {
4300 boundariesPadding: 0,
4301 gpuAcceleration: false
4302 };
4303 this.placement = PLACEMENT_MAP[this.align] || PLACEMENT_MAP.left;
4304
4305 this.$on('fieldReset', this.handleFieldReset);
4306 },
4307
4308
4309 methods: {
4310 focus: function focus() {
4311 if (!this.ranged) {
4312 this.$refs.reference.focus();
4313 } else {
4314 this.handleFocus();
4315 }
4316 },
4317 blur: function blur() {
4318 this.refInput.forEach(function (input) {
4319 return input.blur();
4320 });
4321 },
4322
4323
4324 // {parse, formatTo} Value deals maps component value with internal Date
4325 parseValue: function parseValue(value) {
4326 var isParsed = Object(dateUtil_["isDateObject"])(value) || Array.isArray(value) && value.every(dateUtil_["isDateObject"]);
4327 if (this.valueFormat && !isParsed) {
4328 return parseAsFormatAndType(value, this.valueFormat, this.type, this.rangeSeparator) || value;
4329 } else {
4330 return value;
4331 }
4332 },
4333 formatToValue: function formatToValue(date) {
4334 var isFormattable = Object(dateUtil_["isDateObject"])(date) || Array.isArray(date) && date.every(dateUtil_["isDateObject"]);
4335 if (this.valueFormat && isFormattable) {
4336 return formatAsFormatAndType(date, this.valueFormat, this.type, this.rangeSeparator);
4337 } else {
4338 return date;
4339 }
4340 },
4341
4342
4343 // {parse, formatTo} String deals with user input
4344 parseString: function parseString(value) {
4345 var type = Array.isArray(value) ? this.type : this.type.replace('range', '');
4346 return parseAsFormatAndType(value, this.format, type);
4347 },
4348 formatToString: function formatToString(value) {
4349 var type = Array.isArray(value) ? this.type : this.type.replace('range', '');
4350 return formatAsFormatAndType(value, this.format, type);
4351 },
4352 handleMouseEnter: function handleMouseEnter() {
4353 if (this.readonly || this.pickerDisabled) return;
4354 if (!this.valueIsEmpty && this.clearable) {
4355 this.showClose = true;
4356 }
4357 },
4358 handleChange: function handleChange() {
4359 if (this.userInput) {
4360 var value = this.parseString(this.displayValue);
4361 if (value) {
4362 this.picker.value = value;
4363 if (this.isValidValue(value)) {
4364 this.emitInput(value);
4365 this.userInput = null;
4366 }
4367 }
4368 }
4369 if (this.userInput === '') {
4370 this.emitInput(null);
4371 this.emitChange(null);
4372 this.userInput = null;
4373 }
4374 },
4375 handleStartInput: function handleStartInput(event) {
4376 if (this.userInput) {
4377 this.userInput = [event.target.value, this.userInput[1]];
4378 } else {
4379 this.userInput = [event.target.value, null];
4380 }
4381 },
4382 handleEndInput: function handleEndInput(event) {
4383 if (this.userInput) {
4384 this.userInput = [this.userInput[0], event.target.value];
4385 } else {
4386 this.userInput = [null, event.target.value];
4387 }
4388 },
4389 handleStartChange: function handleStartChange(event) {
4390 var value = this.parseString(this.userInput && this.userInput[0]);
4391 if (value) {
4392 this.userInput = [this.formatToString(value), this.displayValue[1]];
4393 var newValue = [value, this.picker.value && this.picker.value[1]];
4394 this.picker.value = newValue;
4395 if (this.isValidValue(newValue)) {
4396 this.emitInput(newValue);
4397 this.userInput = null;
4398 }
4399 }
4400 },
4401 handleEndChange: function handleEndChange(event) {
4402 var value = this.parseString(this.userInput && this.userInput[1]);
4403 if (value) {
4404 this.userInput = [this.displayValue[0], this.formatToString(value)];
4405 var newValue = [this.picker.value && this.picker.value[0], value];
4406 this.picker.value = newValue;
4407 if (this.isValidValue(newValue)) {
4408 this.emitInput(newValue);
4409 this.userInput = null;
4410 }
4411 }
4412 },
4413 handleClickIcon: function handleClickIcon(event) {
4414 if (this.readonly || this.pickerDisabled) return;
4415 if (this.showClose) {
4416 this.valueOnOpen = this.value;
4417 event.stopPropagation();
4418 this.emitInput(null);
4419 this.emitChange(null);
4420 this.showClose = false;
4421 if (this.picker && typeof this.picker.handleClear === 'function') {
4422 this.picker.handleClear();
4423 }
4424 } else {
4425 this.pickerVisible = !this.pickerVisible;
4426 }
4427 },
4428 handleClose: function handleClose() {
4429 if (!this.pickerVisible) return;
4430 this.pickerVisible = false;
4431
4432 if (this.type === 'dates') {
4433 // restore to former value
4434 var oldValue = parseAsFormatAndType(this.valueOnOpen, this.valueFormat, this.type, this.rangeSeparator) || this.valueOnOpen;
4435 this.emitInput(oldValue);
4436 }
4437 },
4438 handleFieldReset: function handleFieldReset(initialValue) {
4439 this.userInput = initialValue === '' ? null : initialValue;
4440 },
4441 handleFocus: function handleFocus() {
4442 var type = this.type;
4443 if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
4444 this.pickerVisible = true;
4445 }
4446 this.$emit('focus', this);
4447 },
4448 handleKeydown: function handleKeydown(event) {
4449 var _this = this;
4450
4451 var keyCode = event.keyCode;
4452
4453 // ESC
4454 if (keyCode === 27) {
4455 this.pickerVisible = false;
4456 event.stopPropagation();
4457 return;
4458 }
4459
4460 // Tab
4461 if (keyCode === 9) {
4462 if (!this.ranged) {
4463 this.handleChange();
4464 this.pickerVisible = this.picker.visible = false;
4465 this.blur();
4466 event.stopPropagation();
4467 } else {
4468 // user may change focus between two input
4469 setTimeout(function () {
4470 if (_this.refInput.indexOf(document.activeElement) === -1) {
4471 _this.pickerVisible = false;
4472 _this.blur();
4473 event.stopPropagation();
4474 }
4475 }, 0);
4476 }
4477 return;
4478 }
4479
4480 // Enter
4481 if (keyCode === 13) {
4482 if (this.userInput === '' || this.isValidValue(this.parseString(this.displayValue))) {
4483 this.handleChange();
4484 this.pickerVisible = this.picker.visible = false;
4485 this.blur();
4486 }
4487 event.stopPropagation();
4488 return;
4489 }
4490
4491 // if user is typing, do not let picker handle key input
4492 if (this.userInput) {
4493 event.stopPropagation();
4494 return;
4495 }
4496
4497 // delegate other keys to panel
4498 if (this.picker && this.picker.handleKeydown) {
4499 this.picker.handleKeydown(event);
4500 }
4501 },
4502 handleRangeClick: function handleRangeClick() {
4503 var type = this.type;
4504
4505 if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
4506 this.pickerVisible = true;
4507 }
4508 this.$emit('focus', this);
4509 },
4510 hidePicker: function hidePicker() {
4511 if (this.picker) {
4512 this.picker.resetView && this.picker.resetView();
4513 this.pickerVisible = this.picker.visible = false;
4514 this.destroyPopper();
4515 }
4516 },
4517 showPicker: function showPicker() {
4518 var _this2 = this;
4519
4520 if (this.$isServer) return;
4521 if (!this.picker) {
4522 this.mountPicker();
4523 }
4524 this.pickerVisible = this.picker.visible = true;
4525
4526 this.updatePopper();
4527
4528 this.picker.value = this.parsedValue;
4529 this.picker.resetView && this.picker.resetView();
4530
4531 this.$nextTick(function () {
4532 _this2.picker.adjustSpinners && _this2.picker.adjustSpinners();
4533 });
4534 },
4535 mountPicker: function mountPicker() {
4536 var _this3 = this;
4537
4538 this.picker = new external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a(this.panel).$mount();
4539 this.picker.defaultValue = this.defaultValue;
4540 this.picker.defaultTime = this.defaultTime;
4541 this.picker.popperClass = this.popperClass;
4542 this.popperElm = this.picker.$el;
4543 this.picker.width = this.reference.getBoundingClientRect().width;
4544 this.picker.showTime = this.type === 'datetime' || this.type === 'datetimerange' || this.type === 'datetimerangeflat';
4545 this.picker.selectionMode = this.selectionMode;
4546 this.picker.unlinkPanels = this.unlinkPanels;
4547 this.picker.arrowControl = this.arrowControl || this.timeArrowControl || false;
4548 this.picker.listenScroll = this.listenScroll;
4549 this.picker.step = this.step;
4550 this.picker.pickerType = this.type;
4551 this.$watch('format', function (format) {
4552 _this3.picker.format = format;
4553 });
4554
4555 var updateOptions = function updateOptions() {
4556 var options = _this3.pickerOptions;
4557
4558 if (options && options.selectableRange) {
4559 var ranges = options.selectableRange;
4560 var parser = TYPE_VALUE_RESOLVER_MAP.datetimerange.parser;
4561 var format = DEFAULT_FORMATS.timerange;
4562
4563 ranges = Array.isArray(ranges) ? ranges : [ranges];
4564 _this3.picker.selectableRange = ranges.map(function (range) {
4565 return parser(range, format, _this3.rangeSeparator);
4566 });
4567 }
4568
4569 for (var option in options) {
4570 if (options.hasOwnProperty(option) &&
4571 // 忽略 time-picker 的该配置项
4572 option !== 'selectableRange') {
4573 _this3.picker[option] = options[option];
4574 }
4575 }
4576
4577 // main format must prevail over undocumented pickerOptions.format
4578 if (_this3.format) {
4579 _this3.picker.format = _this3.format;
4580 }
4581 };
4582 updateOptions();
4583 this.unwatchPickerOptions = this.$watch('pickerOptions', function () {
4584 return updateOptions();
4585 }, { deep: true });
4586 this.$el.appendChild(this.picker.$el);
4587 this.picker.resetView && this.picker.resetView();
4588
4589 this.picker.$on('dodestroy', this.doDestroy);
4590 this.picker.$on('pick', function () {
4591 var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
4592 var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4593
4594 _this3.userInput = null;
4595 _this3.pickerVisible = _this3.picker.visible = visible;
4596 _this3.emitInput(date);
4597 _this3.picker.resetView && _this3.picker.resetView();
4598 });
4599
4600 this.picker.$on('select-range', function (start, end, pos) {
4601 if (_this3.refInput.length === 0) return;
4602 if (!pos || pos === 'min') {
4603 _this3.refInput[0].setSelectionRange(start, end);
4604 _this3.refInput[0].focus();
4605 } else if (pos === 'max') {
4606 _this3.refInput[1].setSelectionRange(start, end);
4607 _this3.refInput[1].focus();
4608 }
4609 });
4610 },
4611 unmountPicker: function unmountPicker() {
4612 if (this.picker) {
4613 this.picker.$destroy();
4614 this.picker.$off();
4615 if (typeof this.unwatchPickerOptions === 'function') {
4616 this.unwatchPickerOptions();
4617 }
4618 if (this.picker.$el.parentNode) this.picker.$el.parentNode.removeChild(this.picker.$el);
4619 }
4620 },
4621 emitChange: function emitChange(val) {
4622 // determine user real change only
4623 if (!valueEquals(val, this.valueOnOpen)) {
4624 this.$emit('change', val);
4625 this.valueOnOpen = val;
4626 }
4627 },
4628 emitInput: function emitInput(val) {
4629 var formatted = this.formatToValue(val);
4630 if (!valueEquals(this.value, formatted)) {
4631 this.emitChange(formatted);
4632 this.$emit('input', formatted);
4633 this.dispatch('MdsFormItem', 'formItemChange', formatted);
4634 }
4635 },
4636 isValidValue: function isValidValue(value) {
4637 if (!this.picker) {
4638 this.mountPicker();
4639 }
4640 if (this.picker.isValidValue) {
4641 return value && this.picker.isValidValue(value);
4642 } else {
4643 return true;
4644 }
4645 }
4646 }
4647});
4648// CONCATENATED MODULE: ./components/datepicker/picker/picker.vue?vue&type=script&lang=js&
4649 /* harmony default export */ var picker_pickervue_type_script_lang_js_ = (pickervue_type_script_lang_js_);
4650// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
4651var componentNormalizer = __webpack_require__(0);
4652
4653// CONCATENATED MODULE: ./components/datepicker/picker/picker.vue
4654
4655
4656
4657
4658
4659/* normalize component */
4660
4661var component = Object(componentNormalizer["a" /* default */])(
4662 picker_pickervue_type_script_lang_js_,
4663 render,
4664 staticRenderFns,
4665 false,
4666 null,
4667 null,
4668 null
4669
4670)
4671
4672/* hot reload */
4673if (false) { var api; }
4674component.options.__file = "components/datepicker/picker/picker.vue"
4675/* harmony default export */ var picker = (component.exports);
4676// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/date.vue?vue&type=template&id=1a0bc492&
4677var datevue_type_template_id_1a0bc492_render = function () {
4678 var _vm = this
4679 var _h = _vm.$createElement
4680 var _c = _vm._self._c || _h
4681 return _c(
4682 "transition",
4683 {
4684 attrs: { name: "mds-date-zoom-in-top" },
4685 on: { "after-enter": _vm.handleEnter, "after-leave": _vm.handleLeave },
4686 },
4687 [
4688 _c(
4689 "div",
4690 {
4691 directives: [
4692 {
4693 name: "show",
4694 rawName: "v-show",
4695 value: _vm.visible,
4696 expression: "visible",
4697 },
4698 ],
4699 class: _vm.wrapperClass,
4700 },
4701 [
4702 _c("div", { class: this.prefixCls + "-picker-panel-wrapper" }, [
4703 _c("div", { class: this.prefixCls + "-picker-panel-body" }, [
4704 _c(
4705 "div",
4706 {
4707 directives: [
4708 {
4709 name: "show",
4710 rawName: "v-show",
4711 value:
4712 _vm.currentView !== "time" &&
4713 _vm.timePickerVisible === false,
4714 expression:
4715 "currentView !== 'time' && timePickerVisible === false",
4716 },
4717 ],
4718 class: this.prefixCls + "-picker-panel-header",
4719 },
4720 [
4721 _c("i", {
4722 staticClass: "mdsicon mdsicon-line-caret-left-double",
4723 class: [
4724 _vm.prefixCls + "-picker-panel-header-base-icon",
4725 _vm.prefixCls + "-prev-year",
4726 _vm.prefixCls + "-other-icon",
4727 _vm.prefixCls + "-picker-panel-header-base-left",
4728 ],
4729 attrs: { "aria-label": _vm.t("mds.datepicker.prevYear") },
4730 on: { click: _vm.prevYear },
4731 }),
4732 _c("i", {
4733 directives: [
4734 {
4735 name: "show",
4736 rawName: "v-show",
4737 value: _vm.currentView === "date",
4738 expression: "currentView === 'date'",
4739 },
4740 ],
4741 staticClass: "mdsicon mdsicon-line-caret-left",
4742 class: [
4743 _vm.prefixCls + "-picker-panel-header-base-icon",
4744 _vm.prefixCls + "-prev-month",
4745 _vm.prefixCls + "-other-icon",
4746 _vm.prefixCls + "-picker-panel-header-base-left",
4747 ],
4748 attrs: { "aria-label": _vm.t("mds.datepicker.prevMonth") },
4749 on: { click: _vm.prevMonth },
4750 }),
4751 _c(
4752 "span",
4753 {
4754 class: _vm.prefixCls + "-picker-panel-header-label",
4755 attrs: { role: "button" },
4756 on: { click: _vm.showYearPicker },
4757 },
4758 [_vm._v(_vm._s(_vm.yearLabel))]
4759 ),
4760 _c(
4761 "span",
4762 {
4763 directives: [
4764 {
4765 name: "show",
4766 rawName: "v-show",
4767 value: _vm.currentView === "date",
4768 expression: "currentView === 'date'",
4769 },
4770 ],
4771 class: [
4772 _vm.prefixCls + "-picker-panel-header-label",
4773 { active: _vm.currentView === "month" },
4774 ],
4775 attrs: { role: "button" },
4776 on: { click: _vm.showMonthPicker },
4777 },
4778 [
4779 _vm._v(
4780 _vm._s(_vm.t("mds.datepicker.month" + (_vm.month + 1)))
4781 ),
4782 ]
4783 ),
4784 _c("i", {
4785 staticClass: "mdsicon mdsicon-line-caret-right-double",
4786 class: [
4787 _vm.prefixCls + "-picker-panel-header-base-icon",
4788 _vm.prefixCls + "-next-year",
4789 _vm.prefixCls + "-other-icon",
4790 _vm.prefixCls + "-picker-panel-header-base-right",
4791 ],
4792 attrs: { "aria-label": _vm.t("mds.datepicker.nextYear") },
4793 on: { click: _vm.nextYear },
4794 }),
4795 _c("i", {
4796 directives: [
4797 {
4798 name: "show",
4799 rawName: "v-show",
4800 value: _vm.currentView === "date",
4801 expression: "currentView === 'date'",
4802 },
4803 ],
4804 staticClass: "mdsicon mdsicon-line-caret-right",
4805 class: [
4806 _vm.prefixCls + "-picker-panel-header-base-icon",
4807 _vm.prefixCls + "-next-month",
4808 _vm.prefixCls + "-other-icon",
4809 _vm.prefixCls + "-picker-panel-header-base-right",
4810 ],
4811 attrs: { "aria-label": _vm.t("mds.datepicker.nextMonth") },
4812 on: { click: _vm.nextMonth },
4813 }),
4814 ]
4815 ),
4816 _vm.timePickerVisible
4817 ? _c(
4818 "div",
4819 { class: this.prefixCls + "-picker-panel-header" },
4820 [
4821 _c(
4822 "span",
4823 {
4824 class:
4825 _vm.prefixCls +
4826 "-picker-panel-header-label " +
4827 _vm.prefixCls +
4828 "-picker-timer-header-label",
4829 },
4830 [_vm._v(_vm._s(_vm.timerHeaderLabel))]
4831 ),
4832 ]
4833 )
4834 : _vm._e(),
4835 _c(
4836 "div",
4837 { class: this.prefixCls + "-picker-panel-content" },
4838 [
4839 _c("date-table", {
4840 directives: [
4841 {
4842 name: "show",
4843 rawName: "v-show",
4844 value:
4845 _vm.currentView === "date" &&
4846 _vm.timePickerVisible === false,
4847 expression:
4848 "currentView === 'date' && timePickerVisible === false",
4849 },
4850 ],
4851 attrs: {
4852 "selection-mode": _vm.selectionMode,
4853 "first-day-of-week": _vm.firstDayOfWeek,
4854 value: _vm.value,
4855 "default-value": _vm.defaultValue
4856 ? new Date(_vm.defaultValue)
4857 : null,
4858 date: _vm.date,
4859 "cell-class-name": _vm.cellClassName,
4860 "disabled-date": _vm.disabledDate,
4861 },
4862 on: { pick: _vm.handleDatePick },
4863 }),
4864 _c("year-table", {
4865 directives: [
4866 {
4867 name: "show",
4868 rawName: "v-show",
4869 value:
4870 _vm.currentView === "year" &&
4871 _vm.timePickerVisible === false,
4872 expression:
4873 "currentView === 'year' && timePickerVisible === false",
4874 },
4875 ],
4876 attrs: {
4877 value: _vm.value,
4878 "default-value": _vm.defaultValue
4879 ? new Date(_vm.defaultValue)
4880 : null,
4881 date: _vm.date,
4882 "disabled-date": _vm.disabledDate,
4883 },
4884 on: { pick: _vm.handleYearPick },
4885 }),
4886 _c("month-table", {
4887 directives: [
4888 {
4889 name: "show",
4890 rawName: "v-show",
4891 value:
4892 _vm.currentView === "month" &&
4893 _vm.timePickerVisible === false,
4894 expression:
4895 "currentView === 'month' && timePickerVisible === false",
4896 },
4897 ],
4898 attrs: {
4899 value: _vm.value,
4900 "default-value": _vm.defaultValue
4901 ? new Date(_vm.defaultValue)
4902 : null,
4903 date: _vm.date,
4904 "disabled-date": _vm.disabledDate,
4905 },
4906 on: { pick: _vm.handleMonthPick },
4907 }),
4908 _c("time-picker", {
4909 directives: [
4910 {
4911 name: "show",
4912 rawName: "v-show",
4913 value: _vm.timePickerVisible && _vm.showTime,
4914 expression: "timePickerVisible && showTime",
4915 },
4916 ],
4917 ref: "timepicker",
4918 attrs: {
4919 "time-arrow-control": _vm.arrowControl,
4920 visible: true,
4921 "listen-scroll": _vm.listenScroll,
4922 step: _vm.step,
4923 },
4924 on: {
4925 pick: _vm.handleTimePick,
4926 mounted: _vm.proxyTimePickerDataProperties,
4927 },
4928 }),
4929 ],
4930 1
4931 ),
4932 ]),
4933 ]),
4934 _c(
4935 "div",
4936 {
4937 directives: [
4938 {
4939 name: "show",
4940 rawName: "v-show",
4941 value: _vm.footerVisible && _vm.currentView === "date",
4942 expression: "footerVisible && currentView === 'date'",
4943 },
4944 ],
4945 class: this.prefixCls + "-picker-panel-footer",
4946 },
4947 [
4948 _c(
4949 "mds-button",
4950 {
4951 directives: [
4952 {
4953 name: "show",
4954 rawName: "v-show",
4955 value: _vm.selectionMode !== "dates",
4956 expression: "selectionMode !== 'dates'",
4957 },
4958 ],
4959 class: _vm.prefixCls + "-picker-panel-today-btn",
4960 attrs: { type: "normal", size: "small" },
4961 on: { click: _vm.changeToNow },
4962 },
4963 [
4964 _vm._v(
4965 "\n " +
4966 _vm._s(_vm.t("mds.datepicker.now")) +
4967 "\n "
4968 ),
4969 ]
4970 ),
4971 _c(
4972 "mds-button",
4973 {
4974 directives: [
4975 {
4976 name: "show",
4977 rawName: "v-show",
4978 value: _vm.showTime,
4979 expression: "showTime",
4980 },
4981 ],
4982 attrs: { type: "normal", size: "small" },
4983 on: { click: _vm.selectTime },
4984 },
4985 [
4986 _vm._v(
4987 "\n " +
4988 _vm._s(_vm.timePickerVisible ? "选择日期" : "选择时间") +
4989 "\n "
4990 ),
4991 ]
4992 ),
4993 _c(
4994 "mds-button",
4995 {
4996 class:
4997 _vm.prefixCls +
4998 "-picker-panel-time-picker " +
4999 _vm.prefixCls +
5000 "-picker-panel-sure-btn",
5001 attrs: {
5002 type: "primary",
5003 ghost: "",
5004 plain: "",
5005 size: "small",
5006 },
5007 on: { click: _vm.confirm },
5008 },
5009 [
5010 _vm._v(
5011 "\n " +
5012 _vm._s(_vm.t("mds.datepicker.confirm")) +
5013 "\n "
5014 ),
5015 ]
5016 ),
5017 ],
5018 1
5019 ),
5020 ]
5021 ),
5022 ]
5023 )
5024}
5025var datevue_type_template_id_1a0bc492_staticRenderFns = []
5026datevue_type_template_id_1a0bc492_render._withStripped = true
5027
5028
5029// CONCATENATED MODULE: ./components/datepicker/picker/date.vue?vue&type=template&id=1a0bc492&
5030
5031// EXTERNAL MODULE: external "./button"
5032var external_button_ = __webpack_require__(13);
5033var external_button_default = /*#__PURE__*/__webpack_require__.n(external_button_);
5034
5035// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/time.vue?vue&type=template&id=0c4cd956&
5036var timevue_type_template_id_0c4cd956_render = function () {
5037 var _vm = this
5038 var _h = _vm.$createElement
5039 var _c = _vm._self._c || _h
5040 return _c(
5041 "div",
5042 {
5043 directives: [
5044 {
5045 name: "show",
5046 rawName: "v-show",
5047 value: _vm.visible,
5048 expression: "visible",
5049 },
5050 ],
5051 staticClass: "mds-time-panel mds-popper",
5052 class: _vm.popperClass,
5053 },
5054 [
5055 _c("time-spinner", {
5056 ref: "spinner",
5057 attrs: {
5058 "arrow-control": _vm.useArrow,
5059 "am-pm-mode": _vm.amPmMode,
5060 "listen-scroll": _vm.listenScroll,
5061 step: _vm.step,
5062 date: _vm.date,
5063 format: _vm.format,
5064 },
5065 on: { change: _vm.handleChange, "select-range": _vm.setSelectionRange },
5066 }),
5067 ],
5068 1
5069 )
5070}
5071var timevue_type_template_id_0c4cd956_staticRenderFns = []
5072timevue_type_template_id_0c4cd956_render._withStripped = true
5073
5074
5075// CONCATENATED MODULE: ./components/datepicker/picker/time.vue?vue&type=template&id=0c4cd956&
5076
5077// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/time-spinner.vue?vue&type=template&id=79c97ebf&
5078var time_spinnervue_type_template_id_79c97ebf_render = function () {
5079 var _vm = this
5080 var _h = _vm.$createElement
5081 var _c = _vm._self._c || _h
5082 return _c(
5083 "div",
5084 { class: [_vm.prefixCls + "-time", { "has-seconds": _vm.showSeconds }] },
5085 [
5086 _c(
5087 "div",
5088 { class: [_vm.prefixCls + "-time-spinner"] },
5089 [
5090 _c(
5091 "mds-scrollbar",
5092 {
5093 ref: "hours",
5094 class: [_vm.prefixCls + "-time-spinner-ul"],
5095 attrs: {
5096 "wrap-style": "max-height: inherit",
5097 noresize: "",
5098 tag: "ul",
5099 },
5100 nativeOn: {
5101 mouseenter: function ($event) {
5102 return _vm.emitSelectRange("hours")
5103 },
5104 },
5105 },
5106 _vm._l(_vm.hoursList, function (disabled, hour) {
5107 return _c(
5108 "li",
5109 {
5110 key: hour,
5111 class: [
5112 _vm.prefixCls + "-time-spinner-li",
5113 { active: hour === _vm.hours, disabled: disabled },
5114 ],
5115 on: {
5116 click: function ($event) {
5117 return _vm.handleClick("hours", {
5118 value: hour,
5119 disabled: disabled,
5120 })
5121 },
5122 },
5123 },
5124 [
5125 _vm._v(
5126 "\n " +
5127 _vm._s(
5128 ("0" + (_vm.amPmMode ? hour % 12 || 12 : hour)).slice(
5129 -2
5130 )
5131 ) +
5132 _vm._s(_vm.amPm(hour)) +
5133 "\n "
5134 ),
5135 ]
5136 )
5137 }),
5138 0
5139 ),
5140 ],
5141 1
5142 ),
5143 _c(
5144 "div",
5145 {
5146 directives: [
5147 {
5148 name: "show",
5149 rawName: "v-show",
5150 value: _vm.showMinutes,
5151 expression: "showMinutes",
5152 },
5153 ],
5154 class: [
5155 _vm.prefixCls +
5156 "-time-spinner " +
5157 _vm.prefixCls +
5158 "-time-minutes-spinner",
5159 ],
5160 },
5161 [
5162 _c(
5163 "mds-scrollbar",
5164 {
5165 ref: "minutes",
5166 class: [_vm.prefixCls + "-time-spinner-ul"],
5167 attrs: {
5168 "wrap-style": "max-height: inherit",
5169 noresize: "",
5170 tag: "ul",
5171 },
5172 nativeOn: {
5173 mouseenter: function ($event) {
5174 return _vm.emitSelectRange("minutes")
5175 },
5176 },
5177 },
5178 _vm._l(_vm.minutesList, function (val, key) {
5179 return _c(
5180 "li",
5181 {
5182 key: key,
5183 class: [
5184 _vm.prefixCls + "-time-spinner-li",
5185 { active: key === _vm.minutes },
5186 ],
5187 on: {
5188 click: function ($event) {
5189 return _vm.handleClick("minutes", {
5190 value: val,
5191 disabled: false,
5192 })
5193 },
5194 },
5195 },
5196 [
5197 _vm._v(
5198 "\n " + _vm._s(("0" + val).slice(-2)) + "\n "
5199 ),
5200 ]
5201 )
5202 }),
5203 0
5204 ),
5205 ],
5206 1
5207 ),
5208 _c(
5209 "div",
5210 {
5211 directives: [
5212 {
5213 name: "show",
5214 rawName: "v-show",
5215 value: _vm.showSeconds,
5216 expression: "showSeconds",
5217 },
5218 ],
5219 class: [_vm.prefixCls + "-time-spinner"],
5220 },
5221 [
5222 _c(
5223 "mds-scrollbar",
5224 {
5225 ref: "seconds",
5226 class: [_vm.prefixCls + "-time-spinner-ul"],
5227 attrs: {
5228 "wrap-style": "max-height: inherit",
5229 noresize: "",
5230 tag: "ul",
5231 },
5232 nativeOn: {
5233 mouseenter: function ($event) {
5234 return _vm.emitSelectRange("seconds")
5235 },
5236 },
5237 },
5238 _vm._l(60, function (second, key) {
5239 return _c(
5240 "li",
5241 {
5242 key: key,
5243 class: [
5244 _vm.prefixCls + "-time-spinner-li",
5245 { active: key === _vm.seconds },
5246 ],
5247 on: {
5248 click: function ($event) {
5249 return _vm.handleClick("seconds", {
5250 value: key,
5251 disabled: false,
5252 })
5253 },
5254 },
5255 },
5256 [
5257 _vm._v(
5258 "\n " + _vm._s(("0" + key).slice(-2)) + "\n "
5259 ),
5260 ]
5261 )
5262 }),
5263 0
5264 ),
5265 ],
5266 1
5267 ),
5268 ]
5269 )
5270}
5271var time_spinnervue_type_template_id_79c97ebf_staticRenderFns = []
5272time_spinnervue_type_template_id_79c97ebf_render._withStripped = true
5273
5274
5275// CONCATENATED MODULE: ./components/datepicker/base/time-spinner.vue?vue&type=template&id=79c97ebf&
5276
5277// EXTERNAL MODULE: ./components/_util/date.js
5278var _util_date = __webpack_require__(51);
5279var date_default = /*#__PURE__*/__webpack_require__.n(_util_date);
5280
5281// CONCATENATED MODULE: ./components/_util/dateUtil.js
5282
5283
5284var weeks = ['日', '一', '二', '三', '四', '五', '六'];
5285var months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
5286
5287var newArray = function newArray(start, end) {
5288 var result = [];
5289 for (var i = start; i <= end; i++) {
5290 result.push(i);
5291 }
5292 return result;
5293};
5294
5295var getI18nSettings = function getI18nSettings() {
5296 return {
5297 dayNamesShort: weeks,
5298 dayNames: weeks,
5299 monthNamesShort: months,
5300 monthNames: months,
5301 amPm: ['am', 'pm']
5302 };
5303};
5304
5305var toDate = function toDate(date) {
5306 return isDate(date) ? new Date(date) : null;
5307};
5308
5309var isDate = function isDate(date) {
5310 if (date === null || date === undefined) return false;
5311 if (isNaN(new Date(date).getTime())) return false;
5312 if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`
5313 return true;
5314};
5315
5316var isDateObject = function isDateObject(val) {
5317 return val instanceof Date;
5318};
5319
5320var dateUtil_formatDate = function formatDate(date, format) {
5321 date = toDate(date);
5322 if (!date) return '';
5323 return date_default.a.format(date, format || 'yyyy-MM-dd', getI18nSettings());
5324};
5325
5326var dateUtil_parseDate = function parseDate(string, format) {
5327 return date_default.a.parse(string, format || 'yyyy-MM-dd', getI18nSettings());
5328};
5329
5330var getDayCountOfMonth = function getDayCountOfMonth(year, month) {
5331 if (month === 3 || month === 5 || month === 8 || month === 10) {
5332 return 30;
5333 }
5334
5335 if (month === 1) {
5336 if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
5337 return 29;
5338 } else {
5339 return 28;
5340 }
5341 }
5342
5343 return 31;
5344};
5345
5346var getDayCountOfYear = function getDayCountOfYear(year) {
5347 var isLeapYear = year % 400 === 0 || year % 100 !== 0 && year % 4 === 0;
5348 return isLeapYear ? 366 : 365;
5349};
5350
5351var getFirstDayOfMonth = function getFirstDayOfMonth(date) {
5352 var temp = new Date(date.getTime());
5353 temp.setDate(1);
5354 return temp.getDay();
5355};
5356
5357// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript
5358// {prev, next} Date should work for Daylight Saving Time
5359// Adding 24 * 60 * 60 * 1000 does not work in the above scenario
5360var prevDate = function prevDate(date) {
5361 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
5362
5363 return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
5364};
5365
5366var nextDate = function nextDate(date) {
5367 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
5368
5369 return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
5370};
5371
5372var getStartDateOfMonth = function getStartDateOfMonth(year, month) {
5373 var result = new Date(year, month, 1);
5374 var day = result.getDay();
5375
5376 if (day === 0) {
5377 return prevDate(result, 7);
5378 } else {
5379 return prevDate(result, day);
5380 }
5381};
5382
5383var getWeekNumber = function getWeekNumber(src) {
5384 if (!isDate(src)) return null;
5385 var date = new Date(src.getTime());
5386 date.setHours(0, 0, 0, 0);
5387 // Thursday in current week decides the year.
5388 date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
5389 // January 4 is always in week 1.
5390 var week1 = new Date(date.getFullYear(), 0, 4);
5391 // Adjust to Thursday in week 1 and count number of weeks from date to week 1.
5392 // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.
5393 return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
5394};
5395
5396var getRangeHours = function getRangeHours() {
5397 var ranges = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
5398
5399 var hours = [];
5400 var disabledHours = [];
5401
5402 ranges.forEach(function (range) {
5403 var value = range.map(function (date) {
5404 return date.getHours();
5405 });
5406
5407 disabledHours = disabledHours.concat(newArray(value[0], value[1]));
5408 });
5409
5410 if (disabledHours.length) {
5411 for (var i = 0; i < 24; i++) {
5412 hours[i] = disabledHours.indexOf(i) === -1;
5413 }
5414 } else {
5415 for (var _i = 0; _i < 24; _i++) {
5416 hours[_i] = false;
5417 }
5418 }
5419
5420 return hours;
5421};
5422
5423var getPrevMonthLastDays = function getPrevMonthLastDays(date, amount) {
5424 if (amount <= 0) return [];
5425 var temp = new Date(date.getTime());
5426 temp.setDate(0);
5427 var lastDay = temp.getDate();
5428 return range(amount).map(function (_, index) {
5429 return lastDay - (amount - index - 1);
5430 });
5431};
5432
5433var getMonthDays = function getMonthDays(date) {
5434 var temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);
5435 var days = temp.getDate();
5436 return range(days).map(function (_, index) {
5437 return index + 1;
5438 });
5439};
5440
5441function setRangeData(arr, start, end, value, step) {
5442 for (var i = start; i < end; i += step) {
5443 arr.push(i);
5444 }
5445}
5446
5447var getRangeMinutes = function getRangeMinutes(ranges, hour, step) {
5448 var minutes = [];
5449 if (ranges.length > 0) {
5450 ranges.forEach(function (range) {
5451 var start = range[0];
5452 var end = range[1];
5453 var startHour = start.getHours();
5454 var startMinute = start.getMinutes();
5455 var endHour = end.getHours();
5456 var endMinute = end.getMinutes();
5457 if (startHour === hour && endHour !== hour) {
5458 setRangeData(minutes, startMinute, 60, true, step);
5459 } else if (startHour === hour && endHour === hour) {
5460 setRangeData(minutes, startMinute, endMinute + 1, true, step);
5461 } else if (startHour !== hour && endHour === hour) {
5462 setRangeData(minutes, 0, endMinute + 1, true, step);
5463 } else if (startHour < hour && endHour > hour) {
5464 setRangeData(minutes, 0, 60, true, step);
5465 }
5466 });
5467 } else {
5468 setRangeData(minutes, 0, 60, true, step);
5469 }
5470 return minutes;
5471};
5472
5473var range = function range(n) {
5474 // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n
5475 return Array.apply(null, { length: n }).map(function (_, n) {
5476 return n;
5477 });
5478};
5479
5480var modifyDate = function modifyDate(date, y, m, d) {
5481 return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
5482};
5483
5484var modifyTime = function modifyTime(date, h, m, s) {
5485 return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());
5486};
5487
5488var modifyWithTimeString = function modifyWithTimeString(date, time) {
5489 if (date == null || !time) {
5490 return date;
5491 }
5492 time = dateUtil_parseDate(time, 'HH:mm:ss');
5493 return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());
5494};
5495
5496var clearTime = function clearTime(date) {
5497 return new Date(date.getFullYear(), date.getMonth(), date.getDate());
5498};
5499
5500var clearMilliseconds = function clearMilliseconds(date) {
5501 return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);
5502};
5503
5504var dateUtil_limitTimeRange = function limitTimeRange(date, ranges) {
5505 var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'HH:mm:ss';
5506
5507 // TODO: refactory a more elegant solution
5508 if (ranges.length === 0) return date;
5509 var normalizeDate = function normalizeDate(date) {
5510 return date_default.a.parse(date_default.a.format(date, format), format);
5511 };
5512 var ndate = normalizeDate(date);
5513 var nranges = ranges.map(function (range) {
5514 return range.map(normalizeDate);
5515 });
5516 if (nranges.some(function (nrange) {
5517 return ndate >= nrange[0] && ndate <= nrange[1];
5518 })) return date;
5519
5520 var minDate = nranges[0][0];
5521 var maxDate = nranges[0][0];
5522
5523 nranges.forEach(function (nrange) {
5524 minDate = new Date(Math.min(nrange[0], minDate));
5525 maxDate = new Date(Math.max(nrange[1], minDate));
5526 });
5527
5528 var ret = ndate < minDate ? minDate : maxDate;
5529 // preserve Year/Month/Date
5530 return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate());
5531};
5532
5533var timeWithinRange = function timeWithinRange(date, selectableRange, format) {
5534 var limitedDate = dateUtil_limitTimeRange(date, selectableRange, format);
5535 return limitedDate.getTime() === date.getTime();
5536};
5537
5538var changeYearMonthAndClampDate = function changeYearMonthAndClampDate(date, year, month) {
5539 // clamp date to the number of days in `year`, `month`
5540 // eg: (2010-1-31, 2010, 2) => 2010-2-28
5541 var monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));
5542 return modifyDate(date, year, month, monthDate);
5543};
5544
5545var dateUtil_prevMonth = function prevMonth(date) {
5546 var year = date.getFullYear();
5547 var month = date.getMonth();
5548 return month === 0 ? changeYearMonthAndClampDate(date, year - 1, 11) : changeYearMonthAndClampDate(date, year, month - 1);
5549};
5550
5551var dateUtil_nextMonth = function nextMonth(date) {
5552 var year = date.getFullYear();
5553 var month = date.getMonth();
5554 return month === 11 ? changeYearMonthAndClampDate(date, year + 1, 0) : changeYearMonthAndClampDate(date, year, month + 1);
5555};
5556
5557var dateUtil_prevYear = function prevYear(date) {
5558 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
5559
5560 var year = date.getFullYear();
5561 var month = date.getMonth();
5562 return changeYearMonthAndClampDate(date, year - amount, month);
5563};
5564
5565var dateUtil_nextYear = function nextYear(date) {
5566 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
5567
5568 var year = date.getFullYear();
5569 var month = date.getMonth();
5570 return changeYearMonthAndClampDate(date, year + amount, month);
5571};
5572
5573var extractDateFormat = function extractDateFormat(format) {
5574 return format.replace(/\W?m{1,2}|\W?ZZ/g, '').replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '').trim();
5575};
5576
5577var extractTimeFormat = function extractTimeFormat(format) {
5578 return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '').trim();
5579};
5580
5581var validateRangeInOneMonth = function validateRangeInOneMonth(start, end) {
5582 return start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear();
5583};
5584// EXTERNAL MODULE: ./components/scroll-bar/index.js + 5 modules
5585var scroll_bar = __webpack_require__(27);
5586
5587// EXTERNAL MODULE: external "./_util/repeatClick"
5588var repeatClick_ = __webpack_require__(66);
5589var repeatClick_default = /*#__PURE__*/__webpack_require__.n(repeatClick_);
5590
5591// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/time-spinner.vue?vue&type=script&lang=js&
5592//
5593//
5594//
5595//
5596//
5597//
5598//
5599//
5600//
5601//
5602//
5603//
5604//
5605//
5606//
5607//
5608//
5609//
5610//
5611//
5612//
5613//
5614//
5615//
5616//
5617//
5618//
5619//
5620//
5621//
5622//
5623//
5624//
5625//
5626//
5627//
5628//
5629//
5630//
5631//
5632//
5633//
5634//
5635//
5636//
5637//
5638//
5639//
5640//
5641//
5642//
5643//
5644//
5645//
5646//
5647//
5648//
5649//
5650//
5651//
5652//
5653//
5654//
5655//
5656//
5657//
5658//
5659//
5660//
5661//
5662//
5663//
5664
5665
5666
5667
5668
5669
5670/* harmony default export */ var time_spinnervue_type_script_lang_js_ = ({
5671 mixins: [locale_default.a],
5672 components: { MdsScrollbar: scroll_bar["a" /* default */] },
5673
5674 directives: {
5675 repeatClick: repeatClick_default.a
5676 },
5677
5678 props: {
5679 date: {},
5680 defaultValue: {}, // reserved for future use
5681 arrowControl: Boolean,
5682 listenScroll: {
5683 type: Boolean,
5684 default: true
5685 },
5686 step: Number,
5687 amPmMode: {
5688 type: String,
5689 default: '' // 'a': am/pm 'A': AM/PM
5690 },
5691 prefixCls: {
5692 type: String,
5693 default: 'mds-date'
5694 },
5695 format: String
5696 },
5697
5698 computed: {
5699 showSeconds: function showSeconds() {
5700 return (this.format || '').indexOf('ss') !== -1;
5701 },
5702 showMinutes: function showMinutes() {
5703 return (this.format || '').indexOf('mm') !== -1;
5704 },
5705 hours: function hours() {
5706 return this.date && this.date.getHours();
5707 },
5708 minutes: function minutes() {
5709 return this.date && this.date.getMinutes();
5710 },
5711 seconds: function seconds() {
5712 return this.date && this.date.getSeconds();
5713 },
5714 hoursList: function hoursList() {
5715 return getRangeHours(this.selectableRange);
5716 },
5717 minutesList: function minutesList() {
5718 return getRangeMinutes(this.selectableRange, this.hours, this.step);
5719 },
5720 arrowHourList: function arrowHourList() {
5721 var hours = this.hours;
5722 return [hours > 0 ? hours - 1 : undefined, hours, hours < 23 ? hours + 1 : undefined];
5723 },
5724 arrowMinuteList: function arrowMinuteList() {
5725 var minutes = this.minutes;
5726 return [minutes > 0 ? minutes - 1 : undefined, minutes, minutes < 59 ? minutes + 1 : undefined];
5727 },
5728 arrowSecondList: function arrowSecondList() {
5729 var seconds = this.seconds;
5730 return [seconds > 0 ? seconds - 1 : undefined, seconds, seconds < 59 ? seconds + 1 : undefined];
5731 }
5732 },
5733
5734 data: function data() {
5735 return {
5736 selectableRange: [],
5737 currentScrollbar: null
5738 };
5739 },
5740 mounted: function mounted() {
5741 var _this = this;
5742
5743 this.$nextTick(function () {
5744 !_this.arrowControl && _this.bindScrollEvent();
5745 });
5746 },
5747
5748
5749 methods: {
5750 increase: function increase() {
5751 this.scrollDown(1);
5752 },
5753 decrease: function decrease() {
5754 this.scrollDown(-1);
5755 },
5756 modifyDateField: function modifyDateField(type, value) {
5757 switch (type) {
5758 case 'hours':
5759 this.$emit('change', modifyTime(this.date, value, this.minutes, this.seconds));
5760 break;
5761 case 'minutes':
5762 this.$emit('change', modifyTime(this.date, this.hours, value, this.seconds));
5763 break;
5764 case 'seconds':
5765 this.$emit('change', modifyTime(this.date, this.hours, this.minutes, value));
5766 break;
5767 }
5768 },
5769 handleClick: function handleClick(type, _ref) {
5770 var value = _ref.value,
5771 disabled = _ref.disabled;
5772
5773 if (!disabled) {
5774 this.modifyDateField(type, value);
5775 this.emitSelectRange(type);
5776 this.adjustSpinner(type, value);
5777 }
5778 },
5779 emitSelectRange: function emitSelectRange(type) {
5780 if (type === 'hours') {
5781 this.$emit('select-range', 0, 2);
5782 } else if (type === 'minutes') {
5783 this.$emit('select-range', 3, 5);
5784 } else if (type === 'seconds') {
5785 this.$emit('select-range', 6, 8);
5786 }
5787 this.currentScrollbar = type;
5788 },
5789 bindScrollEvent: function bindScrollEvent() {
5790 var _this2 = this;
5791
5792 var bindFuntion = function bindFuntion(type) {
5793 if (_this2.$refs[type] && _this2.$refs[type].wrap) {
5794 _this2.$refs[type].wrap.onscroll = function (e) {
5795 // TODO: scroll is emitted when set scrollTop programatically
5796 // should find better solutions in the future!
5797 _this2.handleScroll(type, e);
5798 };
5799 }
5800 };
5801 bindFuntion('hours');
5802 bindFuntion('minutes');
5803 bindFuntion('seconds');
5804 },
5805 handleScroll: function handleScroll(type) {
5806 if (!this.listenScroll) {
5807 return;
5808 }
5809 var value = Math.min(Math.round((this.$refs[type].wrap.scrollTop - (this.scrollBarHeight(type) * 0.5 - 10) / this.typeItemHeight(type) + 3) / this.typeItemHeight(type)), type === 'hours' ? 23 : 59);
5810 if (type === 'minutes' && this.step) {
5811 value = value * this.step;
5812 }
5813 this.modifyDateField(type, value);
5814 },
5815
5816
5817 // NOTE: used by datetime / date-range panel
5818 // renamed from adjustScrollTop
5819 // should try to refactory it
5820 adjustSpinners: function adjustSpinners() {
5821 this.adjustSpinner('hours', this.hours);
5822 this.adjustSpinner('minutes', this.minutes);
5823 this.adjustSpinner('seconds', this.seconds);
5824 },
5825 adjustCurrentSpinner: function adjustCurrentSpinner(type) {
5826 this.adjustSpinner(type, this[type]);
5827 },
5828 adjustSpinner: function adjustSpinner(type, value) {
5829 if (this.arrowControl) return;
5830 var el = this.$refs[type] && this.$refs[type].wrap || '';
5831 if (el) {
5832 if (type === 'minutes' && this.step) {
5833 el.scrollTop = Math.max(0, value / this.step * this.typeItemHeight(type));
5834 } else {
5835 el.scrollTop = Math.max(0, value * this.typeItemHeight(type));
5836 }
5837 }
5838 },
5839 scrollDown: function scrollDown(step) {
5840 var _this3 = this;
5841
5842 if (!this.currentScrollbar) {
5843 this.emitSelectRange('hours');
5844 }
5845
5846 var label = this.currentScrollbar;
5847 var hoursList = this.hoursList;
5848 var now = this[label];
5849
5850 if (this.currentScrollbar === 'hours') {
5851 var total = Math.abs(step);
5852 step = step > 0 ? 1 : -1;
5853 var length = hoursList.length;
5854 while (length-- && total) {
5855 now = (now + step + hoursList.length) % hoursList.length;
5856 if (hoursList[now]) {
5857 continue;
5858 }
5859 total--;
5860 }
5861 if (hoursList[now]) return;
5862 } else {
5863 now = (now + step + 60) % 60;
5864 }
5865
5866 this.modifyDateField(label, now);
5867 this.adjustSpinner(label, now);
5868 this.$nextTick(function () {
5869 return _this3.emitSelectRange(_this3.currentScrollbar);
5870 });
5871 },
5872 amPm: function amPm(hour) {
5873 var shouldShowAmPm = this.amPmMode.toLowerCase() === 'a';
5874 if (!shouldShowAmPm) return '';
5875 var isCapital = this.amPmMode === 'A';
5876 var content = hour < 12 ? ' am' : ' pm';
5877 if (isCapital) content = content.toUpperCase();
5878 return content;
5879 },
5880 typeItemHeight: function typeItemHeight(type) {
5881 return this.$refs[type].$el.querySelector('li').offsetHeight;
5882 },
5883 scrollBarHeight: function scrollBarHeight(type) {
5884 return this.$refs[type].$el.offsetHeight;
5885 }
5886 }
5887});
5888// CONCATENATED MODULE: ./components/datepicker/base/time-spinner.vue?vue&type=script&lang=js&
5889 /* harmony default export */ var base_time_spinnervue_type_script_lang_js_ = (time_spinnervue_type_script_lang_js_);
5890// CONCATENATED MODULE: ./components/datepicker/base/time-spinner.vue
5891
5892
5893
5894
5895
5896/* normalize component */
5897
5898var time_spinner_component = Object(componentNormalizer["a" /* default */])(
5899 base_time_spinnervue_type_script_lang_js_,
5900 time_spinnervue_type_template_id_79c97ebf_render,
5901 time_spinnervue_type_template_id_79c97ebf_staticRenderFns,
5902 false,
5903 null,
5904 null,
5905 null
5906
5907)
5908
5909/* hot reload */
5910if (false) { var time_spinner_api; }
5911time_spinner_component.options.__file = "components/datepicker/base/time-spinner.vue"
5912/* harmony default export */ var time_spinner = (time_spinner_component.exports);
5913// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/time.vue?vue&type=script&lang=js&
5914//
5915//
5916//
5917//
5918//
5919//
5920//
5921//
5922//
5923//
5924//
5925//
5926//
5927//
5928//
5929//
5930//
5931
5932
5933
5934
5935
5936/* harmony default export */ var timevue_type_script_lang_js_ = ({
5937 mixins: [locale_default.a],
5938 components: {
5939 TimeSpinner: time_spinner
5940 },
5941
5942 props: {
5943 visible: Boolean,
5944 timeArrowControl: Boolean,
5945 listenScroll: Boolean,
5946 step: Number
5947 },
5948
5949 watch: {
5950 visible: function visible(val) {
5951 var _this = this;
5952
5953 if (val) {
5954 this.oldValue = this.value;
5955 this.$nextTick(function () {
5956 return _this.$refs.spinner.emitSelectRange('hours');
5957 });
5958 } else {
5959 this.needInitAdjust = true;
5960 }
5961 },
5962 value: function value(newVal) {
5963 var _this2 = this;
5964
5965 var date = void 0;
5966 if (newVal instanceof Date) {
5967 date = Object(dateUtil_["limitTimeRange"])(newVal, this.selectableRange, this.format);
5968 } else if (!newVal) {
5969 date = this.defaultValue ? new Date(this.defaultValue) : new Date();
5970 }
5971 this.date = date;
5972 if (this.visible && this.needInitAdjust) {
5973 this.$nextTick(function (_) {
5974 return _this2.adjustSpinners();
5975 });
5976 this.needInitAdjust = false;
5977 }
5978 },
5979 selectableRange: function selectableRange(val) {
5980 this.$refs.spinner.selectableRange = val;
5981 },
5982 defaultValue: function defaultValue(val) {
5983 if (!Object(dateUtil_["isDate"])(this.value)) {
5984 this.date = val ? new Date(val) : new Date();
5985 }
5986 }
5987 },
5988
5989 data: function data() {
5990 return {
5991 popperClass: '',
5992 format: 'HH:mm:ss',
5993 value: '',
5994 defaultValue: null,
5995 date: new Date(),
5996 oldValue: new Date(),
5997 selectableRange: [],
5998 selectionRange: [0, 2],
5999 disabled: false,
6000 arrowControl: false,
6001 needInitAdjust: true
6002 };
6003 },
6004
6005
6006 computed: {
6007 showSeconds: function showSeconds() {
6008 return (this.format || '').indexOf('ss') !== -1;
6009 },
6010 useArrow: function useArrow() {
6011 return this.arrowControl || this.timeArrowControl || false;
6012 },
6013 amPmMode: function amPmMode() {
6014 if ((this.format || '').indexOf('A') !== -1) return 'A';
6015 if ((this.format || '').indexOf('a') !== -1) return 'a';
6016 return '';
6017 }
6018 },
6019
6020 methods: {
6021 handleCancel: function handleCancel() {
6022 this.$emit('pick', this.oldValue, false);
6023 },
6024 handleChange: function handleChange(date) {
6025 // this.visible avoids edge cases, when use scrolls during panel closing animation
6026 if (this.visible) {
6027 this.date = Object(dateUtil_["clearMilliseconds"])(date);
6028 // if date is out of range, do not emit
6029 if (this.isValidValue(this.date)) {
6030 this.$emit('pick', this.date, true);
6031 }
6032 }
6033 },
6034 setSelectionRange: function setSelectionRange(start, end) {
6035 this.$emit('select-range', start, end);
6036 this.selectionRange = [start, end];
6037 },
6038 handleConfirm: function handleConfirm() {
6039 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6040 var first = arguments[1];
6041
6042 if (first) return;
6043 var date = Object(dateUtil_["clearMilliseconds"])(Object(dateUtil_["limitTimeRange"])(this.date, this.selectableRange, this.format));
6044 this.$emit('pick', date, visible, first);
6045 },
6046 handleKeydown: function handleKeydown(event) {
6047 var keyCode = event.keyCode;
6048 var mapping = { 38: -1, 40: 1, 37: -1, 39: 1
6049
6050 // Left or Right
6051 };if (keyCode === 37 || keyCode === 39) {
6052 var step = mapping[keyCode];
6053 this.changeSelectionRange(step);
6054 event.preventDefault();
6055 return '';
6056 }
6057
6058 // Up or Down
6059 if (keyCode === 38 || keyCode === 40) {
6060 var _step = mapping[keyCode];
6061 this.$refs.spinner.scrollDown(_step);
6062 event.preventDefault();
6063 return '';
6064 }
6065 },
6066 isValidValue: function isValidValue(date) {
6067 return Object(dateUtil_["timeWithinRange"])(date, this.selectableRange, this.format);
6068 },
6069 adjustSpinners: function adjustSpinners() {
6070 return this.$refs.spinner.adjustSpinners();
6071 },
6072 changeSelectionRange: function changeSelectionRange(step) {
6073 var list = [0, 3].concat(this.showSeconds ? [6] : []);
6074 var mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);
6075 var index = list.indexOf(this.selectionRange[0]);
6076 var next = (index + step + list.length) % list.length;
6077 this.$refs.spinner.emitSelectRange(mapping[next]);
6078 }
6079 },
6080
6081 mounted: function mounted() {
6082 var _this3 = this;
6083
6084 this.$nextTick(function () {
6085 return _this3.handleConfirm(true, true);
6086 });
6087 this.$emit('mounted');
6088 }
6089});
6090// CONCATENATED MODULE: ./components/datepicker/picker/time.vue?vue&type=script&lang=js&
6091 /* harmony default export */ var picker_timevue_type_script_lang_js_ = (timevue_type_script_lang_js_);
6092// CONCATENATED MODULE: ./components/datepicker/picker/time.vue
6093
6094
6095
6096
6097
6098/* normalize component */
6099
6100var time_component = Object(componentNormalizer["a" /* default */])(
6101 picker_timevue_type_script_lang_js_,
6102 timevue_type_template_id_0c4cd956_render,
6103 timevue_type_template_id_0c4cd956_staticRenderFns,
6104 false,
6105 null,
6106 null,
6107 null
6108
6109)
6110
6111/* hot reload */
6112if (false) { var time_api; }
6113time_component.options.__file = "components/datepicker/picker/time.vue"
6114/* harmony default export */ var picker_time = (time_component.exports);
6115// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/year-table.vue?vue&type=template&id=aa64ca38&
6116var year_tablevue_type_template_id_aa64ca38_render = function () {
6117 var _vm = this
6118 var _h = _vm.$createElement
6119 var _c = _vm._self._c || _h
6120 return _c("div", { class: _vm.prefixCls + "-year-table-box" }, [
6121 _c(
6122 "table",
6123 {
6124 class: _vm.prefixCls + "-table " + _vm.prefixCls + "-year-table",
6125 on: { click: _vm.handleYearTableClick },
6126 },
6127 [
6128 _c("tbody", [
6129 _c("tr", [
6130 _c(
6131 "td",
6132 {
6133 staticClass: "available year-td",
6134 class: _vm.getCellStyle(_vm.startYear + 0),
6135 },
6136 [
6137 _c("div", [
6138 _c("a", { staticClass: "cell" }, [
6139 _vm._v(_vm._s(_vm.startYear)),
6140 ]),
6141 ]),
6142 ]
6143 ),
6144 _c(
6145 "td",
6146 {
6147 staticClass: "available year-td",
6148 class: _vm.getCellStyle(_vm.startYear + 1),
6149 },
6150 [
6151 _c("div", [
6152 _c("a", { staticClass: "cell" }, [
6153 _vm._v(_vm._s(_vm.startYear + 1)),
6154 ]),
6155 ]),
6156 ]
6157 ),
6158 _c(
6159 "td",
6160 {
6161 staticClass: "available year-td",
6162 class: _vm.getCellStyle(_vm.startYear + 2),
6163 },
6164 [
6165 _c("div", [
6166 _c("a", { staticClass: "cell" }, [
6167 _vm._v(_vm._s(_vm.startYear + 2)),
6168 ]),
6169 ]),
6170 ]
6171 ),
6172 _c(
6173 "td",
6174 {
6175 staticClass: "available year-td",
6176 class: _vm.getCellStyle(_vm.startYear + 3),
6177 },
6178 [
6179 _c("div", [
6180 _c("a", { staticClass: "cell" }, [
6181 _vm._v(_vm._s(_vm.startYear + 3)),
6182 ]),
6183 ]),
6184 ]
6185 ),
6186 ]),
6187 _c("tr", [
6188 _c(
6189 "td",
6190 {
6191 staticClass: "available year-td",
6192 class: _vm.getCellStyle(_vm.startYear + 4),
6193 },
6194 [
6195 _c("div", [
6196 _c("a", { staticClass: "cell" }, [
6197 _vm._v(_vm._s(_vm.startYear + 4)),
6198 ]),
6199 ]),
6200 ]
6201 ),
6202 _c(
6203 "td",
6204 {
6205 staticClass: "available year-td",
6206 class: _vm.getCellStyle(_vm.startYear + 5),
6207 },
6208 [
6209 _c("div", [
6210 _c("a", { staticClass: "cell" }, [
6211 _vm._v(_vm._s(_vm.startYear + 5)),
6212 ]),
6213 ]),
6214 ]
6215 ),
6216 _c(
6217 "td",
6218 {
6219 staticClass: "available year-td",
6220 class: _vm.getCellStyle(_vm.startYear + 6),
6221 },
6222 [
6223 _c("div", [
6224 _c("a", { staticClass: "cell" }, [
6225 _vm._v(_vm._s(_vm.startYear + 6)),
6226 ]),
6227 ]),
6228 ]
6229 ),
6230 _c(
6231 "td",
6232 {
6233 staticClass: "available year-td",
6234 class: _vm.getCellStyle(_vm.startYear + 7),
6235 },
6236 [
6237 _c("div", [
6238 _c("a", { staticClass: "cell" }, [
6239 _vm._v(_vm._s(_vm.startYear + 7)),
6240 ]),
6241 ]),
6242 ]
6243 ),
6244 ]),
6245 _c("tr", [
6246 _c(
6247 "td",
6248 {
6249 staticClass: "available year-td",
6250 class: _vm.getCellStyle(_vm.startYear + 8),
6251 },
6252 [
6253 _c("div", [
6254 _c("a", { staticClass: "cell" }, [
6255 _vm._v(_vm._s(_vm.startYear + 8)),
6256 ]),
6257 ]),
6258 ]
6259 ),
6260 _c(
6261 "td",
6262 {
6263 staticClass: "available year-td",
6264 class: _vm.getCellStyle(_vm.startYear + 9),
6265 },
6266 [
6267 _c("div", [
6268 _c("a", { staticClass: "cell" }, [
6269 _vm._v(_vm._s(_vm.startYear + 9)),
6270 ]),
6271 ]),
6272 ]
6273 ),
6274 _c("td"),
6275 _c("td"),
6276 ]),
6277 ]),
6278 ]
6279 ),
6280 ])
6281}
6282var year_tablevue_type_template_id_aa64ca38_staticRenderFns = []
6283year_tablevue_type_template_id_aa64ca38_render._withStripped = true
6284
6285
6286// CONCATENATED MODULE: ./components/datepicker/base/year-table.vue?vue&type=template&id=aa64ca38&
6287
6288// EXTERNAL MODULE: external "./_util/dom"
6289var dom_ = __webpack_require__(67);
6290
6291// EXTERNAL MODULE: external "./_util/util"
6292var util_ = __webpack_require__(20);
6293
6294// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/year-table.vue?vue&type=script&lang=js&
6295//
6296//
6297//
6298//
6299//
6300//
6301//
6302//
6303//
6304//
6305//
6306//
6307//
6308//
6309//
6310//
6311//
6312//
6313//
6314//
6315//
6316//
6317//
6318//
6319//
6320//
6321//
6322//
6323//
6324//
6325//
6326//
6327//
6328//
6329//
6330//
6331//
6332//
6333//
6334//
6335//
6336//
6337//
6338//
6339//
6340//
6341//
6342//
6343//
6344//
6345//
6346//
6347//
6348//
6349//
6350//
6351//
6352//
6353//
6354//
6355//
6356//
6357//
6358//
6359//
6360//
6361//
6362
6363
6364
6365
6366
6367var year_tablevue_type_script_lang_js_datesInYear = function datesInYear(year) {
6368 var numOfDays = Object(dateUtil_["getDayCountOfYear"])(year);
6369 var firstDay = new Date(year, 0, 1);
6370 return Object(dateUtil_["range"])(numOfDays).map(function (n) {
6371 return Object(dateUtil_["nextDate"])(firstDay, n);
6372 });
6373};
6374
6375/* harmony default export */ var year_tablevue_type_script_lang_js_ = ({
6376 mixins: [locale_default.a],
6377 props: {
6378 disabledDate: {},
6379 value: {},
6380 defaultValue: {
6381 validator: function validator(val) {
6382 // null or valid Date Object
6383 return val === null || val instanceof Date && Object(dateUtil_["isDate"])(val);
6384 }
6385 },
6386 prefixCls: {
6387 type: String,
6388 default: 'mds-date'
6389 },
6390 date: {}
6391 },
6392
6393 computed: {
6394 startYear: function startYear() {
6395 return Math.floor(this.date.getFullYear() / 10) * 10;
6396 }
6397 },
6398
6399 methods: {
6400 getCellStyle: function getCellStyle(year) {
6401 var style = {};
6402 var today = new Date();
6403
6404 style.disabled = typeof this.disabledDate === 'function' ? year_tablevue_type_script_lang_js_datesInYear(year).every(this.disabledDate) : false;
6405 style.current = Object(util_["arrayFindIndex"])(Object(util_["coerceTruthyValueToArray"])(this.value), function (date) {
6406 return (date && date.getFullYear()) === year;
6407 }) >= 0;
6408 style.today = today.getFullYear() === year;
6409 style.default = this.defaultValue && this.defaultValue.getFullYear() === year;
6410
6411 return style;
6412 },
6413 handleYearTableClick: function handleYearTableClick(event) {
6414 var target = event.target;
6415 if (target.tagName === 'A') {
6416 if (Object(dom_["hasClass"])(target.parentNode, 'disabled')) return;
6417 var year = target.textContent || target.innerText;
6418 this.$emit('pick', Number(year));
6419 }
6420 }
6421 }
6422});
6423// CONCATENATED MODULE: ./components/datepicker/base/year-table.vue?vue&type=script&lang=js&
6424 /* harmony default export */ var base_year_tablevue_type_script_lang_js_ = (year_tablevue_type_script_lang_js_);
6425// CONCATENATED MODULE: ./components/datepicker/base/year-table.vue
6426
6427
6428
6429
6430
6431/* normalize component */
6432
6433var year_table_component = Object(componentNormalizer["a" /* default */])(
6434 base_year_tablevue_type_script_lang_js_,
6435 year_tablevue_type_template_id_aa64ca38_render,
6436 year_tablevue_type_template_id_aa64ca38_staticRenderFns,
6437 false,
6438 null,
6439 null,
6440 null
6441
6442)
6443
6444/* hot reload */
6445if (false) { var year_table_api; }
6446year_table_component.options.__file = "components/datepicker/base/year-table.vue"
6447/* harmony default export */ var year_table = (year_table_component.exports);
6448// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/month-table.vue?vue&type=template&id=c295c5ea&
6449var month_tablevue_type_template_id_c295c5ea_render = function () {
6450 var _vm = this
6451 var _h = _vm.$createElement
6452 var _c = _vm._self._c || _h
6453 return _c("div", { class: _vm.prefixCls + "-month-table-box" }, [
6454 _c(
6455 "table",
6456 {
6457 class: _vm.prefixCls + "-table " + _vm.prefixCls + "-month-table",
6458 attrs: { cellspacing: "0", cellpadding: "0" },
6459 on: {
6460 click: _vm.handleMonthTableClick,
6461 mousemove: _vm.handleMouseMove,
6462 },
6463 },
6464 [
6465 _c(
6466 "tbody",
6467 _vm._l(_vm.rows, function (row, key) {
6468 return _c(
6469 "tr",
6470 { key: key },
6471 _vm._l(row, function (cell, key) {
6472 return _c("td", { key: key, class: _vm.getCellStyle(cell) }, [
6473 _c("div", [
6474 _c("a", { staticClass: "cell" }, [
6475 _vm._v(
6476 _vm._s(
6477 _vm.t(
6478 "mds.datepicker.months." + _vm.months[cell.text]
6479 )
6480 )
6481 ),
6482 ]),
6483 ]),
6484 ])
6485 }),
6486 0
6487 )
6488 }),
6489 0
6490 ),
6491 ]
6492 ),
6493 ])
6494}
6495var month_tablevue_type_template_id_c295c5ea_staticRenderFns = []
6496month_tablevue_type_template_id_c295c5ea_render._withStripped = true
6497
6498
6499// CONCATENATED MODULE: ./components/datepicker/base/month-table.vue?vue&type=template&id=c295c5ea&
6500
6501// EXTERNAL MODULE: ./components/_util/dom.js
6502var dom = __webpack_require__(21);
6503
6504// EXTERNAL MODULE: ./components/_util/util.js
6505var util = __webpack_require__(15);
6506
6507// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/month-table.vue?vue&type=script&lang=js&
6508//
6509//
6510//
6511//
6512//
6513//
6514//
6515//
6516//
6517//
6518//
6519//
6520//
6521//
6522//
6523//
6524//
6525//
6526//
6527//
6528//
6529
6530
6531
6532
6533
6534
6535var month_tablevue_type_script_lang_js_datesInMonth = function datesInMonth(year, month) {
6536 var numOfDays = getDayCountOfMonth(year, month);
6537 var firstDay = new Date(year, month, 1);
6538 return range(numOfDays).map(function (n) {
6539 return nextDate(firstDay, n);
6540 });
6541};
6542
6543var clearDate = function clearDate(date) {
6544 return new Date(date.getFullYear(), date.getMonth());
6545};
6546
6547var getMonthTimestamp = function getMonthTimestamp(time) {
6548 if (typeof time === 'number' || typeof time === 'string') {
6549 return clearDate(new Date(time)).getTime();
6550 } else if (time instanceof Date) {
6551 return clearDate(time).getTime();
6552 } else {
6553 return NaN;
6554 }
6555};
6556/* harmony default export */ var month_tablevue_type_script_lang_js_ = ({
6557 mixins: [locale_default.a],
6558 props: {
6559 disabledDate: {},
6560 value: {},
6561 selectionMode: {
6562 default: 'month'
6563 },
6564 prefixCls: {
6565 type: String,
6566 default: 'mds-date'
6567 },
6568 minDate: {},
6569
6570 maxDate: {},
6571 defaultValue: {
6572 validator: function validator(val) {
6573 // null or valid Date Object
6574 return val === null || isDate(val) || Array.isArray(val) && val.every(isDate);
6575 }
6576 },
6577 date: {},
6578 rangeState: {
6579 default: function _default() {
6580 return {
6581 endDate: null,
6582 selecting: false
6583 };
6584 }
6585 }
6586 },
6587
6588 watch: {
6589 'rangeState.endDate': function rangeStateEndDate(newVal) {
6590 this.markRange(this.minDate, newVal);
6591 },
6592 minDate: function minDate(newVal, oldVal) {
6593 if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) {
6594 this.markRange(this.minDate, this.maxDate);
6595 }
6596 },
6597 maxDate: function maxDate(newVal, oldVal) {
6598 if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) {
6599 this.markRange(this.minDate, this.maxDate);
6600 }
6601 }
6602 },
6603
6604 data: function data() {
6605 return {
6606 months: ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
6607 tableRows: [[], [], []],
6608 lastRow: null,
6609 lastColumn: null
6610 };
6611 },
6612
6613
6614 methods: {
6615 cellMatchesDate: function cellMatchesDate(cell, date) {
6616 var value = new Date(date);
6617 return this.date.getFullYear() === value.getFullYear() && Number(cell.text) === value.getMonth();
6618 },
6619 getCellStyle: function getCellStyle(cell) {
6620 var _this = this;
6621
6622 var style = {};
6623 var year = this.date.getFullYear();
6624 var today = new Date();
6625 var month = cell.text;
6626 var defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : [];
6627 style.disabled = typeof this.disabledDate === 'function' ? month_tablevue_type_script_lang_js_datesInMonth(year, month).every(this.disabledDate) : false;
6628 style.current = Object(util["b" /* arrayFindIndex */])(Object(util["c" /* coerceTruthyValueToArray */])(this.value), function (date) {
6629 return date && date.getFullYear() === year && (date && date.getMonth()) === month;
6630 }) >= 0;
6631 style.today = today.getFullYear() === year && today.getMonth() === month;
6632 style.default = defaultValue.some(function (date) {
6633 return _this.cellMatchesDate(cell, date);
6634 });
6635
6636 if (cell.inRange) {
6637 style['in-range'] = true;
6638
6639 if (cell.start) {
6640 style['start-date'] = true;
6641 }
6642
6643 if (cell.end) {
6644 style['end-date'] = true;
6645 }
6646 }
6647 style['month-td'] = true;
6648 return style;
6649 },
6650 getMonthOfCell: function getMonthOfCell(month) {
6651 var year = this.date.getFullYear();
6652 return new Date(year, month, 1);
6653 },
6654 markRange: function markRange(minDate, maxDate) {
6655 var _minDate = getMonthTimestamp(minDate);
6656 var _maxDate = getMonthTimestamp(maxDate) || _minDate;
6657 minDate = Math.min(_minDate, _maxDate);
6658 maxDate = Math.max(_minDate, _maxDate);
6659 var rows = this.rows;
6660 for (var i = 0, k = rows.length; i < k; i++) {
6661 var row = rows[i];
6662 for (var j = 0, l = row.length; j < l; j++) {
6663 var cell = row[j];
6664 var index = i * 4 + j;
6665 var time = new Date(this.date.getFullYear(), index).getTime();
6666
6667 cell.inRange = minDate && time >= minDate && time <= maxDate;
6668 cell.start = minDate && time === minDate;
6669 cell.end = maxDate && time === maxDate;
6670 }
6671 }
6672 },
6673 handleMouseMove: function handleMouseMove(event) {
6674 if (!this.rangeState.selecting) return;
6675
6676 var target = event.target;
6677 if (target.tagName === 'A') {
6678 target = target.parentNode.parentNode;
6679 }
6680 if (target.tagName === 'DIV') {
6681 target = target.parentNode;
6682 }
6683 if (target.tagName !== 'TD') return;
6684
6685 var row = target.parentNode.rowIndex;
6686 var column = target.cellIndex;
6687 // can not select disabled date
6688 if (this.rows[row][column].disabled) return;
6689
6690 // only update rangeState when mouse moves to a new cell
6691 // this avoids frequent Date object creation and improves performance
6692 if (row !== this.lastRow || column !== this.lastColumn) {
6693 this.lastRow = row;
6694 this.lastColumn = column;
6695 this.$emit('changerange', {
6696 minDate: this.minDate,
6697 maxDate: this.maxDate,
6698 rangeState: {
6699 selecting: true,
6700 endDate: this.getMonthOfCell(row * 4 + column)
6701 }
6702 });
6703 }
6704 },
6705 handleMonthTableClick: function handleMonthTableClick(event) {
6706 var target = event.target;
6707 if (target.tagName === 'A') {
6708 target = target.parentNode.parentNode;
6709 }
6710 if (target.tagName === 'DIV') {
6711 target = target.parentNode;
6712 }
6713 if (target.tagName !== 'TD') return;
6714 if (Object(dom["c" /* hasClass */])(target, 'disabled')) return;
6715 var column = target.cellIndex;
6716 var row = target.parentNode.rowIndex;
6717 var month = row * 4 + column;
6718 var newDate = this.getMonthOfCell(month);
6719 if (this.selectionMode === 'range') {
6720 if (!this.rangeState.selecting) {
6721 this.$emit('pick', { minDate: newDate, maxDate: null });
6722 this.rangeState.selecting = true;
6723 } else {
6724 if (newDate >= this.minDate) {
6725 this.$emit('pick', { minDate: this.minDate, maxDate: newDate });
6726 } else {
6727 this.$emit('pick', { minDate: newDate, maxDate: this.minDate });
6728 }
6729 this.rangeState.selecting = false;
6730 }
6731 } else {
6732 this.$emit('pick', month);
6733 }
6734 }
6735 },
6736
6737 computed: {
6738 rows: function rows() {
6739 var _this2 = this;
6740
6741 // TODO: refactory rows / getCellClasses
6742 var rows = this.tableRows;
6743 var disabledDate = this.disabledDate;
6744 var selectedDate = [];
6745 var now = getMonthTimestamp(new Date());
6746
6747 for (var i = 0; i < 3; i++) {
6748 var row = rows[i];
6749
6750 var _loop = function _loop(j) {
6751 var cell = row[j];
6752 if (!cell) {
6753 cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false };
6754 }
6755
6756 cell.type = 'normal';
6757
6758 var index = i * 4 + j;
6759 var time = new Date(_this2.date.getFullYear(), index).getTime();
6760 cell.inRange = time >= getMonthTimestamp(_this2.minDate) && time <= getMonthTimestamp(_this2.maxDate);
6761 cell.start = _this2.minDate && time === getMonthTimestamp(_this2.minDate);
6762 cell.end = _this2.maxDate && time === getMonthTimestamp(_this2.maxDate);
6763 var isToday = time === now;
6764
6765 if (isToday) {
6766 cell.type = 'today';
6767 }
6768 cell.text = index;
6769 var cellDate = new Date(time);
6770 cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate);
6771 cell.selected = Object(util["a" /* arrayFind */])(selectedDate, function (date) {
6772 return date.getTime() === cellDate.getTime();
6773 });
6774
6775 _this2.$set(row, j, cell);
6776 };
6777
6778 for (var j = 0; j < 4; j++) {
6779 _loop(j);
6780 }
6781 }
6782 return rows;
6783 }
6784 }
6785});
6786// CONCATENATED MODULE: ./components/datepicker/base/month-table.vue?vue&type=script&lang=js&
6787 /* harmony default export */ var base_month_tablevue_type_script_lang_js_ = (month_tablevue_type_script_lang_js_);
6788// CONCATENATED MODULE: ./components/datepicker/base/month-table.vue
6789
6790
6791
6792
6793
6794/* normalize component */
6795
6796var month_table_component = Object(componentNormalizer["a" /* default */])(
6797 base_month_tablevue_type_script_lang_js_,
6798 month_tablevue_type_template_id_c295c5ea_render,
6799 month_tablevue_type_template_id_c295c5ea_staticRenderFns,
6800 false,
6801 null,
6802 null,
6803 null
6804
6805)
6806
6807/* hot reload */
6808if (false) { var month_table_api; }
6809month_table_component.options.__file = "components/datepicker/base/month-table.vue"
6810/* harmony default export */ var month_table = (month_table_component.exports);
6811// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/date-table.vue?vue&type=template&id=6c222915&
6812var date_tablevue_type_template_id_6c222915_render = function () {
6813 var _vm = this
6814 var _h = _vm.$createElement
6815 var _c = _vm._self._c || _h
6816 return _c("div", [
6817 _c("div", { class: _vm.prefixCls + "-picker-panel-content-thead" }, [
6818 _c(
6819 "table",
6820 {
6821 class: _vm.prefixCls + "-table-header",
6822 attrs: { cellspacing: "0", cellpadding: "0" },
6823 },
6824 [
6825 _c(
6826 "tr",
6827 [
6828 _vm.showWeekNumber
6829 ? _c("th", [_vm._v(_vm._s(_vm.t("mds.datepicker.week")))])
6830 : _vm._e(),
6831 _vm._l(_vm.WEEKS, function (week, key) {
6832 return _c("th", { key: key }, [
6833 _vm._v(
6834 "\n " +
6835 _vm._s(_vm.t("mds.datepicker.weeks." + week)) +
6836 "\n "
6837 ),
6838 ])
6839 }),
6840 ],
6841 2
6842 ),
6843 ]
6844 ),
6845 ]),
6846 _c("div", { class: _vm.prefixCls + "-picker-panel-content-line" }),
6847 _c("div", { class: _vm.prefixCls + "-picker-panel-content-tbody" }, [
6848 _c(
6849 "table",
6850 {
6851 class: [
6852 _vm.prefixCls + "-table",
6853 { "is-week-mode": _vm.selectionMode === "week" },
6854 ],
6855 attrs: { cellspacing: "0", cellpadding: "0" },
6856 on: { click: _vm.handleClick, mousemove: _vm.handleMouseMove },
6857 },
6858 [
6859 _c(
6860 "tbody",
6861 _vm._l(_vm.rows, function (row, key) {
6862 return _c(
6863 "tr",
6864 {
6865 key: key,
6866 class: [
6867 _vm.prefixCls + "-table-row",
6868 { current: _vm.isWeekActive(row[1]) },
6869 ],
6870 },
6871 _vm._l(row, function (cell, key) {
6872 return _c(
6873 "td",
6874 { key: key, class: _vm.getCellClasses(cell) },
6875 [_c("div", [_c("span", [_vm._v(_vm._s(cell.text))])])]
6876 )
6877 }),
6878 0
6879 )
6880 }),
6881 0
6882 ),
6883 ]
6884 ),
6885 ]),
6886 ])
6887}
6888var date_tablevue_type_template_id_6c222915_staticRenderFns = []
6889date_tablevue_type_template_id_6c222915_render._withStripped = true
6890
6891
6892// CONCATENATED MODULE: ./components/datepicker/base/date-table.vue?vue&type=template&id=6c222915&
6893
6894// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/date-table.vue?vue&type=script&lang=js&
6895
6896//
6897//
6898//
6899//
6900//
6901//
6902//
6903//
6904//
6905//
6906//
6907//
6908//
6909//
6910//
6911//
6912//
6913//
6914//
6915//
6916//
6917//
6918//
6919//
6920//
6921//
6922//
6923//
6924//
6925//
6926//
6927//
6928//
6929//
6930//
6931//
6932//
6933//
6934//
6935//
6936//
6937//
6938//
6939//
6940//
6941//
6942//
6943//
6944//
6945
6946
6947
6948
6949
6950var _WEEKS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
6951var date_tablevue_type_script_lang_js_getDateTimestamp = function getDateTimestamp(time) {
6952 if (typeof time === 'number' || typeof time === 'string') {
6953 return clearTime(new Date(time)).getTime();
6954 } else if (time instanceof Date) {
6955 return clearTime(time).getTime();
6956 } else {
6957 return NaN;
6958 }
6959};
6960
6961// remove the first element that satisfies `pred` from arr
6962// return a new array if modification occurs
6963// return the original array otherwise
6964var date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray(arr, pred) {
6965 var idx = typeof pred === 'function' ? Object(util["b" /* arrayFindIndex */])(arr, pred) : arr.indexOf(pred);
6966 return idx >= 0 ? [].concat(toConsumableArray_default()(arr.slice(0, idx)), toConsumableArray_default()(arr.slice(idx + 1))) : arr;
6967};
6968
6969/* harmony default export */ var date_tablevue_type_script_lang_js_ = ({
6970 mixins: [locale_default.a],
6971 props: {
6972 firstDayOfWeek: {
6973 default: 7,
6974 type: Number,
6975 validator: function validator(val) {
6976 return val >= 1 && val <= 7;
6977 }
6978 },
6979 prefixCls: {
6980 type: String,
6981 default: 'mds-date'
6982 },
6983
6984 value: {},
6985
6986 defaultValue: {
6987 validator: function validator(val) {
6988 // either: null, valid Date object, Array of valid Date objects
6989 return val === null || isDate(val) || Array.isArray(val) && val.every(isDate);
6990 }
6991 },
6992
6993 date: {},
6994
6995 selectionMode: {
6996 default: 'day'
6997 },
6998
6999 showWeekNumber: {
7000 type: Boolean,
7001 default: false
7002 },
7003
7004 disabledDate: {},
7005
7006 cellClassName: {},
7007
7008 minDate: {},
7009
7010 maxDate: {},
7011
7012 rangeState: {
7013 default: function _default() {
7014 return {
7015 endDate: null,
7016 selecting: false
7017 };
7018 }
7019 }
7020 },
7021
7022 computed: {
7023 offsetDay: function offsetDay() {
7024 var week = this.firstDayOfWeek;
7025 // 周日为界限,左右偏移的天数,3217654 例如周一就是 -1,目的是调整前两行日期的位置
7026 return week > 3 ? 7 - week : -week;
7027 },
7028 WEEKS: function WEEKS() {
7029 var week = this.firstDayOfWeek;
7030 return _WEEKS.concat(_WEEKS).slice(week, week + 7);
7031 },
7032 year: function year() {
7033 return this.date.getFullYear();
7034 },
7035 month: function month() {
7036 return this.date.getMonth();
7037 },
7038 startDate: function startDate() {
7039 return getStartDateOfMonth(this.year, this.month);
7040 },
7041 rows: function rows() {
7042 var _this = this;
7043
7044 // TODO: refactory rows / getCellClasses
7045 var date = new Date(this.year, this.month, 1);
7046 var day = getFirstDayOfMonth(date); // day of first day
7047 var dateCountOfMonth = getDayCountOfMonth(date.getFullYear(), date.getMonth());
7048 var dateCountOfLastMonth = getDayCountOfMonth(date.getFullYear(), date.getMonth() === 0 ? 11 : date.getMonth() - 1);
7049
7050 day = day === 0 ? 7 : day;
7051
7052 var offset = this.offsetDay;
7053 var rows = this.tableRows;
7054 var count = 1;
7055
7056 var startDate = this.startDate;
7057 var disabledDate = this.disabledDate;
7058 var cellClassName = this.cellClassName;
7059 var selectedDate = this.selectionMode === 'dates' ? Object(util["c" /* coerceTruthyValueToArray */])(this.value) : [];
7060 var now = date_tablevue_type_script_lang_js_getDateTimestamp(new Date());
7061
7062 for (var i = 0; i < 6; i++) {
7063 var row = rows[i];
7064
7065 if (this.showWeekNumber) {
7066 if (!row[0]) {
7067 row[0] = {
7068 type: 'week',
7069 text: getWeekNumber(nextDate(startDate, i * 7 + 1))
7070 };
7071 }
7072 }
7073
7074 var _loop = function _loop(j) {
7075 var cell = row[_this.showWeekNumber ? j + 1 : j];
7076 if (!cell) {
7077 cell = {
7078 row: i,
7079 column: j,
7080 type: 'normal',
7081 inRange: false,
7082 start: false,
7083 end: false
7084 };
7085 }
7086
7087 cell.type = 'normal';
7088
7089 var index = i * 7 + j;
7090 var time = nextDate(startDate, index - offset).getTime();
7091 cell.inRange = time >= date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate) && time <= date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);
7092 cell.start = _this.minDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate);
7093 cell.end = _this.maxDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);
7094 var isToday = time === now;
7095
7096 if (isToday) {
7097 cell.type = 'today';
7098 }
7099
7100 if (i >= 0 && i <= 1) {
7101 var numberOfDaysFromPreviousMonth = day + offset < 0 ? 7 + day + offset : day + offset;
7102
7103 if (j + i * 7 >= numberOfDaysFromPreviousMonth) {
7104 cell.text = count++;
7105 } else {
7106 cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - j % 7) + 1 + i * 7;
7107 cell.type = 'prev-month';
7108 }
7109 } else {
7110 if (count <= dateCountOfMonth) {
7111 cell.text = count++;
7112 } else {
7113 cell.text = count++ - dateCountOfMonth;
7114 cell.type = 'next-month';
7115 }
7116 }
7117
7118 var cellDate = new Date(time);
7119 cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate);
7120 cell.selected = Object(util["a" /* arrayFind */])(selectedDate, function (date) {
7121 return (date && date.getTime()) === (cellDate && cellDate.getTime());
7122 });
7123 cell.customClass = typeof cellClassName === 'function' && cellClassName(cellDate);
7124 _this.$set(row, _this.showWeekNumber ? j + 1 : j, cell);
7125 };
7126
7127 for (var j = 0; j < 7; j++) {
7128 _loop(j);
7129 }
7130
7131 if (this.selectionMode === 'week') {
7132 var start = this.showWeekNumber ? 1 : 0;
7133 var end = this.showWeekNumber ? 7 : 6;
7134 var isWeekActive = this.isWeekActive(row[start + 1]);
7135
7136 row[start].inRange = isWeekActive;
7137 row[start].start = isWeekActive;
7138 row[end].inRange = isWeekActive;
7139 row[end].end = isWeekActive;
7140 }
7141 }
7142
7143 return rows;
7144 }
7145 },
7146
7147 watch: {
7148 'rangeState.endDate': function rangeStateEndDate(newVal) {
7149 this.markRange(this.minDate, newVal);
7150 },
7151 minDate: function minDate(newVal, oldVal) {
7152 if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) {
7153 this.markRange(this.minDate, this.maxDate);
7154 }
7155 },
7156 maxDate: function maxDate(newVal, oldVal) {
7157 if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) {
7158 this.markRange(this.minDate, this.maxDate);
7159 }
7160 }
7161 },
7162
7163 data: function data() {
7164 return {
7165 tableRows: [[], [], [], [], [], []],
7166 lastRow: null,
7167 lastColumn: null
7168 };
7169 },
7170
7171
7172 methods: {
7173 cellMatchesDate: function cellMatchesDate(cell, date) {
7174 var value = new Date(date);
7175 return this.year === value.getFullYear() && this.month === value.getMonth() && Number(cell.text) === value.getDate();
7176 },
7177 getCellClasses: function getCellClasses(cell) {
7178 var _this2 = this;
7179
7180 var selectionMode = this.selectionMode;
7181 var defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : [];
7182
7183 var classes = [];
7184 if ((cell.type === 'normal' || cell.type === 'today') && !cell.disabled) {
7185 classes.push('available');
7186 if (cell.type === 'today') {
7187 classes.push('today');
7188 }
7189 } else {
7190 classes.push(cell.type);
7191 }
7192
7193 if (cell.type === 'normal' && defaultValue.some(function (date) {
7194 return _this2.cellMatchesDate(cell, date);
7195 })) {
7196 classes.push('default');
7197 }
7198
7199 if (selectionMode === 'day' && (cell.type === 'normal' || cell.type === 'today') && this.cellMatchesDate(cell, this.value)) {
7200 classes.push('current');
7201 }
7202
7203 if (cell.inRange && (cell.type === 'normal' || cell.type === 'today' || this.selectionMode === 'week')) {
7204 classes.push('in-range');
7205
7206 if (cell.start) {
7207 classes.push('start-date');
7208 }
7209
7210 if (cell.end) {
7211 classes.push('end-date');
7212 }
7213 }
7214
7215 if (cell.disabled) {
7216 classes.push('disabled');
7217 }
7218
7219 if (cell.selected) {
7220 classes.push('selected');
7221 }
7222
7223 if (cell.customClass) {
7224 classes.push(cell.customClass);
7225 }
7226
7227 return classes.join(' ');
7228 },
7229 getDateOfCell: function getDateOfCell(row, column) {
7230 var offsetFromStart = row * 7 + (column - (this.showWeekNumber ? 1 : 0)) - this.offsetDay;
7231 return nextDate(this.startDate, offsetFromStart);
7232 },
7233 isWeekActive: function isWeekActive(cell) {
7234 if (this.selectionMode !== 'week') return false;
7235 var newDate = new Date(this.year, this.month, 1);
7236 var year = newDate.getFullYear();
7237 var month = newDate.getMonth();
7238
7239 if (cell.type === 'prev-month') {
7240 newDate.setMonth(month === 0 ? 11 : month - 1);
7241 newDate.setFullYear(month === 0 ? year - 1 : year);
7242 }
7243
7244 if (cell.type === 'next-month') {
7245 newDate.setMonth(month === 11 ? 0 : month + 1);
7246 newDate.setFullYear(month === 11 ? year + 1 : year);
7247 }
7248
7249 newDate.setDate(parseInt(cell.text, 10));
7250
7251 if (isDate(this.value)) {
7252 var dayOffset = (this.value.getDay() - this.firstDayOfWeek + 7) % 7 - 1;
7253 var weekDate = prevDate(this.value, dayOffset);
7254 return weekDate.getTime() === newDate.getTime();
7255 }
7256 return false;
7257 },
7258 markRange: function markRange(minDate, maxDate) {
7259 var _minDate = date_tablevue_type_script_lang_js_getDateTimestamp(minDate);
7260 var _maxDate = date_tablevue_type_script_lang_js_getDateTimestamp(maxDate) || _minDate;
7261 minDate = Math.min(_minDate, _maxDate);
7262 maxDate = Math.max(_minDate, _maxDate);
7263 var startDate = this.startDate;
7264 var rows = this.rows;
7265 for (var i = 0, k = rows.length; i < k; i++) {
7266 var row = rows[i];
7267 for (var j = 0, l = row.length; j < l; j++) {
7268 if (this.showWeekNumber && j === 0) continue;
7269
7270 var _cell = row[j];
7271 var index = i * 7 + j + (this.showWeekNumber ? -1 : 0);
7272 var time = nextDate(startDate, index - this.offsetDay).getTime();
7273
7274 _cell.inRange = minDate && time >= minDate && time <= maxDate;
7275 _cell.start = minDate && time === minDate;
7276 _cell.end = maxDate && time === maxDate;
7277 }
7278 }
7279 },
7280 handleMouseMove: function handleMouseMove(event) {
7281 if (!this.rangeState.selecting) return;
7282
7283 var target = event.target;
7284 if (target.tagName === 'SPAN') {
7285 target = target.parentNode.parentNode;
7286 }
7287 if (target.tagName === 'DIV') {
7288 target = target.parentNode;
7289 }
7290 if (target.tagName !== 'TD') return;
7291
7292 var row = target.parentNode.rowIndex;
7293 var column = target.cellIndex;
7294
7295 // can not select disabled date
7296 if (this.rows[row][column].disabled) return;
7297
7298 // only update rangeState when mouse moves to a new cell
7299 // this avoids frequent Date object creation and improves performance
7300 if (row !== this.lastRow || column !== this.lastColumn) {
7301 this.lastRow = row;
7302 this.lastColumn = column;
7303 this.$emit('changerange', {
7304 minDate: this.minDate,
7305 maxDate: this.maxDate,
7306 rangeState: {
7307 selecting: true,
7308 endDate: this.getDateOfCell(row, column)
7309 }
7310 });
7311 }
7312 },
7313 handleClick: function handleClick(event) {
7314 var target = event.target;
7315 if (target.tagName === 'SPAN') {
7316 target = target.parentNode.parentNode;
7317 }
7318 if (target.tagName === 'DIV') {
7319 target = target.parentNode;
7320 }
7321
7322 if (target.tagName !== 'TD') return;
7323
7324 var row = target.parentNode.rowIndex;
7325 var column = this.selectionMode === 'week' ? 1 : target.cellIndex;
7326 var cell = this.rows[row][column];
7327
7328 if (cell.disabled || cell.type === 'week') return;
7329
7330 var newDate = this.getDateOfCell(row, column);
7331 if (this.selectionMode === 'range') {
7332 if (!this.rangeState.selecting) {
7333 this.$emit('pick', { minDate: newDate, maxDate: null });
7334 this.rangeState.selecting = true;
7335 } else {
7336 if (newDate >= this.minDate) {
7337 this.$emit('pick', { minDate: this.minDate, maxDate: newDate });
7338 } else {
7339 this.$emit('pick', { minDate: newDate, maxDate: this.minDate });
7340 }
7341 this.rangeState.selecting = false;
7342 }
7343 } else if (this.selectionMode === 'day') {
7344 this.$emit('pick', newDate);
7345 } else if (this.selectionMode === 'week') {
7346 var weekNumber = getWeekNumber(newDate);
7347 var value = newDate.getFullYear() + 'w' + weekNumber;
7348 this.$emit('pick', {
7349 year: newDate.getFullYear(),
7350 week: weekNumber,
7351 value: value,
7352 date: newDate
7353 });
7354 } else if (this.selectionMode === 'dates') {
7355 var _value = this.value || [];
7356 var newValue = cell.selected ? date_tablevue_type_script_lang_js_removeFromArray(_value, function (date) {
7357 return date.getTime() === newDate.getTime();
7358 }) : [].concat(toConsumableArray_default()(_value), [newDate]);
7359 this.$emit('pick', newValue);
7360 }
7361 }
7362 }
7363});
7364// CONCATENATED MODULE: ./components/datepicker/base/date-table.vue?vue&type=script&lang=js&
7365 /* harmony default export */ var base_date_tablevue_type_script_lang_js_ = (date_tablevue_type_script_lang_js_);
7366// CONCATENATED MODULE: ./components/datepicker/base/date-table.vue
7367
7368
7369
7370
7371
7372/* normalize component */
7373
7374var date_table_component = Object(componentNormalizer["a" /* default */])(
7375 base_date_tablevue_type_script_lang_js_,
7376 date_tablevue_type_template_id_6c222915_render,
7377 date_tablevue_type_template_id_6c222915_staticRenderFns,
7378 false,
7379 null,
7380 null,
7381 null
7382
7383)
7384
7385/* hot reload */
7386if (false) { var date_table_api; }
7387date_table_component.options.__file = "components/datepicker/base/date-table.vue"
7388/* harmony default export */ var date_table = (date_table_component.exports);
7389// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/date.vue?vue&type=script&lang=js&
7390
7391//
7392//
7393//
7394//
7395//
7396//
7397//
7398//
7399//
7400//
7401//
7402//
7403//
7404//
7405//
7406//
7407//
7408//
7409//
7410//
7411//
7412//
7413//
7414//
7415//
7416//
7417//
7418//
7419//
7420//
7421//
7422//
7423//
7424//
7425//
7426//
7427//
7428//
7429//
7430//
7431//
7432//
7433//
7434//
7435//
7436//
7437//
7438//
7439//
7440//
7441//
7442//
7443//
7444//
7445//
7446//
7447//
7448//
7449//
7450//
7451//
7452//
7453//
7454//
7455//
7456//
7457//
7458//
7459//
7460//
7461//
7462//
7463//
7464//
7465//
7466//
7467//
7468//
7469//
7470//
7471//
7472//
7473//
7474//
7475//
7476//
7477//
7478//
7479//
7480//
7481//
7482//
7483//
7484//
7485//
7486//
7487//
7488//
7489//
7490//
7491//
7492//
7493//
7494//
7495//
7496//
7497//
7498//
7499//
7500//
7501//
7502//
7503//
7504//
7505//
7506//
7507//
7508//
7509//
7510//
7511//
7512//
7513//
7514//
7515//
7516//
7517//
7518//
7519//
7520//
7521//
7522//
7523//
7524//
7525//
7526//
7527//
7528//
7529//
7530//
7531//
7532//
7533//
7534//
7535//
7536//
7537//
7538//
7539//
7540//
7541//
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552/* harmony default export */ var datevue_type_script_lang_js_ = ({
7553 mixins: [locale_default.a],
7554 directives: { Clickoutside: clickoutside_default.a },
7555 props: {
7556 prefixCls: {
7557 type: String,
7558 default: 'mds-date'
7559 }
7560 },
7561 watch: {
7562 visible: function visible(val) {
7563 if (val) {
7564 this.timePickerVisible = false;
7565 }
7566 },
7567 value: function value(val) {
7568 if (this.selectionMode === 'dates' && this.value) return;
7569 if (Object(dateUtil_["isDate"])(val)) {
7570 this.date = new Date(val);
7571 } else {
7572 this.date = this.getDefaultValue();
7573 }
7574 },
7575 defaultValue: function defaultValue(val) {
7576 if (!Object(dateUtil_["isDate"])(this.value)) {
7577 this.date = val ? new Date(val) : new Date();
7578 }
7579 },
7580 timePickerVisible: function timePickerVisible(val) {
7581 var _this = this;
7582
7583 if (val) this.$nextTick(function () {
7584 return _this.$refs.timepicker.adjustSpinners();
7585 });
7586 },
7587 selectionMode: function selectionMode(newVal) {
7588 if (newVal === 'month') {
7589 /* istanbul ignore next */
7590 if (this.currentView !== 'year' || this.currentView !== 'month') {
7591 this.currentView = 'month';
7592 }
7593 } else if (newVal === 'dates') {
7594 this.currentView = 'date';
7595 }
7596 }
7597 },
7598
7599 methods: {
7600 proxyTimePickerDataProperties: function proxyTimePickerDataProperties() {
7601 var _this2 = this;
7602
7603 var format = function format() {
7604 _this2.$refs.timepicker.format = _this2.timeFormat;
7605 };
7606 var value = function value(_value) {
7607 _this2.$refs.timepicker.value = _value;
7608 };
7609 var date = function date(_date) {
7610 _this2.$refs.timepicker.date = _date;
7611 };
7612 var selectableRange = function selectableRange(_selectableRange) {
7613 _this2.$refs.timepicker.selectableRange = _selectableRange;
7614 };
7615
7616 this.$watch('format', format);
7617 this.$watch('value', value);
7618 this.$watch('date', date);
7619 this.$watch('selectableRange', selectableRange);
7620
7621 format();
7622 value(this.value);
7623 date(this.date);
7624 selectableRange(this.selectableRange);
7625 },
7626 handleClear: function handleClear() {
7627 this.date = this.getDefaultValue();
7628 this.$emit('pick', null);
7629 },
7630 emit: function emit(value) {
7631 var _this3 = this;
7632
7633 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
7634 args[_key - 1] = arguments[_key];
7635 }
7636
7637 if (!value) {
7638 this.$emit.apply(this, ['pick', value].concat(toConsumableArray_default()(args)));
7639 } else if (Array.isArray(value)) {
7640 var dates = value.map(function (date) {
7641 return _this3.showTime ? Object(dateUtil_["clearMilliseconds"])(date) : Object(dateUtil_["clearTime"])(date);
7642 });
7643 this.$emit.apply(this, ['pick', dates].concat(toConsumableArray_default()(args)));
7644 } else {
7645 this.$emit.apply(this, ['pick', this.showTime ? Object(dateUtil_["clearMilliseconds"])(value) : Object(dateUtil_["clearTime"])(value)].concat(toConsumableArray_default()(args)));
7646 }
7647 this.userInputDate = null;
7648 this.userInputTime = null;
7649 },
7650
7651
7652 // resetDate() {
7653 // this.date = new Date(this.date)
7654 // },
7655
7656 showMonthPicker: function showMonthPicker() {
7657 this.currentView = 'month';
7658 },
7659 showYearPicker: function showYearPicker() {
7660 this.currentView = 'year';
7661 },
7662
7663
7664 // XXX: 没用到
7665 // handleLabelClick() {
7666 // if (this.currentView === 'date') {
7667 // this.showMonthPicker()
7668 // } else if (this.currentView === 'month') {
7669 // this.showYearPicker()
7670 // }
7671 // },
7672
7673 prevMonth: function prevMonth() {
7674 this.date = Object(dateUtil_["prevMonth"])(this.date);
7675 },
7676 nextMonth: function nextMonth() {
7677 this.date = Object(dateUtil_["nextMonth"])(this.date);
7678 },
7679 prevYear: function prevYear() {
7680 if (this.currentView === 'year') {
7681 this.date = Object(dateUtil_["prevYear"])(this.date, 10);
7682 } else {
7683 this.date = Object(dateUtil_["prevYear"])(this.date);
7684 }
7685 },
7686 nextYear: function nextYear() {
7687 if (this.currentView === 'year') {
7688 this.date = Object(dateUtil_["nextYear"])(this.date, 10);
7689 } else {
7690 this.date = Object(dateUtil_["nextYear"])(this.date);
7691 }
7692 },
7693 handleTimePick: function handleTimePick(value, visible, first) {
7694 if (Object(dateUtil_["isDate"])(value)) {
7695 var newDate = this.value ? Object(dateUtil_["modifyTime"])(this.value, value.getHours(), value.getMinutes(), value.getSeconds()) : Object(dateUtil_["modifyWithTimeString"])(this.getDefaultValue(), this.defaultTime);
7696 this.date = newDate;
7697 this.emit(this.date, true);
7698 } else {
7699 this.emit(value, true);
7700 }
7701 if (!first) {
7702 this.timePickerVisible = visible;
7703 }
7704 },
7705 handleMonthPick: function handleMonthPick(month) {
7706 if (this.selectionMode === 'month') {
7707 this.date = Object(dateUtil_["modifyDate"])(this.date, this.year, month, 1);
7708 this.emit(this.date);
7709 } else {
7710 this.date = Object(dateUtil_["changeYearMonthAndClampDate"])(this.date, this.year, month);
7711 // TODO: should emit intermediate value ??
7712 // this.emit(this.date)
7713 this.currentView = 'date';
7714 }
7715 },
7716 handleDatePick: function handleDatePick(value) {
7717 if (this.selectionMode === 'day') {
7718 var newDate = this.value ? Object(dateUtil_["modifyDate"])(this.value, value.getFullYear(), value.getMonth(), value.getDate()) : Object(dateUtil_["modifyWithTimeString"])(value, this.defaultTime);
7719 // change default time while out of selectableRange
7720 if (!this.checkDateWithinRange(newDate)) {
7721 newDate = Object(dateUtil_["modifyDate"])(this.selectableRange[0][0], value.getFullYear(), value.getMonth(), value.getDate());
7722 }
7723 this.date = newDate;
7724 this.emit(this.date, this.showTime);
7725 } else if (this.selectionMode === 'week') {
7726 this.emit(value.date);
7727 } else if (this.selectionMode === 'dates') {
7728 this.emit(value, true); // set false to keep panel open
7729 }
7730 },
7731 handleYearPick: function handleYearPick(year) {
7732 if (this.selectionMode === 'year') {
7733 this.date = Object(dateUtil_["modifyDate"])(this.date, year, 0, 1);
7734 this.emit(this.date);
7735 } else {
7736 this.date = Object(dateUtil_["changeYearMonthAndClampDate"])(this.date, year, this.month);
7737 // TODO: should emit intermediate value ??
7738 // this.emit(this.date, true)
7739 this.currentView = 'month';
7740 }
7741 },
7742 changeToNow: function changeToNow() {
7743 // NOTE: not a permanent solution
7744 // consider disable "now" button in the future
7745 if ((!this.disabledDate || !this.disabledDate(new Date())) && this.checkDateWithinRange(new Date())) {
7746 this.date = new Date();
7747 this.emit(this.date);
7748 }
7749 },
7750 confirm: function confirm() {
7751 if (this.selectionMode === 'dates') {
7752 this.emit(this.value);
7753 } else {
7754 // value were emitted in handle{Date,Time}Pick, nothing to update here
7755 // deal with the scenario where: user opens the picker, then confirm without doing anything
7756 var value = this.value ? this.value : Object(dateUtil_["modifyWithTimeString"])(this.getDefaultValue(), this.defaultTime);
7757 this.date = new Date(value); // refresh date
7758 this.emit(value);
7759 }
7760 },
7761
7762 // 选择时间
7763 selectTime: function selectTime() {
7764 this.timePickerVisible = !this.timePickerVisible;
7765 },
7766 resetView: function resetView() {
7767 if (this.selectionMode === 'month') {
7768 this.currentView = 'month';
7769 } else if (this.selectionMode === 'year') {
7770 this.currentView = 'year';
7771 } else {
7772 this.currentView = 'date';
7773 }
7774 },
7775 handleEnter: function handleEnter() {
7776 document.body.addEventListener('keydown', this.handleKeydown);
7777 },
7778 handleLeave: function handleLeave() {
7779 this.$emit('dodestroy');
7780 document.body.removeEventListener('keydown', this.handleKeydown);
7781 },
7782 handleKeydown: function handleKeydown(event) {
7783 var keyCode = event.keyCode;
7784 var list = [38, 40, 37, 39];
7785 if (this.visible && !this.timePickerVisible) {
7786 if (list.indexOf(keyCode) !== -1) {
7787 this.handleKeyControl(keyCode);
7788 event.stopPropagation();
7789 event.preventDefault();
7790 }
7791 if (keyCode === 13 && this.userInputDate === null && this.userInputTime === null) {
7792 // Enter
7793 this.emit(this.date, false);
7794 }
7795 }
7796 },
7797 handleKeyControl: function handleKeyControl(keyCode) {
7798 var mapping = {
7799 'year': {
7800 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) {
7801 return date.setFullYear(date.getFullYear() + step);
7802 }
7803 },
7804 'month': {
7805 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) {
7806 return date.setMonth(date.getMonth() + step);
7807 }
7808 },
7809 'week': {
7810 38: -1, 40: 1, 37: -1, 39: 1, offset: function offset(date, step) {
7811 return date.setDate(date.getDate() + step * 7);
7812 }
7813 },
7814 'day': {
7815 38: -7, 40: 7, 37: -1, 39: 1, offset: function offset(date, step) {
7816 return date.setDate(date.getDate() + step);
7817 }
7818 }
7819 };
7820 var mode = this.selectionMode;
7821 var year = 3.1536e10;
7822 var now = this.date.getTime();
7823 var newDate = new Date(this.date.getTime());
7824 while (Math.abs(now - newDate.getTime()) <= year) {
7825 var map = mapping[mode];
7826 map.offset(newDate, map[keyCode]);
7827 if (typeof this.disabledDate === 'function' && this.disabledDate(newDate)) {
7828 continue;
7829 }
7830 this.date = newDate;
7831 this.$emit('pick', newDate, true);
7832 break;
7833 }
7834 },
7835
7836
7837 // handleVisibleTimeChange(value) {
7838 // const time = parseDate(value, this.timeFormat)
7839 // if (time && this.checkDateWithinRange(time)) {
7840 // this.date = modifyDate(time, this.year, this.month, this.monthDate)
7841 // this.userInputTime = null
7842 // this.$refs.timepicker.value = this.date
7843 // this.timePickerVisible = false
7844 // this.emit(this.date, true)
7845 // }
7846 // },
7847
7848 handleVisibleDateChange: function handleVisibleDateChange(value) {
7849 var date = Object(dateUtil_["parseDate"])(value, this.dateFormat);
7850 if (date) {
7851 if (typeof this.disabledDate === 'function' && this.disabledDate(date)) {
7852 return;
7853 }
7854 this.date = Object(dateUtil_["modifyTime"])(date, this.date.getHours(), this.date.getMinutes(), this.date.getSeconds());
7855 this.userInputDate = null;
7856 this.resetView();
7857 this.emit(this.date, true);
7858 }
7859 },
7860 isValidValue: function isValidValue(value) {
7861 return value && !isNaN(value) && (typeof this.disabledDate === 'function' ? !this.disabledDate(value) : true) && this.checkDateWithinRange(value);
7862 },
7863 getDefaultValue: function getDefaultValue() {
7864 // if default-value is set, return it
7865 // otherwise, return now (the moment this method gets called)
7866 return this.defaultValue ? new Date(this.defaultValue) : new Date();
7867 },
7868 checkDateWithinRange: function checkDateWithinRange(date) {
7869 return this.selectableRange.length > 0 ? Object(dateUtil_["timeWithinRange"])(date, this.selectableRange, this.format || 'HH:mm:ss') : true;
7870 }
7871 },
7872
7873 components: {
7874 TimePicker: picker_time, YearTable: year_table, MonthTable: month_table, DateTable: date_table, MdsButton: external_button_default.a
7875 },
7876
7877 data: function data() {
7878 return {
7879 popperClass: '',
7880 date: new Date(),
7881 value: '',
7882 defaultValue: null, // use getDefaultValue() for time computation
7883 defaultTime: null,
7884 showTime: false,
7885 selectionMode: 'day',
7886 shortcuts: '',
7887 visible: false,
7888 currentView: 'date',
7889 disabledDate: '',
7890 cellClassName: '',
7891 selectableRange: [],
7892 firstDayOfWeek: 7,
7893 showWeekNumber: false,
7894 timePickerVisible: false,
7895 format: '',
7896 arrowControl: false,
7897 userInputDate: null,
7898 userInputTime: null
7899 };
7900 },
7901
7902
7903 computed: {
7904 wrapperClass: function wrapperClass() {
7905 return [this.prefixCls + '-picker', this.prefixCls + '-picker-panel', this.prefixCls + '-popper', { 'has-sidebar': this.$slots.sidebar || this.shortcuts }, { 'has-time': this.showTime }, this.popperClass];
7906 },
7907 contentBoxClass: function contentBoxClass() {
7908 return [this.prefixCls + '-picker-panel-warpper'];
7909 },
7910 year: function year() {
7911 return this.date.getFullYear();
7912 },
7913 month: function month() {
7914 return this.date.getMonth();
7915 },
7916 week: function week() {
7917 return Object(dateUtil_["getWeekNumber"])(this.date);
7918 },
7919 monthDate: function monthDate() {
7920 return this.date.getDate();
7921 },
7922 footerVisible: function footerVisible() {
7923 return this.showTime || this.selectionMode === 'dates';
7924 },
7925 visibleTime: function visibleTime() {
7926 if (this.userInputTime !== null) {
7927 return this.userInputTime;
7928 } else {
7929 return Object(dateUtil_["formatDate"])(this.value || this.defaultValue, this.timeFormat);
7930 }
7931 },
7932 visibleDate: function visibleDate() {
7933 if (this.userInputDate !== null) {
7934 return this.userInputDate;
7935 } else {
7936 return Object(dateUtil_["formatDate"])(this.value || this.defaultValue, this.dateFormat);
7937 }
7938 },
7939 yearLabel: function yearLabel() {
7940 var yearTranslation = this.t('mds.datepicker.year');
7941 if (this.currentView === 'year') {
7942 var startYear = Math.floor(this.year / 10) * 10;
7943 if (yearTranslation) {
7944 return startYear + ' ' + yearTranslation + ' - ' + (startYear + 9) + ' ' + yearTranslation;
7945 }
7946 return startYear + ' - ' + (startYear + 9);
7947 }
7948 return this.year + ' ' + yearTranslation;
7949 },
7950 timerHeaderLabel: function timerHeaderLabel() {
7951 var yearTranslation = this.t('mds.datepicker.year');
7952 return this.date && this.year + ' ' + yearTranslation + ' ' + this.t('mds.datepicker.month' + (this.month + 1)) + ' ' + this.date.getDate() + ' ' + '日';
7953 },
7954 timeFormat: function timeFormat() {
7955 if (this.format) {
7956 return Object(dateUtil_["extractTimeFormat"])(this.format);
7957 } else {
7958 return 'HH:mm:ss';
7959 }
7960 },
7961 dateFormat: function dateFormat() {
7962 if (this.format) {
7963 return Object(dateUtil_["extractDateFormat"])(this.format);
7964 } else {
7965 return 'yyyy-MM-dd';
7966 }
7967 }
7968 }
7969});
7970// CONCATENATED MODULE: ./components/datepicker/picker/date.vue?vue&type=script&lang=js&
7971 /* harmony default export */ var picker_datevue_type_script_lang_js_ = (datevue_type_script_lang_js_);
7972// CONCATENATED MODULE: ./components/datepicker/picker/date.vue
7973
7974
7975
7976
7977
7978/* normalize component */
7979
7980var date_component = Object(componentNormalizer["a" /* default */])(
7981 picker_datevue_type_script_lang_js_,
7982 datevue_type_template_id_1a0bc492_render,
7983 datevue_type_template_id_1a0bc492_staticRenderFns,
7984 false,
7985 null,
7986 null,
7987 null
7988
7989)
7990
7991/* hot reload */
7992if (false) { var date_api; }
7993date_component.options.__file = "components/datepicker/picker/date.vue"
7994/* harmony default export */ var picker_date = (date_component.exports);
7995// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/range/date-range.vue?vue&type=template&id=6eca7cf8&
7996var date_rangevue_type_template_id_6eca7cf8_render = function () {
7997 var _obj, _obj$1
7998 var _vm = this
7999 var _h = _vm.$createElement
8000 var _c = _vm._self._c || _h
8001 return _c(
8002 "transition",
8003 {
8004 attrs: { name: "mds-date-zoom-in-top" },
8005 on: {
8006 "after-leave": function ($event) {
8007 return _vm.$emit("dodestroy")
8008 },
8009 },
8010 },
8011 [
8012 _c(
8013 "div",
8014 {
8015 directives: [
8016 {
8017 name: "show",
8018 rawName: "v-show",
8019 value: _vm.visible,
8020 expression: "visible",
8021 },
8022 ],
8023 class: _vm.wrapperClass,
8024 },
8025 [
8026 _c("div", { class: this.prefixCls + "-picker-panel-wrapper" }, [
8027 _c(
8028 "div",
8029 { class: this.prefixCls + "-picker-panel-body" },
8030 [
8031 _vm.isFlat
8032 ? _c("date-time-selecter", {
8033 attrs: {
8034 maxDate: _vm.maxDate,
8035 minDate: _vm.minDate,
8036 format: _vm.format,
8037 step: _vm.step,
8038 visible: _vm.visible,
8039 },
8040 on: {
8041 pickMin: _vm.handleMinTimePick,
8042 pickMax: _vm.handleMaxTimePick,
8043 },
8044 })
8045 : _vm._e(),
8046 _c("div", { staticClass: "is-left" }, [
8047 !_vm.timePickerVisible
8048 ? _c(
8049 "div",
8050 { class: this.prefixCls + "-picker-panel-header" },
8051 [
8052 _c("i", {
8053 staticClass:
8054 "mdsicon mdsicon-line-caret-left-double",
8055 class: [
8056 _vm.prefixCls + "-picker-panel-header-base-icon",
8057 _vm.prefixCls + "-picker-panel-header-base-left",
8058 _vm.prefixCls + "-other-icon",
8059 _vm.prefixCls + "-left-prev-year",
8060 ],
8061 attrs: {
8062 "aria-label": _vm.t("mds.datepicker.prevYear"),
8063 },
8064 on: { click: _vm.leftPrevYear },
8065 }),
8066 _c("i", {
8067 staticClass: "mdsicon mdsicon-line-caret-left",
8068 class: [
8069 _vm.prefixCls + "-picker-panel-header-base-icon",
8070 _vm.prefixCls + "-picker-panel-header-base-left",
8071 _vm.prefixCls + "-other-icon",
8072 _vm.prefixCls + "-left-prev-month",
8073 ],
8074 attrs: {
8075 "aria-label": _vm.t("mds.datepicker.prevMonth"),
8076 },
8077 on: { click: _vm.leftPrevMonth },
8078 }),
8079 _c(
8080 "span",
8081 {
8082 class:
8083 _vm.prefixCls + "-picker-panel-header-label",
8084 },
8085 [_vm._v(_vm._s(_vm.leftLabel))]
8086 ),
8087 _vm.unlinkPanels
8088 ? _c("i", {
8089 staticClass:
8090 "mdsicon mdsicon-line-caret-right-double",
8091 class: [
8092 _vm.prefixCls +
8093 "-picker-panel-header-base-icon",
8094 _vm.prefixCls +
8095 "-picker-panel-header-base-right",
8096 _vm.prefixCls + "-other-icon",
8097 _vm.prefixCls + "-left-next-year",
8098 { "is-disabled": !_vm.enableYearArrow },
8099 ],
8100 attrs: {
8101 "aria-label": _vm.t(
8102 "mds.datepicker.prevYear"
8103 ),
8104 },
8105 on: { click: _vm.leftNextYear },
8106 })
8107 : _vm._e(),
8108 _vm.unlinkPanels
8109 ? _c("i", {
8110 staticClass: "mdsicon mdsicon-line-caret-right",
8111 class: [
8112 _vm.prefixCls +
8113 "-picker-panel-header-base-icon",
8114 _vm.prefixCls + "-other-icon",
8115 _vm.prefixCls +
8116 "-picker-panel-header-base-right",
8117 _vm.prefixCls + "-left-next-month",
8118 { "is-disabled": !_vm.enableMonthArrow },
8119 ],
8120 attrs: {
8121 "aria-label": _vm.t(
8122 "mds.datepicker.prevMonth"
8123 ),
8124 },
8125 on: { click: _vm.leftNextMonth },
8126 })
8127 : _vm._e(),
8128 ]
8129 )
8130 : _c(
8131 "div",
8132 { class: this.prefixCls + "-picker-panel-header" },
8133 [
8134 _c(
8135 "span",
8136 {
8137 class:
8138 _vm.prefixCls +
8139 "-picker-panel-header-label " +
8140 this.prefixCls +
8141 "-picker-timer-label",
8142 },
8143 [_vm._v(_vm._s(_vm.leftTimeLabel))]
8144 ),
8145 ]
8146 ),
8147 !_vm.timePickerVisible
8148 ? _c(
8149 "div",
8150 { class: this.prefixCls + "-picker-panel-content" },
8151 [
8152 _c("date-table", {
8153 attrs: {
8154 "selection-mode": "range",
8155 date: _vm.leftDate,
8156 "default-value": _vm.defaultValue,
8157 "min-date": _vm.minDate,
8158 "max-date": _vm.maxDate,
8159 "range-state": _vm.rangeState,
8160 "disabled-date": _vm.disabledDate,
8161 "cell-class-name": _vm.cellClassName,
8162 "first-day-of-week": _vm.firstDayOfWeek,
8163 },
8164 on: {
8165 changerange: _vm.handleChangeRange,
8166 pick: _vm.handleRangePick,
8167 },
8168 }),
8169 ],
8170 1
8171 )
8172 : _vm._e(),
8173 _c(
8174 "div",
8175 {
8176 directives: [
8177 {
8178 name: "show",
8179 rawName: "v-show",
8180 value: _vm.timePickerVisible,
8181 expression: "timePickerVisible",
8182 },
8183 ],
8184 class: this.prefixCls + "-picker-panel-content",
8185 },
8186 [
8187 _c("time-picker", {
8188 ref: "minTimePicker",
8189 attrs: {
8190 "time-arrow-control": _vm.arrowControl,
8191 visible: _vm.timePickerVisible,
8192 step: _vm.step,
8193 },
8194 on: {
8195 pick: _vm.handleMinTimePick,
8196 mounted: function ($event) {
8197 _vm.$refs.minTimePicker.format = _vm.timeFormat
8198 },
8199 },
8200 }),
8201 ],
8202 1
8203 ),
8204 ]),
8205 _c("div", { staticClass: "is-right" }, [
8206 !_vm.timePickerVisible
8207 ? _c(
8208 "div",
8209 { class: this.prefixCls + "-picker-panel-header" },
8210 [
8211 _vm.unlinkPanels
8212 ? _c("i", {
8213 staticClass:
8214 "mdsicon mdsicon-line-caret-left-double",
8215 class: [
8216 _vm.prefixCls +
8217 "-picker-panel-header-base-icon",
8218 _vm.prefixCls +
8219 "-picker-panel-header-base-left",
8220 _vm.prefixCls + "-other-icon",
8221 _vm.prefixCls + "-right-prev-year",
8222 { "is-disabled": !_vm.enableYearArrow },
8223 ],
8224 attrs: {
8225 "aria-label": _vm.t(
8226 "mds.datepicker.prevYear"
8227 ),
8228 },
8229 on: { click: _vm.rightPrevYear },
8230 })
8231 : _vm._e(),
8232 _vm.unlinkPanels
8233 ? _c("i", {
8234 staticClass: "mdsicon mdsicon-line-caret-left",
8235 class: [
8236 _vm.prefixCls +
8237 "-picker-panel-header-base-icon",
8238 _vm.prefixCls +
8239 "-picker-panel-header-base-left",
8240 _vm.prefixCls + "-right-prev-month",
8241 _vm.prefixCls + "-other-icon",
8242 { "is-disabled": !_vm.enableMonthArrow },
8243 ],
8244 attrs: {
8245 "aria-label": _vm.t(
8246 "mds.datepicker.prevMonth"
8247 ),
8248 },
8249 on: { click: _vm.rightPrevMonth },
8250 })
8251 : _vm._e(),
8252 _c(
8253 "span",
8254 {
8255 class:
8256 _vm.prefixCls + "-picker-panel-header-label",
8257 },
8258 [_vm._v(_vm._s(_vm.rightLabel))]
8259 ),
8260 _c("i", {
8261 staticClass:
8262 "mdsicon mdsicon-line-caret-right-double",
8263 class: [
8264 _vm.prefixCls + "-picker-panel-header-base-icon",
8265 _vm.prefixCls + "-right-next-year",
8266 _vm.prefixCls + "-other-icon",
8267 _vm.prefixCls + "-picker-panel-header-base-right",
8268 ],
8269 attrs: {
8270 "aria-label": _vm.t("mds.datepicker.prevYear"),
8271 },
8272 on: { click: _vm.rightNextYear },
8273 }),
8274 _c("i", {
8275 staticClass: "mdsicon mdsicon-line-caret-right",
8276 class: [
8277 _vm.prefixCls + "-picker-panel-header-base-icon",
8278 _vm.prefixCls + "-right-next-month",
8279 _vm.prefixCls + "-other-icon",
8280 _vm.prefixCls + "-picker-panel-header-base-right",
8281 ],
8282 attrs: {
8283 "aria-label": _vm.t("mds.datepicker.prevMonth"),
8284 },
8285 on: { click: _vm.rightNextMonth },
8286 }),
8287 ]
8288 )
8289 : _c(
8290 "div",
8291 { class: this.prefixCls + "-picker-panel-header" },
8292 [
8293 _c(
8294 "span",
8295 {
8296 class:
8297 _vm.prefixCls +
8298 "-picker-panel-header-label " +
8299 this.prefixCls +
8300 "-picker-timer-label",
8301 },
8302 [_vm._v(_vm._s(_vm.rightTimeLabel))]
8303 ),
8304 ]
8305 ),
8306 !_vm.timePickerVisible
8307 ? _c(
8308 "div",
8309 { class: this.prefixCls + "-picker-panel-content" },
8310 [
8311 _c("date-table", {
8312 attrs: {
8313 "selection-mode": "range",
8314 date: _vm.rightDate,
8315 "default-value": _vm.defaultValue,
8316 "min-date": _vm.minDate,
8317 "max-date": _vm.maxDate,
8318 "range-state": _vm.rangeState,
8319 "disabled-date": _vm.disabledDate,
8320 "cell-class-name": _vm.cellClassName,
8321 "first-day-of-week": _vm.firstDayOfWeek,
8322 },
8323 on: {
8324 changerange: _vm.handleChangeRange,
8325 pick: _vm.handleRangePick,
8326 },
8327 }),
8328 ],
8329 1
8330 )
8331 : _vm._e(),
8332 _c(
8333 "div",
8334 {
8335 directives: [
8336 {
8337 name: "show",
8338 rawName: "v-show",
8339 value: _vm.timePickerVisible,
8340 expression: "timePickerVisible",
8341 },
8342 ],
8343 class: this.prefixCls + "-picker-panel-content",
8344 },
8345 [
8346 _c("time-picker", {
8347 ref: "maxTimePicker",
8348 attrs: {
8349 "time-arrow-control": _vm.arrowControl,
8350 visible: _vm.timePickerVisible,
8351 step: _vm.step,
8352 },
8353 on: {
8354 pick: _vm.handleMaxTimePick,
8355 mounted: function ($event) {
8356 _vm.$refs.maxTimePicker.format = _vm.timeFormat
8357 },
8358 },
8359 }),
8360 ],
8361 1
8362 ),
8363 ]),
8364 ],
8365 1
8366 ),
8367 ]),
8368 _vm.showTime
8369 ? _c(
8370 "div",
8371 { class: _vm.prefixCls + "-picker-panel-footer" },
8372 [
8373 _c(
8374 "mds-button",
8375 {
8376 class:
8377 ((_obj = {}),
8378 (_obj[
8379 _vm.prefixCls + "-picker-panel-today-btn"
8380 ] = true),
8381 (_obj[_vm.prefixCls + "-picker-panel-flat-clear"] =
8382 _vm.pickerType === "datetimerangeflat"),
8383 _obj),
8384 attrs: { type: "normal", size: "small" },
8385 on: { click: _vm.handleClear },
8386 },
8387 [
8388 _vm._v(
8389 "\n " +
8390 _vm._s(_vm.t("mds.datepicker.clear")) +
8391 "\n "
8392 ),
8393 ]
8394 ),
8395 !_vm.isFlat
8396 ? _c(
8397 "mds-button",
8398 {
8399 attrs: {
8400 type: "normal",
8401 size: "small",
8402 disabled: !(this.maxDate && this.minDate),
8403 },
8404 on: { click: _vm.selectTime },
8405 },
8406 [
8407 _vm._v(
8408 "\n " +
8409 _vm._s(
8410 _vm.timePickerVisible ? "选择日期" : "选择时间"
8411 ) +
8412 "\n "
8413 ),
8414 ]
8415 )
8416 : _vm._e(),
8417 _c(
8418 "mds-button",
8419 {
8420 class:
8421 ((_obj$1 = {}),
8422 (_obj$1[
8423 _vm.prefixCls + "-picker-panel-time-picker"
8424 ] = true),
8425 (_obj$1[_vm.prefixCls + "-picker-panel-flat-confirm"] =
8426 _vm.pickerType === "datetimerangeflat"),
8427 (_obj$1[
8428 _vm.prefixCls + "-picker-panel-sure-btn"
8429 ] = true),
8430 _obj$1),
8431 attrs: {
8432 plain: "",
8433 size: "small",
8434 type: "primary",
8435 ghost: "",
8436 disabled: _vm.btnDisabled,
8437 },
8438 on: {
8439 click: function ($event) {
8440 return _vm.handleConfirm(false)
8441 },
8442 },
8443 },
8444 [
8445 _vm._v(
8446 "\n " +
8447 _vm._s(_vm.t("mds.datepicker.confirm")) +
8448 "\n "
8449 ),
8450 ]
8451 ),
8452 ],
8453 1
8454 )
8455 : _vm._e(),
8456 ]
8457 ),
8458 ]
8459 )
8460}
8461var date_rangevue_type_template_id_6eca7cf8_staticRenderFns = []
8462date_rangevue_type_template_id_6eca7cf8_render._withStripped = true
8463
8464
8465// CONCATENATED MODULE: ./components/datepicker/range/date-range.vue?vue&type=template&id=6eca7cf8&
8466
8467// EXTERNAL MODULE: external "babel-runtime/helpers/slicedToArray"
8468var slicedToArray_ = __webpack_require__(56);
8469var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray_);
8470
8471// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/datetime-select.vue?vue&type=template&id=5b910c15&
8472var datetime_selectvue_type_template_id_5b910c15_render = function () {
8473 var _vm = this
8474 var _h = _vm.$createElement
8475 var _c = _vm._self._c || _h
8476 return _c(
8477 "div",
8478 { staticClass: "mds-time-selecter-wrapper" },
8479 [
8480 _c("mds-input", {
8481 staticClass: "mds-time-selecter-date-start",
8482 attrs: {
8483 size: "mini",
8484 width: "142px",
8485 value: _vm.displayMinDate,
8486 disabled: _vm.disabled,
8487 placeholder: "开始日期",
8488 },
8489 }),
8490 _c(
8491 "section",
8492 { staticClass: "time-content" },
8493 [
8494 _c("mds-input", {
8495 staticClass: "mds-time-selecter-time-start",
8496 attrs: {
8497 size: "mini",
8498 width: "142px",
8499 placeholder: "开始时间",
8500 value: _vm.displayMinTime,
8501 disabled: _vm.disabled,
8502 },
8503 on: { click: _vm.handleTimeStartOpen },
8504 }),
8505 _c("mds-transition", { attrs: { type: "slide", motion: "up" } }, [
8506 _c(
8507 "div",
8508 {
8509 directives: [
8510 {
8511 name: "show",
8512 rawName: "v-show",
8513 value: _vm.minTimeVisible,
8514 expression: "minTimeVisible",
8515 },
8516 {
8517 name: "clickoutside",
8518 rawName: "v-clickoutside",
8519 value: _vm.handleTimeStartClose,
8520 expression: "handleTimeStartClose",
8521 },
8522 ],
8523 staticClass: "mds-time-selecter-spin",
8524 },
8525 [
8526 _c("time-spinner", {
8527 ref: "startSpinner",
8528 attrs: {
8529 "arrow-control": _vm.useArrow,
8530 "am-pm-mode": _vm.amPmMode,
8531 "listen-scroll": _vm.listenScroll,
8532 step: _vm.step,
8533 date: _vm.minDate,
8534 format: _vm.timeFormat,
8535 },
8536 on: {
8537 change: _vm.handleMinChange,
8538 "select-range": _vm.setSelectionRange,
8539 },
8540 }),
8541 _c(
8542 "div",
8543 { staticClass: "spinner-confirm" },
8544 [
8545 _c(
8546 "mds-button",
8547 {
8548 attrs: { type: "normal", shadowAnimate: false },
8549 on: { click: _vm.handleTimeStartClose },
8550 },
8551 [_vm._v("确定")]
8552 ),
8553 ],
8554 1
8555 ),
8556 ],
8557 1
8558 ),
8559 ]),
8560 ],
8561 1
8562 ),
8563 _c("mds-icon", {
8564 staticClass: "mds-time-selecter-arrow",
8565 attrs: { type: "line-caret-right" },
8566 }),
8567 _c("mds-input", {
8568 staticClass: "mds-time-selecter-date-end",
8569 attrs: {
8570 size: "mini",
8571 width: "142px",
8572 value: _vm.displayMaxDate,
8573 disabled: _vm.disabled,
8574 placeholder: "结束日期",
8575 },
8576 }),
8577 _c("section", [
8578 _c(
8579 "section",
8580 { staticClass: "time-content" },
8581 [
8582 _c("mds-input", {
8583 staticClass: "mds-time-selecter-time-end",
8584 attrs: {
8585 size: "mini",
8586 width: "142px",
8587 value: _vm.displayMaxTime,
8588 disabled: _vm.disabled,
8589 placeholder: "结束时间",
8590 },
8591 on: { click: _vm.handleTimeEndOpen },
8592 }),
8593 _c("mds-transition", { attrs: { type: "slide", motion: "up" } }, [
8594 _c(
8595 "div",
8596 {
8597 directives: [
8598 {
8599 name: "show",
8600 rawName: "v-show",
8601 value: _vm.maxTimeVisible,
8602 expression: "maxTimeVisible",
8603 },
8604 {
8605 name: "clickoutside",
8606 rawName: "v-clickoutside",
8607 value: _vm.handleTimeEndClose,
8608 expression: "handleTimeEndClose",
8609 },
8610 ],
8611 staticClass:
8612 "mds-time-selecter-spin mds-time-selecter-spin-right",
8613 },
8614 [
8615 _c("time-spinner", {
8616 ref: "endSpinner",
8617 attrs: {
8618 "arrow-control": _vm.useArrow,
8619 "am-pm-mode": _vm.amPmMode,
8620 "listen-scroll": _vm.listenScroll,
8621 step: _vm.step,
8622 date: _vm.maxDate,
8623 format: _vm.timeFormat,
8624 },
8625 on: {
8626 change: _vm.handleMaxChange,
8627 "select-range": _vm.setSelectionRange,
8628 },
8629 }),
8630 _c(
8631 "div",
8632 { staticClass: "spinner-confirm" },
8633 [
8634 _c(
8635 "mds-button",
8636 {
8637 attrs: { type: "normal", shadowAnimate: false },
8638 on: { click: _vm.handleTimeEndClose },
8639 },
8640 [_vm._v("\n 确定\n ")]
8641 ),
8642 ],
8643 1
8644 ),
8645 ],
8646 1
8647 ),
8648 ]),
8649 ],
8650 1
8651 ),
8652 ]),
8653 ],
8654 1
8655 )
8656}
8657var datetime_selectvue_type_template_id_5b910c15_staticRenderFns = []
8658datetime_selectvue_type_template_id_5b910c15_render._withStripped = true
8659
8660
8661// CONCATENATED MODULE: ./components/datepicker/picker/datetime-select.vue?vue&type=template&id=5b910c15&
8662
8663// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/datetime-select.vue?vue&type=script&lang=js&
8664//
8665//
8666//
8667//
8668//
8669//
8670//
8671//
8672//
8673//
8674//
8675//
8676//
8677//
8678//
8679//
8680//
8681//
8682//
8683//
8684//
8685//
8686//
8687//
8688//
8689//
8690//
8691//
8692//
8693//
8694//
8695//
8696//
8697//
8698//
8699//
8700//
8701//
8702//
8703//
8704//
8705//
8706//
8707//
8708//
8709//
8710//
8711//
8712//
8713//
8714//
8715//
8716//
8717//
8718//
8719//
8720//
8721//
8722//
8723//
8724//
8725//
8726//
8727//
8728//
8729//
8730//
8731//
8732//
8733//
8734//
8735//
8736//
8737//
8738//
8739//
8740//
8741//
8742//
8743//
8744//
8745//
8746//
8747//
8748//
8749//
8750//
8751//
8752//
8753//
8754//
8755//
8756//
8757//
8758//
8759//
8760//
8761//
8762//
8763//
8764//
8765//
8766//
8767//
8768//
8769//
8770
8771
8772
8773
8774
8775
8776
8777
8778/* harmony default export */ var datetime_selectvue_type_script_lang_js_ = ({
8779 components: {
8780 TimeSpinner: time_spinner,
8781 MdsInput: external_input_default.a,
8782 MdsIcon: external_icon_default.a,
8783 MdsButton: external_button_default.a
8784 },
8785 directives: { Clickoutside: clickoutside_default.a },
8786 props: {
8787 visible: Boolean,
8788 timeArrowControl: Boolean,
8789 listenScroll: Boolean,
8790 step: Number,
8791 maxDate: Date,
8792 minDate: Date,
8793 format: String,
8794 type: String
8795 },
8796
8797 watch: {
8798 minDate: {
8799 handler: function handler() {
8800 var _this = this;
8801
8802 this.displayMinDate = Object(dateUtil_["formatDate"])(this.minDate, this.dateFormat);
8803 this.displayMinTime = Object(dateUtil_["formatDate"])(this.minDate, this.timeFormat);
8804 this.$nextTick(function () {
8805 _this.disabled = _this.judgeDisabled();
8806 });
8807 },
8808
8809 immediate: true
8810 },
8811 maxDate: {
8812 handler: function handler(val) {
8813 var _this2 = this;
8814
8815 if (this.minDate && !val) {
8816 return;
8817 }
8818 this.displayMaxDate = Object(dateUtil_["formatDate"])(this.maxDate, this.dateFormat);
8819 this.displayMaxTime = Object(dateUtil_["formatDate"])(this.maxDate, this.timeFormat);
8820 this.$nextTick(function () {
8821 _this2.disabled = _this2.judgeDisabled();
8822 });
8823 },
8824
8825 immediate: true
8826 },
8827 visible: function visible(val) {
8828 var _this3 = this;
8829
8830 if (val) {
8831 this.oldValue = this.value;
8832 this.$nextTick(function () {
8833 _this3.$refs.startSpinner.emitSelectRange('hours');
8834 _this3.$refs.endSpinner.emitSelectRange('hours');
8835 });
8836 } else {
8837 this.needInitAdjust = true;
8838 }
8839 },
8840 selectableRange: function selectableRange(val) {
8841 this.$refs.spinner.selectableRange = val;
8842 }
8843 },
8844
8845 data: function data() {
8846 return {
8847 value: '',
8848 oldValue: new Date(),
8849 selectableRange: [],
8850 selectionRange: [0, 2],
8851 arrowControl: false,
8852 needInitAdjust: true,
8853 minTimeVisible: false,
8854 maxTimeVisible: false,
8855 displayMinDate: '',
8856 displayMaxDate: '',
8857 disabled: true
8858 };
8859 },
8860
8861
8862 computed: {
8863 timeFormat: function timeFormat() {
8864 if (this.format) {
8865 return Object(dateUtil_["extractTimeFormat"])(this.format);
8866 } else {
8867 return 'HH:mm:ss';
8868 }
8869 },
8870 dateFormat: function dateFormat() {
8871 if (this.format) {
8872 return Object(dateUtil_["extractDateFormat"])(this.format);
8873 } else {
8874 return 'yyyy-MM-dd';
8875 }
8876 },
8877 showSeconds: function showSeconds() {
8878 return (this.format || '').indexOf('ss') !== -1;
8879 },
8880 useArrow: function useArrow() {
8881 return this.arrowControl || this.timeArrowControl || false;
8882 },
8883 amPmMode: function amPmMode() {
8884 if ((this.format || '').indexOf('A') !== -1) return 'A';
8885 if ((this.format || '').indexOf('a') !== -1) return 'a';
8886 return '';
8887 }
8888 },
8889
8890 methods: {
8891 judgeDisabled: function judgeDisabled() {
8892 return !this.minDate || !this.maxDate;
8893 },
8894 handleTimeStartOpen: function handleTimeStartOpen() {
8895 var _this4 = this;
8896
8897 if (!this.minTimeVisible) {
8898 this.minTimeVisible = true;
8899 this.$nextTick(function () {
8900 _this4.$refs.startSpinner.adjustSpinners();
8901 });
8902 }
8903 },
8904 handleTimeEndOpen: function handleTimeEndOpen() {
8905 if (!this.maxTimeVisible) {
8906 this.maxTimeVisible = true;
8907 }
8908 },
8909 handleTimeStartClose: function handleTimeStartClose() {
8910 this.minTimeVisible = false;
8911 },
8912 handleTimeEndClose: function handleTimeEndClose() {
8913 this.maxTimeVisible = false;
8914 },
8915 handleCancel: function handleCancel() {
8916 this.$emit('pick', this.oldValue, false);
8917 },
8918 handleMinChange: function handleMinChange(date) {
8919 if (this.visible) {
8920 this.date = Object(dateUtil_["clearMilliseconds"])(date);
8921 // if date is out of range, do not emit
8922 if (this.isValidValue(this.date)) {
8923 this.$emit('pickMin', this.date, true);
8924 }
8925 }
8926 },
8927 handleMaxChange: function handleMaxChange(date) {
8928 if (this.visible) {
8929 this.date = Object(dateUtil_["clearMilliseconds"])(date);
8930 // if date is out of range, do not emit
8931 if (this.isValidValue(this.date)) {
8932 this.$emit('pickMax', this.date, true);
8933 }
8934 }
8935 },
8936 setSelectionRange: function setSelectionRange(start, end) {
8937 this.$emit('select-range', start, end);
8938 this.selectionRange = [start, end];
8939 },
8940 handleKeydown: function handleKeydown(event) {
8941 var keyCode = event.keyCode;
8942 var mapping = { 38: -1, 40: 1, 37: -1, 39: 1
8943
8944 // Left or Right
8945 };if (keyCode === 37 || keyCode === 39) {
8946 var step = mapping[keyCode];
8947 this.changeSelectionRange(step);
8948 event.preventDefault();
8949 return '';
8950 }
8951
8952 // Up or Down
8953 if (keyCode === 38 || keyCode === 40) {
8954 var _step = mapping[keyCode];
8955 this.$refs.spinner.scrollDown(_step);
8956 event.preventDefault();
8957 return '';
8958 }
8959 },
8960 isValidValue: function isValidValue(date) {
8961 return Object(dateUtil_["timeWithinRange"])(date, this.selectableRange, this.format);
8962 },
8963 adjustSpinners: function adjustSpinners() {
8964 return this.$refs.spinner.adjustSpinners();
8965 },
8966 changeSelectionRange: function changeSelectionRange(step) {
8967 var list = [0, 3].concat(this.showSeconds ? [6] : []);
8968 var mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);
8969 var index = list.indexOf(this.selectionRange[0]);
8970 var next = (index + step + list.length) % list.length;
8971 this.$refs.spinner.emitSelectRange(mapping[next]);
8972 }
8973 }
8974});
8975// CONCATENATED MODULE: ./components/datepicker/picker/datetime-select.vue?vue&type=script&lang=js&
8976 /* harmony default export */ var picker_datetime_selectvue_type_script_lang_js_ = (datetime_selectvue_type_script_lang_js_);
8977// CONCATENATED MODULE: ./components/datepicker/picker/datetime-select.vue
8978
8979
8980
8981
8982
8983/* normalize component */
8984
8985var datetime_select_component = Object(componentNormalizer["a" /* default */])(
8986 picker_datetime_selectvue_type_script_lang_js_,
8987 datetime_selectvue_type_template_id_5b910c15_render,
8988 datetime_selectvue_type_template_id_5b910c15_staticRenderFns,
8989 false,
8990 null,
8991 null,
8992 null
8993
8994)
8995
8996/* hot reload */
8997if (false) { var datetime_select_api; }
8998datetime_select_component.options.__file = "components/datepicker/picker/datetime-select.vue"
8999/* harmony default export */ var datetime_select = (datetime_select_component.exports);
9000// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/range/date-range.vue?vue&type=script&lang=js&
9001
9002//
9003//
9004//
9005//
9006//
9007//
9008//
9009//
9010//
9011//
9012//
9013//
9014//
9015//
9016//
9017//
9018//
9019//
9020//
9021//
9022//
9023//
9024//
9025//
9026//
9027//
9028//
9029//
9030//
9031//
9032//
9033//
9034//
9035//
9036//
9037//
9038//
9039//
9040//
9041//
9042//
9043//
9044//
9045//
9046//
9047//
9048//
9049//
9050//
9051//
9052//
9053//
9054//
9055//
9056//
9057//
9058//
9059//
9060//
9061//
9062//
9063//
9064//
9065//
9066//
9067//
9068//
9069//
9070//
9071//
9072//
9073//
9074//
9075//
9076//
9077//
9078//
9079//
9080//
9081//
9082//
9083//
9084//
9085//
9086//
9087//
9088//
9089//
9090//
9091//
9092//
9093//
9094//
9095//
9096//
9097//
9098//
9099//
9100//
9101//
9102//
9103//
9104//
9105//
9106//
9107//
9108//
9109//
9110//
9111//
9112//
9113//
9114//
9115//
9116//
9117//
9118//
9119//
9120//
9121//
9122//
9123//
9124//
9125//
9126//
9127//
9128//
9129//
9130//
9131//
9132//
9133//
9134//
9135//
9136//
9137//
9138//
9139//
9140//
9141//
9142//
9143//
9144//
9145//
9146//
9147//
9148//
9149//
9150//
9151//
9152//
9153//
9154//
9155//
9156//
9157//
9158//
9159//
9160//
9161//
9162//
9163//
9164//
9165//
9166//
9167//
9168//
9169//
9170//
9171//
9172//
9173//
9174//
9175//
9176//
9177//
9178//
9179//
9180//
9181//
9182//
9183//
9184//
9185//
9186//
9187//
9188//
9189//
9190//
9191//
9192//
9193//
9194//
9195//
9196//
9197//
9198//
9199//
9200//
9201//
9202//
9203//
9204//
9205//
9206//
9207//
9208//
9209//
9210//
9211//
9212//
9213//
9214//
9215//
9216//
9217//
9218//
9219//
9220//
9221//
9222//
9223//
9224//
9225//
9226//
9227//
9228//
9229//
9230//
9231//
9232//
9233//
9234//
9235//
9236//
9237//
9238//
9239//
9240//
9241//
9242//
9243//
9244//
9245//
9246//
9247//
9248//
9249//
9250//
9251//
9252//
9253//
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultValue(defaultValue) {
9265 if (Array.isArray(defaultValue)) {
9266 return [new Date(defaultValue[0]), new Date(defaultValue[1])];
9267 } else if (defaultValue) {
9268 return [new Date(defaultValue), Object(dateUtil_["nextDate"])(new Date(defaultValue), 1)];
9269 } else {
9270 return [new Date(), Object(dateUtil_["nextDate"])(new Date(), 1)];
9271 }
9272};
9273
9274/* harmony default export */ var date_rangevue_type_script_lang_js_ = ({
9275 mixins: [locale_default.a],
9276 directives: { Clickoutside: clickoutside_default.a },
9277 props: {
9278 prefixCls: {
9279 type: String,
9280 default: 'mds-date'
9281 },
9282 pickerType: String
9283 },
9284 computed: {
9285 isFlat: function isFlat() {
9286 return this.pickerType === 'datetimerangeflat';
9287 },
9288 wrapperClass: function wrapperClass() {
9289 return [this.prefixCls + '-picker', this.prefixCls + '-picker-panel', this.prefixCls + '-range-picker-panel', this.prefixCls + '-popper', { 'has-sidebar': this.$slots.sidebar || this.shortcuts }, { 'has-time': this.showTime }, this.popperClass];
9290 },
9291 btnDisabled: function btnDisabled() {
9292 return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
9293 },
9294 leftLabel: function leftLabel() {
9295 return this.leftDate.getFullYear() + ' ' + this.t('mds.datepicker.year') + ' ' + this.t('mds.datepicker.month' + (this.leftDate.getMonth() + 1));
9296 },
9297 rightLabel: function rightLabel() {
9298 return this.rightDate.getFullYear() + ' ' + this.t('mds.datepicker.year') + ' ' + this.t('mds.datepicker.month' + (this.rightDate.getMonth() + 1));
9299 },
9300 leftTimeLabel: function leftTimeLabel() {
9301 return this.minDate && this.minDate.getFullYear() + ' ' + this.t('mds.datepicker.year') + ' ' + this.t('mds.datepicker.month' + (this.minDate.getMonth() + 1)) + ' ' + this.minDate.getDate() + ' 日';
9302 },
9303 rightTimeLabel: function rightTimeLabel() {
9304 return this.maxDate && this.maxDate.getFullYear() + ' ' + this.t('mds.datepicker.year') + ' ' + this.t('mds.datepicker.month' + (this.maxDate.getMonth() + 1)) + ' ' + this.maxDate.getDate() + ' 日';
9305 },
9306 leftYear: function leftYear() {
9307 return this.leftDate.getFullYear();
9308 },
9309 leftMonth: function leftMonth() {
9310 return this.leftDate.getMonth();
9311 },
9312 leftMonthDate: function leftMonthDate() {
9313 return this.leftDate.getDate();
9314 },
9315 rightYear: function rightYear() {
9316 return this.rightDate.getFullYear();
9317 },
9318 rightMonth: function rightMonth() {
9319 return this.rightDate.getMonth();
9320 },
9321 rightMonthDate: function rightMonthDate() {
9322 return this.rightDate.getDate();
9323 },
9324 minVisibleDate: function minVisibleDate() {
9325 if (this.dateUserInput.min !== null) return this.dateUserInput.min;
9326 if (this.minDate) return Object(dateUtil_["formatDate"])(this.minDate, this.dateFormat);
9327 return '';
9328 },
9329 maxVisibleDate: function maxVisibleDate() {
9330 if (this.dateUserInput.max !== null) return this.dateUserInput.max;
9331 if (this.maxDate || this.minDate) {
9332 return Object(dateUtil_["formatDate"])(this.maxDate || this.minDate, this.dateFormat);
9333 }
9334 return '';
9335 },
9336 minVisibleTime: function minVisibleTime() {
9337 if (this.timeUserInput.min !== null) return this.timeUserInput.min;
9338 if (this.minDate) return Object(dateUtil_["formatDate"])(this.minDate, this.timeFormat);
9339 return '';
9340 },
9341 maxVisibleTime: function maxVisibleTime() {
9342 if (this.timeUserInput.max !== null) return this.timeUserInput.max;
9343 if (this.maxDate || this.minDate) {
9344 return Object(dateUtil_["formatDate"])(this.maxDate || this.minDate, this.timeFormat);
9345 }
9346 return '';
9347 },
9348 timeFormat: function timeFormat() {
9349 if (this.format) {
9350 return Object(dateUtil_["extractTimeFormat"])(this.format);
9351 } else {
9352 return 'HH:mm:ss';
9353 }
9354 },
9355 dateFormat: function dateFormat() {
9356 if (this.format) {
9357 return Object(dateUtil_["extractDateFormat"])(this.format);
9358 } else {
9359 return 'yyyy-MM-dd';
9360 }
9361 },
9362 enableMonthArrow: function enableMonthArrow() {
9363 var nextMonth = (this.leftMonth + 1) % 12;
9364 var yearOffset = this.leftMonth + 1 >= 12 ? 1 : 0;
9365 return this.unlinkPanels && new Date(this.leftYear + yearOffset, nextMonth) < new Date(this.rightYear, this.rightMonth);
9366 },
9367 enableYearArrow: function enableYearArrow() {
9368 return this.unlinkPanels && this.rightYear * 12 + this.rightMonth - (this.leftYear * 12 + this.leftMonth + 1) >= 12;
9369 }
9370 },
9371
9372 data: function data() {
9373 return {
9374 popperClass: '',
9375 value: [],
9376 defaultValue: null,
9377 defaultTime: null,
9378 minDate: '',
9379 maxDate: '',
9380 leftDate: new Date(),
9381 rightDate: Object(dateUtil_["nextMonth"])(new Date()),
9382 rangeState: {
9383 endDate: null,
9384 selecting: false,
9385 row: null,
9386 column: null
9387 },
9388 showTime: false,
9389 shortcuts: '',
9390 visible: '',
9391 disabledDate: '',
9392 cellClassName: '',
9393 firstDayOfWeek: 7,
9394 timePickerVisible: false,
9395 format: '',
9396 arrowControl: false,
9397 unlinkPanels: false,
9398 dateUserInput: {
9399 min: null,
9400 max: null
9401 },
9402 timeUserInput: {
9403 min: null,
9404 max: null
9405 }
9406 };
9407 },
9408
9409
9410 watch: {
9411 visible: function visible(val) {
9412 val && (this.timePickerVisible = false);
9413 },
9414 minDate: function minDate(val) {
9415 var _this = this;
9416
9417 this.dateUserInput.min = null;
9418 this.timeUserInput.min = null;
9419 this.$nextTick(function () {
9420 if (_this.$refs.maxTimePicker && _this.maxDate && _this.maxDate < _this.minDate) {
9421 var format = 'HH:mm:ss';
9422 _this.$refs.maxTimePicker.selectableRange = [[Object(dateUtil_["parseDate"])(Object(dateUtil_["formatDate"])(_this.minDate, format), format), Object(dateUtil_["parseDate"])('23:59:59', format)]];
9423 }
9424 });
9425 if (val && this.$refs.minTimePicker) {
9426 this.$refs.minTimePicker.date = val;
9427 this.$refs.minTimePicker.value = val;
9428 this.$nextTick(function () {
9429 _this.$refs.maxTimePicker.adjustSpinners();
9430 });
9431 }
9432 },
9433 maxDate: function maxDate(val) {
9434 var _this2 = this;
9435
9436 this.dateUserInput.max = null;
9437 this.timeUserInput.max = null;
9438 if (val && this.$refs.maxTimePicker) {
9439 this.$refs.maxTimePicker.date = val;
9440 this.$refs.maxTimePicker.value = val;
9441 this.$nextTick(function () {
9442 _this2.$refs.minTimePicker.adjustSpinners();
9443 });
9444 }
9445 },
9446 value: function value(newVal) {
9447 if (!newVal) {
9448 this.minDate = null;
9449 this.maxDate = null;
9450 } else if (Array.isArray(newVal)) {
9451 this.minDate = Object(dateUtil_["isDate"])(newVal[0]) ? new Date(newVal[0]) : null;
9452 this.maxDate = Object(dateUtil_["isDate"])(newVal[1]) ? new Date(newVal[1]) : null;
9453 if (this.minDate) {
9454 this.leftDate = this.minDate;
9455 if (this.unlinkPanels && this.maxDate) {
9456 var minDateYear = this.minDate.getFullYear();
9457 var minDateMonth = this.minDate.getMonth();
9458 var maxDateYear = this.maxDate.getFullYear();
9459 var maxDateMonth = this.maxDate.getMonth();
9460 this.rightDate = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? Object(dateUtil_["nextMonth"])(this.maxDate) : this.maxDate;
9461 } else {
9462 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9463 }
9464 } else {
9465 this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
9466 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9467 }
9468 }
9469 },
9470 defaultValue: function defaultValue(val) {
9471 if (!Array.isArray(this.value)) {
9472 var _calcDefaultValue = date_rangevue_type_script_lang_js_calcDefaultValue(val),
9473 _calcDefaultValue2 = slicedToArray_default()(_calcDefaultValue, 2),
9474 left = _calcDefaultValue2[0],
9475 right = _calcDefaultValue2[1];
9476
9477 this.leftDate = left;
9478 this.rightDate = val && val[1] && this.unlinkPanels ? right : Object(dateUtil_["nextMonth"])(this.leftDate);
9479 }
9480 },
9481 format: function format() {
9482 this.$refs.minTimePicker.format = this.timeFormat;
9483 this.$refs.maxTimePicker.format = this.timeFormat;
9484 }
9485 },
9486
9487 methods: {
9488 selectTime: function selectTime() {
9489 var _this3 = this;
9490
9491 this.timePickerVisible = !this.timePickerVisible;
9492 if (this.timePickerVisible) {
9493 this.$nextTick(function () {
9494 _this3.$refs.maxTimePicker.date = _this3.maxDate;
9495 _this3.$refs.maxTimePicker.value = _this3.maxDate;
9496 _this3.$refs.maxTimePicker.adjustSpinners();
9497 _this3.$refs.minTimePicker.date = _this3.minDate;
9498 _this3.$refs.minTimePicker.value = _this3.minDate;
9499 _this3.$refs.minTimePicker.adjustSpinners();
9500 });
9501 }
9502 },
9503 handleClear: function handleClear() {
9504 this.minDate = null;
9505 this.maxDate = null;
9506 this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
9507 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9508 this.$emit('pick', null);
9509 },
9510 handleChangeRange: function handleChangeRange(val) {
9511 this.minDate = val.minDate;
9512 this.maxDate = val.maxDate;
9513 this.rangeState = val.rangeState;
9514 },
9515 handleDateInput: function handleDateInput(value, type) {
9516 this.dateUserInput[type] = value;
9517 if (value.length !== this.dateFormat.length) return;
9518 var parsedValue = Object(dateUtil_["parseDate"])(value, this.dateFormat);
9519
9520 if (parsedValue) {
9521 if (typeof this.disabledDate === 'function' && this.disabledDate(new Date(parsedValue))) {
9522 return;
9523 }
9524 if (type === 'min') {
9525 this.minDate = Object(dateUtil_["modifyDate"])(this.minDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
9526 this.leftDate = new Date(parsedValue);
9527 if (!this.unlinkPanels) {
9528 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9529 }
9530 } else {
9531 this.maxDate = Object(dateUtil_["modifyDate"])(this.maxDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
9532 this.rightDate = new Date(parsedValue);
9533 if (!this.unlinkPanels) {
9534 this.leftDate = Object(dateUtil_["prevMonth"])(parsedValue);
9535 }
9536 }
9537 }
9538 },
9539 handleDateChange: function handleDateChange(value, type) {
9540 var parsedValue = Object(dateUtil_["parseDate"])(value, this.dateFormat);
9541 if (parsedValue) {
9542 if (type === 'min') {
9543 this.minDate = Object(dateUtil_["modifyDate"])(this.minDate, parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
9544 if (this.minDate > this.maxDate) {
9545 this.maxDate = this.minDate;
9546 }
9547 } else {
9548 this.maxDate = Object(dateUtil_["modifyDate"])(this.maxDate, parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
9549 if (this.maxDate < this.minDate) {
9550 this.minDate = this.maxDate;
9551 }
9552 }
9553 }
9554 },
9555 handleTimeInput: function handleTimeInput(value, type) {
9556 var _this4 = this;
9557
9558 this.timeUserInput[type] = value;
9559 if (value.length !== this.timeFormat.length) return;
9560 var parsedValue = Object(dateUtil_["parseDate"])(value, this.timeFormat);
9561
9562 if (parsedValue) {
9563 if (type === 'min') {
9564 this.minDate = Object(dateUtil_["modifyTime"])(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
9565 this.$nextTick(function (_) {
9566 return _this4.$refs.minTimePicker.adjustSpinners();
9567 });
9568 } else {
9569 this.maxDate = Object(dateUtil_["modifyTime"])(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
9570 this.$nextTick(function (_) {
9571 return _this4.$refs.maxTimePicker.adjustSpinners();
9572 });
9573 }
9574 }
9575 },
9576 handleTimeChange: function handleTimeChange(value, type) {
9577 var parsedValue = Object(dateUtil_["parseDate"])(value, this.timeFormat);
9578 if (parsedValue) {
9579 if (type === 'min') {
9580 this.minDate = Object(dateUtil_["modifyTime"])(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
9581 if (this.minDate > this.maxDate) {
9582 this.maxDate = this.minDate;
9583 }
9584 this.$refs.minTimePicker.value = this.minDate;
9585 } else {
9586 this.maxDate = Object(dateUtil_["modifyTime"])(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
9587 if (this.maxDate < this.minDate) {
9588 this.minDate = this.maxDate;
9589 }
9590 this.$refs.maxTimePicker.value = this.minDate;
9591 }
9592 }
9593 },
9594 handleRangePick: function handleRangePick(val) {
9595 var _this5 = this;
9596
9597 var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
9598
9599 var defaultTime = this.defaultTime || [];
9600 var minDate = Object(dateUtil_["modifyWithTimeString"])(val.minDate, defaultTime[0]);
9601 var maxDate = Object(dateUtil_["modifyWithTimeString"])(val.maxDate, defaultTime[1]);
9602
9603 if (this.maxDate === maxDate && this.minDate === minDate) {
9604 return;
9605 }
9606 this.onPick && this.onPick(val);
9607 this.maxDate = maxDate;
9608 this.minDate = minDate;
9609
9610 // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
9611 setTimeout(function () {
9612 _this5.maxDate = maxDate;
9613 _this5.minDate = minDate;
9614 }, 10);
9615 if (!close || this.showTime) return;
9616 this.handleConfirm();
9617 },
9618 handleMinTimePick: function handleMinTimePick(value, visible, first) {
9619 this.minDate = this.minDate || new Date();
9620 if (value) {
9621 this.minDate = Object(dateUtil_["modifyTime"])(this.minDate, value.getHours(), value.getMinutes(), value.getSeconds());
9622 }
9623
9624 if (!first) {
9625 this.minTimePickerVisible = visible;
9626 }
9627
9628 if (!this.maxDate || this.maxDate && this.maxDate.getTime() < this.minDate.getTime()) {
9629 this.maxDate = new Date(this.minDate);
9630 }
9631 },
9632 handleMinTimeClose: function handleMinTimeClose() {
9633 this.minTimePickerVisible = false;
9634 },
9635 handleMaxTimePick: function handleMaxTimePick(value, visible, first) {
9636 if (this.maxDate && value) {
9637 this.maxDate = Object(dateUtil_["modifyTime"])(this.maxDate, value.getHours(), value.getMinutes(), value.getSeconds());
9638 }
9639
9640 if (!first) {
9641 this.maxTimePickerVisible = visible;
9642 }
9643
9644 if (this.maxDate && this.minDate && this.minDate.getTime() > this.maxDate.getTime()) {
9645 this.minDate = new Date(this.maxDate);
9646 }
9647 },
9648
9649
9650 // leftPrev*, rightNext* need to take care of `unlinkPanels`
9651 leftPrevYear: function leftPrevYear() {
9652 this.leftDate = Object(dateUtil_["prevYear"])(this.leftDate);
9653 if (!this.unlinkPanels) {
9654 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9655 }
9656 },
9657 leftPrevMonth: function leftPrevMonth() {
9658 this.leftDate = Object(dateUtil_["prevMonth"])(this.leftDate);
9659 if (!this.unlinkPanels) {
9660 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9661 }
9662 },
9663 rightNextYear: function rightNextYear() {
9664 if (!this.unlinkPanels) {
9665 this.leftDate = Object(dateUtil_["nextYear"])(this.leftDate);
9666 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9667 } else {
9668 this.rightDate = Object(dateUtil_["nextYear"])(this.rightDate);
9669 }
9670 },
9671 rightNextMonth: function rightNextMonth() {
9672 if (!this.unlinkPanels) {
9673 this.leftDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9674 this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9675 } else {
9676 this.rightDate = Object(dateUtil_["nextMonth"])(this.rightDate);
9677 }
9678 },
9679
9680
9681 // leftNext*, rightPrev* are called when `unlinkPanels` is true
9682 leftNextYear: function leftNextYear() {
9683 if (this.enableMonthArrow) {
9684 this.leftDate = Object(dateUtil_["nextYear"])(this.leftDate);
9685 }
9686 },
9687 leftNextMonth: function leftNextMonth() {
9688 if (this.enableMonthArrow) {
9689 this.leftDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9690 }
9691 },
9692 rightPrevYear: function rightPrevYear() {
9693 if (this.enableMonthArrow) {
9694 this.rightDate = Object(dateUtil_["prevYear"])(this.rightDate);
9695 }
9696 },
9697 rightPrevMonth: function rightPrevMonth() {
9698 if (this.enableMonthArrow) {
9699 this.rightDate = Object(dateUtil_["prevMonth"])(this.rightDate);
9700 }
9701 },
9702 handleConfirm: function handleConfirm() {
9703 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
9704
9705 if (this.isValidValue([this.minDate, this.maxDate])) {
9706 this.$emit('pick', [this.minDate, this.maxDate], visible);
9707 }
9708 },
9709 isValidValue: function isValidValue(value) {
9710 return Array.isArray(value) && value && value[0] && value[1] && Object(dateUtil_["isDate"])(value[0]) && Object(dateUtil_["isDate"])(value[1]) && value[0].getTime() <= value[1].getTime() && (typeof this.disabledDate === 'function' ? !this.disabledDate(value[0]) && !this.disabledDate(value[1]) : true);
9711 },
9712 resetView: function resetView() {
9713 // NOTE: this is a hack to reset {min, max}Date on picker open.
9714 // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
9715 // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
9716 if (this.minDate && this.maxDate == null) {
9717 this.rangeState.selecting = false;
9718 }
9719 this.minDate = this.value && Object(dateUtil_["isDate"])(this.value[0]) ? new Date(this.value[0]) : null;
9720 this.maxDate = this.value && Object(dateUtil_["isDate"])(this.value[0]) ? new Date(this.value[1]) : null;
9721 }
9722 },
9723
9724 components: { TimePicker: picker_time, DateTable: date_table, MdsInput: external_input_default.a, MdsButton: external_button_default.a, dateTimeSelecter: datetime_select }
9725});
9726// CONCATENATED MODULE: ./components/datepicker/range/date-range.vue?vue&type=script&lang=js&
9727 /* harmony default export */ var range_date_rangevue_type_script_lang_js_ = (date_rangevue_type_script_lang_js_);
9728// CONCATENATED MODULE: ./components/datepicker/range/date-range.vue
9729
9730
9731
9732
9733
9734/* normalize component */
9735
9736var date_range_component = Object(componentNormalizer["a" /* default */])(
9737 range_date_rangevue_type_script_lang_js_,
9738 date_rangevue_type_template_id_6eca7cf8_render,
9739 date_rangevue_type_template_id_6eca7cf8_staticRenderFns,
9740 false,
9741 null,
9742 null,
9743 null
9744
9745)
9746
9747/* hot reload */
9748if (false) { var date_range_api; }
9749date_range_component.options.__file = "components/datepicker/range/date-range.vue"
9750/* harmony default export */ var date_range = (date_range_component.exports);
9751// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/range/month-range.vue?vue&type=template&id=4d54e386&
9752var month_rangevue_type_template_id_4d54e386_render = function () {
9753 var _vm = this
9754 var _h = _vm.$createElement
9755 var _c = _vm._self._c || _h
9756 return _c(
9757 "transition",
9758 {
9759 attrs: { name: "mds-date-zoom-in-top" },
9760 on: {
9761 "after-leave": function ($event) {
9762 return _vm.$emit("dodestroy")
9763 },
9764 },
9765 },
9766 [
9767 _c(
9768 "div",
9769 {
9770 directives: [
9771 {
9772 name: "show",
9773 rawName: "v-show",
9774 value: _vm.visible,
9775 expression: "visible",
9776 },
9777 ],
9778 class: _vm.wrapperClass,
9779 },
9780 [
9781 _c("div", { class: this.prefixCls + "-picker-panel-wrapper" }, [
9782 _c("div", { class: this.prefixCls + "-picker-panel-body" }, [
9783 _c("div", { staticClass: "is-left" }, [
9784 _c("div", { class: this.prefixCls + "-picker-panel-header" }, [
9785 _c("i", {
9786 staticClass: "mdsicon mdsicon-line-caret-left-double",
9787 class: [
9788 _vm.prefixCls + "-picker-panel-header-base-icon",
9789 _vm.prefixCls + "-left-prev-year",
9790 _vm.prefixCls + "-other-icon",
9791 _vm.prefixCls + "-picker-panel-header-base-left",
9792 ],
9793 attrs: { "aria-label": _vm.t("mds.datepicker.prevYear") },
9794 on: { click: _vm.leftPrevYear },
9795 }),
9796 _c(
9797 "span",
9798 { class: _vm.prefixCls + "-picker-panel-header-label" },
9799 [_vm._v(_vm._s(_vm.leftLabel))]
9800 ),
9801 _vm.unlinkPanels
9802 ? _c("i", {
9803 staticClass: "mdsicon mdsicon-line-caret-left",
9804 class: [
9805 _vm.prefixCls + "-picker-panel-header-base-icon",
9806 _vm.prefixCls + "-picker-panel-header-base-right",
9807 _vm.prefixCls + "-left-next-year",
9808 _vm.prefixCls + "-other-icon",
9809 { "is-disabled": !_vm.enableYearArrow },
9810 ],
9811 attrs: {
9812 disabled: !_vm.enableYearArrow,
9813 "aria-label": _vm.t("mds.datepicker.prevYear"),
9814 },
9815 on: { click: _vm.leftNextYear },
9816 })
9817 : _vm._e(),
9818 ]),
9819 _c(
9820 "div",
9821 { class: this.prefixCls + "-picker-panel-content" },
9822 [
9823 _c("month-table", {
9824 attrs: {
9825 "selection-mode": "range",
9826 date: _vm.leftDate,
9827 "default-value": _vm.defaultValue,
9828 "min-date": _vm.minDate,
9829 "max-date": _vm.maxDate,
9830 "range-state": _vm.rangeState,
9831 "disabled-date": _vm.disabledDate,
9832 },
9833 on: {
9834 changerange: _vm.handleChangeRange,
9835 pick: _vm.handleRangePick,
9836 },
9837 }),
9838 ],
9839 1
9840 ),
9841 ]),
9842 _c("div", { staticClass: "is-right" }, [
9843 _c("div", { class: this.prefixCls + "-picker-panel-header" }, [
9844 _vm.unlinkPanels
9845 ? _c("i", {
9846 staticClass: "mdsicon mdsicon-line-caret-right-double",
9847 class: [
9848 _vm.prefixCls + "-picker-panel-header-base-icon",
9849 _vm.prefixCls + "-picker-panel-header-base-left",
9850 _vm.prefixCls + "-right-prev-year",
9851 _vm.prefixCls + "-other-icon",
9852 { "is-disabled": !_vm.enableYearArrow },
9853 ],
9854 attrs: {
9855 "aria-label": _vm.t("mds.datepicker.prevYear"),
9856 },
9857 on: { click: _vm.rightPrevYear },
9858 })
9859 : _vm._e(),
9860 _c(
9861 "span",
9862 { class: _vm.prefixCls + "-picker-panel-header-label" },
9863 [_vm._v(_vm._s(_vm.rightLabel))]
9864 ),
9865 _c("i", {
9866 staticClass: "mdsicon mdsicon-line-caret-right",
9867 class: [
9868 _vm.prefixCls + "-picker-panel-header-base-icon",
9869 _vm.prefixCls + "-picker-panel-header-base-right",
9870 _vm.prefixCls + "-right-next-year",
9871 _vm.prefixCls + "-other-icon",
9872 { "is-disabled": !_vm.enableYearArrow },
9873 ],
9874 attrs: { "aria-label": _vm.t("mds.datepicker.prevYear") },
9875 on: { click: _vm.rightNextYear },
9876 }),
9877 ]),
9878 _c(
9879 "div",
9880 { class: this.prefixCls + "-picker-panel-content" },
9881 [
9882 _c("month-table", {
9883 attrs: {
9884 "selection-mode": "range",
9885 date: _vm.rightDate,
9886 "default-value": _vm.defaultValue,
9887 "min-date": _vm.minDate,
9888 "max-date": _vm.maxDate,
9889 "range-state": _vm.rangeState,
9890 "disabled-date": _vm.disabledDate,
9891 },
9892 on: {
9893 changerange: _vm.handleChangeRange,
9894 pick: _vm.handleRangePick,
9895 },
9896 }),
9897 ],
9898 1
9899 ),
9900 ]),
9901 ]),
9902 ]),
9903 ]
9904 ),
9905 ]
9906 )
9907}
9908var month_rangevue_type_template_id_4d54e386_staticRenderFns = []
9909month_rangevue_type_template_id_4d54e386_render._withStripped = true
9910
9911
9912// CONCATENATED MODULE: ./components/datepicker/range/month-range.vue?vue&type=template&id=4d54e386&
9913
9914// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/range/month-range.vue?vue&type=script&lang=js&
9915
9916//
9917//
9918//
9919//
9920//
9921//
9922//
9923//
9924//
9925//
9926//
9927//
9928//
9929//
9930//
9931//
9932//
9933//
9934//
9935//
9936//
9937//
9938//
9939//
9940//
9941//
9942//
9943//
9944//
9945//
9946//
9947//
9948//
9949//
9950//
9951//
9952//
9953//
9954//
9955//
9956//
9957//
9958//
9959//
9960//
9961//
9962//
9963//
9964//
9965//
9966//
9967//
9968//
9969//
9970//
9971//
9972//
9973//
9974//
9975//
9976//
9977//
9978//
9979//
9980//
9981//
9982//
9983//
9984//
9985//
9986//
9987//
9988//
9989//
9990//
9991//
9992//
9993//
9994//
9995//
9996//
9997//
9998//
9999//
10000//
10001//
10002//
10003//
10004//
10005//
10006//
10007//
10008//
10009//
10010//
10011//
10012//
10013//
10014//
10015//
10016//
10017//
10018
10019
10020
10021
10022
10023
10024
10025
10026var month_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultValue(defaultValue) {
10027 if (Array.isArray(defaultValue)) {
10028 return [new Date(defaultValue[0]), new Date(defaultValue[1])];
10029 } else if (defaultValue) {
10030 return [new Date(defaultValue), Object(dateUtil_["nextMonth"])(new Date(defaultValue))];
10031 } else {
10032 return [new Date(), Object(dateUtil_["nextMonth"])(new Date())];
10033 }
10034};
10035/* harmony default export */ var month_rangevue_type_script_lang_js_ = ({
10036 mixins: [locale_default.a],
10037 directives: { Clickoutside: clickoutside_default.a },
10038 props: {
10039 prefixCls: {
10040 type: String,
10041 default: 'mds-date'
10042 }
10043 },
10044 computed: {
10045 wrapperClass: function wrapperClass() {
10046 return [this.prefixCls + '-picker', this.prefixCls + '-range-picker-panel', this.prefixCls + '-popper', { 'has-sidebar': this.$slots.sidebar || this.shortcuts }, { 'has-time': this.showTime }, this.popperClass];
10047 },
10048 btnDisabled: function btnDisabled() {
10049 return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
10050 },
10051 leftLabel: function leftLabel() {
10052 return this.leftDate.getFullYear() + ' ' + this.t('mds.datepicker.year');
10053 },
10054 rightLabel: function rightLabel() {
10055 return this.rightDate.getFullYear() + ' ' + this.t('mds.datepicker.year');
10056 },
10057 leftYear: function leftYear() {
10058 return this.leftDate.getFullYear();
10059 },
10060 rightYear: function rightYear() {
10061 return this.rightDate.getFullYear() === this.leftDate.getFullYear() ? this.leftDate.getFullYear() + 1 : this.rightDate.getFullYear();
10062 },
10063 enableYearArrow: function enableYearArrow() {
10064 return this.unlinkPanels && this.rightYear > this.leftYear + 1;
10065 }
10066 },
10067
10068 data: function data() {
10069 return {
10070 popperClass: '',
10071 value: [],
10072 defaultValue: null,
10073 defaultTime: null,
10074 minDate: '',
10075 maxDate: '',
10076 leftDate: new Date(),
10077 rightDate: Object(dateUtil_["nextYear"])(new Date()),
10078 rangeState: {
10079 endDate: null,
10080 selecting: false,
10081 row: null,
10082 column: null
10083 },
10084 shortcuts: '',
10085 visible: '',
10086 disabledDate: '',
10087 format: '',
10088 arrowControl: false,
10089 unlinkPanels: false
10090 };
10091 },
10092
10093
10094 watch: {
10095 value: function value(newVal) {
10096 if (!newVal) {
10097 this.minDate = null;
10098 this.maxDate = null;
10099 } else if (Array.isArray(newVal)) {
10100 this.minDate = Object(dateUtil_["isDate"])(newVal[0]) ? new Date(newVal[0]) : null;
10101 this.maxDate = Object(dateUtil_["isDate"])(newVal[1]) ? new Date(newVal[1]) : null;
10102 if (this.minDate) {
10103 this.leftDate = this.minDate;
10104 if (this.unlinkPanels && this.maxDate) {
10105 var minDateYear = this.minDate.getFullYear();
10106 var maxDateYear = this.maxDate.getFullYear();
10107 this.rightDate = minDateYear === maxDateYear ? Object(dateUtil_["nextYear"])(this.maxDate) : this.maxDate;
10108 } else {
10109 this.rightDate = Object(dateUtil_["nextYear"])(this.leftDate);
10110 }
10111 } else {
10112 this.leftDate = month_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
10113 this.rightDate = Object(dateUtil_["nextYear"])(this.leftDate);
10114 }
10115 }
10116 },
10117 defaultValue: function defaultValue(val) {
10118 if (!Array.isArray(this.value)) {
10119 var _calcDefaultValue = month_rangevue_type_script_lang_js_calcDefaultValue(val),
10120 _calcDefaultValue2 = slicedToArray_default()(_calcDefaultValue, 2),
10121 left = _calcDefaultValue2[0],
10122 right = _calcDefaultValue2[1];
10123
10124 this.leftDate = left;
10125 this.rightDate = val && val[1] && left.getFullYear() !== right.getFullYear() && this.unlinkPanels ? right : Object(dateUtil_["nextYear"])(this.leftDate);
10126 }
10127 }
10128 },
10129
10130 methods: {
10131 handleClear: function handleClear() {
10132 this.minDate = null;
10133 this.maxDate = null;
10134 this.leftDate = month_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
10135 this.rightDate = Object(dateUtil_["nextYear"])(this.leftDate);
10136 this.$emit('pick', null);
10137 },
10138 handleChangeRange: function handleChangeRange(val) {
10139 this.minDate = val.minDate;
10140 this.maxDate = val.maxDate;
10141 this.rangeState = val.rangeState;
10142 },
10143 handleRangePick: function handleRangePick(val) {
10144 var _this = this;
10145
10146 var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
10147
10148 var defaultTime = this.defaultTime || [];
10149 var minDate = Object(dateUtil_["modifyWithTimeString"])(val.minDate, defaultTime[0]);
10150 var maxDate = Object(dateUtil_["modifyWithTimeString"])(val.maxDate, defaultTime[1]);
10151 if (this.maxDate === maxDate && this.minDate === minDate) {
10152 return;
10153 }
10154 this.onPick && this.onPick(val);
10155 this.maxDate = maxDate;
10156 this.minDate = minDate;
10157
10158 // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
10159 setTimeout(function () {
10160 _this.maxDate = maxDate;
10161 _this.minDate = minDate;
10162 }, 10);
10163 if (!close) return;
10164 this.handleConfirm();
10165 },
10166 handleShortcutClick: function handleShortcutClick(shortcut) {
10167 if (shortcut.onClick) {
10168 shortcut.onClick(this);
10169 }
10170 },
10171
10172
10173 // leftPrev*, rightNext* need to take care of `unlinkPanels`
10174 leftPrevYear: function leftPrevYear() {
10175 this.leftDate = Object(dateUtil_["prevYear"])(this.leftDate);
10176 if (!this.unlinkPanels) {
10177 this.rightDate = Object(dateUtil_["prevYear"])(this.rightDate);
10178 }
10179 },
10180 rightNextYear: function rightNextYear() {
10181 if (!this.unlinkPanels) {
10182 this.leftDate = Object(dateUtil_["nextYear"])(this.leftDate);
10183 }
10184 this.rightDate = Object(dateUtil_["nextYear"])(this.rightDate);
10185 },
10186
10187
10188 // leftNext*, rightPrev* are called when `unlinkPanels` is true
10189 leftNextYear: function leftNextYear() {
10190 if (this.enableYearArrow) {
10191 this.leftDate = Object(dateUtil_["nextYear"])(this.leftDate);
10192 }
10193 },
10194 rightPrevYear: function rightPrevYear() {
10195 if (this.enableYearArrow) {
10196 this.rightDate = Object(dateUtil_["prevYear"])(this.rightDate);
10197 }
10198 },
10199 handleConfirm: function handleConfirm() {
10200 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
10201
10202 if (this.isValidValue([this.minDate, this.maxDate])) {
10203 this.$emit('pick', [this.minDate, this.maxDate], visible);
10204 }
10205 },
10206 isValidValue: function isValidValue(value) {
10207 return Array.isArray(value) && value && value[0] && value[1] && Object(dateUtil_["isDate"])(value[0]) && Object(dateUtil_["isDate"])(value[1]) && value[0].getTime() <= value[1].getTime() && (typeof this.disabledDate === 'function' ? !this.disabledDate(value[0]) && !this.disabledDate(value[1]) : true);
10208 },
10209 resetView: function resetView() {
10210 // NOTE: this is a hack to reset {min, max}Date on picker open.
10211 // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
10212 // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
10213 this.minDate = this.value && Object(dateUtil_["isDate"])(this.value[0]) ? new Date(this.value[0]) : null;
10214 this.maxDate = this.value && Object(dateUtil_["isDate"])(this.value[0]) ? new Date(this.value[1]) : null;
10215 }
10216 },
10217
10218 components: { MonthTable: month_table, MdsInput: external_input_default.a, MdsButton: external_button_default.a }
10219});
10220// CONCATENATED MODULE: ./components/datepicker/range/month-range.vue?vue&type=script&lang=js&
10221 /* harmony default export */ var range_month_rangevue_type_script_lang_js_ = (month_rangevue_type_script_lang_js_);
10222// CONCATENATED MODULE: ./components/datepicker/range/month-range.vue
10223
10224
10225
10226
10227
10228/* normalize component */
10229
10230var month_range_component = Object(componentNormalizer["a" /* default */])(
10231 range_month_rangevue_type_script_lang_js_,
10232 month_rangevue_type_template_id_4d54e386_render,
10233 month_rangevue_type_template_id_4d54e386_staticRenderFns,
10234 false,
10235 null,
10236 null,
10237 null
10238
10239)
10240
10241/* hot reload */
10242if (false) { var month_range_api; }
10243month_range_component.options.__file = "components/datepicker/range/month-range.vue"
10244/* harmony default export */ var month_range = (month_range_component.exports);
10245// CONCATENATED MODULE: ./components/datepicker/picker/index.js
10246
10247
10248
10249
10250
10251var picker_getPanel = function getPanel(type) {
10252 if (type === 'daterange' || type === 'datetimerange' || type === 'datetimerangeflat') {
10253 return date_range;
10254 } else if (type === 'monthrange') {
10255 return month_range;
10256 }
10257 return picker_date;
10258};
10259
10260/* harmony default export */ var datepicker_picker = ({
10261 mixins: [picker],
10262
10263 name: 'MdsDatePicker',
10264 components: {
10265 MdsIcon: external_icon_default.a
10266 },
10267 props: {
10268 type: {
10269 type: String,
10270 default: 'date'
10271 },
10272 timeArrowControl: Boolean
10273 },
10274
10275 watch: {
10276 type: function type(_type) {
10277 if (this.picker) {
10278 this.unmountPicker();
10279 this.panel = picker_getPanel(_type);
10280 this.mountPicker();
10281 } else {
10282 this.panel = picker_getPanel(_type);
10283 }
10284 }
10285 },
10286
10287 created: function created() {
10288 this.panel = picker_getPanel(this.type);
10289 }
10290});
10291// CONCATENATED MODULE: ./components/datepicker/index.js
10292
10293
10294/* istanbul ignore next */
10295datepicker_picker.install = function (Vue) {
10296 Vue.component(datepicker_picker.name, datepicker_picker);
10297};
10298/* harmony default export */ var datepicker = __webpack_exports__["default"] = (datepicker_picker);
10299
10300/***/ }),
10301
10302/***/ 9:
10303/***/ (function(module, exports) {
10304
10305module.exports = require("babel-runtime/helpers/typeof");
10306
10307/***/ })
10308
10309/******/ });
10310});
\No newline at end of file