UNPKG

190 kBJavaScriptView Raw
1module.exports =
2/******/ (function(modules) { // webpackBootstrap
3/******/ // The module cache
4/******/ var installedModules = {};
5/******/
6/******/ // The require function
7/******/ function __webpack_require__(moduleId) {
8/******/
9/******/ // Check if module is in cache
10/******/ if(installedModules[moduleId]) {
11/******/ return installedModules[moduleId].exports;
12/******/ }
13/******/ // Create a new module (and put it into the cache)
14/******/ var module = installedModules[moduleId] = {
15/******/ i: moduleId,
16/******/ l: false,
17/******/ exports: {}
18/******/ };
19/******/
20/******/ // Execute the module function
21/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ // Flag the module as loaded
24/******/ module.l = true;
25/******/
26/******/ // Return the exports of the module
27/******/ return module.exports;
28/******/ }
29/******/
30/******/
31/******/ // expose the modules object (__webpack_modules__)
32/******/ __webpack_require__.m = modules;
33/******/
34/******/ // expose the module cache
35/******/ __webpack_require__.c = installedModules;
36/******/
37/******/ // define getter function for harmony exports
38/******/ __webpack_require__.d = function(exports, name, getter) {
39/******/ if(!__webpack_require__.o(exports, name)) {
40/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
41/******/ }
42/******/ };
43/******/
44/******/ // define __esModule on exports
45/******/ __webpack_require__.r = function(exports) {
46/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
47/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
48/******/ }
49/******/ Object.defineProperty(exports, '__esModule', { value: true });
50/******/ };
51/******/
52/******/ // create a fake namespace object
53/******/ // mode & 1: value is a module id, require it
54/******/ // mode & 2: merge all properties of value into the ns
55/******/ // mode & 4: return value when already ns object
56/******/ // mode & 8|1: behave like require
57/******/ __webpack_require__.t = function(value, mode) {
58/******/ if(mode & 1) value = __webpack_require__(value);
59/******/ if(mode & 8) return value;
60/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
61/******/ var ns = Object.create(null);
62/******/ __webpack_require__.r(ns);
63/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
64/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
65/******/ return ns;
66/******/ };
67/******/
68/******/ // getDefaultExport function for compatibility with non-harmony modules
69/******/ __webpack_require__.n = function(module) {
70/******/ var getter = module && module.__esModule ?
71/******/ function getDefault() { return module['default']; } :
72/******/ function getModuleExports() { return module; };
73/******/ __webpack_require__.d(getter, 'a', getter);
74/******/ return getter;
75/******/ };
76/******/
77/******/ // Object.prototype.hasOwnProperty.call
78/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
79/******/
80/******/ // __webpack_public_path__
81/******/ __webpack_require__.p = "/dist/";
82/******/
83/******/
84/******/ // Load entry module and return exports
85/******/ return __webpack_require__(__webpack_require__.s = 55);
86/******/ })
87/************************************************************************/
88/******/ ([
89/* 0 */
90/***/ (function(module, __webpack_exports__, __webpack_require__) {
91
92"use strict";
93/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
94/* globals __VUE_SSR_CONTEXT__ */
95
96// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
97// This module is a runtime utility for cleaner component module output and will
98// be included in the final webpack user bundle.
99
100function normalizeComponent (
101 scriptExports,
102 render,
103 staticRenderFns,
104 functionalTemplate,
105 injectStyles,
106 scopeId,
107 moduleIdentifier, /* server only */
108 shadowMode /* vue-cli only */
109) {
110 // Vue.extend constructor export interop
111 var options = typeof scriptExports === 'function'
112 ? scriptExports.options
113 : scriptExports
114
115 // render functions
116 if (render) {
117 options.render = render
118 options.staticRenderFns = staticRenderFns
119 options._compiled = true
120 }
121
122 // functional template
123 if (functionalTemplate) {
124 options.functional = true
125 }
126
127 // scopedId
128 if (scopeId) {
129 options._scopeId = 'data-v-' + scopeId
130 }
131
132 var hook
133 if (moduleIdentifier) { // server build
134 hook = function (context) {
135 // 2.3 injection
136 context =
137 context || // cached call
138 (this.$vnode && this.$vnode.ssrContext) || // stateful
139 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
140 // 2.2 with runInNewContext: true
141 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
142 context = __VUE_SSR_CONTEXT__
143 }
144 // inject component styles
145 if (injectStyles) {
146 injectStyles.call(this, context)
147 }
148 // register component module identifier for async chunk inferrence
149 if (context && context._registeredComponents) {
150 context._registeredComponents.add(moduleIdentifier)
151 }
152 }
153 // used by ssr in case component is cached and beforeCreate
154 // never gets called
155 options._ssrRegister = hook
156 } else if (injectStyles) {
157 hook = shadowMode
158 ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
159 : injectStyles
160 }
161
162 if (hook) {
163 if (options.functional) {
164 // for template-only hot-reload because in that case the render fn doesn't
165 // go through the normalizer
166 options._injectStyles = hook
167 // register for functioal component in vue file
168 var originalRender = options.render
169 options.render = function renderWithStyleInjection (h, context) {
170 hook.call(context)
171 return originalRender(h, context)
172 }
173 } else {
174 // inject component registration as beforeCreate hook
175 var existing = options.beforeCreate
176 options.beforeCreate = existing
177 ? [].concat(existing, hook)
178 : [hook]
179 }
180 }
181
182 return {
183 exports: scriptExports,
184 options: options
185 }
186}
187
188
189/***/ }),
190/* 1 */
191/***/ (function(module, exports) {
192
193module.exports = require("element-ui/lib/utils/date-util");
194
195/***/ }),
196/* 2 */
197/***/ (function(module, exports) {
198
199module.exports = require("element-ui/lib/utils/dom");
200
201/***/ }),
202/* 3 */
203/***/ (function(module, exports) {
204
205module.exports = require("element-ui/lib/utils/util");
206
207/***/ }),
208/* 4 */
209/***/ (function(module, exports) {
210
211module.exports = require("element-ui/lib/mixins/emitter");
212
213/***/ }),
214/* 5 */
215/***/ (function(module, exports) {
216
217module.exports = require("element-ui/lib/utils/vue-popper");
218
219/***/ }),
220/* 6 */
221/***/ (function(module, exports) {
222
223module.exports = require("element-ui/lib/mixins/locale");
224
225/***/ }),
226/* 7 */
227/***/ (function(module, exports) {
228
229module.exports = require("vue");
230
231/***/ }),
232/* 8 */,
233/* 9 */
234/***/ (function(module, exports) {
235
236module.exports = require("element-ui/lib/utils/merge");
237
238/***/ }),
239/* 10 */
240/***/ (function(module, exports) {
241
242module.exports = require("element-ui/lib/input");
243
244/***/ }),
245/* 11 */,
246/* 12 */
247/***/ (function(module, exports) {
248
249module.exports = require("element-ui/lib/utils/clickoutside");
250
251/***/ }),
252/* 13 */
253/***/ (function(module, exports) {
254
255module.exports = require("element-ui/lib/button");
256
257/***/ }),
258/* 14 */
259/***/ (function(module, exports) {
260
261module.exports = require("element-ui/lib/scrollbar");
262
263/***/ }),
264/* 15 */,
265/* 16 */,
266/* 17 */,
267/* 18 */,
268/* 19 */,
269/* 20 */,
270/* 21 */,
271/* 22 */,
272/* 23 */,
273/* 24 */,
274/* 25 */,
275/* 26 */,
276/* 27 */
277/***/ (function(module, __webpack_exports__, __webpack_require__) {
278
279"use strict";
280
281// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time.vue?vue&type=template&id=3d939089&
282var render = function() {
283 var _vm = this
284 var _h = _vm.$createElement
285 var _c = _vm._self._c || _h
286 return _c(
287 "transition",
288 {
289 attrs: { name: "el-zoom-in-top" },
290 on: {
291 "after-leave": function($event) {
292 _vm.$emit("dodestroy")
293 }
294 }
295 },
296 [
297 _c(
298 "div",
299 {
300 directives: [
301 {
302 name: "show",
303 rawName: "v-show",
304 value: _vm.visible,
305 expression: "visible"
306 }
307 ],
308 staticClass: "el-time-panel el-popper",
309 class: _vm.popperClass
310 },
311 [
312 _c(
313 "div",
314 {
315 staticClass: "el-time-panel__content",
316 class: { "has-seconds": _vm.showSeconds }
317 },
318 [
319 _c("time-spinner", {
320 ref: "spinner",
321 attrs: {
322 "arrow-control": _vm.useArrow,
323 "show-seconds": _vm.showSeconds,
324 "am-pm-mode": _vm.amPmMode,
325 date: _vm.date
326 },
327 on: {
328 change: _vm.handleChange,
329 "select-range": _vm.setSelectionRange
330 }
331 })
332 ],
333 1
334 ),
335 _c("div", { staticClass: "el-time-panel__footer" }, [
336 _c(
337 "button",
338 {
339 staticClass: "el-time-panel__btn cancel",
340 attrs: { type: "button" },
341 on: { click: _vm.handleCancel }
342 },
343 [_vm._v(_vm._s(_vm.t("el.datepicker.cancel")))]
344 ),
345 _c(
346 "button",
347 {
348 staticClass: "el-time-panel__btn",
349 class: { confirm: !_vm.disabled },
350 attrs: { type: "button" },
351 on: {
352 click: function($event) {
353 _vm.handleConfirm()
354 }
355 }
356 },
357 [_vm._v(_vm._s(_vm.t("el.datepicker.confirm")))]
358 )
359 ])
360 ]
361 )
362 ]
363 )
364}
365var staticRenderFns = []
366render._withStripped = true
367
368
369// CONCATENATED MODULE: ./packages/date-picker/src/panel/time.vue?vue&type=template&id=3d939089&
370
371// EXTERNAL MODULE: external "element-ui/lib/utils/date-util"
372var date_util_ = __webpack_require__(1);
373
374// EXTERNAL MODULE: external "element-ui/lib/mixins/locale"
375var locale_ = __webpack_require__(6);
376var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
377
378// EXTERNAL MODULE: ./packages/date-picker/src/basic/time-spinner.vue + 4 modules
379var time_spinner = __webpack_require__(34);
380
381// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/time.vue?vue&type=script&lang=js&
382//
383//
384//
385//
386//
387//
388//
389//
390//
391//
392//
393//
394//
395//
396//
397//
398//
399//
400//
401//
402//
403//
404//
405//
406//
407//
408//
409//
410//
411//
412//
413//
414
415
416
417
418
419/* harmony default export */ var timevue_type_script_lang_js_ = ({
420 mixins: [locale_default.a],
421
422 components: {
423 TimeSpinner: time_spinner["a" /* default */]
424 },
425
426 props: {
427 visible: Boolean,
428 timeArrowControl: Boolean
429 },
430
431 watch: {
432 visible: function visible(val) {
433 var _this = this;
434
435 if (val) {
436 this.oldValue = this.value;
437 this.$nextTick(function () {
438 return _this.$refs.spinner.emitSelectRange('hours');
439 });
440 } else {
441 this.needInitAdjust = true;
442 }
443 },
444 value: function value(newVal) {
445 var _this2 = this;
446
447 var date = void 0;
448 if (newVal instanceof Date) {
449 date = Object(date_util_["limitTimeRange"])(newVal, this.selectableRange, this.format);
450 } else if (!newVal) {
451 date = this.defaultValue ? new Date(this.defaultValue) : new Date();
452 }
453
454 this.date = date;
455 if (this.visible && this.needInitAdjust) {
456 this.$nextTick(function (_) {
457 return _this2.adjustSpinners();
458 });
459 this.needInitAdjust = false;
460 }
461 },
462 selectableRange: function selectableRange(val) {
463 this.$refs.spinner.selectableRange = val;
464 },
465 defaultValue: function defaultValue(val) {
466 if (!Object(date_util_["isDate"])(this.value)) {
467 this.date = val ? new Date(val) : new Date();
468 }
469 }
470 },
471
472 data: function data() {
473 return {
474 popperClass: '',
475 format: 'HH:mm:ss',
476 value: '',
477 defaultValue: null,
478 date: new Date(),
479 oldValue: new Date(),
480 selectableRange: [],
481 selectionRange: [0, 2],
482 disabled: false,
483 arrowControl: false,
484 needInitAdjust: true
485 };
486 },
487
488
489 computed: {
490 showSeconds: function showSeconds() {
491 return (this.format || '').indexOf('ss') !== -1;
492 },
493 useArrow: function useArrow() {
494 return this.arrowControl || this.timeArrowControl || false;
495 },
496 amPmMode: function amPmMode() {
497 if ((this.format || '').indexOf('A') !== -1) return 'A';
498 if ((this.format || '').indexOf('a') !== -1) return 'a';
499 return '';
500 }
501 },
502
503 methods: {
504 handleCancel: function handleCancel() {
505 this.$emit('pick', this.oldValue, false);
506 },
507 handleChange: function handleChange(date) {
508 // this.visible avoids edge cases, when use scrolls during panel closing animation
509 if (this.visible) {
510 this.date = Object(date_util_["clearMilliseconds"])(date);
511 // if date is out of range, do not emit
512 if (this.isValidValue(this.date)) {
513 this.$emit('pick', this.date, true);
514 }
515 }
516 },
517 setSelectionRange: function setSelectionRange(start, end) {
518 this.$emit('select-range', start, end);
519 this.selectionRange = [start, end];
520 },
521 handleConfirm: function handleConfirm() {
522 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
523 var first = arguments[1];
524
525 if (first) return;
526 var date = Object(date_util_["clearMilliseconds"])(Object(date_util_["limitTimeRange"])(this.date, this.selectableRange, this.format));
527 this.$emit('pick', date, visible, first);
528 },
529 handleKeydown: function handleKeydown(event) {
530 var keyCode = event.keyCode;
531 var mapping = { 38: -1, 40: 1, 37: -1, 39: 1 };
532
533 // Left or Right
534 if (keyCode === 37 || keyCode === 39) {
535 var step = mapping[keyCode];
536 this.changeSelectionRange(step);
537 event.preventDefault();
538 return;
539 }
540
541 // Up or Down
542 if (keyCode === 38 || keyCode === 40) {
543 var _step = mapping[keyCode];
544 this.$refs.spinner.scrollDown(_step);
545 event.preventDefault();
546 return;
547 }
548 },
549 isValidValue: function isValidValue(date) {
550 return Object(date_util_["timeWithinRange"])(date, this.selectableRange, this.format);
551 },
552 adjustSpinners: function adjustSpinners() {
553 return this.$refs.spinner.adjustSpinners();
554 },
555 changeSelectionRange: function changeSelectionRange(step) {
556 var list = [0, 3].concat(this.showSeconds ? [6] : []);
557 var mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);
558 var index = list.indexOf(this.selectionRange[0]);
559 var next = (index + step + list.length) % list.length;
560 this.$refs.spinner.emitSelectRange(mapping[next]);
561 }
562 },
563
564 mounted: function mounted() {
565 var _this3 = this;
566
567 this.$nextTick(function () {
568 return _this3.handleConfirm(true, true);
569 });
570 this.$emit('mounted');
571 }
572});
573// CONCATENATED MODULE: ./packages/date-picker/src/panel/time.vue?vue&type=script&lang=js&
574 /* harmony default export */ var panel_timevue_type_script_lang_js_ = (timevue_type_script_lang_js_);
575// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
576var componentNormalizer = __webpack_require__(0);
577
578// CONCATENATED MODULE: ./packages/date-picker/src/panel/time.vue
579
580
581
582
583
584/* normalize component */
585
586var component = Object(componentNormalizer["a" /* default */])(
587 panel_timevue_type_script_lang_js_,
588 render,
589 staticRenderFns,
590 false,
591 null,
592 null,
593 null
594
595)
596
597/* hot reload */
598if (false) { var api; }
599component.options.__file = "packages/date-picker/src/panel/time.vue"
600/* harmony default export */ var time = __webpack_exports__["a"] = (component.exports);
601
602/***/ }),
603/* 28 */,
604/* 29 */,
605/* 30 */
606/***/ (function(module, __webpack_exports__, __webpack_require__) {
607
608"use strict";
609/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
610/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__);
611
612
613/* harmony default export */ __webpack_exports__["a"] = ({
614 bind: function bind(el, binding, vnode) {
615 var interval = null;
616 var startTime = void 0;
617 var handler = function handler() {
618 return vnode.context[binding.expression].apply();
619 };
620 var clear = function clear() {
621 if (Date.now() - startTime < 100) {
622 handler();
623 }
624 clearInterval(interval);
625 interval = null;
626 };
627
628 Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__["on"])(el, 'mousedown', function (e) {
629 if (e.button !== 0) return;
630 startTime = Date.now();
631 Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__["once"])(document, 'mouseup', clear);
632 clearInterval(interval);
633 interval = setInterval(handler, 100);
634 });
635 }
636});
637
638/***/ }),
639/* 31 */,
640/* 32 */
641/***/ (function(module, __webpack_exports__, __webpack_require__) {
642
643"use strict";
644
645// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker.vue?vue&type=template&id=79ae069f&
646var render = function() {
647 var _vm = this
648 var _h = _vm.$createElement
649 var _c = _vm._self._c || _h
650 return !_vm.ranged
651 ? _c(
652 "el-input",
653 _vm._b(
654 {
655 directives: [
656 {
657 name: "clickoutside",
658 rawName: "v-clickoutside",
659 value: _vm.handleClose,
660 expression: "handleClose"
661 }
662 ],
663 ref: "reference",
664 staticClass: "el-date-editor",
665 class: "el-date-editor--" + _vm.type,
666 attrs: {
667 readonly:
668 !_vm.editable ||
669 _vm.readonly ||
670 _vm.type === "dates" ||
671 _vm.type === "week",
672 disabled: _vm.pickerDisabled,
673 size: _vm.pickerSize,
674 name: _vm.name,
675 placeholder: _vm.placeholder,
676 value: _vm.displayValue,
677 validateEvent: false
678 },
679 on: {
680 focus: _vm.handleFocus,
681 input: function(value) {
682 return (_vm.userInput = value)
683 },
684 change: _vm.handleChange
685 },
686 nativeOn: {
687 keydown: function($event) {
688 return _vm.handleKeydown($event)
689 },
690 mouseenter: function($event) {
691 return _vm.handleMouseEnter($event)
692 },
693 mouseleave: function($event) {
694 _vm.showClose = false
695 }
696 }
697 },
698 "el-input",
699 _vm.firstInputId,
700 false
701 ),
702 [
703 _c("i", {
704 staticClass: "el-input__icon",
705 class: _vm.triggerClass,
706 attrs: { slot: "prefix" },
707 on: { click: _vm.handleFocus },
708 slot: "prefix"
709 }),
710 _vm.haveTrigger
711 ? _c("i", {
712 staticClass: "el-input__icon",
713 class: [_vm.showClose ? "" + _vm.clearIcon : ""],
714 attrs: { slot: "suffix" },
715 on: { click: _vm.handleClickIcon },
716 slot: "suffix"
717 })
718 : _vm._e()
719 ]
720 )
721 : _c(
722 "div",
723 {
724 directives: [
725 {
726 name: "clickoutside",
727 rawName: "v-clickoutside",
728 value: _vm.handleClose,
729 expression: "handleClose"
730 }
731 ],
732 ref: "reference",
733 staticClass: "el-date-editor el-range-editor el-input__inner",
734 class: [
735 "el-date-editor--" + _vm.type,
736 _vm.pickerSize ? "el-range-editor--" + _vm.pickerSize : "",
737 _vm.pickerDisabled ? "is-disabled" : "",
738 _vm.pickerVisible ? "is-active" : ""
739 ],
740 on: {
741 click: _vm.handleRangeClick,
742 mouseenter: _vm.handleMouseEnter,
743 mouseleave: function($event) {
744 _vm.showClose = false
745 },
746 keydown: _vm.handleKeydown
747 }
748 },
749 [
750 _c("i", {
751 class: ["el-input__icon", "el-range__icon", _vm.triggerClass]
752 }),
753 _c(
754 "input",
755 _vm._b(
756 {
757 staticClass: "el-range-input",
758 attrs: {
759 autocomplete: "off",
760 placeholder: _vm.startPlaceholder,
761 disabled: _vm.pickerDisabled,
762 readonly: !_vm.editable || _vm.readonly,
763 name: _vm.name && _vm.name[0]
764 },
765 domProps: { value: _vm.displayValue && _vm.displayValue[0] },
766 on: {
767 input: _vm.handleStartInput,
768 change: _vm.handleStartChange,
769 focus: _vm.handleFocus
770 }
771 },
772 "input",
773 _vm.firstInputId,
774 false
775 )
776 ),
777 _vm._t("range-separator", [
778 _c("span", { staticClass: "el-range-separator" }, [
779 _vm._v(_vm._s(_vm.rangeSeparator))
780 ])
781 ]),
782 _c(
783 "input",
784 _vm._b(
785 {
786 staticClass: "el-range-input",
787 attrs: {
788 autocomplete: "off",
789 placeholder: _vm.endPlaceholder,
790 disabled: _vm.pickerDisabled,
791 readonly: !_vm.editable || _vm.readonly,
792 name: _vm.name && _vm.name[1]
793 },
794 domProps: { value: _vm.displayValue && _vm.displayValue[1] },
795 on: {
796 input: _vm.handleEndInput,
797 change: _vm.handleEndChange,
798 focus: _vm.handleFocus
799 }
800 },
801 "input",
802 _vm.secondInputId,
803 false
804 )
805 ),
806 _vm.haveTrigger
807 ? _c("i", {
808 staticClass: "el-input__icon el-range__close-icon",
809 class: [_vm.showClose ? "" + _vm.clearIcon : ""],
810 on: { click: _vm.handleClickIcon }
811 })
812 : _vm._e()
813 ],
814 2
815 )
816}
817var staticRenderFns = []
818render._withStripped = true
819
820
821// CONCATENATED MODULE: ./packages/date-picker/src/picker.vue?vue&type=template&id=79ae069f&
822
823// EXTERNAL MODULE: external "vue"
824var external_vue_ = __webpack_require__(7);
825var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
826
827// EXTERNAL MODULE: external "element-ui/lib/utils/clickoutside"
828var clickoutside_ = __webpack_require__(12);
829var clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);
830
831// EXTERNAL MODULE: external "element-ui/lib/utils/date-util"
832var date_util_ = __webpack_require__(1);
833
834// EXTERNAL MODULE: external "element-ui/lib/utils/vue-popper"
835var vue_popper_ = __webpack_require__(5);
836var vue_popper_default = /*#__PURE__*/__webpack_require__.n(vue_popper_);
837
838// EXTERNAL MODULE: external "element-ui/lib/mixins/emitter"
839var emitter_ = __webpack_require__(4);
840var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
841
842// EXTERNAL MODULE: external "element-ui/lib/input"
843var input_ = __webpack_require__(10);
844var input_default = /*#__PURE__*/__webpack_require__.n(input_);
845
846// EXTERNAL MODULE: external "element-ui/lib/utils/merge"
847var merge_ = __webpack_require__(9);
848var merge_default = /*#__PURE__*/__webpack_require__.n(merge_);
849
850// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker.vue?vue&type=script&lang=js&
851//
852//
853//
854//
855//
856//
857//
858//
859//
860//
861//
862//
863//
864//
865//
866//
867//
868//
869//
870//
871//
872//
873//
874//
875//
876//
877//
878//
879//
880//
881//
882//
883//
884//
885//
886//
887//
888//
889//
890//
891//
892//
893//
894//
895//
896//
897//
898//
899//
900//
901//
902//
903//
904//
905//
906//
907//
908//
909//
910//
911//
912//
913//
914//
915//
916//
917//
918//
919//
920//
921//
922//
923//
924//
925//
926//
927//
928//
929//
930//
931//
932//
933//
934//
935//
936
937
938
939
940
941
942
943
944
945var NewPopper = {
946 props: {
947 appendToBody: vue_popper_default.a.props.appendToBody,
948 offset: vue_popper_default.a.props.offset,
949 boundariesPadding: vue_popper_default.a.props.boundariesPadding,
950 arrowOffset: vue_popper_default.a.props.arrowOffset
951 },
952 methods: vue_popper_default.a.methods,
953 data: function data() {
954 return merge_default()({ visibleArrow: true }, vue_popper_default.a.data);
955 },
956
957 beforeDestroy: vue_popper_default.a.beforeDestroy
958};
959
960var DEFAULT_FORMATS = {
961 date: 'yyyy-MM-dd',
962 month: 'yyyy-MM',
963 datetime: 'yyyy-MM-dd HH:mm:ss',
964 time: 'HH:mm:ss',
965 week: 'yyyywWW',
966 timerange: 'HH:mm:ss',
967 daterange: 'yyyy-MM-dd',
968 monthrange: 'yyyy-MM',
969 datetimerange: 'yyyy-MM-dd HH:mm:ss',
970 year: 'yyyy'
971};
972var HAVE_TRIGGER_TYPES = ['date', 'datetime', 'time', 'time-select', 'week', 'month', 'year', 'daterange', 'monthrange', 'timerange', 'datetimerange', 'dates'];
973var pickervue_type_script_lang_js_DATE_FORMATTER = function DATE_FORMATTER(value, format) {
974 if (format === 'timestamp') return value.getTime();
975 return Object(date_util_["formatDate"])(value, format);
976};
977var pickervue_type_script_lang_js_DATE_PARSER = function DATE_PARSER(text, format) {
978 if (format === 'timestamp') return new Date(Number(text));
979 return Object(date_util_["parseDate"])(text, format);
980};
981var RANGE_FORMATTER = function RANGE_FORMATTER(value, format) {
982 if (Array.isArray(value) && value.length === 2) {
983 var start = value[0];
984 var end = value[1];
985
986 if (start && end) {
987 return [pickervue_type_script_lang_js_DATE_FORMATTER(start, format), pickervue_type_script_lang_js_DATE_FORMATTER(end, format)];
988 }
989 }
990 return '';
991};
992var RANGE_PARSER = function RANGE_PARSER(array, format, separator) {
993 if (!Array.isArray(array)) {
994 array = array.split(separator);
995 }
996 if (array.length === 2) {
997 var range1 = array[0];
998 var range2 = array[1];
999
1000 return [pickervue_type_script_lang_js_DATE_PARSER(range1, format), pickervue_type_script_lang_js_DATE_PARSER(range2, format)];
1001 }
1002 return [];
1003};
1004var TYPE_VALUE_RESOLVER_MAP = {
1005 default: {
1006 formatter: function formatter(value) {
1007 if (!value) return '';
1008 return '' + value;
1009 },
1010 parser: function parser(text) {
1011 if (text === undefined || text === '') return null;
1012 return text;
1013 }
1014 },
1015 week: {
1016 formatter: function formatter(value, format) {
1017 var week = Object(date_util_["getWeekNumber"])(value);
1018 var month = value.getMonth();
1019 var trueDate = new Date(value);
1020 if (week === 1 && month === 11) {
1021 trueDate.setHours(0, 0, 0, 0);
1022 trueDate.setDate(trueDate.getDate() + 3 - (trueDate.getDay() + 6) % 7);
1023 }
1024 var date = Object(date_util_["formatDate"])(trueDate, format);
1025
1026 date = /WW/.test(date) ? date.replace(/WW/, week < 10 ? '0' + week : week) : date.replace(/W/, week);
1027 return date;
1028 },
1029 parser: function parser(text, format) {
1030 // parse as if a normal date
1031 return TYPE_VALUE_RESOLVER_MAP.date.parser(text, format);
1032 }
1033 },
1034 date: {
1035 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
1036 parser: pickervue_type_script_lang_js_DATE_PARSER
1037 },
1038 datetime: {
1039 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
1040 parser: pickervue_type_script_lang_js_DATE_PARSER
1041 },
1042 daterange: {
1043 formatter: RANGE_FORMATTER,
1044 parser: RANGE_PARSER
1045 },
1046 monthrange: {
1047 formatter: RANGE_FORMATTER,
1048 parser: RANGE_PARSER
1049 },
1050 datetimerange: {
1051 formatter: RANGE_FORMATTER,
1052 parser: RANGE_PARSER
1053 },
1054 timerange: {
1055 formatter: RANGE_FORMATTER,
1056 parser: RANGE_PARSER
1057 },
1058 time: {
1059 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
1060 parser: pickervue_type_script_lang_js_DATE_PARSER
1061 },
1062 month: {
1063 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
1064 parser: pickervue_type_script_lang_js_DATE_PARSER
1065 },
1066 year: {
1067 formatter: pickervue_type_script_lang_js_DATE_FORMATTER,
1068 parser: pickervue_type_script_lang_js_DATE_PARSER
1069 },
1070 number: {
1071 formatter: function formatter(value) {
1072 if (!value) return '';
1073 return '' + value;
1074 },
1075 parser: function parser(text) {
1076 var result = Number(text);
1077
1078 if (!isNaN(text)) {
1079 return result;
1080 } else {
1081 return null;
1082 }
1083 }
1084 },
1085 dates: {
1086 formatter: function formatter(value, format) {
1087 return value.map(function (date) {
1088 return pickervue_type_script_lang_js_DATE_FORMATTER(date, format);
1089 });
1090 },
1091 parser: function parser(value, format) {
1092 return (typeof value === 'string' ? value.split(', ') : value).map(function (date) {
1093 return date instanceof Date ? date : pickervue_type_script_lang_js_DATE_PARSER(date, format);
1094 });
1095 }
1096 }
1097};
1098var PLACEMENT_MAP = {
1099 left: 'bottom-start',
1100 center: 'bottom',
1101 right: 'bottom-end'
1102};
1103
1104var parseAsFormatAndType = function parseAsFormatAndType(value, customFormat, type) {
1105 var rangeSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '-';
1106
1107 if (!value) return null;
1108 var parser = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).parser;
1109 var format = customFormat || DEFAULT_FORMATS[type];
1110 return parser(value, format, rangeSeparator);
1111};
1112
1113var formatAsFormatAndType = function formatAsFormatAndType(value, customFormat, type) {
1114 if (!value) return null;
1115 var formatter = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).formatter;
1116 var format = customFormat || DEFAULT_FORMATS[type];
1117 return formatter(value, format);
1118};
1119
1120/*
1121 * Considers:
1122 * 1. Date object
1123 * 2. date string
1124 * 3. array of 1 or 2
1125 */
1126var valueEquals = function valueEquals(a, b) {
1127 // considers Date object and string
1128 var dateEquals = function dateEquals(a, b) {
1129 var aIsDate = a instanceof Date;
1130 var bIsDate = b instanceof Date;
1131 if (aIsDate && bIsDate) {
1132 return a.getTime() === b.getTime();
1133 }
1134 if (!aIsDate && !bIsDate) {
1135 return a === b;
1136 }
1137 return false;
1138 };
1139
1140 var aIsArray = a instanceof Array;
1141 var bIsArray = b instanceof Array;
1142 if (aIsArray && bIsArray) {
1143 if (a.length !== b.length) {
1144 return false;
1145 }
1146 return a.every(function (item, index) {
1147 return dateEquals(item, b[index]);
1148 });
1149 }
1150 if (!aIsArray && !bIsArray) {
1151 return dateEquals(a, b);
1152 }
1153 return false;
1154};
1155
1156var isString = function isString(val) {
1157 return typeof val === 'string' || val instanceof String;
1158};
1159
1160var validator = function validator(val) {
1161 // either: String, Array of String, null / undefined
1162 return val === null || val === undefined || isString(val) || Array.isArray(val) && val.length === 2 && val.every(isString);
1163};
1164
1165/* harmony default export */ var pickervue_type_script_lang_js_ = ({
1166 mixins: [emitter_default.a, NewPopper],
1167
1168 inject: {
1169 elForm: {
1170 default: ''
1171 },
1172 elFormItem: {
1173 default: ''
1174 }
1175 },
1176
1177 props: {
1178 size: String,
1179 format: String,
1180 valueFormat: String,
1181 readonly: Boolean,
1182 placeholder: String,
1183 startPlaceholder: String,
1184 endPlaceholder: String,
1185 prefixIcon: String,
1186 clearIcon: {
1187 type: String,
1188 default: 'el-icon-circle-close'
1189 },
1190 name: {
1191 default: '',
1192 validator: validator
1193 },
1194 disabled: Boolean,
1195 clearable: {
1196 type: Boolean,
1197 default: true
1198 },
1199 id: {
1200 default: '',
1201 validator: validator
1202 },
1203 popperClass: String,
1204 editable: {
1205 type: Boolean,
1206 default: true
1207 },
1208 align: {
1209 type: String,
1210 default: 'left'
1211 },
1212 value: {},
1213 defaultValue: {},
1214 defaultTime: {},
1215 rangeSeparator: {
1216 default: '-'
1217 },
1218 pickerOptions: {},
1219 unlinkPanels: Boolean,
1220 validateEvent: {
1221 type: Boolean,
1222 default: true
1223 }
1224 },
1225
1226 components: { ElInput: input_default.a },
1227
1228 directives: { Clickoutside: clickoutside_default.a },
1229
1230 data: function data() {
1231 return {
1232 pickerVisible: false,
1233 showClose: false,
1234 userInput: null,
1235 valueOnOpen: null, // value when picker opens, used to determine whether to emit change
1236 unwatchPickerOptions: null
1237 };
1238 },
1239
1240
1241 watch: {
1242 pickerVisible: function pickerVisible(val) {
1243 if (this.readonly || this.pickerDisabled) return;
1244 if (val) {
1245 this.showPicker();
1246 this.valueOnOpen = Array.isArray(this.value) ? [].concat(this.value) : this.value;
1247 } else {
1248 this.hidePicker();
1249 this.emitChange(this.value);
1250 this.userInput = null;
1251 if (this.validateEvent) {
1252 this.dispatch('ElFormItem', 'el.form.blur');
1253 }
1254 this.$emit('blur', this);
1255 this.blur();
1256 }
1257 },
1258
1259 parsedValue: {
1260 immediate: true,
1261 handler: function handler(val) {
1262 if (this.picker) {
1263 this.picker.value = val;
1264 }
1265 }
1266 },
1267 defaultValue: function defaultValue(val) {
1268 // NOTE: should eventually move to jsx style picker + panel ?
1269 if (this.picker) {
1270 this.picker.defaultValue = val;
1271 }
1272 },
1273 value: function value(val, oldVal) {
1274 if (!valueEquals(val, oldVal) && !this.pickerVisible && this.validateEvent) {
1275 this.dispatch('ElFormItem', 'el.form.change', val);
1276 }
1277 }
1278 },
1279
1280 computed: {
1281 ranged: function ranged() {
1282 return this.type.indexOf('range') > -1;
1283 },
1284 reference: function reference() {
1285 var reference = this.$refs.reference;
1286 return reference.$el || reference;
1287 },
1288 refInput: function refInput() {
1289 if (this.reference) {
1290 return [].slice.call(this.reference.querySelectorAll('input'));
1291 }
1292 return [];
1293 },
1294 valueIsEmpty: function valueIsEmpty() {
1295 var val = this.value;
1296 if (Array.isArray(val)) {
1297 for (var i = 0, len = val.length; i < len; i++) {
1298 if (val[i]) {
1299 return false;
1300 }
1301 }
1302 } else {
1303 if (val) {
1304 return false;
1305 }
1306 }
1307 return true;
1308 },
1309 triggerClass: function triggerClass() {
1310 return this.prefixIcon || (this.type.indexOf('time') !== -1 ? 'el-icon-time' : 'el-icon-date');
1311 },
1312 selectionMode: function selectionMode() {
1313 if (this.type === 'week') {
1314 return 'week';
1315 } else if (this.type === 'month') {
1316 return 'month';
1317 } else if (this.type === 'year') {
1318 return 'year';
1319 } else if (this.type === 'dates') {
1320 return 'dates';
1321 }
1322
1323 return 'day';
1324 },
1325 haveTrigger: function haveTrigger() {
1326 if (typeof this.showTrigger !== 'undefined') {
1327 return this.showTrigger;
1328 }
1329 return HAVE_TRIGGER_TYPES.indexOf(this.type) !== -1;
1330 },
1331 displayValue: function displayValue() {
1332 var formattedValue = formatAsFormatAndType(this.parsedValue, this.format, this.type, this.rangeSeparator);
1333 if (Array.isArray(this.userInput)) {
1334 return [this.userInput[0] || formattedValue && formattedValue[0] || '', this.userInput[1] || formattedValue && formattedValue[1] || ''];
1335 } else if (this.userInput !== null) {
1336 return this.userInput;
1337 } else if (formattedValue) {
1338 return this.type === 'dates' ? formattedValue.join(', ') : formattedValue;
1339 } else {
1340 return '';
1341 }
1342 },
1343 parsedValue: function parsedValue() {
1344 if (!this.value) return this.value; // component value is not set
1345 if (this.type === 'time-select') return this.value; // time-select does not require parsing, this might change in next major version
1346
1347 var valueIsDateObject = Object(date_util_["isDateObject"])(this.value) || Array.isArray(this.value) && this.value.every(date_util_["isDateObject"]);
1348 if (valueIsDateObject) {
1349 return this.value;
1350 }
1351
1352 if (this.valueFormat) {
1353 return parseAsFormatAndType(this.value, this.valueFormat, this.type, this.rangeSeparator) || this.value;
1354 }
1355
1356 // NOTE: deal with common but incorrect usage, should remove in next major version
1357 // user might provide string / timestamp without value-format, coerce them into date (or array of date)
1358 return Array.isArray(this.value) ? this.value.map(function (val) {
1359 return new Date(val);
1360 }) : new Date(this.value);
1361 },
1362 _elFormItemSize: function _elFormItemSize() {
1363 return (this.elFormItem || {}).elFormItemSize;
1364 },
1365 pickerSize: function pickerSize() {
1366 return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;
1367 },
1368 pickerDisabled: function pickerDisabled() {
1369 return this.disabled || (this.elForm || {}).disabled;
1370 },
1371 firstInputId: function firstInputId() {
1372 var obj = {};
1373 var id = void 0;
1374 if (this.ranged) {
1375 id = this.id && this.id[0];
1376 } else {
1377 id = this.id;
1378 }
1379 if (id) obj.id = id;
1380 return obj;
1381 },
1382 secondInputId: function secondInputId() {
1383 var obj = {};
1384 var id = void 0;
1385 if (this.ranged) {
1386 id = this.id && this.id[1];
1387 }
1388 if (id) obj.id = id;
1389 return obj;
1390 }
1391 },
1392
1393 created: function created() {
1394 // vue-popper
1395 this.popperOptions = {
1396 boundariesPadding: 0,
1397 gpuAcceleration: false
1398 };
1399 this.placement = PLACEMENT_MAP[this.align] || PLACEMENT_MAP.left;
1400
1401 this.$on('fieldReset', this.handleFieldReset);
1402 },
1403
1404
1405 methods: {
1406 focus: function focus() {
1407 if (!this.ranged) {
1408 this.$refs.reference.focus();
1409 } else {
1410 this.handleFocus();
1411 }
1412 },
1413 blur: function blur() {
1414 this.refInput.forEach(function (input) {
1415 return input.blur();
1416 });
1417 },
1418
1419
1420 // {parse, formatTo} Value deals maps component value with internal Date
1421 parseValue: function parseValue(value) {
1422 var isParsed = Object(date_util_["isDateObject"])(value) || Array.isArray(value) && value.every(date_util_["isDateObject"]);
1423 if (this.valueFormat && !isParsed) {
1424 return parseAsFormatAndType(value, this.valueFormat, this.type, this.rangeSeparator) || value;
1425 } else {
1426 return value;
1427 }
1428 },
1429 formatToValue: function formatToValue(date) {
1430 var isFormattable = Object(date_util_["isDateObject"])(date) || Array.isArray(date) && date.every(date_util_["isDateObject"]);
1431 if (this.valueFormat && isFormattable) {
1432 return formatAsFormatAndType(date, this.valueFormat, this.type, this.rangeSeparator);
1433 } else {
1434 return date;
1435 }
1436 },
1437
1438
1439 // {parse, formatTo} String deals with user input
1440 parseString: function parseString(value) {
1441 var type = Array.isArray(value) ? this.type : this.type.replace('range', '');
1442 return parseAsFormatAndType(value, this.format, type);
1443 },
1444 formatToString: function formatToString(value) {
1445 var type = Array.isArray(value) ? this.type : this.type.replace('range', '');
1446 return formatAsFormatAndType(value, this.format, type);
1447 },
1448 handleMouseEnter: function handleMouseEnter() {
1449 if (this.readonly || this.pickerDisabled) return;
1450 if (!this.valueIsEmpty && this.clearable) {
1451 this.showClose = true;
1452 }
1453 },
1454 handleChange: function handleChange() {
1455 if (this.userInput) {
1456 var value = this.parseString(this.displayValue);
1457 if (value) {
1458 this.picker.value = value;
1459 if (this.isValidValue(value)) {
1460 this.emitInput(value);
1461 this.userInput = null;
1462 }
1463 }
1464 }
1465 if (this.userInput === '') {
1466 this.emitInput(null);
1467 this.emitChange(null);
1468 this.userInput = null;
1469 }
1470 },
1471 handleStartInput: function handleStartInput(event) {
1472 if (this.userInput) {
1473 this.userInput = [event.target.value, this.userInput[1]];
1474 } else {
1475 this.userInput = [event.target.value, null];
1476 }
1477 },
1478 handleEndInput: function handleEndInput(event) {
1479 if (this.userInput) {
1480 this.userInput = [this.userInput[0], event.target.value];
1481 } else {
1482 this.userInput = [null, event.target.value];
1483 }
1484 },
1485 handleStartChange: function handleStartChange(event) {
1486 var value = this.parseString(this.userInput && this.userInput[0]);
1487 if (value) {
1488 this.userInput = [this.formatToString(value), this.displayValue[1]];
1489 var newValue = [value, this.picker.value && this.picker.value[1]];
1490 this.picker.value = newValue;
1491 if (this.isValidValue(newValue)) {
1492 this.emitInput(newValue);
1493 this.userInput = null;
1494 }
1495 }
1496 },
1497 handleEndChange: function handleEndChange(event) {
1498 var value = this.parseString(this.userInput && this.userInput[1]);
1499 if (value) {
1500 this.userInput = [this.displayValue[0], this.formatToString(value)];
1501 var newValue = [this.picker.value && this.picker.value[0], value];
1502 this.picker.value = newValue;
1503 if (this.isValidValue(newValue)) {
1504 this.emitInput(newValue);
1505 this.userInput = null;
1506 }
1507 }
1508 },
1509 handleClickIcon: function handleClickIcon(event) {
1510 if (this.readonly || this.pickerDisabled) return;
1511 if (this.showClose) {
1512 this.valueOnOpen = this.value;
1513 event.stopPropagation();
1514 this.emitInput(null);
1515 this.emitChange(null);
1516 this.showClose = false;
1517 if (this.picker && typeof this.picker.handleClear === 'function') {
1518 this.picker.handleClear();
1519 }
1520 } else {
1521 this.pickerVisible = !this.pickerVisible;
1522 }
1523 },
1524 handleClose: function handleClose() {
1525 if (!this.pickerVisible) return;
1526 this.pickerVisible = false;
1527
1528 if (this.type === 'dates') {
1529 // restore to former value
1530 var oldValue = parseAsFormatAndType(this.valueOnOpen, this.valueFormat, this.type, this.rangeSeparator) || this.valueOnOpen;
1531 this.emitInput(oldValue);
1532 }
1533 },
1534 handleFieldReset: function handleFieldReset(initialValue) {
1535 this.userInput = initialValue === '' ? null : initialValue;
1536 },
1537 handleFocus: function handleFocus() {
1538 var type = this.type;
1539
1540 if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
1541 this.pickerVisible = true;
1542 }
1543 this.$emit('focus', this);
1544 },
1545 handleKeydown: function handleKeydown(event) {
1546 var _this = this;
1547
1548 var keyCode = event.keyCode;
1549
1550 // ESC
1551 if (keyCode === 27) {
1552 this.pickerVisible = false;
1553 event.stopPropagation();
1554 return;
1555 }
1556
1557 // Tab
1558 if (keyCode === 9) {
1559 if (!this.ranged) {
1560 this.handleChange();
1561 this.pickerVisible = this.picker.visible = false;
1562 this.blur();
1563 event.stopPropagation();
1564 } else {
1565 // user may change focus between two input
1566 setTimeout(function () {
1567 if (_this.refInput.indexOf(document.activeElement) === -1) {
1568 _this.pickerVisible = false;
1569 _this.blur();
1570 event.stopPropagation();
1571 }
1572 }, 0);
1573 }
1574 return;
1575 }
1576
1577 // Enter
1578 if (keyCode === 13) {
1579 if (this.userInput === '' || this.isValidValue(this.parseString(this.displayValue))) {
1580 this.handleChange();
1581 this.pickerVisible = this.picker.visible = false;
1582 this.blur();
1583 }
1584 event.stopPropagation();
1585 return;
1586 }
1587
1588 // if user is typing, do not let picker handle key input
1589 if (this.userInput) {
1590 event.stopPropagation();
1591 return;
1592 }
1593
1594 // delegate other keys to panel
1595 if (this.picker && this.picker.handleKeydown) {
1596 this.picker.handleKeydown(event);
1597 }
1598 },
1599 handleRangeClick: function handleRangeClick() {
1600 var type = this.type;
1601
1602 if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
1603 this.pickerVisible = true;
1604 }
1605 this.$emit('focus', this);
1606 },
1607 hidePicker: function hidePicker() {
1608 if (this.picker) {
1609 this.picker.resetView && this.picker.resetView();
1610 this.pickerVisible = this.picker.visible = false;
1611 this.destroyPopper();
1612 }
1613 },
1614 showPicker: function showPicker() {
1615 var _this2 = this;
1616
1617 if (this.$isServer) return;
1618 if (!this.picker) {
1619 this.mountPicker();
1620 }
1621 this.pickerVisible = this.picker.visible = true;
1622
1623 this.updatePopper();
1624
1625 this.picker.value = this.parsedValue;
1626 this.picker.resetView && this.picker.resetView();
1627
1628 this.$nextTick(function () {
1629 _this2.picker.adjustSpinners && _this2.picker.adjustSpinners();
1630 });
1631 },
1632 mountPicker: function mountPicker() {
1633 var _this3 = this;
1634
1635 this.picker = new external_vue_default.a(this.panel).$mount();
1636 this.picker.defaultValue = this.defaultValue;
1637 this.picker.defaultTime = this.defaultTime;
1638 this.picker.popperClass = this.popperClass;
1639 this.popperElm = this.picker.$el;
1640 this.picker.width = this.reference.getBoundingClientRect().width;
1641 this.picker.showTime = this.type === 'datetime' || this.type === 'datetimerange';
1642 this.picker.selectionMode = this.selectionMode;
1643 this.picker.unlinkPanels = this.unlinkPanels;
1644 this.picker.arrowControl = this.arrowControl || this.timeArrowControl || false;
1645 this.$watch('format', function (format) {
1646 _this3.picker.format = format;
1647 });
1648
1649 var updateOptions = function updateOptions() {
1650 var options = _this3.pickerOptions;
1651
1652 if (options && options.selectableRange) {
1653 var ranges = options.selectableRange;
1654 var parser = TYPE_VALUE_RESOLVER_MAP.datetimerange.parser;
1655 var format = DEFAULT_FORMATS.timerange;
1656
1657 ranges = Array.isArray(ranges) ? ranges : [ranges];
1658 _this3.picker.selectableRange = ranges.map(function (range) {
1659 return parser(range, format, _this3.rangeSeparator);
1660 });
1661 }
1662
1663 for (var option in options) {
1664 if (options.hasOwnProperty(option) &&
1665 // 忽略 time-picker 的该配置项
1666 option !== 'selectableRange') {
1667 _this3.picker[option] = options[option];
1668 }
1669 }
1670
1671 // main format must prevail over undocumented pickerOptions.format
1672 if (_this3.format) {
1673 _this3.picker.format = _this3.format;
1674 }
1675 };
1676 updateOptions();
1677 this.unwatchPickerOptions = this.$watch('pickerOptions', function () {
1678 return updateOptions();
1679 }, { deep: true });
1680 this.$el.appendChild(this.picker.$el);
1681 this.picker.resetView && this.picker.resetView();
1682
1683 this.picker.$on('dodestroy', this.doDestroy);
1684 this.picker.$on('pick', function () {
1685 var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1686 var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1687
1688 _this3.userInput = null;
1689 _this3.pickerVisible = _this3.picker.visible = visible;
1690 _this3.emitInput(date);
1691 _this3.picker.resetView && _this3.picker.resetView();
1692 });
1693
1694 this.picker.$on('select-range', function (start, end, pos) {
1695 if (_this3.refInput.length === 0) return;
1696 if (!pos || pos === 'min') {
1697 _this3.refInput[0].setSelectionRange(start, end);
1698 _this3.refInput[0].focus();
1699 } else if (pos === 'max') {
1700 _this3.refInput[1].setSelectionRange(start, end);
1701 _this3.refInput[1].focus();
1702 }
1703 });
1704 },
1705 unmountPicker: function unmountPicker() {
1706 if (this.picker) {
1707 this.picker.$destroy();
1708 this.picker.$off();
1709 if (typeof this.unwatchPickerOptions === 'function') {
1710 this.unwatchPickerOptions();
1711 }
1712 this.picker.$el.parentNode.removeChild(this.picker.$el);
1713 }
1714 },
1715 emitChange: function emitChange(val) {
1716 // determine user real change only
1717 if (!valueEquals(val, this.valueOnOpen)) {
1718 this.$emit('change', val);
1719 this.valueOnOpen = val;
1720 if (this.validateEvent) {
1721 this.dispatch('ElFormItem', 'el.form.change', val);
1722 }
1723 }
1724 },
1725 emitInput: function emitInput(val) {
1726 var formatted = this.formatToValue(val);
1727 if (!valueEquals(this.value, formatted)) {
1728 this.$emit('input', formatted);
1729 }
1730 },
1731 isValidValue: function isValidValue(value) {
1732 if (!this.picker) {
1733 this.mountPicker();
1734 }
1735 if (this.picker.isValidValue) {
1736 return value && this.picker.isValidValue(value);
1737 } else {
1738 return true;
1739 }
1740 }
1741 }
1742});
1743// CONCATENATED MODULE: ./packages/date-picker/src/picker.vue?vue&type=script&lang=js&
1744 /* harmony default export */ var src_pickervue_type_script_lang_js_ = (pickervue_type_script_lang_js_);
1745// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
1746var componentNormalizer = __webpack_require__(0);
1747
1748// CONCATENATED MODULE: ./packages/date-picker/src/picker.vue
1749
1750
1751
1752
1753
1754/* normalize component */
1755
1756var component = Object(componentNormalizer["a" /* default */])(
1757 src_pickervue_type_script_lang_js_,
1758 render,
1759 staticRenderFns,
1760 false,
1761 null,
1762 null,
1763 null
1764
1765)
1766
1767/* hot reload */
1768if (false) { var api; }
1769component.options.__file = "packages/date-picker/src/picker.vue"
1770/* harmony default export */ var picker = __webpack_exports__["a"] = (component.exports);
1771
1772/***/ }),
1773/* 33 */,
1774/* 34 */
1775/***/ (function(module, __webpack_exports__, __webpack_require__) {
1776
1777"use strict";
1778
1779// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/time-spinner.vue?vue&type=template&id=1facadeb&
1780var render = function() {
1781 var _vm = this
1782 var _h = _vm.$createElement
1783 var _c = _vm._self._c || _h
1784 return _c(
1785 "div",
1786 {
1787 staticClass: "el-time-spinner",
1788 class: { "has-seconds": _vm.showSeconds }
1789 },
1790 [
1791 !_vm.arrowControl
1792 ? [
1793 _c(
1794 "el-scrollbar",
1795 {
1796 ref: "hours",
1797 staticClass: "el-time-spinner__wrapper",
1798 attrs: {
1799 "wrap-style": "max-height: inherit;",
1800 "view-class": "el-time-spinner__list",
1801 noresize: "",
1802 tag: "ul"
1803 },
1804 nativeOn: {
1805 mouseenter: function($event) {
1806 _vm.emitSelectRange("hours")
1807 },
1808 mousemove: function($event) {
1809 _vm.adjustCurrentSpinner("hours")
1810 }
1811 }
1812 },
1813 _vm._l(_vm.hoursList, function(disabled, hour) {
1814 return _c(
1815 "li",
1816 {
1817 key: hour,
1818 staticClass: "el-time-spinner__item",
1819 class: { active: hour === _vm.hours, disabled: disabled },
1820 on: {
1821 click: function($event) {
1822 _vm.handleClick("hours", {
1823 value: hour,
1824 disabled: disabled
1825 })
1826 }
1827 }
1828 },
1829 [
1830 _vm._v(
1831 _vm._s(
1832 ("0" + (_vm.amPmMode ? hour % 12 || 12 : hour)).slice(
1833 -2
1834 )
1835 ) + _vm._s(_vm.amPm(hour))
1836 )
1837 ]
1838 )
1839 }),
1840 0
1841 ),
1842 _c(
1843 "el-scrollbar",
1844 {
1845 ref: "minutes",
1846 staticClass: "el-time-spinner__wrapper",
1847 attrs: {
1848 "wrap-style": "max-height: inherit;",
1849 "view-class": "el-time-spinner__list",
1850 noresize: "",
1851 tag: "ul"
1852 },
1853 nativeOn: {
1854 mouseenter: function($event) {
1855 _vm.emitSelectRange("minutes")
1856 },
1857 mousemove: function($event) {
1858 _vm.adjustCurrentSpinner("minutes")
1859 }
1860 }
1861 },
1862 _vm._l(_vm.minutesList, function(enabled, key) {
1863 return _c(
1864 "li",
1865 {
1866 key: key,
1867 staticClass: "el-time-spinner__item",
1868 class: { active: key === _vm.minutes, disabled: !enabled },
1869 on: {
1870 click: function($event) {
1871 _vm.handleClick("minutes", {
1872 value: key,
1873 disabled: false
1874 })
1875 }
1876 }
1877 },
1878 [_vm._v(_vm._s(("0" + key).slice(-2)))]
1879 )
1880 }),
1881 0
1882 ),
1883 _c(
1884 "el-scrollbar",
1885 {
1886 directives: [
1887 {
1888 name: "show",
1889 rawName: "v-show",
1890 value: _vm.showSeconds,
1891 expression: "showSeconds"
1892 }
1893 ],
1894 ref: "seconds",
1895 staticClass: "el-time-spinner__wrapper",
1896 attrs: {
1897 "wrap-style": "max-height: inherit;",
1898 "view-class": "el-time-spinner__list",
1899 noresize: "",
1900 tag: "ul"
1901 },
1902 nativeOn: {
1903 mouseenter: function($event) {
1904 _vm.emitSelectRange("seconds")
1905 },
1906 mousemove: function($event) {
1907 _vm.adjustCurrentSpinner("seconds")
1908 }
1909 }
1910 },
1911 _vm._l(60, function(second, key) {
1912 return _c(
1913 "li",
1914 {
1915 key: key,
1916 staticClass: "el-time-spinner__item",
1917 class: { active: key === _vm.seconds },
1918 on: {
1919 click: function($event) {
1920 _vm.handleClick("seconds", {
1921 value: key,
1922 disabled: false
1923 })
1924 }
1925 }
1926 },
1927 [_vm._v(_vm._s(("0" + key).slice(-2)))]
1928 )
1929 }),
1930 0
1931 )
1932 ]
1933 : _vm._e(),
1934 _vm.arrowControl
1935 ? [
1936 _c(
1937 "div",
1938 {
1939 staticClass: "el-time-spinner__wrapper is-arrow",
1940 on: {
1941 mouseenter: function($event) {
1942 _vm.emitSelectRange("hours")
1943 }
1944 }
1945 },
1946 [
1947 _c("i", {
1948 directives: [
1949 {
1950 name: "repeat-click",
1951 rawName: "v-repeat-click",
1952 value: _vm.decrease,
1953 expression: "decrease"
1954 }
1955 ],
1956 staticClass: "el-time-spinner__arrow el-icon-arrow-up"
1957 }),
1958 _c("i", {
1959 directives: [
1960 {
1961 name: "repeat-click",
1962 rawName: "v-repeat-click",
1963 value: _vm.increase,
1964 expression: "increase"
1965 }
1966 ],
1967 staticClass: "el-time-spinner__arrow el-icon-arrow-down"
1968 }),
1969 _c(
1970 "ul",
1971 { ref: "hours", staticClass: "el-time-spinner__list" },
1972 _vm._l(_vm.arrowHourList, function(hour, key) {
1973 return _c(
1974 "li",
1975 {
1976 key: key,
1977 staticClass: "el-time-spinner__item",
1978 class: {
1979 active: hour === _vm.hours,
1980 disabled: _vm.hoursList[hour]
1981 }
1982 },
1983 [
1984 _vm._v(
1985 _vm._s(
1986 hour === undefined
1987 ? ""
1988 : (
1989 "0" + (_vm.amPmMode ? hour % 12 || 12 : hour)
1990 ).slice(-2) + _vm.amPm(hour)
1991 )
1992 )
1993 ]
1994 )
1995 }),
1996 0
1997 )
1998 ]
1999 ),
2000 _c(
2001 "div",
2002 {
2003 staticClass: "el-time-spinner__wrapper is-arrow",
2004 on: {
2005 mouseenter: function($event) {
2006 _vm.emitSelectRange("minutes")
2007 }
2008 }
2009 },
2010 [
2011 _c("i", {
2012 directives: [
2013 {
2014 name: "repeat-click",
2015 rawName: "v-repeat-click",
2016 value: _vm.decrease,
2017 expression: "decrease"
2018 }
2019 ],
2020 staticClass: "el-time-spinner__arrow el-icon-arrow-up"
2021 }),
2022 _c("i", {
2023 directives: [
2024 {
2025 name: "repeat-click",
2026 rawName: "v-repeat-click",
2027 value: _vm.increase,
2028 expression: "increase"
2029 }
2030 ],
2031 staticClass: "el-time-spinner__arrow el-icon-arrow-down"
2032 }),
2033 _c(
2034 "ul",
2035 { ref: "minutes", staticClass: "el-time-spinner__list" },
2036 _vm._l(_vm.arrowMinuteList, function(minute, key) {
2037 return _c(
2038 "li",
2039 {
2040 key: key,
2041 staticClass: "el-time-spinner__item",
2042 class: { active: minute === _vm.minutes }
2043 },
2044 [
2045 _vm._v(
2046 "\n " +
2047 _vm._s(
2048 minute === undefined
2049 ? ""
2050 : ("0" + minute).slice(-2)
2051 ) +
2052 "\n "
2053 )
2054 ]
2055 )
2056 }),
2057 0
2058 )
2059 ]
2060 ),
2061 _vm.showSeconds
2062 ? _c(
2063 "div",
2064 {
2065 staticClass: "el-time-spinner__wrapper is-arrow",
2066 on: {
2067 mouseenter: function($event) {
2068 _vm.emitSelectRange("seconds")
2069 }
2070 }
2071 },
2072 [
2073 _c("i", {
2074 directives: [
2075 {
2076 name: "repeat-click",
2077 rawName: "v-repeat-click",
2078 value: _vm.decrease,
2079 expression: "decrease"
2080 }
2081 ],
2082 staticClass: "el-time-spinner__arrow el-icon-arrow-up"
2083 }),
2084 _c("i", {
2085 directives: [
2086 {
2087 name: "repeat-click",
2088 rawName: "v-repeat-click",
2089 value: _vm.increase,
2090 expression: "increase"
2091 }
2092 ],
2093 staticClass: "el-time-spinner__arrow el-icon-arrow-down"
2094 }),
2095 _c(
2096 "ul",
2097 { ref: "seconds", staticClass: "el-time-spinner__list" },
2098 _vm._l(_vm.arrowSecondList, function(second, key) {
2099 return _c(
2100 "li",
2101 {
2102 key: key,
2103 staticClass: "el-time-spinner__item",
2104 class: { active: second === _vm.seconds }
2105 },
2106 [
2107 _vm._v(
2108 "\n " +
2109 _vm._s(
2110 second === undefined
2111 ? ""
2112 : ("0" + second).slice(-2)
2113 ) +
2114 "\n "
2115 )
2116 ]
2117 )
2118 }),
2119 0
2120 )
2121 ]
2122 )
2123 : _vm._e()
2124 ]
2125 : _vm._e()
2126 ],
2127 2
2128 )
2129}
2130var staticRenderFns = []
2131render._withStripped = true
2132
2133
2134// CONCATENATED MODULE: ./packages/date-picker/src/basic/time-spinner.vue?vue&type=template&id=1facadeb&
2135
2136// EXTERNAL MODULE: external "element-ui/lib/utils/date-util"
2137var date_util_ = __webpack_require__(1);
2138
2139// EXTERNAL MODULE: external "element-ui/lib/scrollbar"
2140var scrollbar_ = __webpack_require__(14);
2141var scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);
2142
2143// EXTERNAL MODULE: ./src/directives/repeat-click.js
2144var repeat_click = __webpack_require__(30);
2145
2146// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/time-spinner.vue?vue&type=script&lang=js&
2147//
2148//
2149//
2150//
2151//
2152//
2153//
2154//
2155//
2156//
2157//
2158//
2159//
2160//
2161//
2162//
2163//
2164//
2165//
2166//
2167//
2168//
2169//
2170//
2171//
2172//
2173//
2174//
2175//
2176//
2177//
2178//
2179//
2180//
2181//
2182//
2183//
2184//
2185//
2186//
2187//
2188//
2189//
2190//
2191//
2192//
2193//
2194//
2195//
2196//
2197//
2198//
2199//
2200//
2201//
2202//
2203//
2204//
2205//
2206//
2207//
2208//
2209//
2210//
2211//
2212//
2213//
2214//
2215//
2216//
2217//
2218//
2219//
2220//
2221//
2222//
2223//
2224//
2225//
2226//
2227//
2228//
2229//
2230//
2231//
2232//
2233//
2234//
2235//
2236//
2237//
2238//
2239//
2240//
2241//
2242//
2243//
2244//
2245//
2246//
2247//
2248//
2249
2250
2251
2252
2253
2254/* harmony default export */ var time_spinnervue_type_script_lang_js_ = ({
2255 components: { ElScrollbar: scrollbar_default.a },
2256
2257 directives: {
2258 repeatClick: repeat_click["a" /* default */]
2259 },
2260
2261 props: {
2262 date: {},
2263 defaultValue: {}, // reserved for future use
2264 showSeconds: {
2265 type: Boolean,
2266 default: true
2267 },
2268 arrowControl: Boolean,
2269 amPmMode: {
2270 type: String,
2271 default: '' // 'a': am/pm; 'A': AM/PM
2272 }
2273 },
2274
2275 computed: {
2276 hours: function hours() {
2277 return this.date.getHours();
2278 },
2279 minutes: function minutes() {
2280 return this.date.getMinutes();
2281 },
2282 seconds: function seconds() {
2283 return this.date.getSeconds();
2284 },
2285 hoursList: function hoursList() {
2286 return Object(date_util_["getRangeHours"])(this.selectableRange);
2287 },
2288 minutesList: function minutesList() {
2289 return Object(date_util_["getRangeMinutes"])(this.selectableRange, this.hours);
2290 },
2291 arrowHourList: function arrowHourList() {
2292 var hours = this.hours;
2293 return [hours > 0 ? hours - 1 : undefined, hours, hours < 23 ? hours + 1 : undefined];
2294 },
2295 arrowMinuteList: function arrowMinuteList() {
2296 var minutes = this.minutes;
2297 return [minutes > 0 ? minutes - 1 : undefined, minutes, minutes < 59 ? minutes + 1 : undefined];
2298 },
2299 arrowSecondList: function arrowSecondList() {
2300 var seconds = this.seconds;
2301 return [seconds > 0 ? seconds - 1 : undefined, seconds, seconds < 59 ? seconds + 1 : undefined];
2302 }
2303 },
2304
2305 data: function data() {
2306 return {
2307 selectableRange: [],
2308 currentScrollbar: null
2309 };
2310 },
2311 mounted: function mounted() {
2312 var _this = this;
2313
2314 this.$nextTick(function () {
2315 !_this.arrowControl && _this.bindScrollEvent();
2316 });
2317 },
2318
2319
2320 methods: {
2321 increase: function increase() {
2322 this.scrollDown(1);
2323 },
2324 decrease: function decrease() {
2325 this.scrollDown(-1);
2326 },
2327 modifyDateField: function modifyDateField(type, value) {
2328 switch (type) {
2329 case 'hours':
2330 this.$emit('change', Object(date_util_["modifyTime"])(this.date, value, this.minutes, this.seconds));break;
2331 case 'minutes':
2332 this.$emit('change', Object(date_util_["modifyTime"])(this.date, this.hours, value, this.seconds));break;
2333 case 'seconds':
2334 this.$emit('change', Object(date_util_["modifyTime"])(this.date, this.hours, this.minutes, value));break;
2335 }
2336 },
2337 handleClick: function handleClick(type, _ref) {
2338 var value = _ref.value,
2339 disabled = _ref.disabled;
2340
2341 if (!disabled) {
2342 this.modifyDateField(type, value);
2343 this.emitSelectRange(type);
2344 this.adjustSpinner(type, value);
2345 }
2346 },
2347 emitSelectRange: function emitSelectRange(type) {
2348 if (type === 'hours') {
2349 this.$emit('select-range', 0, 2);
2350 } else if (type === 'minutes') {
2351 this.$emit('select-range', 3, 5);
2352 } else if (type === 'seconds') {
2353 this.$emit('select-range', 6, 8);
2354 }
2355 this.currentScrollbar = type;
2356 },
2357 bindScrollEvent: function bindScrollEvent() {
2358 var _this2 = this;
2359
2360 var bindFuntion = function bindFuntion(type) {
2361 _this2.$refs[type].wrap.onscroll = function (e) {
2362 // TODO: scroll is emitted when set scrollTop programatically
2363 // should find better solutions in the future!
2364 _this2.handleScroll(type, e);
2365 };
2366 };
2367 bindFuntion('hours');
2368 bindFuntion('minutes');
2369 bindFuntion('seconds');
2370 },
2371 handleScroll: function handleScroll(type) {
2372 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);
2373 this.modifyDateField(type, value);
2374 },
2375
2376
2377 // NOTE: used by datetime / date-range panel
2378 // renamed from adjustScrollTop
2379 // should try to refactory it
2380 adjustSpinners: function adjustSpinners() {
2381 this.adjustSpinner('hours', this.hours);
2382 this.adjustSpinner('minutes', this.minutes);
2383 this.adjustSpinner('seconds', this.seconds);
2384 },
2385 adjustCurrentSpinner: function adjustCurrentSpinner(type) {
2386 this.adjustSpinner(type, this[type]);
2387 },
2388 adjustSpinner: function adjustSpinner(type, value) {
2389 if (this.arrowControl) return;
2390 var el = this.$refs[type].wrap;
2391 if (el) {
2392 el.scrollTop = Math.max(0, value * this.typeItemHeight(type));
2393 }
2394 },
2395 scrollDown: function scrollDown(step) {
2396 var _this3 = this;
2397
2398 if (!this.currentScrollbar) {
2399 this.emitSelectRange('hours');
2400 }
2401
2402 var label = this.currentScrollbar;
2403 var hoursList = this.hoursList;
2404 var now = this[label];
2405
2406 if (this.currentScrollbar === 'hours') {
2407 var total = Math.abs(step);
2408 step = step > 0 ? 1 : -1;
2409 var length = hoursList.length;
2410 while (length-- && total) {
2411 now = (now + step + hoursList.length) % hoursList.length;
2412 if (hoursList[now]) {
2413 continue;
2414 }
2415 total--;
2416 }
2417 if (hoursList[now]) return;
2418 } else {
2419 now = (now + step + 60) % 60;
2420 }
2421
2422 this.modifyDateField(label, now);
2423 this.adjustSpinner(label, now);
2424 this.$nextTick(function () {
2425 return _this3.emitSelectRange(_this3.currentScrollbar);
2426 });
2427 },
2428 amPm: function amPm(hour) {
2429 var shouldShowAmPm = this.amPmMode.toLowerCase() === 'a';
2430 if (!shouldShowAmPm) return '';
2431 var isCapital = this.amPmMode === 'A';
2432 var content = hour < 12 ? ' am' : ' pm';
2433 if (isCapital) content = content.toUpperCase();
2434 return content;
2435 },
2436 typeItemHeight: function typeItemHeight(type) {
2437 return this.$refs[type].$el.querySelector('li').offsetHeight;
2438 },
2439 scrollBarHeight: function scrollBarHeight(type) {
2440 return this.$refs[type].$el.offsetHeight;
2441 }
2442 }
2443});
2444// CONCATENATED MODULE: ./packages/date-picker/src/basic/time-spinner.vue?vue&type=script&lang=js&
2445 /* harmony default export */ var basic_time_spinnervue_type_script_lang_js_ = (time_spinnervue_type_script_lang_js_);
2446// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
2447var componentNormalizer = __webpack_require__(0);
2448
2449// CONCATENATED MODULE: ./packages/date-picker/src/basic/time-spinner.vue
2450
2451
2452
2453
2454
2455/* normalize component */
2456
2457var component = Object(componentNormalizer["a" /* default */])(
2458 basic_time_spinnervue_type_script_lang_js_,
2459 render,
2460 staticRenderFns,
2461 false,
2462 null,
2463 null,
2464 null
2465
2466)
2467
2468/* hot reload */
2469if (false) { var api; }
2470component.options.__file = "packages/date-picker/src/basic/time-spinner.vue"
2471/* harmony default export */ var time_spinner = __webpack_exports__["a"] = (component.exports);
2472
2473/***/ }),
2474/* 35 */,
2475/* 36 */,
2476/* 37 */,
2477/* 38 */,
2478/* 39 */,
2479/* 40 */,
2480/* 41 */,
2481/* 42 */,
2482/* 43 */,
2483/* 44 */,
2484/* 45 */,
2485/* 46 */,
2486/* 47 */,
2487/* 48 */,
2488/* 49 */,
2489/* 50 */,
2490/* 51 */,
2491/* 52 */,
2492/* 53 */,
2493/* 54 */,
2494/* 55 */
2495/***/ (function(module, __webpack_exports__, __webpack_require__) {
2496
2497"use strict";
2498__webpack_require__.r(__webpack_exports__);
2499
2500// EXTERNAL MODULE: ./packages/date-picker/src/picker.vue + 4 modules
2501var picker = __webpack_require__(32);
2502
2503// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date.vue?vue&type=template&id=2440d4ea&
2504var render = function() {
2505 var _vm = this
2506 var _h = _vm.$createElement
2507 var _c = _vm._self._c || _h
2508 return _c(
2509 "transition",
2510 {
2511 attrs: { name: "el-zoom-in-top" },
2512 on: { "after-enter": _vm.handleEnter, "after-leave": _vm.handleLeave }
2513 },
2514 [
2515 _c(
2516 "div",
2517 {
2518 directives: [
2519 {
2520 name: "show",
2521 rawName: "v-show",
2522 value: _vm.visible,
2523 expression: "visible"
2524 }
2525 ],
2526 staticClass: "el-picker-panel el-date-picker el-popper",
2527 class: [
2528 {
2529 "has-sidebar": _vm.$slots.sidebar || _vm.shortcuts,
2530 "has-time": _vm.showTime
2531 },
2532 _vm.popperClass
2533 ]
2534 },
2535 [
2536 _c(
2537 "div",
2538 { staticClass: "el-picker-panel__body-wrapper" },
2539 [
2540 _vm._t("sidebar"),
2541 _vm.shortcuts
2542 ? _c(
2543 "div",
2544 { staticClass: "el-picker-panel__sidebar" },
2545 _vm._l(_vm.shortcuts, function(shortcut, key) {
2546 return _c(
2547 "button",
2548 {
2549 key: key,
2550 staticClass: "el-picker-panel__shortcut",
2551 attrs: { type: "button" },
2552 on: {
2553 click: function($event) {
2554 _vm.handleShortcutClick(shortcut)
2555 }
2556 }
2557 },
2558 [_vm._v(_vm._s(shortcut.text))]
2559 )
2560 }),
2561 0
2562 )
2563 : _vm._e(),
2564 _c("div", { staticClass: "el-picker-panel__body" }, [
2565 _vm.showTime
2566 ? _c("div", { staticClass: "el-date-picker__time-header" }, [
2567 _c(
2568 "span",
2569 { staticClass: "el-date-picker__editor-wrap" },
2570 [
2571 _c("el-input", {
2572 attrs: {
2573 placeholder: _vm.t("el.datepicker.selectDate"),
2574 value: _vm.visibleDate,
2575 size: "small"
2576 },
2577 on: {
2578 input: function(val) {
2579 return (_vm.userInputDate = val)
2580 },
2581 change: _vm.handleVisibleDateChange
2582 }
2583 })
2584 ],
2585 1
2586 ),
2587 _c(
2588 "span",
2589 {
2590 directives: [
2591 {
2592 name: "clickoutside",
2593 rawName: "v-clickoutside",
2594 value: _vm.handleTimePickClose,
2595 expression: "handleTimePickClose"
2596 }
2597 ],
2598 staticClass: "el-date-picker__editor-wrap"
2599 },
2600 [
2601 _c("el-input", {
2602 ref: "input",
2603 attrs: {
2604 placeholder: _vm.t("el.datepicker.selectTime"),
2605 value: _vm.visibleTime,
2606 size: "small"
2607 },
2608 on: {
2609 focus: function($event) {
2610 _vm.timePickerVisible = true
2611 },
2612 input: function(val) {
2613 return (_vm.userInputTime = val)
2614 },
2615 change: _vm.handleVisibleTimeChange
2616 }
2617 }),
2618 _c("time-picker", {
2619 ref: "timepicker",
2620 attrs: {
2621 "time-arrow-control": _vm.arrowControl,
2622 visible: _vm.timePickerVisible
2623 },
2624 on: {
2625 pick: _vm.handleTimePick,
2626 mounted: _vm.proxyTimePickerDataProperties
2627 }
2628 })
2629 ],
2630 1
2631 )
2632 ])
2633 : _vm._e(),
2634 _c(
2635 "div",
2636 {
2637 directives: [
2638 {
2639 name: "show",
2640 rawName: "v-show",
2641 value: _vm.currentView !== "time",
2642 expression: "currentView !== 'time'"
2643 }
2644 ],
2645 staticClass: "el-date-picker__header",
2646 class: {
2647 "el-date-picker__header--bordered":
2648 _vm.currentView === "year" ||
2649 _vm.currentView === "month"
2650 }
2651 },
2652 [
2653 _c("button", {
2654 staticClass:
2655 "el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",
2656 attrs: {
2657 type: "button",
2658 "aria-label": _vm.t("el.datepicker.prevYear")
2659 },
2660 on: { click: _vm.prevYear }
2661 }),
2662 _c("button", {
2663 directives: [
2664 {
2665 name: "show",
2666 rawName: "v-show",
2667 value: _vm.currentView === "date",
2668 expression: "currentView === 'date'"
2669 }
2670 ],
2671 staticClass:
2672 "el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",
2673 attrs: {
2674 type: "button",
2675 "aria-label": _vm.t("el.datepicker.prevMonth")
2676 },
2677 on: { click: _vm.prevMonth }
2678 }),
2679 _c(
2680 "span",
2681 {
2682 staticClass: "el-date-picker__header-label",
2683 attrs: { role: "button" },
2684 on: { click: _vm.showYearPicker }
2685 },
2686 [_vm._v(_vm._s(_vm.yearLabel))]
2687 ),
2688 _c(
2689 "span",
2690 {
2691 directives: [
2692 {
2693 name: "show",
2694 rawName: "v-show",
2695 value: _vm.currentView === "date",
2696 expression: "currentView === 'date'"
2697 }
2698 ],
2699 staticClass: "el-date-picker__header-label",
2700 class: { active: _vm.currentView === "month" },
2701 attrs: { role: "button" },
2702 on: { click: _vm.showMonthPicker }
2703 },
2704 [
2705 _vm._v(
2706 _vm._s(_vm.t("el.datepicker.month" + (_vm.month + 1)))
2707 )
2708 ]
2709 ),
2710 _c("button", {
2711 staticClass:
2712 "el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",
2713 attrs: {
2714 type: "button",
2715 "aria-label": _vm.t("el.datepicker.nextYear")
2716 },
2717 on: { click: _vm.nextYear }
2718 }),
2719 _c("button", {
2720 directives: [
2721 {
2722 name: "show",
2723 rawName: "v-show",
2724 value: _vm.currentView === "date",
2725 expression: "currentView === 'date'"
2726 }
2727 ],
2728 staticClass:
2729 "el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",
2730 attrs: {
2731 type: "button",
2732 "aria-label": _vm.t("el.datepicker.nextMonth")
2733 },
2734 on: { click: _vm.nextMonth }
2735 })
2736 ]
2737 ),
2738 _c(
2739 "div",
2740 { staticClass: "el-picker-panel__content" },
2741 [
2742 _c("date-table", {
2743 directives: [
2744 {
2745 name: "show",
2746 rawName: "v-show",
2747 value: _vm.currentView === "date",
2748 expression: "currentView === 'date'"
2749 }
2750 ],
2751 attrs: {
2752 "selection-mode": _vm.selectionMode,
2753 "first-day-of-week": _vm.firstDayOfWeek,
2754 value: _vm.value,
2755 "default-value": _vm.defaultValue
2756 ? new Date(_vm.defaultValue)
2757 : null,
2758 date: _vm.date,
2759 "cell-class-name": _vm.cellClassName,
2760 "disabled-date": _vm.disabledDate
2761 },
2762 on: { pick: _vm.handleDatePick }
2763 }),
2764 _c("year-table", {
2765 directives: [
2766 {
2767 name: "show",
2768 rawName: "v-show",
2769 value: _vm.currentView === "year",
2770 expression: "currentView === 'year'"
2771 }
2772 ],
2773 attrs: {
2774 value: _vm.value,
2775 "default-value": _vm.defaultValue
2776 ? new Date(_vm.defaultValue)
2777 : null,
2778 date: _vm.date,
2779 "disabled-date": _vm.disabledDate
2780 },
2781 on: { pick: _vm.handleYearPick }
2782 }),
2783 _c("month-table", {
2784 directives: [
2785 {
2786 name: "show",
2787 rawName: "v-show",
2788 value: _vm.currentView === "month",
2789 expression: "currentView === 'month'"
2790 }
2791 ],
2792 attrs: {
2793 value: _vm.value,
2794 "default-value": _vm.defaultValue
2795 ? new Date(_vm.defaultValue)
2796 : null,
2797 date: _vm.date,
2798 "disabled-date": _vm.disabledDate
2799 },
2800 on: { pick: _vm.handleMonthPick }
2801 })
2802 ],
2803 1
2804 )
2805 ])
2806 ],
2807 2
2808 ),
2809 _c(
2810 "div",
2811 {
2812 directives: [
2813 {
2814 name: "show",
2815 rawName: "v-show",
2816 value: _vm.footerVisible && _vm.currentView === "date",
2817 expression: "footerVisible && currentView === 'date'"
2818 }
2819 ],
2820 staticClass: "el-picker-panel__footer"
2821 },
2822 [
2823 _c(
2824 "el-button",
2825 {
2826 directives: [
2827 {
2828 name: "show",
2829 rawName: "v-show",
2830 value: _vm.selectionMode !== "dates",
2831 expression: "selectionMode !== 'dates'"
2832 }
2833 ],
2834 staticClass: "el-picker-panel__link-btn",
2835 attrs: { size: "mini", type: "text" },
2836 on: { click: _vm.changeToNow }
2837 },
2838 [
2839 _vm._v(
2840 "\n " +
2841 _vm._s(_vm.t("el.datepicker.now")) +
2842 "\n "
2843 )
2844 ]
2845 ),
2846 _c(
2847 "el-button",
2848 {
2849 staticClass: "el-picker-panel__link-btn",
2850 attrs: { plain: "", size: "mini" },
2851 on: { click: _vm.confirm }
2852 },
2853 [
2854 _vm._v(
2855 "\n " +
2856 _vm._s(_vm.t("el.datepicker.confirm")) +
2857 "\n "
2858 )
2859 ]
2860 )
2861 ],
2862 1
2863 )
2864 ]
2865 )
2866 ]
2867 )
2868}
2869var staticRenderFns = []
2870render._withStripped = true
2871
2872
2873// CONCATENATED MODULE: ./packages/date-picker/src/panel/date.vue?vue&type=template&id=2440d4ea&
2874
2875// EXTERNAL MODULE: external "element-ui/lib/utils/date-util"
2876var date_util_ = __webpack_require__(1);
2877
2878// EXTERNAL MODULE: external "element-ui/lib/utils/clickoutside"
2879var clickoutside_ = __webpack_require__(12);
2880var clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);
2881
2882// EXTERNAL MODULE: external "element-ui/lib/mixins/locale"
2883var locale_ = __webpack_require__(6);
2884var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
2885
2886// EXTERNAL MODULE: external "element-ui/lib/input"
2887var input_ = __webpack_require__(10);
2888var input_default = /*#__PURE__*/__webpack_require__.n(input_);
2889
2890// EXTERNAL MODULE: external "element-ui/lib/button"
2891var button_ = __webpack_require__(13);
2892var button_default = /*#__PURE__*/__webpack_require__.n(button_);
2893
2894// EXTERNAL MODULE: ./packages/date-picker/src/panel/time.vue + 4 modules
2895var panel_time = __webpack_require__(27);
2896
2897// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/year-table.vue?vue&type=template&id=c86ab5e0&
2898var year_tablevue_type_template_id_c86ab5e0_render = function() {
2899 var _vm = this
2900 var _h = _vm.$createElement
2901 var _c = _vm._self._c || _h
2902 return _c(
2903 "table",
2904 { staticClass: "el-year-table", on: { click: _vm.handleYearTableClick } },
2905 [
2906 _c("tbody", [
2907 _c("tr", [
2908 _c(
2909 "td",
2910 {
2911 staticClass: "available",
2912 class: _vm.getCellStyle(_vm.startYear + 0)
2913 },
2914 [_c("a", { staticClass: "cell" }, [_vm._v(_vm._s(_vm.startYear))])]
2915 ),
2916 _c(
2917 "td",
2918 {
2919 staticClass: "available",
2920 class: _vm.getCellStyle(_vm.startYear + 1)
2921 },
2922 [
2923 _c("a", { staticClass: "cell" }, [
2924 _vm._v(_vm._s(_vm.startYear + 1))
2925 ])
2926 ]
2927 ),
2928 _c(
2929 "td",
2930 {
2931 staticClass: "available",
2932 class: _vm.getCellStyle(_vm.startYear + 2)
2933 },
2934 [
2935 _c("a", { staticClass: "cell" }, [
2936 _vm._v(_vm._s(_vm.startYear + 2))
2937 ])
2938 ]
2939 ),
2940 _c(
2941 "td",
2942 {
2943 staticClass: "available",
2944 class: _vm.getCellStyle(_vm.startYear + 3)
2945 },
2946 [
2947 _c("a", { staticClass: "cell" }, [
2948 _vm._v(_vm._s(_vm.startYear + 3))
2949 ])
2950 ]
2951 )
2952 ]),
2953 _c("tr", [
2954 _c(
2955 "td",
2956 {
2957 staticClass: "available",
2958 class: _vm.getCellStyle(_vm.startYear + 4)
2959 },
2960 [
2961 _c("a", { staticClass: "cell" }, [
2962 _vm._v(_vm._s(_vm.startYear + 4))
2963 ])
2964 ]
2965 ),
2966 _c(
2967 "td",
2968 {
2969 staticClass: "available",
2970 class: _vm.getCellStyle(_vm.startYear + 5)
2971 },
2972 [
2973 _c("a", { staticClass: "cell" }, [
2974 _vm._v(_vm._s(_vm.startYear + 5))
2975 ])
2976 ]
2977 ),
2978 _c(
2979 "td",
2980 {
2981 staticClass: "available",
2982 class: _vm.getCellStyle(_vm.startYear + 6)
2983 },
2984 [
2985 _c("a", { staticClass: "cell" }, [
2986 _vm._v(_vm._s(_vm.startYear + 6))
2987 ])
2988 ]
2989 ),
2990 _c(
2991 "td",
2992 {
2993 staticClass: "available",
2994 class: _vm.getCellStyle(_vm.startYear + 7)
2995 },
2996 [
2997 _c("a", { staticClass: "cell" }, [
2998 _vm._v(_vm._s(_vm.startYear + 7))
2999 ])
3000 ]
3001 )
3002 ]),
3003 _c("tr", [
3004 _c(
3005 "td",
3006 {
3007 staticClass: "available",
3008 class: _vm.getCellStyle(_vm.startYear + 8)
3009 },
3010 [
3011 _c("a", { staticClass: "cell" }, [
3012 _vm._v(_vm._s(_vm.startYear + 8))
3013 ])
3014 ]
3015 ),
3016 _c(
3017 "td",
3018 {
3019 staticClass: "available",
3020 class: _vm.getCellStyle(_vm.startYear + 9)
3021 },
3022 [
3023 _c("a", { staticClass: "cell" }, [
3024 _vm._v(_vm._s(_vm.startYear + 9))
3025 ])
3026 ]
3027 ),
3028 _c("td"),
3029 _c("td")
3030 ])
3031 ])
3032 ]
3033 )
3034}
3035var year_tablevue_type_template_id_c86ab5e0_staticRenderFns = []
3036year_tablevue_type_template_id_c86ab5e0_render._withStripped = true
3037
3038
3039// CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue?vue&type=template&id=c86ab5e0&
3040
3041// EXTERNAL MODULE: external "element-ui/lib/utils/dom"
3042var dom_ = __webpack_require__(2);
3043
3044// EXTERNAL MODULE: external "element-ui/lib/utils/util"
3045var util_ = __webpack_require__(3);
3046
3047// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/year-table.vue?vue&type=script&lang=js&
3048//
3049//
3050//
3051//
3052//
3053//
3054//
3055//
3056//
3057//
3058//
3059//
3060//
3061//
3062//
3063//
3064//
3065//
3066//
3067//
3068//
3069//
3070//
3071//
3072//
3073//
3074//
3075//
3076//
3077//
3078//
3079//
3080//
3081//
3082//
3083//
3084//
3085//
3086//
3087//
3088//
3089//
3090//
3091//
3092//
3093
3094
3095
3096
3097
3098var year_tablevue_type_script_lang_js_datesInYear = function datesInYear(year) {
3099 var numOfDays = Object(date_util_["getDayCountOfYear"])(year);
3100 var firstDay = new Date(year, 0, 1);
3101 return Object(date_util_["range"])(numOfDays).map(function (n) {
3102 return Object(date_util_["nextDate"])(firstDay, n);
3103 });
3104};
3105
3106/* harmony default export */ var year_tablevue_type_script_lang_js_ = ({
3107 props: {
3108 disabledDate: {},
3109 value: {},
3110 defaultValue: {
3111 validator: function validator(val) {
3112 // null or valid Date Object
3113 return val === null || val instanceof Date && Object(date_util_["isDate"])(val);
3114 }
3115 },
3116 date: {}
3117 },
3118
3119 computed: {
3120 startYear: function startYear() {
3121 return Math.floor(this.date.getFullYear() / 10) * 10;
3122 }
3123 },
3124
3125 methods: {
3126 getCellStyle: function getCellStyle(year) {
3127 var style = {};
3128 var today = new Date();
3129
3130 style.disabled = typeof this.disabledDate === 'function' ? year_tablevue_type_script_lang_js_datesInYear(year).every(this.disabledDate) : false;
3131 style.current = Object(util_["arrayFindIndex"])(Object(util_["coerceTruthyValueToArray"])(this.value), function (date) {
3132 return date.getFullYear() === year;
3133 }) >= 0;
3134 style.today = today.getFullYear() === year;
3135 style.default = this.defaultValue && this.defaultValue.getFullYear() === year;
3136
3137 return style;
3138 },
3139 handleYearTableClick: function handleYearTableClick(event) {
3140 var target = event.target;
3141 if (target.tagName === 'A') {
3142 if (Object(dom_["hasClass"])(target.parentNode, 'disabled')) return;
3143 var year = target.textContent || target.innerText;
3144 this.$emit('pick', Number(year));
3145 }
3146 }
3147 }
3148});
3149// CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue?vue&type=script&lang=js&
3150 /* harmony default export */ var basic_year_tablevue_type_script_lang_js_ = (year_tablevue_type_script_lang_js_);
3151// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
3152var componentNormalizer = __webpack_require__(0);
3153
3154// CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue
3155
3156
3157
3158
3159
3160/* normalize component */
3161
3162var component = Object(componentNormalizer["a" /* default */])(
3163 basic_year_tablevue_type_script_lang_js_,
3164 year_tablevue_type_template_id_c86ab5e0_render,
3165 year_tablevue_type_template_id_c86ab5e0_staticRenderFns,
3166 false,
3167 null,
3168 null,
3169 null
3170
3171)
3172
3173/* hot reload */
3174if (false) { var api; }
3175component.options.__file = "packages/date-picker/src/basic/year-table.vue"
3176/* harmony default export */ var year_table = (component.exports);
3177// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/month-table.vue?vue&type=template&id=654d4f42&
3178var month_tablevue_type_template_id_654d4f42_render = function() {
3179 var _vm = this
3180 var _h = _vm.$createElement
3181 var _c = _vm._self._c || _h
3182 return _c(
3183 "table",
3184 {
3185 staticClass: "el-month-table",
3186 on: { click: _vm.handleMonthTableClick, mousemove: _vm.handleMouseMove }
3187 },
3188 [
3189 _c(
3190 "tbody",
3191 _vm._l(_vm.rows, function(row, key) {
3192 return _c(
3193 "tr",
3194 { key: key },
3195 _vm._l(row, function(cell, key) {
3196 return _c("td", { key: key, class: _vm.getCellStyle(cell) }, [
3197 _c("div", [
3198 _c("a", { staticClass: "cell" }, [
3199 _vm._v(
3200 _vm._s(
3201 _vm.t("el.datepicker.months." + _vm.months[cell.text])
3202 )
3203 )
3204 ])
3205 ])
3206 ])
3207 }),
3208 0
3209 )
3210 }),
3211 0
3212 )
3213 ]
3214 )
3215}
3216var month_tablevue_type_template_id_654d4f42_staticRenderFns = []
3217month_tablevue_type_template_id_654d4f42_render._withStripped = true
3218
3219
3220// CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue?vue&type=template&id=654d4f42&
3221
3222// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/month-table.vue?vue&type=script&lang=js&
3223//
3224//
3225//
3226//
3227//
3228//
3229//
3230//
3231//
3232//
3233//
3234//
3235//
3236//
3237
3238
3239
3240
3241
3242
3243var month_tablevue_type_script_lang_js_datesInMonth = function datesInMonth(year, month) {
3244 var numOfDays = Object(date_util_["getDayCountOfMonth"])(year, month);
3245 var firstDay = new Date(year, month, 1);
3246 return Object(date_util_["range"])(numOfDays).map(function (n) {
3247 return Object(date_util_["nextDate"])(firstDay, n);
3248 });
3249};
3250
3251var clearDate = function clearDate(date) {
3252 return new Date(date.getFullYear(), date.getMonth());
3253};
3254
3255var getMonthTimestamp = function getMonthTimestamp(time) {
3256 if (typeof time === 'number' || typeof time === 'string') {
3257 return clearDate(new Date(time)).getTime();
3258 } else if (time instanceof Date) {
3259 return clearDate(time).getTime();
3260 } else {
3261 return NaN;
3262 }
3263};
3264/* harmony default export */ var month_tablevue_type_script_lang_js_ = ({
3265 props: {
3266 disabledDate: {},
3267 value: {},
3268 selectionMode: {
3269 default: 'month'
3270 },
3271 minDate: {},
3272
3273 maxDate: {},
3274 defaultValue: {
3275 validator: function validator(val) {
3276 // null or valid Date Object
3277 return val === null || Object(date_util_["isDate"])(val) || Array.isArray(val) && val.every(date_util_["isDate"]);
3278 }
3279 },
3280 date: {},
3281 rangeState: {
3282 default: function _default() {
3283 return {
3284 endDate: null,
3285 selecting: false
3286 };
3287 }
3288 }
3289 },
3290
3291 mixins: [locale_default.a],
3292
3293 watch: {
3294 'rangeState.endDate': function rangeStateEndDate(newVal) {
3295 this.markRange(this.minDate, newVal);
3296 },
3297 minDate: function minDate(newVal, oldVal) {
3298 if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) {
3299 this.markRange(this.minDate, this.maxDate);
3300 }
3301 },
3302 maxDate: function maxDate(newVal, oldVal) {
3303 if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) {
3304 this.markRange(this.minDate, this.maxDate);
3305 }
3306 }
3307 },
3308
3309 data: function data() {
3310 return {
3311 months: ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
3312 tableRows: [[], [], []],
3313 lastRow: null,
3314 lastColumn: null
3315 };
3316 },
3317
3318
3319 methods: {
3320 cellMatchesDate: function cellMatchesDate(cell, date) {
3321 var value = new Date(date);
3322 return this.date.getFullYear() === value.getFullYear() && Number(cell.text) === value.getMonth();
3323 },
3324 getCellStyle: function getCellStyle(cell) {
3325 var _this = this;
3326
3327 var style = {};
3328 var year = this.date.getFullYear();
3329 var today = new Date();
3330 var month = cell.text;
3331 var defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : [];
3332 style.disabled = typeof this.disabledDate === 'function' ? month_tablevue_type_script_lang_js_datesInMonth(year, month).every(this.disabledDate) : false;
3333 style.current = Object(util_["arrayFindIndex"])(Object(util_["coerceTruthyValueToArray"])(this.value), function (date) {
3334 return date.getFullYear() === year && date.getMonth() === month;
3335 }) >= 0;
3336 style.today = today.getFullYear() === year && today.getMonth() === month;
3337 style.default = defaultValue.some(function (date) {
3338 return _this.cellMatchesDate(cell, date);
3339 });
3340
3341 if (cell.inRange) {
3342 style['in-range'] = true;
3343
3344 if (cell.start) {
3345 style['start-date'] = true;
3346 }
3347
3348 if (cell.end) {
3349 style['end-date'] = true;
3350 }
3351 }
3352 return style;
3353 },
3354 getMonthOfCell: function getMonthOfCell(month) {
3355 var year = this.date.getFullYear();
3356 return new Date(year, month, 1);
3357 },
3358 markRange: function markRange(minDate, maxDate) {
3359 minDate = getMonthTimestamp(minDate);
3360 maxDate = getMonthTimestamp(maxDate) || minDate;
3361 var _ref = [Math.min(minDate, maxDate), Math.max(minDate, maxDate)];
3362 minDate = _ref[0];
3363 maxDate = _ref[1];
3364
3365 var rows = this.rows;
3366 for (var i = 0, k = rows.length; i < k; i++) {
3367 var row = rows[i];
3368 for (var j = 0, l = row.length; j < l; j++) {
3369
3370 var cell = row[j];
3371 var index = i * 4 + j;
3372 var time = new Date(this.date.getFullYear(), index).getTime();
3373
3374 cell.inRange = minDate && time >= minDate && time <= maxDate;
3375 cell.start = minDate && time === minDate;
3376 cell.end = maxDate && time === maxDate;
3377 }
3378 }
3379 },
3380 handleMouseMove: function handleMouseMove(event) {
3381 if (!this.rangeState.selecting) return;
3382
3383 var target = event.target;
3384 if (target.tagName === 'A') {
3385 target = target.parentNode.parentNode;
3386 }
3387 if (target.tagName === 'DIV') {
3388 target = target.parentNode;
3389 }
3390 if (target.tagName !== 'TD') return;
3391
3392 var row = target.parentNode.rowIndex;
3393 var column = target.cellIndex;
3394 // can not select disabled date
3395 if (this.rows[row][column].disabled) return;
3396
3397 // only update rangeState when mouse moves to a new cell
3398 // this avoids frequent Date object creation and improves performance
3399 if (row !== this.lastRow || column !== this.lastColumn) {
3400 this.lastRow = row;
3401 this.lastColumn = column;
3402 this.$emit('changerange', {
3403 minDate: this.minDate,
3404 maxDate: this.maxDate,
3405 rangeState: {
3406 selecting: true,
3407 endDate: this.getMonthOfCell(row * 4 + column)
3408 }
3409 });
3410 }
3411 },
3412 handleMonthTableClick: function handleMonthTableClick(event) {
3413 var target = event.target;
3414 if (target.tagName === 'A') {
3415 target = target.parentNode.parentNode;
3416 }
3417 if (target.tagName === 'DIV') {
3418 target = target.parentNode;
3419 }
3420 if (target.tagName !== 'TD') return;
3421 if (Object(dom_["hasClass"])(target, 'disabled')) return;
3422 var column = target.cellIndex;
3423 var row = target.parentNode.rowIndex;
3424 var month = row * 4 + column;
3425 var newDate = this.getMonthOfCell(month);
3426 if (this.selectionMode === 'range') {
3427 if (!this.rangeState.selecting) {
3428 this.$emit('pick', { minDate: newDate, maxDate: null });
3429 this.rangeState.selecting = true;
3430 } else {
3431 if (newDate >= this.minDate) {
3432 this.$emit('pick', { minDate: this.minDate, maxDate: newDate });
3433 } else {
3434 this.$emit('pick', { minDate: newDate, maxDate: this.minDate });
3435 }
3436 this.rangeState.selecting = false;
3437 }
3438 } else {
3439 this.$emit('pick', month);
3440 }
3441 }
3442 },
3443
3444 computed: {
3445 rows: function rows() {
3446 var _this2 = this;
3447
3448 // TODO: refactory rows / getCellClasses
3449 var rows = this.tableRows;
3450 var disabledDate = this.disabledDate;
3451 var selectedDate = [];
3452 var now = getMonthTimestamp(new Date());
3453
3454 for (var i = 0; i < 3; i++) {
3455 var row = rows[i];
3456
3457 var _loop = function _loop(j) {
3458 var cell = row[j];
3459 if (!cell) {
3460 cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false };
3461 }
3462
3463 cell.type = 'normal';
3464
3465 var index = i * 4 + j;
3466 var time = new Date(_this2.date.getFullYear(), index).getTime();
3467 cell.inRange = time >= getMonthTimestamp(_this2.minDate) && time <= getMonthTimestamp(_this2.maxDate);
3468 cell.start = _this2.minDate && time === getMonthTimestamp(_this2.minDate);
3469 cell.end = _this2.maxDate && time === getMonthTimestamp(_this2.maxDate);
3470 var isToday = time === now;
3471
3472 if (isToday) {
3473 cell.type = 'today';
3474 }
3475 cell.text = index;
3476 var cellDate = new Date(time);
3477 cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate);
3478 cell.selected = Object(util_["arrayFind"])(selectedDate, function (date) {
3479 return date.getTime() === cellDate.getTime();
3480 });
3481
3482 _this2.$set(row, j, cell);
3483 };
3484
3485 for (var j = 0; j < 4; j++) {
3486 _loop(j);
3487 }
3488 }
3489 return rows;
3490 }
3491 }
3492});
3493// CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue?vue&type=script&lang=js&
3494 /* harmony default export */ var basic_month_tablevue_type_script_lang_js_ = (month_tablevue_type_script_lang_js_);
3495// CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue
3496
3497
3498
3499
3500
3501/* normalize component */
3502
3503var month_table_component = Object(componentNormalizer["a" /* default */])(
3504 basic_month_tablevue_type_script_lang_js_,
3505 month_tablevue_type_template_id_654d4f42_render,
3506 month_tablevue_type_template_id_654d4f42_staticRenderFns,
3507 false,
3508 null,
3509 null,
3510 null
3511
3512)
3513
3514/* hot reload */
3515if (false) { var month_table_api; }
3516month_table_component.options.__file = "packages/date-picker/src/basic/month-table.vue"
3517/* harmony default export */ var month_table = (month_table_component.exports);
3518// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/date-table.vue?vue&type=template&id=5d1f3341&
3519var date_tablevue_type_template_id_5d1f3341_render = function() {
3520 var _vm = this
3521 var _h = _vm.$createElement
3522 var _c = _vm._self._c || _h
3523 return _c(
3524 "table",
3525 {
3526 staticClass: "el-date-table",
3527 class: { "is-week-mode": _vm.selectionMode === "week" },
3528 attrs: { cellspacing: "0", cellpadding: "0" },
3529 on: { click: _vm.handleClick, mousemove: _vm.handleMouseMove }
3530 },
3531 [
3532 _c(
3533 "tbody",
3534 [
3535 _c(
3536 "tr",
3537 [
3538 _vm.showWeekNumber
3539 ? _c("th", [_vm._v(_vm._s(_vm.t("el.datepicker.week")))])
3540 : _vm._e(),
3541 _vm._l(_vm.WEEKS, function(week, key) {
3542 return _c("th", { key: key }, [
3543 _vm._v(_vm._s(_vm.t("el.datepicker.weeks." + week)))
3544 ])
3545 })
3546 ],
3547 2
3548 ),
3549 _vm._l(_vm.rows, function(row, key) {
3550 return _c(
3551 "tr",
3552 {
3553 key: key,
3554 staticClass: "el-date-table__row",
3555 class: { current: _vm.isWeekActive(row[1]) }
3556 },
3557 _vm._l(row, function(cell, key) {
3558 return _c("td", { key: key, class: _vm.getCellClasses(cell) }, [
3559 _c("div", [
3560 _c("span", [
3561 _vm._v("\n " + _vm._s(cell.text) + "\n ")
3562 ])
3563 ])
3564 ])
3565 }),
3566 0
3567 )
3568 })
3569 ],
3570 2
3571 )
3572 ]
3573 )
3574}
3575var date_tablevue_type_template_id_5d1f3341_staticRenderFns = []
3576date_tablevue_type_template_id_5d1f3341_render._withStripped = true
3577
3578
3579// CONCATENATED MODULE: ./packages/date-picker/src/basic/date-table.vue?vue&type=template&id=5d1f3341&
3580
3581// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/date-table.vue?vue&type=script&lang=js&
3582//
3583//
3584//
3585//
3586//
3587//
3588//
3589//
3590//
3591//
3592//
3593//
3594//
3595//
3596//
3597//
3598//
3599//
3600//
3601//
3602//
3603//
3604//
3605//
3606//
3607//
3608//
3609//
3610//
3611//
3612//
3613//
3614//
3615
3616
3617
3618
3619
3620var _WEEKS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
3621var date_tablevue_type_script_lang_js_getDateTimestamp = function getDateTimestamp(time) {
3622 if (typeof time === 'number' || typeof time === 'string') {
3623 return Object(date_util_["clearTime"])(new Date(time)).getTime();
3624 } else if (time instanceof Date) {
3625 return Object(date_util_["clearTime"])(time).getTime();
3626 } else {
3627 return NaN;
3628 }
3629};
3630
3631// remove the first element that satisfies `pred` from arr
3632// return a new array if modification occurs
3633// return the original array otherwise
3634var date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray(arr, pred) {
3635 var idx = typeof pred === 'function' ? Object(util_["arrayFindIndex"])(arr, pred) : arr.indexOf(pred);
3636 return idx >= 0 ? [].concat(arr.slice(0, idx), arr.slice(idx + 1)) : arr;
3637};
3638
3639/* harmony default export */ var date_tablevue_type_script_lang_js_ = ({
3640 mixins: [locale_default.a],
3641
3642 props: {
3643 firstDayOfWeek: {
3644 default: 7,
3645 type: Number,
3646 validator: function validator(val) {
3647 return val >= 1 && val <= 7;
3648 }
3649 },
3650
3651 value: {},
3652
3653 defaultValue: {
3654 validator: function validator(val) {
3655 // either: null, valid Date object, Array of valid Date objects
3656 return val === null || Object(date_util_["isDate"])(val) || Array.isArray(val) && val.every(date_util_["isDate"]);
3657 }
3658 },
3659
3660 date: {},
3661
3662 selectionMode: {
3663 default: 'day'
3664 },
3665
3666 showWeekNumber: {
3667 type: Boolean,
3668 default: false
3669 },
3670
3671 disabledDate: {},
3672
3673 cellClassName: {},
3674
3675 minDate: {},
3676
3677 maxDate: {},
3678
3679 rangeState: {
3680 default: function _default() {
3681 return {
3682 endDate: null,
3683 selecting: false
3684 };
3685 }
3686 }
3687 },
3688
3689 computed: {
3690 offsetDay: function offsetDay() {
3691 var week = this.firstDayOfWeek;
3692 // 周日为界限,左右偏移的天数,3217654 例如周一就是 -1,目的是调整前两行日期的位置
3693 return week > 3 ? 7 - week : -week;
3694 },
3695 WEEKS: function WEEKS() {
3696 var week = this.firstDayOfWeek;
3697 return _WEEKS.concat(_WEEKS).slice(week, week + 7);
3698 },
3699 year: function year() {
3700 return this.date.getFullYear();
3701 },
3702 month: function month() {
3703 return this.date.getMonth();
3704 },
3705 startDate: function startDate() {
3706 return Object(date_util_["getStartDateOfMonth"])(this.year, this.month);
3707 },
3708 rows: function rows() {
3709 var _this = this;
3710
3711 // TODO: refactory rows / getCellClasses
3712 var date = new Date(this.year, this.month, 1);
3713 var day = Object(date_util_["getFirstDayOfMonth"])(date); // day of first day
3714 var dateCountOfMonth = Object(date_util_["getDayCountOfMonth"])(date.getFullYear(), date.getMonth());
3715 var dateCountOfLastMonth = Object(date_util_["getDayCountOfMonth"])(date.getFullYear(), date.getMonth() === 0 ? 11 : date.getMonth() - 1);
3716
3717 day = day === 0 ? 7 : day;
3718
3719 var offset = this.offsetDay;
3720 var rows = this.tableRows;
3721 var count = 1;
3722
3723 var startDate = this.startDate;
3724 var disabledDate = this.disabledDate;
3725 var cellClassName = this.cellClassName;
3726 var selectedDate = this.selectionMode === 'dates' ? Object(util_["coerceTruthyValueToArray"])(this.value) : [];
3727 var now = date_tablevue_type_script_lang_js_getDateTimestamp(new Date());
3728
3729 for (var i = 0; i < 6; i++) {
3730 var row = rows[i];
3731
3732 if (this.showWeekNumber) {
3733 if (!row[0]) {
3734 row[0] = { type: 'week', text: Object(date_util_["getWeekNumber"])(Object(date_util_["nextDate"])(startDate, i * 7 + 1)) };
3735 }
3736 }
3737
3738 var _loop = function _loop(j) {
3739 var cell = row[_this.showWeekNumber ? j + 1 : j];
3740 if (!cell) {
3741 cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false };
3742 }
3743
3744 cell.type = 'normal';
3745
3746 var index = i * 7 + j;
3747 var time = Object(date_util_["nextDate"])(startDate, index - offset).getTime();
3748 cell.inRange = time >= date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate) && time <= date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);
3749 cell.start = _this.minDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate);
3750 cell.end = _this.maxDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);
3751 var isToday = time === now;
3752
3753 if (isToday) {
3754 cell.type = 'today';
3755 }
3756
3757 if (i >= 0 && i <= 1) {
3758 var numberOfDaysFromPreviousMonth = day + offset < 0 ? 7 + day + offset : day + offset;
3759
3760 if (j + i * 7 >= numberOfDaysFromPreviousMonth) {
3761 cell.text = count++;
3762 } else {
3763 cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - j % 7) + 1 + i * 7;
3764 cell.type = 'prev-month';
3765 }
3766 } else {
3767 if (count <= dateCountOfMonth) {
3768 cell.text = count++;
3769 } else {
3770 cell.text = count++ - dateCountOfMonth;
3771 cell.type = 'next-month';
3772 }
3773 }
3774
3775 var cellDate = new Date(time);
3776 cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate);
3777 cell.selected = Object(util_["arrayFind"])(selectedDate, function (date) {
3778 return date.getTime() === cellDate.getTime();
3779 });
3780 cell.customClass = typeof cellClassName === 'function' && cellClassName(cellDate);
3781 _this.$set(row, _this.showWeekNumber ? j + 1 : j, cell);
3782 };
3783
3784 for (var j = 0; j < 7; j++) {
3785 _loop(j);
3786 }
3787
3788 if (this.selectionMode === 'week') {
3789 var start = this.showWeekNumber ? 1 : 0;
3790 var end = this.showWeekNumber ? 7 : 6;
3791 var isWeekActive = this.isWeekActive(row[start + 1]);
3792
3793 row[start].inRange = isWeekActive;
3794 row[start].start = isWeekActive;
3795 row[end].inRange = isWeekActive;
3796 row[end].end = isWeekActive;
3797 }
3798 }
3799
3800 return rows;
3801 }
3802 },
3803
3804 watch: {
3805 'rangeState.endDate': function rangeStateEndDate(newVal) {
3806 this.markRange(this.minDate, newVal);
3807 },
3808 minDate: function minDate(newVal, oldVal) {
3809 if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) {
3810 this.markRange(this.minDate, this.maxDate);
3811 }
3812 },
3813 maxDate: function maxDate(newVal, oldVal) {
3814 if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) {
3815 this.markRange(this.minDate, this.maxDate);
3816 }
3817 }
3818 },
3819
3820 data: function data() {
3821 return {
3822 tableRows: [[], [], [], [], [], []],
3823 lastRow: null,
3824 lastColumn: null
3825 };
3826 },
3827
3828
3829 methods: {
3830 cellMatchesDate: function cellMatchesDate(cell, date) {
3831 var value = new Date(date);
3832 return this.year === value.getFullYear() && this.month === value.getMonth() && Number(cell.text) === value.getDate();
3833 },
3834 getCellClasses: function getCellClasses(cell) {
3835 var _this2 = this;
3836
3837 var selectionMode = this.selectionMode;
3838 var defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : [];
3839
3840 var classes = [];
3841 if ((cell.type === 'normal' || cell.type === 'today') && !cell.disabled) {
3842 classes.push('available');
3843 if (cell.type === 'today') {
3844 classes.push('today');
3845 }
3846 } else {
3847 classes.push(cell.type);
3848 }
3849
3850 if (cell.type === 'normal' && defaultValue.some(function (date) {
3851 return _this2.cellMatchesDate(cell, date);
3852 })) {
3853 classes.push('default');
3854 }
3855
3856 if (selectionMode === 'day' && (cell.type === 'normal' || cell.type === 'today') && this.cellMatchesDate(cell, this.value)) {
3857 classes.push('current');
3858 }
3859
3860 if (cell.inRange && (cell.type === 'normal' || cell.type === 'today' || this.selectionMode === 'week')) {
3861 classes.push('in-range');
3862
3863 if (cell.start) {
3864 classes.push('start-date');
3865 }
3866
3867 if (cell.end) {
3868 classes.push('end-date');
3869 }
3870 }
3871
3872 if (cell.disabled) {
3873 classes.push('disabled');
3874 }
3875
3876 if (cell.selected) {
3877 classes.push('selected');
3878 }
3879
3880 if (cell.customClass) {
3881 classes.push(cell.customClass);
3882 }
3883
3884 return classes.join(' ');
3885 },
3886 getDateOfCell: function getDateOfCell(row, column) {
3887 var offsetFromStart = row * 7 + (column - (this.showWeekNumber ? 1 : 0)) - this.offsetDay;
3888 return Object(date_util_["nextDate"])(this.startDate, offsetFromStart);
3889 },
3890 isWeekActive: function isWeekActive(cell) {
3891 if (this.selectionMode !== 'week') return false;
3892 var newDate = new Date(this.year, this.month, 1);
3893 var year = newDate.getFullYear();
3894 var month = newDate.getMonth();
3895
3896 if (cell.type === 'prev-month') {
3897 newDate.setMonth(month === 0 ? 11 : month - 1);
3898 newDate.setFullYear(month === 0 ? year - 1 : year);
3899 }
3900
3901 if (cell.type === 'next-month') {
3902 newDate.setMonth(month === 11 ? 0 : month + 1);
3903 newDate.setFullYear(month === 11 ? year + 1 : year);
3904 }
3905
3906 newDate.setDate(parseInt(cell.text, 10));
3907
3908 if (Object(date_util_["isDate"])(this.value)) {
3909 var dayOffset = (this.value.getDay() - this.firstDayOfWeek + 7) % 7 - 1;
3910 var weekDate = Object(date_util_["prevDate"])(this.value, dayOffset);
3911 return weekDate.getTime() === newDate.getTime();
3912 }
3913 return false;
3914 },
3915 markRange: function markRange(minDate, maxDate) {
3916 minDate = date_tablevue_type_script_lang_js_getDateTimestamp(minDate);
3917 maxDate = date_tablevue_type_script_lang_js_getDateTimestamp(maxDate) || minDate;
3918 var _ref = [Math.min(minDate, maxDate), Math.max(minDate, maxDate)];
3919 minDate = _ref[0];
3920 maxDate = _ref[1];
3921
3922
3923 var startDate = this.startDate;
3924 var rows = this.rows;
3925 for (var i = 0, k = rows.length; i < k; i++) {
3926 var row = rows[i];
3927 for (var j = 0, l = row.length; j < l; j++) {
3928 if (this.showWeekNumber && j === 0) continue;
3929
3930 var _cell = row[j];
3931 var index = i * 7 + j + (this.showWeekNumber ? -1 : 0);
3932 var time = Object(date_util_["nextDate"])(startDate, index - this.offsetDay).getTime();
3933
3934 _cell.inRange = minDate && time >= minDate && time <= maxDate;
3935 _cell.start = minDate && time === minDate;
3936 _cell.end = maxDate && time === maxDate;
3937 }
3938 }
3939 },
3940 handleMouseMove: function handleMouseMove(event) {
3941 if (!this.rangeState.selecting) return;
3942
3943 var target = event.target;
3944 if (target.tagName === 'SPAN') {
3945 target = target.parentNode.parentNode;
3946 }
3947 if (target.tagName === 'DIV') {
3948 target = target.parentNode;
3949 }
3950 if (target.tagName !== 'TD') return;
3951
3952 var row = target.parentNode.rowIndex - 1;
3953 var column = target.cellIndex;
3954
3955 // can not select disabled date
3956 if (this.rows[row][column].disabled) return;
3957
3958 // only update rangeState when mouse moves to a new cell
3959 // this avoids frequent Date object creation and improves performance
3960 if (row !== this.lastRow || column !== this.lastColumn) {
3961 this.lastRow = row;
3962 this.lastColumn = column;
3963 this.$emit('changerange', {
3964 minDate: this.minDate,
3965 maxDate: this.maxDate,
3966 rangeState: {
3967 selecting: true,
3968 endDate: this.getDateOfCell(row, column)
3969 }
3970 });
3971 }
3972 },
3973 handleClick: function handleClick(event) {
3974 var target = event.target;
3975 if (target.tagName === 'SPAN') {
3976 target = target.parentNode.parentNode;
3977 }
3978 if (target.tagName === 'DIV') {
3979 target = target.parentNode;
3980 }
3981
3982 if (target.tagName !== 'TD') return;
3983
3984 var row = target.parentNode.rowIndex - 1;
3985 var column = this.selectionMode === 'week' ? 1 : target.cellIndex;
3986 var cell = this.rows[row][column];
3987
3988 if (cell.disabled || cell.type === 'week') return;
3989
3990 var newDate = this.getDateOfCell(row, column);
3991
3992 if (this.selectionMode === 'range') {
3993 if (!this.rangeState.selecting) {
3994 this.$emit('pick', { minDate: newDate, maxDate: null });
3995 this.rangeState.selecting = true;
3996 } else {
3997 if (newDate >= this.minDate) {
3998 this.$emit('pick', { minDate: this.minDate, maxDate: newDate });
3999 } else {
4000 this.$emit('pick', { minDate: newDate, maxDate: this.minDate });
4001 }
4002 this.rangeState.selecting = false;
4003 }
4004 } else if (this.selectionMode === 'day') {
4005 this.$emit('pick', newDate);
4006 } else if (this.selectionMode === 'week') {
4007 var weekNumber = Object(date_util_["getWeekNumber"])(newDate);
4008 var value = newDate.getFullYear() + 'w' + weekNumber;
4009 this.$emit('pick', {
4010 year: newDate.getFullYear(),
4011 week: weekNumber,
4012 value: value,
4013 date: newDate
4014 });
4015 } else if (this.selectionMode === 'dates') {
4016 var _value = this.value || [];
4017 var newValue = cell.selected ? date_tablevue_type_script_lang_js_removeFromArray(_value, function (date) {
4018 return date.getTime() === newDate.getTime();
4019 }) : [].concat(_value, [newDate]);
4020 this.$emit('pick', newValue);
4021 }
4022 }
4023 }
4024});
4025// CONCATENATED MODULE: ./packages/date-picker/src/basic/date-table.vue?vue&type=script&lang=js&
4026 /* harmony default export */ var basic_date_tablevue_type_script_lang_js_ = (date_tablevue_type_script_lang_js_);
4027// CONCATENATED MODULE: ./packages/date-picker/src/basic/date-table.vue
4028
4029
4030
4031
4032
4033/* normalize component */
4034
4035var date_table_component = Object(componentNormalizer["a" /* default */])(
4036 basic_date_tablevue_type_script_lang_js_,
4037 date_tablevue_type_template_id_5d1f3341_render,
4038 date_tablevue_type_template_id_5d1f3341_staticRenderFns,
4039 false,
4040 null,
4041 null,
4042 null
4043
4044)
4045
4046/* hot reload */
4047if (false) { var date_table_api; }
4048date_table_component.options.__file = "packages/date-picker/src/basic/date-table.vue"
4049/* harmony default export */ var date_table = (date_table_component.exports);
4050// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date.vue?vue&type=script&lang=js&
4051//
4052//
4053//
4054//
4055//
4056//
4057//
4058//
4059//
4060//
4061//
4062//
4063//
4064//
4065//
4066//
4067//
4068//
4069//
4070//
4071//
4072//
4073//
4074//
4075//
4076//
4077//
4078//
4079//
4080//
4081//
4082//
4083//
4084//
4085//
4086//
4087//
4088//
4089//
4090//
4091//
4092//
4093//
4094//
4095//
4096//
4097//
4098//
4099//
4100//
4101//
4102//
4103//
4104//
4105//
4106//
4107//
4108//
4109//
4110//
4111//
4112//
4113//
4114//
4115//
4116//
4117//
4118//
4119//
4120//
4121//
4122//
4123//
4124//
4125//
4126//
4127//
4128//
4129//
4130//
4131//
4132//
4133//
4134//
4135//
4136//
4137//
4138//
4139//
4140//
4141//
4142//
4143//
4144//
4145//
4146//
4147//
4148//
4149//
4150//
4151//
4152//
4153//
4154//
4155//
4156//
4157//
4158//
4159//
4160//
4161//
4162//
4163//
4164//
4165//
4166//
4167//
4168//
4169//
4170//
4171//
4172//
4173//
4174//
4175//
4176//
4177//
4178//
4179//
4180//
4181//
4182//
4183//
4184//
4185//
4186//
4187//
4188//
4189//
4190//
4191//
4192//
4193//
4194//
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206/* harmony default export */ var datevue_type_script_lang_js_ = ({
4207 mixins: [locale_default.a],
4208
4209 directives: { Clickoutside: clickoutside_default.a },
4210
4211 watch: {
4212 showTime: function showTime(val) {
4213 var _this = this;
4214
4215 /* istanbul ignore if */
4216 if (!val) return;
4217 this.$nextTick(function (_) {
4218 var inputElm = _this.$refs.input.$el;
4219 if (inputElm) {
4220 _this.pickerWidth = inputElm.getBoundingClientRect().width + 10;
4221 }
4222 });
4223 },
4224 value: function value(val) {
4225 if (this.selectionMode === 'dates' && this.value) return;
4226 if (Object(date_util_["isDate"])(val)) {
4227 this.date = new Date(val);
4228 } else {
4229 this.date = this.getDefaultValue();
4230 }
4231 },
4232 defaultValue: function defaultValue(val) {
4233 if (!Object(date_util_["isDate"])(this.value)) {
4234 this.date = val ? new Date(val) : new Date();
4235 }
4236 },
4237 timePickerVisible: function timePickerVisible(val) {
4238 var _this2 = this;
4239
4240 if (val) this.$nextTick(function () {
4241 return _this2.$refs.timepicker.adjustSpinners();
4242 });
4243 },
4244 selectionMode: function selectionMode(newVal) {
4245 if (newVal === 'month') {
4246 /* istanbul ignore next */
4247 if (this.currentView !== 'year' || this.currentView !== 'month') {
4248 this.currentView = 'month';
4249 }
4250 } else if (newVal === 'dates') {
4251 this.currentView = 'date';
4252 }
4253 }
4254 },
4255
4256 methods: {
4257 proxyTimePickerDataProperties: function proxyTimePickerDataProperties() {
4258 var _this3 = this;
4259
4260 var format = function format(timeFormat) {
4261 _this3.$refs.timepicker.format = timeFormat;
4262 };
4263 var value = function value(_value) {
4264 _this3.$refs.timepicker.value = _value;
4265 };
4266 var date = function date(_date) {
4267 _this3.$refs.timepicker.date = _date;
4268 };
4269 var selectableRange = function selectableRange(_selectableRange) {
4270 _this3.$refs.timepicker.selectableRange = _selectableRange;
4271 };
4272
4273 this.$watch('value', value);
4274 this.$watch('date', date);
4275 this.$watch('selectableRange', selectableRange);
4276
4277 format(this.timeFormat);
4278 value(this.value);
4279 date(this.date);
4280 selectableRange(this.selectableRange);
4281 },
4282 handleClear: function handleClear() {
4283 this.date = this.getDefaultValue();
4284 this.$emit('pick', null);
4285 },
4286 emit: function emit(value) {
4287 var _this4 = this;
4288
4289 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
4290 args[_key - 1] = arguments[_key];
4291 }
4292
4293 if (!value) {
4294 this.$emit.apply(this, ['pick', value].concat(args));
4295 } else if (Array.isArray(value)) {
4296 var dates = value.map(function (date) {
4297 return _this4.showTime ? Object(date_util_["clearMilliseconds"])(date) : Object(date_util_["clearTime"])(date);
4298 });
4299 this.$emit.apply(this, ['pick', dates].concat(args));
4300 } else {
4301 this.$emit.apply(this, ['pick', this.showTime ? Object(date_util_["clearMilliseconds"])(value) : Object(date_util_["clearTime"])(value)].concat(args));
4302 }
4303 this.userInputDate = null;
4304 this.userInputTime = null;
4305 },
4306
4307
4308 // resetDate() {
4309 // this.date = new Date(this.date);
4310 // },
4311
4312 showMonthPicker: function showMonthPicker() {
4313 this.currentView = 'month';
4314 },
4315 showYearPicker: function showYearPicker() {
4316 this.currentView = 'year';
4317 },
4318
4319
4320 // XXX: 没用到
4321 // handleLabelClick() {
4322 // if (this.currentView === 'date') {
4323 // this.showMonthPicker();
4324 // } else if (this.currentView === 'month') {
4325 // this.showYearPicker();
4326 // }
4327 // },
4328
4329 prevMonth: function prevMonth() {
4330 this.date = Object(date_util_["prevMonth"])(this.date);
4331 },
4332 nextMonth: function nextMonth() {
4333 this.date = Object(date_util_["nextMonth"])(this.date);
4334 },
4335 prevYear: function prevYear() {
4336 if (this.currentView === 'year') {
4337 this.date = Object(date_util_["prevYear"])(this.date, 10);
4338 } else {
4339 this.date = Object(date_util_["prevYear"])(this.date);
4340 }
4341 },
4342 nextYear: function nextYear() {
4343 if (this.currentView === 'year') {
4344 this.date = Object(date_util_["nextYear"])(this.date, 10);
4345 } else {
4346 this.date = Object(date_util_["nextYear"])(this.date);
4347 }
4348 },
4349 handleShortcutClick: function handleShortcutClick(shortcut) {
4350 if (shortcut.onClick) {
4351 shortcut.onClick(this);
4352 }
4353 },
4354 handleTimePick: function handleTimePick(value, visible, first) {
4355 if (Object(date_util_["isDate"])(value)) {
4356 var newDate = this.value ? Object(date_util_["modifyTime"])(this.value, value.getHours(), value.getMinutes(), value.getSeconds()) : Object(date_util_["modifyWithTimeString"])(this.getDefaultValue(), this.defaultTime);
4357 this.date = newDate;
4358 this.emit(this.date, true);
4359 } else {
4360 this.emit(value, true);
4361 }
4362 if (!first) {
4363 this.timePickerVisible = visible;
4364 }
4365 },
4366 handleTimePickClose: function handleTimePickClose() {
4367 this.timePickerVisible = false;
4368 },
4369 handleMonthPick: function handleMonthPick(month) {
4370 if (this.selectionMode === 'month') {
4371 this.date = Object(date_util_["modifyDate"])(this.date, this.year, month, 1);
4372 this.emit(this.date);
4373 } else {
4374 this.date = Object(date_util_["changeYearMonthAndClampDate"])(this.date, this.year, month);
4375 // TODO: should emit intermediate value ??
4376 // this.emit(this.date);
4377 this.currentView = 'date';
4378 }
4379 },
4380 handleDatePick: function handleDatePick(value) {
4381 if (this.selectionMode === 'day') {
4382 var newDate = this.value ? Object(date_util_["modifyDate"])(this.value, value.getFullYear(), value.getMonth(), value.getDate()) : Object(date_util_["modifyWithTimeString"])(value, this.defaultTime);
4383 // change default time while out of selectableRange
4384 if (!this.checkDateWithinRange(newDate)) {
4385 newDate = Object(date_util_["modifyDate"])(this.selectableRange[0][0], value.getFullYear(), value.getMonth(), value.getDate());
4386 }
4387 this.date = newDate;
4388 this.emit(this.date, this.showTime);
4389 } else if (this.selectionMode === 'week') {
4390 this.emit(value.date);
4391 } else if (this.selectionMode === 'dates') {
4392 this.emit(value, true); // set false to keep panel open
4393 }
4394 },
4395 handleYearPick: function handleYearPick(year) {
4396 if (this.selectionMode === 'year') {
4397 this.date = Object(date_util_["modifyDate"])(this.date, year, 0, 1);
4398 this.emit(this.date);
4399 } else {
4400 this.date = Object(date_util_["changeYearMonthAndClampDate"])(this.date, year, this.month);
4401 // TODO: should emit intermediate value ??
4402 // this.emit(this.date, true);
4403 this.currentView = 'month';
4404 }
4405 },
4406 changeToNow: function changeToNow() {
4407 // NOTE: not a permanent solution
4408 // consider disable "now" button in the future
4409 if ((!this.disabledDate || !this.disabledDate(new Date())) && this.checkDateWithinRange(new Date())) {
4410 this.date = new Date();
4411 this.emit(this.date);
4412 }
4413 },
4414 confirm: function confirm() {
4415 if (this.selectionMode === 'dates') {
4416 this.emit(this.value);
4417 } else {
4418 // value were emitted in handle{Date,Time}Pick, nothing to update here
4419 // deal with the scenario where: user opens the picker, then confirm without doing anything
4420 var value = this.value ? this.value : Object(date_util_["modifyWithTimeString"])(this.getDefaultValue(), this.defaultTime);
4421 this.date = new Date(value); // refresh date
4422 this.emit(value);
4423 }
4424 },
4425 resetView: function resetView() {
4426 if (this.selectionMode === 'month') {
4427 this.currentView = 'month';
4428 } else if (this.selectionMode === 'year') {
4429 this.currentView = 'year';
4430 } else {
4431 this.currentView = 'date';
4432 }
4433 },
4434 handleEnter: function handleEnter() {
4435 document.body.addEventListener('keydown', this.handleKeydown);
4436 },
4437 handleLeave: function handleLeave() {
4438 this.$emit('dodestroy');
4439 document.body.removeEventListener('keydown', this.handleKeydown);
4440 },
4441 handleKeydown: function handleKeydown(event) {
4442 var keyCode = event.keyCode;
4443 var list = [38, 40, 37, 39];
4444 if (this.visible && !this.timePickerVisible) {
4445 if (list.indexOf(keyCode) !== -1) {
4446 this.handleKeyControl(keyCode);
4447 event.stopPropagation();
4448 event.preventDefault();
4449 }
4450 if (keyCode === 13 && this.userInputDate === null && this.userInputTime === null) {
4451 // Enter
4452 this.emit(this.date, false);
4453 }
4454 }
4455 },
4456 handleKeyControl: function handleKeyControl(keyCode) {
4457 var mapping = {
4458 'year': {
4459 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) {
4460 return date.setFullYear(date.getFullYear() + step);
4461 }
4462 },
4463 'month': {
4464 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) {
4465 return date.setMonth(date.getMonth() + step);
4466 }
4467 },
4468 'week': {
4469 38: -1, 40: 1, 37: -1, 39: 1, offset: function offset(date, step) {
4470 return date.setDate(date.getDate() + step * 7);
4471 }
4472 },
4473 'day': {
4474 38: -7, 40: 7, 37: -1, 39: 1, offset: function offset(date, step) {
4475 return date.setDate(date.getDate() + step);
4476 }
4477 }
4478 };
4479 var mode = this.selectionMode;
4480 var year = 3.1536e10;
4481 var now = this.date.getTime();
4482 var newDate = new Date(this.date.getTime());
4483 while (Math.abs(now - newDate.getTime()) <= year) {
4484 var map = mapping[mode];
4485 map.offset(newDate, map[keyCode]);
4486 if (typeof this.disabledDate === 'function' && this.disabledDate(newDate)) {
4487 continue;
4488 }
4489 this.date = newDate;
4490 this.$emit('pick', newDate, true);
4491 break;
4492 }
4493 },
4494 handleVisibleTimeChange: function handleVisibleTimeChange(value) {
4495 var time = Object(date_util_["parseDate"])(value, this.timeFormat);
4496 if (time && this.checkDateWithinRange(time)) {
4497 this.date = Object(date_util_["modifyDate"])(time, this.year, this.month, this.monthDate);
4498 this.userInputTime = null;
4499 this.$refs.timepicker.value = this.date;
4500 this.timePickerVisible = false;
4501 this.emit(this.date, true);
4502 }
4503 },
4504 handleVisibleDateChange: function handleVisibleDateChange(value) {
4505 var date = Object(date_util_["parseDate"])(value, this.dateFormat);
4506 if (date) {
4507 if (typeof this.disabledDate === 'function' && this.disabledDate(date)) {
4508 return;
4509 }
4510 this.date = Object(date_util_["modifyTime"])(date, this.date.getHours(), this.date.getMinutes(), this.date.getSeconds());
4511 this.userInputDate = null;
4512 this.resetView();
4513 this.emit(this.date, true);
4514 }
4515 },
4516 isValidValue: function isValidValue(value) {
4517 return value && !isNaN(value) && (typeof this.disabledDate === 'function' ? !this.disabledDate(value) : true) && this.checkDateWithinRange(value);
4518 },
4519 getDefaultValue: function getDefaultValue() {
4520 // if default-value is set, return it
4521 // otherwise, return now (the moment this method gets called)
4522 return this.defaultValue ? new Date(this.defaultValue) : new Date();
4523 },
4524 checkDateWithinRange: function checkDateWithinRange(date) {
4525 return this.selectableRange.length > 0 ? Object(date_util_["timeWithinRange"])(date, this.selectableRange, this.format || 'HH:mm:ss') : true;
4526 }
4527 },
4528
4529 components: {
4530 TimePicker: panel_time["a" /* default */], YearTable: year_table, MonthTable: month_table, DateTable: date_table, ElInput: input_default.a, ElButton: button_default.a
4531 },
4532
4533 data: function data() {
4534 return {
4535 popperClass: '',
4536 date: new Date(),
4537 value: '',
4538 defaultValue: null, // use getDefaultValue() for time computation
4539 defaultTime: null,
4540 showTime: false,
4541 selectionMode: 'day',
4542 shortcuts: '',
4543 visible: false,
4544 currentView: 'date',
4545 disabledDate: '',
4546 cellClassName: '',
4547 selectableRange: [],
4548 firstDayOfWeek: 7,
4549 showWeekNumber: false,
4550 timePickerVisible: false,
4551 format: '',
4552 arrowControl: false,
4553 userInputDate: null,
4554 userInputTime: null
4555 };
4556 },
4557
4558
4559 computed: {
4560 year: function year() {
4561 return this.date.getFullYear();
4562 },
4563 month: function month() {
4564 return this.date.getMonth();
4565 },
4566 week: function week() {
4567 return Object(date_util_["getWeekNumber"])(this.date);
4568 },
4569 monthDate: function monthDate() {
4570 return this.date.getDate();
4571 },
4572 footerVisible: function footerVisible() {
4573 return this.showTime || this.selectionMode === 'dates';
4574 },
4575 visibleTime: function visibleTime() {
4576 if (this.userInputTime !== null) {
4577 return this.userInputTime;
4578 } else {
4579 return Object(date_util_["formatDate"])(this.value || this.defaultValue, this.timeFormat);
4580 }
4581 },
4582 visibleDate: function visibleDate() {
4583 if (this.userInputDate !== null) {
4584 return this.userInputDate;
4585 } else {
4586 return Object(date_util_["formatDate"])(this.value || this.defaultValue, this.dateFormat);
4587 }
4588 },
4589 yearLabel: function yearLabel() {
4590 var yearTranslation = this.t('el.datepicker.year');
4591 if (this.currentView === 'year') {
4592 var startYear = Math.floor(this.year / 10) * 10;
4593 if (yearTranslation) {
4594 return startYear + ' ' + yearTranslation + ' - ' + (startYear + 9) + ' ' + yearTranslation;
4595 }
4596 return startYear + ' - ' + (startYear + 9);
4597 }
4598 return this.year + ' ' + yearTranslation;
4599 },
4600 timeFormat: function timeFormat() {
4601 if (this.format) {
4602 return Object(date_util_["extractTimeFormat"])(this.format);
4603 } else {
4604 return 'HH:mm:ss';
4605 }
4606 },
4607 dateFormat: function dateFormat() {
4608 if (this.format) {
4609 return Object(date_util_["extractDateFormat"])(this.format);
4610 } else {
4611 return 'yyyy-MM-dd';
4612 }
4613 }
4614 }
4615});
4616// CONCATENATED MODULE: ./packages/date-picker/src/panel/date.vue?vue&type=script&lang=js&
4617 /* harmony default export */ var panel_datevue_type_script_lang_js_ = (datevue_type_script_lang_js_);
4618// CONCATENATED MODULE: ./packages/date-picker/src/panel/date.vue
4619
4620
4621
4622
4623
4624/* normalize component */
4625
4626var date_component = Object(componentNormalizer["a" /* default */])(
4627 panel_datevue_type_script_lang_js_,
4628 render,
4629 staticRenderFns,
4630 false,
4631 null,
4632 null,
4633 null
4634
4635)
4636
4637/* hot reload */
4638if (false) { var date_api; }
4639date_component.options.__file = "packages/date-picker/src/panel/date.vue"
4640/* harmony default export */ var panel_date = (date_component.exports);
4641// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date-range.vue?vue&type=template&id=2652849a&
4642var date_rangevue_type_template_id_2652849a_render = function() {
4643 var _vm = this
4644 var _h = _vm.$createElement
4645 var _c = _vm._self._c || _h
4646 return _c(
4647 "transition",
4648 {
4649 attrs: { name: "el-zoom-in-top" },
4650 on: {
4651 "after-leave": function($event) {
4652 _vm.$emit("dodestroy")
4653 }
4654 }
4655 },
4656 [
4657 _c(
4658 "div",
4659 {
4660 directives: [
4661 {
4662 name: "show",
4663 rawName: "v-show",
4664 value: _vm.visible,
4665 expression: "visible"
4666 }
4667 ],
4668 staticClass: "el-picker-panel el-date-range-picker el-popper",
4669 class: [
4670 {
4671 "has-sidebar": _vm.$slots.sidebar || _vm.shortcuts,
4672 "has-time": _vm.showTime
4673 },
4674 _vm.popperClass
4675 ]
4676 },
4677 [
4678 _c(
4679 "div",
4680 { staticClass: "el-picker-panel__body-wrapper" },
4681 [
4682 _vm._t("sidebar"),
4683 _vm.shortcuts
4684 ? _c(
4685 "div",
4686 { staticClass: "el-picker-panel__sidebar" },
4687 _vm._l(_vm.shortcuts, function(shortcut, key) {
4688 return _c(
4689 "button",
4690 {
4691 key: key,
4692 staticClass: "el-picker-panel__shortcut",
4693 attrs: { type: "button" },
4694 on: {
4695 click: function($event) {
4696 _vm.handleShortcutClick(shortcut)
4697 }
4698 }
4699 },
4700 [_vm._v(_vm._s(shortcut.text))]
4701 )
4702 }),
4703 0
4704 )
4705 : _vm._e(),
4706 _c("div", { staticClass: "el-picker-panel__body" }, [
4707 _vm.showTime
4708 ? _c(
4709 "div",
4710 { staticClass: "el-date-range-picker__time-header" },
4711 [
4712 _c(
4713 "span",
4714 { staticClass: "el-date-range-picker__editors-wrap" },
4715 [
4716 _c(
4717 "span",
4718 {
4719 staticClass:
4720 "el-date-range-picker__time-picker-wrap"
4721 },
4722 [
4723 _c("el-input", {
4724 ref: "minInput",
4725 staticClass: "el-date-range-picker__editor",
4726 attrs: {
4727 size: "small",
4728 disabled: _vm.rangeState.selecting,
4729 placeholder: _vm.t(
4730 "el.datepicker.startDate"
4731 ),
4732 value: _vm.minVisibleDate
4733 },
4734 on: {
4735 input: function(val) {
4736 return _vm.handleDateInput(val, "min")
4737 },
4738 change: function(val) {
4739 return _vm.handleDateChange(val, "min")
4740 }
4741 }
4742 })
4743 ],
4744 1
4745 ),
4746 _c(
4747 "span",
4748 {
4749 directives: [
4750 {
4751 name: "clickoutside",
4752 rawName: "v-clickoutside",
4753 value: _vm.handleMinTimeClose,
4754 expression: "handleMinTimeClose"
4755 }
4756 ],
4757 staticClass:
4758 "el-date-range-picker__time-picker-wrap"
4759 },
4760 [
4761 _c("el-input", {
4762 staticClass: "el-date-range-picker__editor",
4763 attrs: {
4764 size: "small",
4765 disabled: _vm.rangeState.selecting,
4766 placeholder: _vm.t(
4767 "el.datepicker.startTime"
4768 ),
4769 value: _vm.minVisibleTime
4770 },
4771 on: {
4772 focus: function($event) {
4773 _vm.minTimePickerVisible = true
4774 },
4775 input: function(val) {
4776 return _vm.handleTimeInput(val, "min")
4777 },
4778 change: function(val) {
4779 return _vm.handleTimeChange(val, "min")
4780 }
4781 }
4782 }),
4783 _c("time-picker", {
4784 ref: "minTimePicker",
4785 attrs: {
4786 "time-arrow-control": _vm.arrowControl,
4787 visible: _vm.minTimePickerVisible
4788 },
4789 on: {
4790 pick: _vm.handleMinTimePick,
4791 mounted: function($event) {
4792 _vm.$refs.minTimePicker.format =
4793 _vm.timeFormat
4794 }
4795 }
4796 })
4797 ],
4798 1
4799 )
4800 ]
4801 ),
4802 _c("span", { staticClass: "el-icon-arrow-right" }),
4803 _c(
4804 "span",
4805 {
4806 staticClass:
4807 "el-date-range-picker__editors-wrap is-right"
4808 },
4809 [
4810 _c(
4811 "span",
4812 {
4813 staticClass:
4814 "el-date-range-picker__time-picker-wrap"
4815 },
4816 [
4817 _c("el-input", {
4818 staticClass: "el-date-range-picker__editor",
4819 attrs: {
4820 size: "small",
4821 disabled: _vm.rangeState.selecting,
4822 placeholder: _vm.t("el.datepicker.endDate"),
4823 value: _vm.maxVisibleDate,
4824 readonly: !_vm.minDate
4825 },
4826 on: {
4827 input: function(val) {
4828 return _vm.handleDateInput(val, "max")
4829 },
4830 change: function(val) {
4831 return _vm.handleDateChange(val, "max")
4832 }
4833 }
4834 })
4835 ],
4836 1
4837 ),
4838 _c(
4839 "span",
4840 {
4841 directives: [
4842 {
4843 name: "clickoutside",
4844 rawName: "v-clickoutside",
4845 value: _vm.handleMaxTimeClose,
4846 expression: "handleMaxTimeClose"
4847 }
4848 ],
4849 staticClass:
4850 "el-date-range-picker__time-picker-wrap"
4851 },
4852 [
4853 _c("el-input", {
4854 staticClass: "el-date-range-picker__editor",
4855 attrs: {
4856 size: "small",
4857 disabled: _vm.rangeState.selecting,
4858 placeholder: _vm.t("el.datepicker.endTime"),
4859 value: _vm.maxVisibleTime,
4860 readonly: !_vm.minDate
4861 },
4862 on: {
4863 focus: function($event) {
4864 _vm.minDate &&
4865 (_vm.maxTimePickerVisible = true)
4866 },
4867 input: function(val) {
4868 return _vm.handleTimeInput(val, "max")
4869 },
4870 change: function(val) {
4871 return _vm.handleTimeChange(val, "max")
4872 }
4873 }
4874 }),
4875 _c("time-picker", {
4876 ref: "maxTimePicker",
4877 attrs: {
4878 "time-arrow-control": _vm.arrowControl,
4879 visible: _vm.maxTimePickerVisible
4880 },
4881 on: {
4882 pick: _vm.handleMaxTimePick,
4883 mounted: function($event) {
4884 _vm.$refs.maxTimePicker.format =
4885 _vm.timeFormat
4886 }
4887 }
4888 })
4889 ],
4890 1
4891 )
4892 ]
4893 )
4894 ]
4895 )
4896 : _vm._e(),
4897 _c(
4898 "div",
4899 {
4900 staticClass:
4901 "el-picker-panel__content el-date-range-picker__content is-left"
4902 },
4903 [
4904 _c("div", { staticClass: "el-date-range-picker__header" }, [
4905 _c("button", {
4906 staticClass:
4907 "el-picker-panel__icon-btn el-icon-d-arrow-left",
4908 attrs: { type: "button" },
4909 on: { click: _vm.leftPrevYear }
4910 }),
4911 _c("button", {
4912 staticClass:
4913 "el-picker-panel__icon-btn el-icon-arrow-left",
4914 attrs: { type: "button" },
4915 on: { click: _vm.leftPrevMonth }
4916 }),
4917 _vm.unlinkPanels
4918 ? _c("button", {
4919 staticClass:
4920 "el-picker-panel__icon-btn el-icon-d-arrow-right",
4921 class: { "is-disabled": !_vm.enableYearArrow },
4922 attrs: {
4923 type: "button",
4924 disabled: !_vm.enableYearArrow
4925 },
4926 on: { click: _vm.leftNextYear }
4927 })
4928 : _vm._e(),
4929 _vm.unlinkPanels
4930 ? _c("button", {
4931 staticClass:
4932 "el-picker-panel__icon-btn el-icon-arrow-right",
4933 class: { "is-disabled": !_vm.enableMonthArrow },
4934 attrs: {
4935 type: "button",
4936 disabled: !_vm.enableMonthArrow
4937 },
4938 on: { click: _vm.leftNextMonth }
4939 })
4940 : _vm._e(),
4941 _c("div", [_vm._v(_vm._s(_vm.leftLabel))])
4942 ]),
4943 _c("date-table", {
4944 attrs: {
4945 "selection-mode": "range",
4946 date: _vm.leftDate,
4947 "default-value": _vm.defaultValue,
4948 "min-date": _vm.minDate,
4949 "max-date": _vm.maxDate,
4950 "range-state": _vm.rangeState,
4951 "disabled-date": _vm.disabledDate,
4952 "cell-class-name": _vm.cellClassName,
4953 "first-day-of-week": _vm.firstDayOfWeek
4954 },
4955 on: {
4956 changerange: _vm.handleChangeRange,
4957 pick: _vm.handleRangePick
4958 }
4959 })
4960 ],
4961 1
4962 ),
4963 _c(
4964 "div",
4965 {
4966 staticClass:
4967 "el-picker-panel__content el-date-range-picker__content is-right"
4968 },
4969 [
4970 _c("div", { staticClass: "el-date-range-picker__header" }, [
4971 _vm.unlinkPanels
4972 ? _c("button", {
4973 staticClass:
4974 "el-picker-panel__icon-btn el-icon-d-arrow-left",
4975 class: { "is-disabled": !_vm.enableYearArrow },
4976 attrs: {
4977 type: "button",
4978 disabled: !_vm.enableYearArrow
4979 },
4980 on: { click: _vm.rightPrevYear }
4981 })
4982 : _vm._e(),
4983 _vm.unlinkPanels
4984 ? _c("button", {
4985 staticClass:
4986 "el-picker-panel__icon-btn el-icon-arrow-left",
4987 class: { "is-disabled": !_vm.enableMonthArrow },
4988 attrs: {
4989 type: "button",
4990 disabled: !_vm.enableMonthArrow
4991 },
4992 on: { click: _vm.rightPrevMonth }
4993 })
4994 : _vm._e(),
4995 _c("button", {
4996 staticClass:
4997 "el-picker-panel__icon-btn el-icon-d-arrow-right",
4998 attrs: { type: "button" },
4999 on: { click: _vm.rightNextYear }
5000 }),
5001 _c("button", {
5002 staticClass:
5003 "el-picker-panel__icon-btn el-icon-arrow-right",
5004 attrs: { type: "button" },
5005 on: { click: _vm.rightNextMonth }
5006 }),
5007 _c("div", [_vm._v(_vm._s(_vm.rightLabel))])
5008 ]),
5009 _c("date-table", {
5010 attrs: {
5011 "selection-mode": "range",
5012 date: _vm.rightDate,
5013 "default-value": _vm.defaultValue,
5014 "min-date": _vm.minDate,
5015 "max-date": _vm.maxDate,
5016 "range-state": _vm.rangeState,
5017 "disabled-date": _vm.disabledDate,
5018 "cell-class-name": _vm.cellClassName,
5019 "first-day-of-week": _vm.firstDayOfWeek
5020 },
5021 on: {
5022 changerange: _vm.handleChangeRange,
5023 pick: _vm.handleRangePick
5024 }
5025 })
5026 ],
5027 1
5028 )
5029 ])
5030 ],
5031 2
5032 ),
5033 _vm.showTime
5034 ? _c(
5035 "div",
5036 { staticClass: "el-picker-panel__footer" },
5037 [
5038 _c(
5039 "el-button",
5040 {
5041 staticClass: "el-picker-panel__link-btn",
5042 attrs: { size: "mini", type: "text" },
5043 on: { click: _vm.handleClear }
5044 },
5045 [
5046 _vm._v(
5047 "\n " +
5048 _vm._s(_vm.t("el.datepicker.clear")) +
5049 "\n "
5050 )
5051 ]
5052 ),
5053 _c(
5054 "el-button",
5055 {
5056 staticClass: "el-picker-panel__link-btn",
5057 attrs: {
5058 plain: "",
5059 size: "mini",
5060 disabled: _vm.btnDisabled
5061 },
5062 on: {
5063 click: function($event) {
5064 _vm.handleConfirm(false)
5065 }
5066 }
5067 },
5068 [
5069 _vm._v(
5070 "\n " +
5071 _vm._s(_vm.t("el.datepicker.confirm")) +
5072 "\n "
5073 )
5074 ]
5075 )
5076 ],
5077 1
5078 )
5079 : _vm._e()
5080 ]
5081 )
5082 ]
5083 )
5084}
5085var date_rangevue_type_template_id_2652849a_staticRenderFns = []
5086date_rangevue_type_template_id_2652849a_render._withStripped = true
5087
5088
5089// CONCATENATED MODULE: ./packages/date-picker/src/panel/date-range.vue?vue&type=template&id=2652849a&
5090
5091// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date-range.vue?vue&type=script&lang=js&
5092//
5093//
5094//
5095//
5096//
5097//
5098//
5099//
5100//
5101//
5102//
5103//
5104//
5105//
5106//
5107//
5108//
5109//
5110//
5111//
5112//
5113//
5114//
5115//
5116//
5117//
5118//
5119//
5120//
5121//
5122//
5123//
5124//
5125//
5126//
5127//
5128//
5129//
5130//
5131//
5132//
5133//
5134//
5135//
5136//
5137//
5138//
5139//
5140//
5141//
5142//
5143//
5144//
5145//
5146//
5147//
5148//
5149//
5150//
5151//
5152//
5153//
5154//
5155//
5156//
5157//
5158//
5159//
5160//
5161//
5162//
5163//
5164//
5165//
5166//
5167//
5168//
5169//
5170//
5171//
5172//
5173//
5174//
5175//
5176//
5177//
5178//
5179//
5180//
5181//
5182//
5183//
5184//
5185//
5186//
5187//
5188//
5189//
5190//
5191//
5192//
5193//
5194//
5195//
5196//
5197//
5198//
5199//
5200//
5201//
5202//
5203//
5204//
5205//
5206//
5207//
5208//
5209//
5210//
5211//
5212//
5213//
5214//
5215//
5216//
5217//
5218//
5219//
5220//
5221//
5222//
5223//
5224//
5225//
5226//
5227//
5228//
5229//
5230//
5231//
5232//
5233//
5234//
5235//
5236//
5237//
5238//
5239//
5240//
5241//
5242//
5243//
5244//
5245//
5246//
5247//
5248//
5249//
5250//
5251//
5252//
5253//
5254//
5255//
5256//
5257//
5258//
5259//
5260//
5261//
5262//
5263//
5264//
5265//
5266//
5267//
5268//
5269//
5270//
5271//
5272//
5273//
5274//
5275//
5276//
5277//
5278//
5279//
5280//
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultValue(defaultValue) {
5291 if (Array.isArray(defaultValue)) {
5292 return [new Date(defaultValue[0]), new Date(defaultValue[1])];
5293 } else if (defaultValue) {
5294 return [new Date(defaultValue), Object(date_util_["nextDate"])(new Date(defaultValue), 1)];
5295 } else {
5296 return [new Date(), Object(date_util_["nextDate"])(new Date(), 1)];
5297 }
5298};
5299
5300/* harmony default export */ var date_rangevue_type_script_lang_js_ = ({
5301 mixins: [locale_default.a],
5302
5303 directives: { Clickoutside: clickoutside_default.a },
5304
5305 computed: {
5306 btnDisabled: function btnDisabled() {
5307 return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
5308 },
5309 leftLabel: function leftLabel() {
5310 return this.leftDate.getFullYear() + ' ' + this.t('el.datepicker.year') + ' ' + this.t('el.datepicker.month' + (this.leftDate.getMonth() + 1));
5311 },
5312 rightLabel: function rightLabel() {
5313 return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year') + ' ' + this.t('el.datepicker.month' + (this.rightDate.getMonth() + 1));
5314 },
5315 leftYear: function leftYear() {
5316 return this.leftDate.getFullYear();
5317 },
5318 leftMonth: function leftMonth() {
5319 return this.leftDate.getMonth();
5320 },
5321 leftMonthDate: function leftMonthDate() {
5322 return this.leftDate.getDate();
5323 },
5324 rightYear: function rightYear() {
5325 return this.rightDate.getFullYear();
5326 },
5327 rightMonth: function rightMonth() {
5328 return this.rightDate.getMonth();
5329 },
5330 rightMonthDate: function rightMonthDate() {
5331 return this.rightDate.getDate();
5332 },
5333 minVisibleDate: function minVisibleDate() {
5334 if (this.dateUserInput.min !== null) return this.dateUserInput.min;
5335 if (this.minDate) return Object(date_util_["formatDate"])(this.minDate, this.dateFormat);
5336 return '';
5337 },
5338 maxVisibleDate: function maxVisibleDate() {
5339 if (this.dateUserInput.max !== null) return this.dateUserInput.max;
5340 if (this.maxDate || this.minDate) return Object(date_util_["formatDate"])(this.maxDate || this.minDate, this.dateFormat);
5341 return '';
5342 },
5343 minVisibleTime: function minVisibleTime() {
5344 if (this.timeUserInput.min !== null) return this.timeUserInput.min;
5345 if (this.minDate) return Object(date_util_["formatDate"])(this.minDate, this.timeFormat);
5346 return '';
5347 },
5348 maxVisibleTime: function maxVisibleTime() {
5349 if (this.timeUserInput.max !== null) return this.timeUserInput.max;
5350 if (this.maxDate || this.minDate) return Object(date_util_["formatDate"])(this.maxDate || this.minDate, this.timeFormat);
5351 return '';
5352 },
5353 timeFormat: function timeFormat() {
5354 if (this.format) {
5355 return Object(date_util_["extractTimeFormat"])(this.format);
5356 } else {
5357 return 'HH:mm:ss';
5358 }
5359 },
5360 dateFormat: function dateFormat() {
5361 if (this.format) {
5362 return Object(date_util_["extractDateFormat"])(this.format);
5363 } else {
5364 return 'yyyy-MM-dd';
5365 }
5366 },
5367 enableMonthArrow: function enableMonthArrow() {
5368 var nextMonth = (this.leftMonth + 1) % 12;
5369 var yearOffset = this.leftMonth + 1 >= 12 ? 1 : 0;
5370 return this.unlinkPanels && new Date(this.leftYear + yearOffset, nextMonth) < new Date(this.rightYear, this.rightMonth);
5371 },
5372 enableYearArrow: function enableYearArrow() {
5373 return this.unlinkPanels && this.rightYear * 12 + this.rightMonth - (this.leftYear * 12 + this.leftMonth + 1) >= 12;
5374 }
5375 },
5376
5377 data: function data() {
5378 return {
5379 popperClass: '',
5380 value: [],
5381 defaultValue: null,
5382 defaultTime: null,
5383 minDate: '',
5384 maxDate: '',
5385 leftDate: new Date(),
5386 rightDate: Object(date_util_["nextMonth"])(new Date()),
5387 rangeState: {
5388 endDate: null,
5389 selecting: false,
5390 row: null,
5391 column: null
5392 },
5393 showTime: false,
5394 shortcuts: '',
5395 visible: '',
5396 disabledDate: '',
5397 cellClassName: '',
5398 firstDayOfWeek: 7,
5399 minTimePickerVisible: false,
5400 maxTimePickerVisible: false,
5401 format: '',
5402 arrowControl: false,
5403 unlinkPanels: false,
5404 dateUserInput: {
5405 min: null,
5406 max: null
5407 },
5408 timeUserInput: {
5409 min: null,
5410 max: null
5411 }
5412 };
5413 },
5414
5415
5416 watch: {
5417 minDate: function minDate(val) {
5418 var _this = this;
5419
5420 this.dateUserInput.min = null;
5421 this.timeUserInput.min = null;
5422 this.$nextTick(function () {
5423 if (_this.$refs.maxTimePicker && _this.maxDate && _this.maxDate < _this.minDate) {
5424 var format = 'HH:mm:ss';
5425 _this.$refs.maxTimePicker.selectableRange = [[Object(date_util_["parseDate"])(Object(date_util_["formatDate"])(_this.minDate, format), format), Object(date_util_["parseDate"])('23:59:59', format)]];
5426 }
5427 });
5428 if (val && this.$refs.minTimePicker) {
5429 this.$refs.minTimePicker.date = val;
5430 this.$refs.minTimePicker.value = val;
5431 }
5432 },
5433 maxDate: function maxDate(val) {
5434 this.dateUserInput.max = null;
5435 this.timeUserInput.max = null;
5436 if (val && this.$refs.maxTimePicker) {
5437 this.$refs.maxTimePicker.date = val;
5438 this.$refs.maxTimePicker.value = val;
5439 }
5440 },
5441 minTimePickerVisible: function minTimePickerVisible(val) {
5442 var _this2 = this;
5443
5444 if (val) {
5445 this.$nextTick(function () {
5446 _this2.$refs.minTimePicker.date = _this2.minDate;
5447 _this2.$refs.minTimePicker.value = _this2.minDate;
5448 _this2.$refs.minTimePicker.adjustSpinners();
5449 });
5450 }
5451 },
5452 maxTimePickerVisible: function maxTimePickerVisible(val) {
5453 var _this3 = this;
5454
5455 if (val) {
5456 this.$nextTick(function () {
5457 _this3.$refs.maxTimePicker.date = _this3.maxDate;
5458 _this3.$refs.maxTimePicker.value = _this3.maxDate;
5459 _this3.$refs.maxTimePicker.adjustSpinners();
5460 });
5461 }
5462 },
5463 value: function value(newVal) {
5464 if (!newVal) {
5465 this.minDate = null;
5466 this.maxDate = null;
5467 } else if (Array.isArray(newVal)) {
5468 this.minDate = Object(date_util_["isDate"])(newVal[0]) ? new Date(newVal[0]) : null;
5469 this.maxDate = Object(date_util_["isDate"])(newVal[1]) ? new Date(newVal[1]) : null;
5470 if (this.minDate) {
5471 this.leftDate = this.minDate;
5472 if (this.unlinkPanels && this.maxDate) {
5473 var minDateYear = this.minDate.getFullYear();
5474 var minDateMonth = this.minDate.getMonth();
5475 var maxDateYear = this.maxDate.getFullYear();
5476 var maxDateMonth = this.maxDate.getMonth();
5477 this.rightDate = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? Object(date_util_["nextMonth"])(this.maxDate) : this.maxDate;
5478 } else {
5479 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5480 }
5481 } else {
5482 this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
5483 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5484 }
5485 }
5486 },
5487 defaultValue: function defaultValue(val) {
5488 if (!Array.isArray(this.value)) {
5489 var _calcDefaultValue = date_rangevue_type_script_lang_js_calcDefaultValue(val),
5490 left = _calcDefaultValue[0],
5491 right = _calcDefaultValue[1];
5492
5493 this.leftDate = left;
5494 this.rightDate = val && val[1] && this.unlinkPanels ? right : Object(date_util_["nextMonth"])(this.leftDate);
5495 }
5496 }
5497 },
5498
5499 methods: {
5500 handleClear: function handleClear() {
5501 this.minDate = null;
5502 this.maxDate = null;
5503 this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
5504 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5505 this.$emit('pick', null);
5506 },
5507 handleChangeRange: function handleChangeRange(val) {
5508 this.minDate = val.minDate;
5509 this.maxDate = val.maxDate;
5510 this.rangeState = val.rangeState;
5511 },
5512 handleDateInput: function handleDateInput(value, type) {
5513 this.dateUserInput[type] = value;
5514 if (value.length !== this.dateFormat.length) return;
5515 var parsedValue = Object(date_util_["parseDate"])(value, this.dateFormat);
5516
5517 if (parsedValue) {
5518 if (typeof this.disabledDate === 'function' && this.disabledDate(new Date(parsedValue))) {
5519 return;
5520 }
5521 if (type === 'min') {
5522 this.minDate = Object(date_util_["modifyDate"])(this.minDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
5523 this.leftDate = new Date(parsedValue);
5524 if (!this.unlinkPanels) {
5525 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5526 }
5527 } else {
5528 this.maxDate = Object(date_util_["modifyDate"])(this.maxDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
5529 this.rightDate = new Date(parsedValue);
5530 if (!this.unlinkPanels) {
5531 this.leftDate = Object(date_util_["prevMonth"])(parsedValue);
5532 }
5533 }
5534 }
5535 },
5536 handleDateChange: function handleDateChange(value, type) {
5537 var parsedValue = Object(date_util_["parseDate"])(value, this.dateFormat);
5538 if (parsedValue) {
5539 if (type === 'min') {
5540 this.minDate = Object(date_util_["modifyDate"])(this.minDate, parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
5541 if (this.minDate > this.maxDate) {
5542 this.maxDate = this.minDate;
5543 }
5544 } else {
5545 this.maxDate = Object(date_util_["modifyDate"])(this.maxDate, parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
5546 if (this.maxDate < this.minDate) {
5547 this.minDate = this.maxDate;
5548 }
5549 }
5550 }
5551 },
5552 handleTimeInput: function handleTimeInput(value, type) {
5553 var _this4 = this;
5554
5555 this.timeUserInput[type] = value;
5556 if (value.length !== this.timeFormat.length) return;
5557 var parsedValue = Object(date_util_["parseDate"])(value, this.timeFormat);
5558
5559 if (parsedValue) {
5560 if (type === 'min') {
5561 this.minDate = Object(date_util_["modifyTime"])(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
5562 this.$nextTick(function (_) {
5563 return _this4.$refs.minTimePicker.adjustSpinners();
5564 });
5565 } else {
5566 this.maxDate = Object(date_util_["modifyTime"])(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
5567 this.$nextTick(function (_) {
5568 return _this4.$refs.maxTimePicker.adjustSpinners();
5569 });
5570 }
5571 }
5572 },
5573 handleTimeChange: function handleTimeChange(value, type) {
5574 var parsedValue = Object(date_util_["parseDate"])(value, this.timeFormat);
5575 if (parsedValue) {
5576 if (type === 'min') {
5577 this.minDate = Object(date_util_["modifyTime"])(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
5578 if (this.minDate > this.maxDate) {
5579 this.maxDate = this.minDate;
5580 }
5581 this.$refs.minTimePicker.value = this.minDate;
5582 this.minTimePickerVisible = false;
5583 } else {
5584 this.maxDate = Object(date_util_["modifyTime"])(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
5585 if (this.maxDate < this.minDate) {
5586 this.minDate = this.maxDate;
5587 }
5588 this.$refs.maxTimePicker.value = this.minDate;
5589 this.maxTimePickerVisible = false;
5590 }
5591 }
5592 },
5593 handleRangePick: function handleRangePick(val) {
5594 var _this5 = this;
5595
5596 var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
5597
5598 var defaultTime = this.defaultTime || [];
5599 var minDate = Object(date_util_["modifyWithTimeString"])(val.minDate, defaultTime[0]);
5600 var maxDate = Object(date_util_["modifyWithTimeString"])(val.maxDate, defaultTime[1]);
5601
5602 if (this.maxDate === maxDate && this.minDate === minDate) {
5603 return;
5604 }
5605 this.onPick && this.onPick(val);
5606 this.maxDate = maxDate;
5607 this.minDate = minDate;
5608
5609 // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
5610 setTimeout(function () {
5611 _this5.maxDate = maxDate;
5612 _this5.minDate = minDate;
5613 }, 10);
5614 if (!close || this.showTime) return;
5615 this.handleConfirm();
5616 },
5617 handleShortcutClick: function handleShortcutClick(shortcut) {
5618 if (shortcut.onClick) {
5619 shortcut.onClick(this);
5620 }
5621 },
5622 handleMinTimePick: function handleMinTimePick(value, visible, first) {
5623 this.minDate = this.minDate || new Date();
5624 if (value) {
5625 this.minDate = Object(date_util_["modifyTime"])(this.minDate, value.getHours(), value.getMinutes(), value.getSeconds());
5626 }
5627
5628 if (!first) {
5629 this.minTimePickerVisible = visible;
5630 }
5631
5632 if (!this.maxDate || this.maxDate && this.maxDate.getTime() < this.minDate.getTime()) {
5633 this.maxDate = new Date(this.minDate);
5634 }
5635 },
5636 handleMinTimeClose: function handleMinTimeClose() {
5637 this.minTimePickerVisible = false;
5638 },
5639 handleMaxTimePick: function handleMaxTimePick(value, visible, first) {
5640 if (this.maxDate && value) {
5641 this.maxDate = Object(date_util_["modifyTime"])(this.maxDate, value.getHours(), value.getMinutes(), value.getSeconds());
5642 }
5643
5644 if (!first) {
5645 this.maxTimePickerVisible = visible;
5646 }
5647
5648 if (this.maxDate && this.minDate && this.minDate.getTime() > this.maxDate.getTime()) {
5649 this.minDate = new Date(this.maxDate);
5650 }
5651 },
5652 handleMaxTimeClose: function handleMaxTimeClose() {
5653 this.maxTimePickerVisible = false;
5654 },
5655
5656
5657 // leftPrev*, rightNext* need to take care of `unlinkPanels`
5658 leftPrevYear: function leftPrevYear() {
5659 this.leftDate = Object(date_util_["prevYear"])(this.leftDate);
5660 if (!this.unlinkPanels) {
5661 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5662 }
5663 },
5664 leftPrevMonth: function leftPrevMonth() {
5665 this.leftDate = Object(date_util_["prevMonth"])(this.leftDate);
5666 if (!this.unlinkPanels) {
5667 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5668 }
5669 },
5670 rightNextYear: function rightNextYear() {
5671 if (!this.unlinkPanels) {
5672 this.leftDate = Object(date_util_["nextYear"])(this.leftDate);
5673 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5674 } else {
5675 this.rightDate = Object(date_util_["nextYear"])(this.rightDate);
5676 }
5677 },
5678 rightNextMonth: function rightNextMonth() {
5679 if (!this.unlinkPanels) {
5680 this.leftDate = Object(date_util_["nextMonth"])(this.leftDate);
5681 this.rightDate = Object(date_util_["nextMonth"])(this.leftDate);
5682 } else {
5683 this.rightDate = Object(date_util_["nextMonth"])(this.rightDate);
5684 }
5685 },
5686
5687
5688 // leftNext*, rightPrev* are called when `unlinkPanels` is true
5689 leftNextYear: function leftNextYear() {
5690 this.leftDate = Object(date_util_["nextYear"])(this.leftDate);
5691 },
5692 leftNextMonth: function leftNextMonth() {
5693 this.leftDate = Object(date_util_["nextMonth"])(this.leftDate);
5694 },
5695 rightPrevYear: function rightPrevYear() {
5696 this.rightDate = Object(date_util_["prevYear"])(this.rightDate);
5697 },
5698 rightPrevMonth: function rightPrevMonth() {
5699 this.rightDate = Object(date_util_["prevMonth"])(this.rightDate);
5700 },
5701 handleConfirm: function handleConfirm() {
5702 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5703
5704 if (this.isValidValue([this.minDate, this.maxDate])) {
5705 this.$emit('pick', [this.minDate, this.maxDate], visible);
5706 }
5707 },
5708 isValidValue: function isValidValue(value) {
5709 return Array.isArray(value) && value && value[0] && value[1] && Object(date_util_["isDate"])(value[0]) && Object(date_util_["isDate"])(value[1]) && value[0].getTime() <= value[1].getTime() && (typeof this.disabledDate === 'function' ? !this.disabledDate(value[0]) && !this.disabledDate(value[1]) : true);
5710 },
5711 resetView: function resetView() {
5712 // NOTE: this is a hack to reset {min, max}Date on picker open.
5713 // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
5714 // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
5715 if (this.minDate && this.maxDate == null) this.rangeState.selecting = false;
5716 this.minDate = this.value && Object(date_util_["isDate"])(this.value[0]) ? new Date(this.value[0]) : null;
5717 this.maxDate = this.value && Object(date_util_["isDate"])(this.value[0]) ? new Date(this.value[1]) : null;
5718 }
5719 },
5720
5721 components: { TimePicker: panel_time["a" /* default */], DateTable: date_table, ElInput: input_default.a, ElButton: button_default.a }
5722});
5723// CONCATENATED MODULE: ./packages/date-picker/src/panel/date-range.vue?vue&type=script&lang=js&
5724 /* harmony default export */ var panel_date_rangevue_type_script_lang_js_ = (date_rangevue_type_script_lang_js_);
5725// CONCATENATED MODULE: ./packages/date-picker/src/panel/date-range.vue
5726
5727
5728
5729
5730
5731/* normalize component */
5732
5733var date_range_component = Object(componentNormalizer["a" /* default */])(
5734 panel_date_rangevue_type_script_lang_js_,
5735 date_rangevue_type_template_id_2652849a_render,
5736 date_rangevue_type_template_id_2652849a_staticRenderFns,
5737 false,
5738 null,
5739 null,
5740 null
5741
5742)
5743
5744/* hot reload */
5745if (false) { var date_range_api; }
5746date_range_component.options.__file = "packages/date-picker/src/panel/date-range.vue"
5747/* harmony default export */ var date_range = (date_range_component.exports);
5748// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/month-range.vue?vue&type=template&id=f2645fb8&
5749var month_rangevue_type_template_id_f2645fb8_render = function() {
5750 var _vm = this
5751 var _h = _vm.$createElement
5752 var _c = _vm._self._c || _h
5753 return _c(
5754 "transition",
5755 {
5756 attrs: { name: "el-zoom-in-top" },
5757 on: {
5758 "after-leave": function($event) {
5759 _vm.$emit("dodestroy")
5760 }
5761 }
5762 },
5763 [
5764 _c(
5765 "div",
5766 {
5767 directives: [
5768 {
5769 name: "show",
5770 rawName: "v-show",
5771 value: _vm.visible,
5772 expression: "visible"
5773 }
5774 ],
5775 staticClass: "el-picker-panel el-date-range-picker el-popper",
5776 class: [
5777 {
5778 "has-sidebar": _vm.$slots.sidebar || _vm.shortcuts
5779 },
5780 _vm.popperClass
5781 ]
5782 },
5783 [
5784 _c(
5785 "div",
5786 { staticClass: "el-picker-panel__body-wrapper" },
5787 [
5788 _vm._t("sidebar"),
5789 _vm.shortcuts
5790 ? _c(
5791 "div",
5792 { staticClass: "el-picker-panel__sidebar" },
5793 _vm._l(_vm.shortcuts, function(shortcut, key) {
5794 return _c(
5795 "button",
5796 {
5797 key: key,
5798 staticClass: "el-picker-panel__shortcut",
5799 attrs: { type: "button" },
5800 on: {
5801 click: function($event) {
5802 _vm.handleShortcutClick(shortcut)
5803 }
5804 }
5805 },
5806 [_vm._v(_vm._s(shortcut.text))]
5807 )
5808 }),
5809 0
5810 )
5811 : _vm._e(),
5812 _c("div", { staticClass: "el-picker-panel__body" }, [
5813 _c(
5814 "div",
5815 {
5816 staticClass:
5817 "el-picker-panel__content el-date-range-picker__content is-left"
5818 },
5819 [
5820 _c("div", { staticClass: "el-date-range-picker__header" }, [
5821 _c("button", {
5822 staticClass:
5823 "el-picker-panel__icon-btn el-icon-d-arrow-left",
5824 attrs: { type: "button" },
5825 on: { click: _vm.leftPrevYear }
5826 }),
5827 _vm.unlinkPanels
5828 ? _c("button", {
5829 staticClass:
5830 "el-picker-panel__icon-btn el-icon-d-arrow-right",
5831 class: { "is-disabled": !_vm.enableYearArrow },
5832 attrs: {
5833 type: "button",
5834 disabled: !_vm.enableYearArrow
5835 },
5836 on: { click: _vm.leftNextYear }
5837 })
5838 : _vm._e(),
5839 _c("div", [_vm._v(_vm._s(_vm.leftLabel))])
5840 ]),
5841 _c("month-table", {
5842 attrs: {
5843 "selection-mode": "range",
5844 date: _vm.leftDate,
5845 "default-value": _vm.defaultValue,
5846 "min-date": _vm.minDate,
5847 "max-date": _vm.maxDate,
5848 "range-state": _vm.rangeState,
5849 "disabled-date": _vm.disabledDate
5850 },
5851 on: {
5852 changerange: _vm.handleChangeRange,
5853 pick: _vm.handleRangePick
5854 }
5855 })
5856 ],
5857 1
5858 ),
5859 _c(
5860 "div",
5861 {
5862 staticClass:
5863 "el-picker-panel__content el-date-range-picker__content is-right"
5864 },
5865 [
5866 _c("div", { staticClass: "el-date-range-picker__header" }, [
5867 _vm.unlinkPanels
5868 ? _c("button", {
5869 staticClass:
5870 "el-picker-panel__icon-btn el-icon-d-arrow-left",
5871 class: { "is-disabled": !_vm.enableYearArrow },
5872 attrs: {
5873 type: "button",
5874 disabled: !_vm.enableYearArrow
5875 },
5876 on: { click: _vm.rightPrevYear }
5877 })
5878 : _vm._e(),
5879 _c("button", {
5880 staticClass:
5881 "el-picker-panel__icon-btn el-icon-d-arrow-right",
5882 attrs: { type: "button" },
5883 on: { click: _vm.rightNextYear }
5884 }),
5885 _c("div", [_vm._v(_vm._s(_vm.rightLabel))])
5886 ]),
5887 _c("month-table", {
5888 attrs: {
5889 "selection-mode": "range",
5890 date: _vm.rightDate,
5891 "default-value": _vm.defaultValue,
5892 "min-date": _vm.minDate,
5893 "max-date": _vm.maxDate,
5894 "range-state": _vm.rangeState,
5895 "disabled-date": _vm.disabledDate
5896 },
5897 on: {
5898 changerange: _vm.handleChangeRange,
5899 pick: _vm.handleRangePick
5900 }
5901 })
5902 ],
5903 1
5904 )
5905 ])
5906 ],
5907 2
5908 )
5909 ]
5910 )
5911 ]
5912 )
5913}
5914var month_rangevue_type_template_id_f2645fb8_staticRenderFns = []
5915month_rangevue_type_template_id_f2645fb8_render._withStripped = true
5916
5917
5918// CONCATENATED MODULE: ./packages/date-picker/src/panel/month-range.vue?vue&type=template&id=f2645fb8&
5919
5920// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/month-range.vue?vue&type=script&lang=js&
5921//
5922//
5923//
5924//
5925//
5926//
5927//
5928//
5929//
5930//
5931//
5932//
5933//
5934//
5935//
5936//
5937//
5938//
5939//
5940//
5941//
5942//
5943//
5944//
5945//
5946//
5947//
5948//
5949//
5950//
5951//
5952//
5953//
5954//
5955//
5956//
5957//
5958//
5959//
5960//
5961//
5962//
5963//
5964//
5965//
5966//
5967//
5968//
5969//
5970//
5971//
5972//
5973//
5974//
5975//
5976//
5977//
5978//
5979//
5980//
5981//
5982//
5983//
5984//
5985//
5986//
5987//
5988//
5989//
5990//
5991//
5992//
5993//
5994//
5995//
5996//
5997//
5998//
5999//
6000
6001
6002
6003
6004
6005
6006
6007
6008var month_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultValue(defaultValue) {
6009 if (Array.isArray(defaultValue)) {
6010 return [new Date(defaultValue[0]), new Date(defaultValue[1])];
6011 } else if (defaultValue) {
6012 return [new Date(defaultValue), Object(date_util_["nextMonth"])(new Date(defaultValue))];
6013 } else {
6014 return [new Date(), Object(date_util_["nextMonth"])(new Date())];
6015 }
6016};
6017/* harmony default export */ var month_rangevue_type_script_lang_js_ = ({
6018 mixins: [locale_default.a],
6019
6020 directives: { Clickoutside: clickoutside_default.a },
6021
6022 computed: {
6023 btnDisabled: function btnDisabled() {
6024 return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
6025 },
6026 leftLabel: function leftLabel() {
6027 return this.leftDate.getFullYear() + ' ' + this.t('el.datepicker.year');
6028 },
6029 rightLabel: function rightLabel() {
6030 return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year');
6031 },
6032 leftYear: function leftYear() {
6033 return this.leftDate.getFullYear();
6034 },
6035 rightYear: function rightYear() {
6036 return this.rightDate.getFullYear() === this.leftDate.getFullYear() ? this.leftDate.getFullYear() + 1 : this.rightDate.getFullYear();
6037 },
6038 enableYearArrow: function enableYearArrow() {
6039 return this.unlinkPanels && this.rightYear > this.leftYear + 1;
6040 }
6041 },
6042
6043 data: function data() {
6044 return {
6045 popperClass: '',
6046 value: [],
6047 defaultValue: null,
6048 defaultTime: null,
6049 minDate: '',
6050 maxDate: '',
6051 leftDate: new Date(),
6052 rightDate: Object(date_util_["nextYear"])(new Date()),
6053 rangeState: {
6054 endDate: null,
6055 selecting: false,
6056 row: null,
6057 column: null
6058 },
6059 shortcuts: '',
6060 visible: '',
6061 disabledDate: '',
6062 format: '',
6063 arrowControl: false,
6064 unlinkPanels: false
6065 };
6066 },
6067
6068
6069 watch: {
6070 value: function value(newVal) {
6071 if (!newVal) {
6072 this.minDate = null;
6073 this.maxDate = null;
6074 } else if (Array.isArray(newVal)) {
6075 this.minDate = Object(date_util_["isDate"])(newVal[0]) ? new Date(newVal[0]) : null;
6076 this.maxDate = Object(date_util_["isDate"])(newVal[1]) ? new Date(newVal[1]) : null;
6077 if (this.minDate) {
6078 this.leftDate = this.minDate;
6079 if (this.unlinkPanels && this.maxDate) {
6080 var minDateYear = this.minDate.getFullYear();
6081 var maxDateYear = this.maxDate.getFullYear();
6082 this.rightDate = minDateYear === maxDateYear ? Object(date_util_["nextYear"])(this.maxDate) : this.maxDate;
6083 } else {
6084 this.rightDate = Object(date_util_["nextYear"])(this.leftDate);
6085 }
6086 } else {
6087 this.leftDate = month_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
6088 this.rightDate = Object(date_util_["nextYear"])(this.leftDate);
6089 }
6090 }
6091 },
6092 defaultValue: function defaultValue(val) {
6093 if (!Array.isArray(this.value)) {
6094 var _calcDefaultValue = month_rangevue_type_script_lang_js_calcDefaultValue(val),
6095 left = _calcDefaultValue[0],
6096 right = _calcDefaultValue[1];
6097
6098 this.leftDate = left;
6099 this.rightDate = val && val[1] && left.getFullYear() !== right.getFullYear() && this.unlinkPanels ? right : Object(date_util_["nextYear"])(this.leftDate);
6100 }
6101 }
6102 },
6103
6104 methods: {
6105 handleClear: function handleClear() {
6106 this.minDate = null;
6107 this.maxDate = null;
6108 this.leftDate = month_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
6109 this.rightDate = Object(date_util_["nextYear"])(this.leftDate);
6110 this.$emit('pick', null);
6111 },
6112 handleChangeRange: function handleChangeRange(val) {
6113 this.minDate = val.minDate;
6114 this.maxDate = val.maxDate;
6115 this.rangeState = val.rangeState;
6116 },
6117 handleRangePick: function handleRangePick(val) {
6118 var _this = this;
6119
6120 var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
6121
6122 var defaultTime = this.defaultTime || [];
6123 var minDate = Object(date_util_["modifyWithTimeString"])(val.minDate, defaultTime[0]);
6124 var maxDate = Object(date_util_["modifyWithTimeString"])(val.maxDate, defaultTime[1]);
6125 if (this.maxDate === maxDate && this.minDate === minDate) {
6126 return;
6127 }
6128 this.onPick && this.onPick(val);
6129 this.maxDate = maxDate;
6130 this.minDate = minDate;
6131
6132 // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
6133 setTimeout(function () {
6134 _this.maxDate = maxDate;
6135 _this.minDate = minDate;
6136 }, 10);
6137 if (!close) return;
6138 this.handleConfirm();
6139 },
6140 handleShortcutClick: function handleShortcutClick(shortcut) {
6141 if (shortcut.onClick) {
6142 shortcut.onClick(this);
6143 }
6144 },
6145
6146
6147 // leftPrev*, rightNext* need to take care of `unlinkPanels`
6148 leftPrevYear: function leftPrevYear() {
6149 this.leftDate = Object(date_util_["prevYear"])(this.leftDate);
6150 if (!this.unlinkPanels) {
6151 this.rightDate = Object(date_util_["prevYear"])(this.rightDate);
6152 }
6153 },
6154 rightNextYear: function rightNextYear() {
6155 if (!this.unlinkPanels) {
6156 this.leftDate = Object(date_util_["nextYear"])(this.leftDate);
6157 }
6158 this.rightDate = Object(date_util_["nextYear"])(this.rightDate);
6159 },
6160
6161
6162 // leftNext*, rightPrev* are called when `unlinkPanels` is true
6163 leftNextYear: function leftNextYear() {
6164 this.leftDate = Object(date_util_["nextYear"])(this.leftDate);
6165 },
6166 rightPrevYear: function rightPrevYear() {
6167 this.rightDate = Object(date_util_["prevYear"])(this.rightDate);
6168 },
6169 handleConfirm: function handleConfirm() {
6170 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6171
6172 if (this.isValidValue([this.minDate, this.maxDate])) {
6173 this.$emit('pick', [this.minDate, this.maxDate], visible);
6174 }
6175 },
6176 isValidValue: function isValidValue(value) {
6177 return Array.isArray(value) && value && value[0] && value[1] && Object(date_util_["isDate"])(value[0]) && Object(date_util_["isDate"])(value[1]) && value[0].getTime() <= value[1].getTime() && (typeof this.disabledDate === 'function' ? !this.disabledDate(value[0]) && !this.disabledDate(value[1]) : true);
6178 },
6179 resetView: function resetView() {
6180 // NOTE: this is a hack to reset {min, max}Date on picker open.
6181 // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
6182 // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
6183 this.minDate = this.value && Object(date_util_["isDate"])(this.value[0]) ? new Date(this.value[0]) : null;
6184 this.maxDate = this.value && Object(date_util_["isDate"])(this.value[0]) ? new Date(this.value[1]) : null;
6185 }
6186 },
6187
6188 components: { MonthTable: month_table, ElInput: input_default.a, ElButton: button_default.a }
6189});
6190// CONCATENATED MODULE: ./packages/date-picker/src/panel/month-range.vue?vue&type=script&lang=js&
6191 /* harmony default export */ var panel_month_rangevue_type_script_lang_js_ = (month_rangevue_type_script_lang_js_);
6192// CONCATENATED MODULE: ./packages/date-picker/src/panel/month-range.vue
6193
6194
6195
6196
6197
6198/* normalize component */
6199
6200var month_range_component = Object(componentNormalizer["a" /* default */])(
6201 panel_month_rangevue_type_script_lang_js_,
6202 month_rangevue_type_template_id_f2645fb8_render,
6203 month_rangevue_type_template_id_f2645fb8_staticRenderFns,
6204 false,
6205 null,
6206 null,
6207 null
6208
6209)
6210
6211/* hot reload */
6212if (false) { var month_range_api; }
6213month_range_component.options.__file = "packages/date-picker/src/panel/month-range.vue"
6214/* harmony default export */ var month_range = (month_range_component.exports);
6215// CONCATENATED MODULE: ./packages/date-picker/src/picker/date-picker.js
6216
6217
6218
6219
6220
6221var date_picker_getPanel = function getPanel(type) {
6222 if (type === 'daterange' || type === 'datetimerange') {
6223 return date_range;
6224 } else if (type === 'monthrange') {
6225 return month_range;
6226 }
6227 return panel_date;
6228};
6229
6230/* harmony default export */ var date_picker = ({
6231 mixins: [picker["a" /* default */]],
6232
6233 name: 'ElDatePicker',
6234
6235 props: {
6236 type: {
6237 type: String,
6238 default: 'date'
6239 },
6240 timeArrowControl: Boolean
6241 },
6242
6243 watch: {
6244 type: function type(_type) {
6245 if (this.picker) {
6246 this.unmountPicker();
6247 this.panel = date_picker_getPanel(_type);
6248 this.mountPicker();
6249 } else {
6250 this.panel = date_picker_getPanel(_type);
6251 }
6252 }
6253 },
6254
6255 created: function created() {
6256 this.panel = date_picker_getPanel(this.type);
6257 }
6258});
6259// CONCATENATED MODULE: ./packages/date-picker/index.js
6260
6261
6262/* istanbul ignore next */
6263date_picker.install = function install(Vue) {
6264 Vue.component(date_picker.name, date_picker);
6265};
6266
6267/* harmony default export */ var packages_date_picker = __webpack_exports__["default"] = (date_picker);
6268
6269/***/ })
6270/******/ ]);
\No newline at end of file