UNPKG

80.7 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, {
41/******/ configurable: false,
42/******/ enumerable: true,
43/******/ get: getter
44/******/ });
45/******/ }
46/******/ };
47/******/
48/******/ // getDefaultExport function for compatibility with non-harmony modules
49/******/ __webpack_require__.n = function(module) {
50/******/ var getter = module && module.__esModule ?
51/******/ function getDefault() { return module['default']; } :
52/******/ function getModuleExports() { return module; };
53/******/ __webpack_require__.d(getter, 'a', getter);
54/******/ return getter;
55/******/ };
56/******/
57/******/ // Object.prototype.hasOwnProperty.call
58/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
59/******/
60/******/ // __webpack_public_path__
61/******/ __webpack_require__.p = "/dist/";
62/******/
63/******/ // Load entry module and return exports
64/******/ return __webpack_require__(__webpack_require__.s = 197);
65/******/ })
66/************************************************************************/
67/******/ ({
68
69/***/ 0:
70/***/ (function(module, exports) {
71
72/* globals __VUE_SSR_CONTEXT__ */
73
74// IMPORTANT: Do NOT use ES2015 features in this file.
75// This module is a runtime utility for cleaner component module output and will
76// be included in the final webpack user bundle.
77
78module.exports = function normalizeComponent (
79 rawScriptExports,
80 compiledTemplate,
81 functionalTemplate,
82 injectStyles,
83 scopeId,
84 moduleIdentifier /* server only */
85) {
86 var esModule
87 var scriptExports = rawScriptExports = rawScriptExports || {}
88
89 // ES6 modules interop
90 var type = typeof rawScriptExports.default
91 if (type === 'object' || type === 'function') {
92 esModule = rawScriptExports
93 scriptExports = rawScriptExports.default
94 }
95
96 // Vue.extend constructor export interop
97 var options = typeof scriptExports === 'function'
98 ? scriptExports.options
99 : scriptExports
100
101 // render functions
102 if (compiledTemplate) {
103 options.render = compiledTemplate.render
104 options.staticRenderFns = compiledTemplate.staticRenderFns
105 options._compiled = true
106 }
107
108 // functional template
109 if (functionalTemplate) {
110 options.functional = true
111 }
112
113 // scopedId
114 if (scopeId) {
115 options._scopeId = scopeId
116 }
117
118 var hook
119 if (moduleIdentifier) { // server build
120 hook = function (context) {
121 // 2.3 injection
122 context =
123 context || // cached call
124 (this.$vnode && this.$vnode.ssrContext) || // stateful
125 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
126 // 2.2 with runInNewContext: true
127 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
128 context = __VUE_SSR_CONTEXT__
129 }
130 // inject component styles
131 if (injectStyles) {
132 injectStyles.call(this, context)
133 }
134 // register component module identifier for async chunk inferrence
135 if (context && context._registeredComponents) {
136 context._registeredComponents.add(moduleIdentifier)
137 }
138 }
139 // used by ssr in case component is cached and beforeCreate
140 // never gets called
141 options._ssrRegister = hook
142 } else if (injectStyles) {
143 hook = injectStyles
144 }
145
146 if (hook) {
147 var functional = options.functional
148 var existing = functional
149 ? options.render
150 : options.beforeCreate
151
152 if (!functional) {
153 // inject component registration as beforeCreate hook
154 options.beforeCreate = existing
155 ? [].concat(existing, hook)
156 : [hook]
157 } else {
158 // for template-only hot-reload because in that case the render fn doesn't
159 // go through the normalizer
160 options._injectStyles = hook
161 // register for functioal component in vue file
162 options.render = function renderWithStyleInjection (h, context) {
163 hook.call(context)
164 return existing(h, context)
165 }
166 }
167 }
168
169 return {
170 esModule: esModule,
171 exports: scriptExports,
172 options: options
173 }
174}
175
176
177/***/ }),
178
179/***/ 1:
180/***/ (function(module, exports) {
181
182module.exports = require("element-ui/lib/mixins/emitter");
183
184/***/ }),
185
186/***/ 10:
187/***/ (function(module, exports) {
188
189module.exports = require("element-ui/lib/utils/clickoutside");
190
191/***/ }),
192
193/***/ 11:
194/***/ (function(module, exports, __webpack_require__) {
195
196"use strict";
197
198
199exports.__esModule = true;
200exports.extractTimeFormat = exports.extractDateFormat = exports.nextYear = exports.prevYear = exports.nextMonth = exports.prevMonth = exports.changeYearMonthAndClampDate = exports.timeWithinRange = exports.limitTimeRange = exports.clearMilliseconds = exports.clearTime = exports.modifyWithTimeString = exports.modifyTime = exports.modifyDate = exports.range = exports.getRangeHours = exports.getWeekNumber = exports.getStartDateOfMonth = exports.nextDate = exports.prevDate = exports.getFirstDayOfMonth = exports.getDayCountOfYear = exports.getDayCountOfMonth = exports.parseDate = exports.formatDate = exports.isDateObject = exports.isDate = exports.toDate = undefined;
201
202var _date = __webpack_require__(29);
203
204var _date2 = _interopRequireDefault(_date);
205
206var _locale = __webpack_require__(12);
207
208function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
209
210var weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
211var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
212var getI18nSettings = function getI18nSettings() {
213 return {
214 dayNamesShort: weeks.map(function (week) {
215 return (0, _locale.t)('el.datepicker.weeks.' + week);
216 }),
217 dayNames: weeks.map(function (week) {
218 return (0, _locale.t)('el.datepicker.weeks.' + week);
219 }),
220 monthNamesShort: months.map(function (month) {
221 return (0, _locale.t)('el.datepicker.months.' + month);
222 }),
223 monthNames: months.map(function (month, index) {
224 return (0, _locale.t)('el.datepicker.month' + (index + 1));
225 }),
226 amPm: ['am', 'pm']
227 };
228};
229
230var newArray = function newArray(start, end) {
231 var result = [];
232 for (var i = start; i <= end; i++) {
233 result.push(i);
234 }
235 return result;
236};
237
238var toDate = exports.toDate = function toDate(date) {
239 return isDate(date) ? new Date(date) : null;
240};
241
242var isDate = exports.isDate = function isDate(date) {
243 if (date === null || date === undefined) return false;
244 if (isNaN(new Date(date).getTime())) return false;
245 if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`
246 return true;
247};
248
249var isDateObject = exports.isDateObject = function isDateObject(val) {
250 return val instanceof Date;
251};
252
253var formatDate = exports.formatDate = function formatDate(date, format) {
254 date = toDate(date);
255 if (!date) return '';
256 return _date2.default.format(date, format || 'yyyy-MM-dd', getI18nSettings());
257};
258
259var parseDate = exports.parseDate = function parseDate(string, format) {
260 return _date2.default.parse(string, format || 'yyyy-MM-dd', getI18nSettings());
261};
262
263var getDayCountOfMonth = exports.getDayCountOfMonth = function getDayCountOfMonth(year, month) {
264 if (month === 3 || month === 5 || month === 8 || month === 10) {
265 return 30;
266 }
267
268 if (month === 1) {
269 if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
270 return 29;
271 } else {
272 return 28;
273 }
274 }
275
276 return 31;
277};
278
279var getDayCountOfYear = exports.getDayCountOfYear = function getDayCountOfYear(year) {
280 var isLeapYear = year % 400 === 0 || year % 100 !== 0 && year % 4 === 0;
281 return isLeapYear ? 366 : 365;
282};
283
284var getFirstDayOfMonth = exports.getFirstDayOfMonth = function getFirstDayOfMonth(date) {
285 var temp = new Date(date.getTime());
286 temp.setDate(1);
287 return temp.getDay();
288};
289
290// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript
291// {prev, next} Date should work for Daylight Saving Time
292// Adding 24 * 60 * 60 * 1000 does not work in the above scenario
293var prevDate = exports.prevDate = function prevDate(date) {
294 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
295
296 return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
297};
298
299var nextDate = exports.nextDate = function nextDate(date) {
300 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
301
302 return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
303};
304
305var getStartDateOfMonth = exports.getStartDateOfMonth = function getStartDateOfMonth(year, month) {
306 var result = new Date(year, month, 1);
307 var day = result.getDay();
308
309 if (day === 0) {
310 return prevDate(result, 7);
311 } else {
312 return prevDate(result, day);
313 }
314};
315
316var getWeekNumber = exports.getWeekNumber = function getWeekNumber(src) {
317 if (!isDate(src)) return null;
318 var date = new Date(src.getTime());
319 date.setHours(0, 0, 0, 0);
320 // Thursday in current week decides the year.
321 date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
322 // January 4 is always in week 1.
323 var week1 = new Date(date.getFullYear(), 0, 4);
324 // Adjust to Thursday in week 1 and count number of weeks from date to week 1.
325 // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.
326 return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
327};
328
329var getRangeHours = exports.getRangeHours = function getRangeHours(ranges) {
330 var hours = [];
331 var disabledHours = [];
332
333 (ranges || []).forEach(function (range) {
334 var value = range.map(function (date) {
335 return date.getHours();
336 });
337
338 disabledHours = disabledHours.concat(newArray(value[0], value[1]));
339 });
340
341 if (disabledHours.length) {
342 for (var i = 0; i < 24; i++) {
343 hours[i] = disabledHours.indexOf(i) === -1;
344 }
345 } else {
346 for (var _i = 0; _i < 24; _i++) {
347 hours[_i] = false;
348 }
349 }
350
351 return hours;
352};
353
354var range = exports.range = function range(n) {
355 // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n
356 return Array.apply(null, { length: n }).map(function (_, n) {
357 return n;
358 });
359};
360
361var modifyDate = exports.modifyDate = function modifyDate(date, y, m, d) {
362 return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
363};
364
365var modifyTime = exports.modifyTime = function modifyTime(date, h, m, s) {
366 return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());
367};
368
369var modifyWithTimeString = exports.modifyWithTimeString = function modifyWithTimeString(date, time) {
370 if (date == null || !time) {
371 return date;
372 }
373 time = parseDate(time, 'HH:mm:ss');
374 return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());
375};
376
377var clearTime = exports.clearTime = function clearTime(date) {
378 return new Date(date.getFullYear(), date.getMonth(), date.getDate());
379};
380
381var clearMilliseconds = exports.clearMilliseconds = function clearMilliseconds(date) {
382 return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);
383};
384
385var limitTimeRange = exports.limitTimeRange = function limitTimeRange(date, ranges) {
386 var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'HH:mm:ss';
387
388 // TODO: refactory a more elegant solution
389 if (ranges.length === 0) return date;
390 var normalizeDate = function normalizeDate(date) {
391 return _date2.default.parse(_date2.default.format(date, format), format);
392 };
393 var ndate = normalizeDate(date);
394 var nranges = ranges.map(function (range) {
395 return range.map(normalizeDate);
396 });
397 if (nranges.some(function (nrange) {
398 return ndate >= nrange[0] && ndate <= nrange[1];
399 })) return date;
400
401 var minDate = nranges[0][0];
402 var maxDate = nranges[0][0];
403
404 nranges.forEach(function (nrange) {
405 minDate = new Date(Math.min(nrange[0], minDate));
406 maxDate = new Date(Math.max(nrange[1], minDate));
407 });
408
409 var ret = ndate < minDate ? minDate : maxDate;
410 // preserve Year/Month/Date
411 return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate());
412};
413
414var timeWithinRange = exports.timeWithinRange = function timeWithinRange(date, selectableRange, format) {
415 var limitedDate = limitTimeRange(date, selectableRange, format);
416 return limitedDate.getTime() === date.getTime();
417};
418
419var changeYearMonthAndClampDate = exports.changeYearMonthAndClampDate = function changeYearMonthAndClampDate(date, year, month) {
420 // clamp date to the number of days in `year`, `month`
421 // eg: (2010-1-31, 2010, 2) => 2010-2-28
422 var monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));
423 return modifyDate(date, year, month, monthDate);
424};
425
426var prevMonth = exports.prevMonth = function prevMonth(date) {
427 var year = date.getFullYear();
428 var month = date.getMonth();
429 return month === 0 ? changeYearMonthAndClampDate(date, year - 1, 11) : changeYearMonthAndClampDate(date, year, month - 1);
430};
431
432var nextMonth = exports.nextMonth = function nextMonth(date) {
433 var year = date.getFullYear();
434 var month = date.getMonth();
435 return month === 11 ? changeYearMonthAndClampDate(date, year + 1, 0) : changeYearMonthAndClampDate(date, year, month + 1);
436};
437
438var prevYear = exports.prevYear = function prevYear(date) {
439 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
440
441 var year = date.getFullYear();
442 var month = date.getMonth();
443 return changeYearMonthAndClampDate(date, year - amount, month);
444};
445
446var nextYear = exports.nextYear = function nextYear(date) {
447 var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
448
449 var year = date.getFullYear();
450 var month = date.getMonth();
451 return changeYearMonthAndClampDate(date, year + amount, month);
452};
453
454var extractDateFormat = exports.extractDateFormat = function extractDateFormat(format) {
455 return format.replace(/\W?m{1,2}|\W?ZZ/g, '').replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '').trim();
456};
457
458var extractTimeFormat = exports.extractTimeFormat = function extractTimeFormat(format) {
459 return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '').trim();
460};
461
462/***/ }),
463
464/***/ 12:
465/***/ (function(module, exports) {
466
467module.exports = require("element-ui/lib/locale");
468
469/***/ }),
470
471/***/ 17:
472/***/ (function(module, exports) {
473
474module.exports = require("element-ui/lib/scrollbar");
475
476/***/ }),
477
478/***/ 197:
479/***/ (function(module, exports, __webpack_require__) {
480
481"use strict";
482
483
484exports.__esModule = true;
485
486var _timePicker = __webpack_require__(198);
487
488var _timePicker2 = _interopRequireDefault(_timePicker);
489
490function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
491
492/* istanbul ignore next */
493_timePicker2.default.install = function (Vue) {
494 Vue.component(_timePicker2.default.name, _timePicker2.default);
495};
496
497exports.default = _timePicker2.default;
498
499/***/ }),
500
501/***/ 198:
502/***/ (function(module, exports, __webpack_require__) {
503
504"use strict";
505
506
507exports.__esModule = true;
508
509var _picker = __webpack_require__(27);
510
511var _picker2 = _interopRequireDefault(_picker);
512
513var _time = __webpack_require__(31);
514
515var _time2 = _interopRequireDefault(_time);
516
517var _timeRange = __webpack_require__(199);
518
519var _timeRange2 = _interopRequireDefault(_timeRange);
520
521function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
522
523exports.default = {
524 mixins: [_picker2.default],
525
526 name: 'ElTimePicker',
527
528 props: {
529 isRange: Boolean,
530 arrowControl: Boolean
531 },
532
533 data: function data() {
534 return {
535 type: ''
536 };
537 },
538
539
540 watch: {
541 isRange: function isRange(_isRange) {
542 if (this.picker) {
543 this.unmountPicker();
544 this.type = _isRange ? 'timerange' : 'time';
545 this.panel = _isRange ? _timeRange2.default : _time2.default;
546 this.mountPicker();
547 } else {
548 this.type = _isRange ? 'timerange' : 'time';
549 this.panel = _isRange ? _timeRange2.default : _time2.default;
550 }
551 }
552 },
553
554 created: function created() {
555 this.type = this.isRange ? 'timerange' : 'time';
556 this.panel = this.isRange ? _timeRange2.default : _time2.default;
557 }
558};
559
560/***/ }),
561
562/***/ 199:
563/***/ (function(module, __webpack_exports__, __webpack_require__) {
564
565"use strict";
566Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
567/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_range_vue__ = __webpack_require__(200);
568/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_range_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_range_vue__);
569/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a222ec54_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_time_range_vue__ = __webpack_require__(201);
570var normalizeComponent = __webpack_require__(0)
571/* script */
572
573/* template */
574
575/* template functional */
576 var __vue_template_functional__ = false
577/* styles */
578var __vue_styles__ = null
579/* scopeId */
580var __vue_scopeId__ = null
581/* moduleIdentifier (server only) */
582var __vue_module_identifier__ = null
583var Component = normalizeComponent(
584 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_range_vue___default.a,
585 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a222ec54_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_time_range_vue__["a" /* default */],
586 __vue_template_functional__,
587 __vue_styles__,
588 __vue_scopeId__,
589 __vue_module_identifier__
590)
591
592/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
593
594
595/***/ }),
596
597/***/ 200:
598/***/ (function(module, exports, __webpack_require__) {
599
600"use strict";
601
602
603exports.__esModule = true;
604
605var _util = __webpack_require__(11);
606
607var _locale = __webpack_require__(5);
608
609var _locale2 = _interopRequireDefault(_locale);
610
611var _timeSpinner = __webpack_require__(32);
612
613var _timeSpinner2 = _interopRequireDefault(_timeSpinner);
614
615function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
616
617var MIN_TIME = (0, _util.parseDate)('00:00:00', 'HH:mm:ss'); //
618//
619//
620//
621//
622//
623//
624//
625//
626//
627//
628//
629//
630//
631//
632//
633//
634//
635//
636//
637//
638//
639//
640//
641//
642//
643//
644//
645//
646//
647//
648//
649//
650//
651//
652//
653//
654//
655//
656//
657//
658//
659//
660//
661//
662//
663//
664//
665//
666//
667//
668//
669//
670//
671//
672//
673//
674
675var MAX_TIME = (0, _util.parseDate)('23:59:59', 'HH:mm:ss');
676
677var minTimeOfDay = function minTimeOfDay(date) {
678 return (0, _util.modifyDate)(MIN_TIME, date.getFullYear(), date.getMonth(), date.getDate());
679};
680
681var maxTimeOfDay = function maxTimeOfDay(date) {
682 return (0, _util.modifyDate)(MAX_TIME, date.getFullYear(), date.getMonth(), date.getDate());
683};
684
685// increase time by amount of milliseconds, but within the range of day
686var advanceTime = function advanceTime(date, amount) {
687 return new Date(Math.min(date.getTime() + amount, maxTimeOfDay(date).getTime()));
688};
689
690exports.default = {
691 mixins: [_locale2.default],
692
693 components: { TimeSpinner: _timeSpinner2.default },
694
695 computed: {
696 showSeconds: function showSeconds() {
697 return (this.format || '').indexOf('ss') !== -1;
698 },
699 offset: function offset() {
700 return this.showSeconds ? 11 : 8;
701 },
702 spinner: function spinner() {
703 return this.selectionRange[0] < this.offset ? this.$refs.minSpinner : this.$refs.maxSpinner;
704 },
705 btnDisabled: function btnDisabled() {
706 return this.minDate.getTime() > this.maxDate.getTime();
707 },
708 amPmMode: function amPmMode() {
709 if ((this.format || '').indexOf('A') !== -1) return 'A';
710 if ((this.format || '').indexOf('a') !== -1) return 'a';
711 return '';
712 }
713 },
714
715 data: function data() {
716 return {
717 popperClass: '',
718 minDate: new Date(),
719 maxDate: new Date(),
720 value: [],
721 oldValue: [new Date(), new Date()],
722 defaultValue: null,
723 format: 'HH:mm:ss',
724 visible: false,
725 selectionRange: [0, 2],
726 arrowControl: false
727 };
728 },
729
730
731 watch: {
732 value: function value(_value) {
733 if (Array.isArray(_value)) {
734 this.minDate = new Date(_value[0]);
735 this.maxDate = new Date(_value[1]);
736 } else {
737 if (Array.isArray(this.defaultValue)) {
738 this.minDate = new Date(this.defaultValue[0]);
739 this.maxDate = new Date(this.defaultValue[1]);
740 } else if (this.defaultValue) {
741 this.minDate = new Date(this.defaultValue);
742 this.maxDate = advanceTime(new Date(this.defaultValue), 60 * 60 * 1000);
743 } else {
744 this.minDate = new Date();
745 this.maxDate = advanceTime(new Date(), 60 * 60 * 1000);
746 }
747 }
748 },
749 visible: function visible(val) {
750 var _this = this;
751
752 if (val) {
753 this.oldValue = this.value;
754 this.$nextTick(function () {
755 return _this.$refs.minSpinner.emitSelectRange('hours');
756 });
757 }
758 }
759 },
760
761 methods: {
762 handleClear: function handleClear() {
763 this.$emit('pick', null);
764 },
765 handleCancel: function handleCancel() {
766 this.$emit('pick', this.oldValue);
767 },
768 handleMinChange: function handleMinChange(date) {
769 this.minDate = (0, _util.clearMilliseconds)(date);
770 this.handleChange();
771 },
772 handleMaxChange: function handleMaxChange(date) {
773 this.maxDate = (0, _util.clearMilliseconds)(date);
774 this.handleChange();
775 },
776 handleChange: function handleChange() {
777 if (this.isValidValue([this.minDate, this.maxDate])) {
778 this.$refs.minSpinner.selectableRange = [[minTimeOfDay(this.minDate), this.maxDate]];
779 this.$refs.maxSpinner.selectableRange = [[this.minDate, maxTimeOfDay(this.maxDate)]];
780 this.$emit('pick', [this.minDate, this.maxDate], true);
781 }
782 },
783 setMinSelectionRange: function setMinSelectionRange(start, end) {
784 this.$emit('select-range', start, end, 'min');
785 this.selectionRange = [start, end];
786 },
787 setMaxSelectionRange: function setMaxSelectionRange(start, end) {
788 this.$emit('select-range', start, end, 'max');
789 this.selectionRange = [start + this.offset, end + this.offset];
790 },
791 handleConfirm: function handleConfirm() {
792 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
793
794 var minSelectableRange = this.$refs.minSpinner.selectableRange;
795 var maxSelectableRange = this.$refs.maxSpinner.selectableRange;
796
797 this.minDate = (0, _util.limitTimeRange)(this.minDate, minSelectableRange, this.format);
798 this.maxDate = (0, _util.limitTimeRange)(this.maxDate, maxSelectableRange, this.format);
799
800 this.$emit('pick', [this.minDate, this.maxDate], visible);
801 },
802 adjustSpinners: function adjustSpinners() {
803 this.$refs.minSpinner.adjustSpinners();
804 this.$refs.maxSpinner.adjustSpinners();
805 },
806 changeSelectionRange: function changeSelectionRange(step) {
807 var list = this.showSeconds ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11];
808 var mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);
809 var index = list.indexOf(this.selectionRange[0]);
810 var next = (index + step + list.length) % list.length;
811 var half = list.length / 2;
812 if (next < half) {
813 this.$refs.minSpinner.emitSelectRange(mapping[next]);
814 } else {
815 this.$refs.maxSpinner.emitSelectRange(mapping[next - half]);
816 }
817 },
818 isValidValue: function isValidValue(date) {
819 return Array.isArray(date) && (0, _util.timeWithinRange)(this.minDate, this.$refs.minSpinner.selectableRange) && (0, _util.timeWithinRange)(this.maxDate, this.$refs.maxSpinner.selectableRange);
820 },
821 handleKeydown: function handleKeydown(event) {
822 var keyCode = event.keyCode;
823 var mapping = { 38: -1, 40: 1, 37: -1, 39: 1 };
824
825 // Left or Right
826 if (keyCode === 37 || keyCode === 39) {
827 var step = mapping[keyCode];
828 this.changeSelectionRange(step);
829 event.preventDefault();
830 return;
831 }
832
833 // Up or Down
834 if (keyCode === 38 || keyCode === 40) {
835 var _step = mapping[keyCode];
836 this.spinner.scrollDown(_step);
837 event.preventDefault();
838 return;
839 }
840 }
841 }
842};
843
844/***/ }),
845
846/***/ 201:
847/***/ (function(module, __webpack_exports__, __webpack_require__) {
848
849"use strict";
850var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"el-zoom-in-top"},on:{"after-leave":function($event){_vm.$emit('dodestroy')}}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:_vm.popperClass},[_c('div',{staticClass:"el-time-range-picker__content"},[_c('div',{staticClass:"el-time-range-picker__cell"},[_c('div',{staticClass:"el-time-range-picker__header"},[_vm._v(_vm._s(_vm.t('el.datepicker.startTime')))]),_c('div',{staticClass:"el-time-range-picker__body el-time-panel__content",class:{ 'has-seconds': _vm.showSeconds, 'is-arrow': _vm.arrowControl }},[_c('time-spinner',{ref:"minSpinner",attrs:{"show-seconds":_vm.showSeconds,"am-pm-mode":_vm.amPmMode,"arrow-control":_vm.arrowControl,"date":_vm.minDate},on:{"change":_vm.handleMinChange,"select-range":_vm.setMinSelectionRange}})],1)]),_c('div',{staticClass:"el-time-range-picker__cell"},[_c('div',{staticClass:"el-time-range-picker__header"},[_vm._v(_vm._s(_vm.t('el.datepicker.endTime')))]),_c('div',{staticClass:"el-time-range-picker__body el-time-panel__content",class:{ 'has-seconds': _vm.showSeconds, 'is-arrow': _vm.arrowControl }},[_c('time-spinner',{ref:"maxSpinner",attrs:{"show-seconds":_vm.showSeconds,"am-pm-mode":_vm.amPmMode,"arrow-control":_vm.arrowControl,"date":_vm.maxDate},on:{"change":_vm.handleMaxChange,"select-range":_vm.setMaxSelectionRange}})],1)])]),_c('div',{staticClass:"el-time-panel__footer"},[_c('button',{staticClass:"el-time-panel__btn cancel",attrs:{"type":"button"},on:{"click":function($event){_vm.handleCancel()}}},[_vm._v(_vm._s(_vm.t('el.datepicker.cancel')))]),_c('button',{staticClass:"el-time-panel__btn confirm",attrs:{"type":"button","disabled":_vm.btnDisabled},on:{"click":function($event){_vm.handleConfirm()}}},[_vm._v(_vm._s(_vm.t('el.datepicker.confirm')))])])])])}
851var staticRenderFns = []
852var esExports = { render: render, staticRenderFns: staticRenderFns }
853/* harmony default export */ __webpack_exports__["a"] = (esExports);
854
855/***/ }),
856
857/***/ 24:
858/***/ (function(module, exports, __webpack_require__) {
859
860"use strict";
861
862
863exports.__esModule = true;
864
865var _dom = __webpack_require__(3);
866
867exports.default = {
868 bind: function bind(el, binding, vnode) {
869 var interval = null;
870 var startTime = void 0;
871 var handler = function handler() {
872 return vnode.context[binding.expression].apply();
873 };
874 var clear = function clear() {
875 if (new Date() - startTime < 100) {
876 handler();
877 }
878 clearInterval(interval);
879 interval = null;
880 };
881
882 (0, _dom.on)(el, 'mousedown', function (e) {
883 if (e.button !== 0) return;
884 startTime = new Date();
885 (0, _dom.once)(document, 'mouseup', clear);
886 clearInterval(interval);
887 interval = setInterval(handler, 100);
888 });
889 }
890};
891
892/***/ }),
893
894/***/ 27:
895/***/ (function(module, __webpack_exports__, __webpack_require__) {
896
897"use strict";
898Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
899/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_picker_vue__ = __webpack_require__(28);
900/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_picker_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_picker_vue__);
901/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_72d0c3bc_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_picker_vue__ = __webpack_require__(30);
902var normalizeComponent = __webpack_require__(0)
903/* script */
904
905/* template */
906
907/* template functional */
908 var __vue_template_functional__ = false
909/* styles */
910var __vue_styles__ = null
911/* scopeId */
912var __vue_scopeId__ = null
913/* moduleIdentifier (server only) */
914var __vue_module_identifier__ = null
915var Component = normalizeComponent(
916 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_picker_vue___default.a,
917 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_72d0c3bc_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_picker_vue__["a" /* default */],
918 __vue_template_functional__,
919 __vue_styles__,
920 __vue_scopeId__,
921 __vue_module_identifier__
922)
923
924/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
925
926
927/***/ }),
928
929/***/ 28:
930/***/ (function(module, exports, __webpack_require__) {
931
932"use strict";
933
934
935exports.__esModule = true;
936
937var _vue = __webpack_require__(4);
938
939var _vue2 = _interopRequireDefault(_vue);
940
941var _clickoutside = __webpack_require__(10);
942
943var _clickoutside2 = _interopRequireDefault(_clickoutside);
944
945var _util = __webpack_require__(11);
946
947var _vuePopper = __webpack_require__(7);
948
949var _vuePopper2 = _interopRequireDefault(_vuePopper);
950
951var _emitter = __webpack_require__(1);
952
953var _emitter2 = _interopRequireDefault(_emitter);
954
955var _input = __webpack_require__(6);
956
957var _input2 = _interopRequireDefault(_input);
958
959var _merge = __webpack_require__(9);
960
961var _merge2 = _interopRequireDefault(_merge);
962
963function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
964
965var NewPopper = {
966 props: {
967 appendToBody: _vuePopper2.default.props.appendToBody,
968 offset: _vuePopper2.default.props.offset,
969 boundariesPadding: _vuePopper2.default.props.boundariesPadding,
970 arrowOffset: _vuePopper2.default.props.arrowOffset
971 },
972 methods: _vuePopper2.default.methods,
973 data: function data() {
974 return (0, _merge2.default)({ visibleArrow: true }, _vuePopper2.default.data);
975 },
976
977 beforeDestroy: _vuePopper2.default.beforeDestroy
978}; //
979//
980//
981//
982//
983//
984//
985//
986//
987//
988//
989//
990//
991//
992//
993//
994//
995//
996//
997//
998//
999//
1000//
1001//
1002//
1003//
1004//
1005//
1006//
1007//
1008//
1009//
1010//
1011//
1012//
1013//
1014//
1015//
1016//
1017//
1018//
1019//
1020//
1021//
1022//
1023//
1024//
1025//
1026//
1027//
1028//
1029//
1030//
1031//
1032//
1033//
1034//
1035//
1036//
1037//
1038//
1039//
1040//
1041//
1042//
1043//
1044//
1045//
1046//
1047//
1048//
1049//
1050//
1051//
1052//
1053//
1054//
1055//
1056//
1057//
1058//
1059//
1060//
1061
1062var DEFAULT_FORMATS = {
1063 date: 'yyyy-MM-dd',
1064 month: 'yyyy-MM',
1065 datetime: 'yyyy-MM-dd HH:mm:ss',
1066 time: 'HH:mm:ss',
1067 week: 'yyyywWW',
1068 timerange: 'HH:mm:ss',
1069 daterange: 'yyyy-MM-dd',
1070 datetimerange: 'yyyy-MM-dd HH:mm:ss',
1071 year: 'yyyy'
1072};
1073var HAVE_TRIGGER_TYPES = ['date', 'datetime', 'time', 'time-select', 'week', 'month', 'year', 'daterange', 'timerange', 'datetimerange', 'dates'];
1074var DATE_FORMATTER = function DATE_FORMATTER(value, format) {
1075 if (format === 'timestamp') return value.getTime();
1076 return (0, _util.formatDate)(value, format);
1077};
1078var DATE_PARSER = function DATE_PARSER(text, format) {
1079 if (format === 'timestamp') return new Date(Number(text));
1080 return (0, _util.parseDate)(text, format);
1081};
1082var RANGE_FORMATTER = function RANGE_FORMATTER(value, format) {
1083 if (Array.isArray(value) && value.length === 2) {
1084 var start = value[0];
1085 var end = value[1];
1086
1087 if (start && end) {
1088 return [DATE_FORMATTER(start, format), DATE_FORMATTER(end, format)];
1089 }
1090 }
1091 return '';
1092};
1093var RANGE_PARSER = function RANGE_PARSER(array, format, separator) {
1094 if (!Array.isArray(array)) {
1095 array = array.split(separator);
1096 }
1097 if (array.length === 2) {
1098 var range1 = array[0];
1099 var range2 = array[1];
1100
1101 return [DATE_PARSER(range1, format), DATE_PARSER(range2, format)];
1102 }
1103 return [];
1104};
1105var TYPE_VALUE_RESOLVER_MAP = {
1106 default: {
1107 formatter: function formatter(value) {
1108 if (!value) return '';
1109 return '' + value;
1110 },
1111 parser: function parser(text) {
1112 if (text === undefined || text === '') return null;
1113 return text;
1114 }
1115 },
1116 week: {
1117 formatter: function formatter(value, format) {
1118 var week = (0, _util.getWeekNumber)(value);
1119 var month = value.getMonth();
1120 var trueDate = new Date(value);
1121 if (week === 1 && month === 11) {
1122 trueDate.setHours(0, 0, 0, 0);
1123 trueDate.setDate(trueDate.getDate() + 3 - (trueDate.getDay() + 6) % 7);
1124 }
1125 var date = (0, _util.formatDate)(trueDate, format);
1126
1127 date = /WW/.test(date) ? date.replace(/WW/, week < 10 ? '0' + week : week) : date.replace(/W/, week);
1128 return date;
1129 },
1130 parser: function parser(text) {
1131 var array = (text || '').split('w');
1132 if (array.length === 2) {
1133 var year = Number(array[0]);
1134 var month = Number(array[1]);
1135
1136 if (!isNaN(year) && !isNaN(month) && month < 54) {
1137 return text;
1138 }
1139 }
1140 return null;
1141 }
1142 },
1143 date: {
1144 formatter: DATE_FORMATTER,
1145 parser: DATE_PARSER
1146 },
1147 datetime: {
1148 formatter: DATE_FORMATTER,
1149 parser: DATE_PARSER
1150 },
1151 daterange: {
1152 formatter: RANGE_FORMATTER,
1153 parser: RANGE_PARSER
1154 },
1155 datetimerange: {
1156 formatter: RANGE_FORMATTER,
1157 parser: RANGE_PARSER
1158 },
1159 timerange: {
1160 formatter: RANGE_FORMATTER,
1161 parser: RANGE_PARSER
1162 },
1163 time: {
1164 formatter: DATE_FORMATTER,
1165 parser: DATE_PARSER
1166 },
1167 month: {
1168 formatter: DATE_FORMATTER,
1169 parser: DATE_PARSER
1170 },
1171 year: {
1172 formatter: DATE_FORMATTER,
1173 parser: DATE_PARSER
1174 },
1175 number: {
1176 formatter: function formatter(value) {
1177 if (!value) return '';
1178 return '' + value;
1179 },
1180 parser: function parser(text) {
1181 var result = Number(text);
1182
1183 if (!isNaN(text)) {
1184 return result;
1185 } else {
1186 return null;
1187 }
1188 }
1189 },
1190 dates: {
1191 formatter: function formatter(value, format) {
1192 return value.map(function (date) {
1193 return DATE_FORMATTER(date, format);
1194 });
1195 },
1196 parser: function parser(value, format) {
1197 return (typeof value === 'string' ? value.split(', ') : value).map(function (date) {
1198 return date instanceof Date ? date : DATE_PARSER(date, format);
1199 });
1200 }
1201 }
1202};
1203var PLACEMENT_MAP = {
1204 left: 'bottom-start',
1205 center: 'bottom',
1206 right: 'bottom-end'
1207};
1208
1209var parseAsFormatAndType = function parseAsFormatAndType(value, customFormat, type) {
1210 var rangeSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '-';
1211
1212 if (!value) return null;
1213 var parser = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).parser;
1214 var format = customFormat || DEFAULT_FORMATS[type];
1215 return parser(value, format, rangeSeparator);
1216};
1217
1218var formatAsFormatAndType = function formatAsFormatAndType(value, customFormat, type) {
1219 if (!value) return null;
1220 var formatter = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).formatter;
1221 var format = customFormat || DEFAULT_FORMATS[type];
1222 return formatter(value, format);
1223};
1224
1225/*
1226 * Considers:
1227 * 1. Date object
1228 * 2. date string
1229 * 3. array of 1 or 2
1230 */
1231var valueEquals = function valueEquals(a, b) {
1232 // considers Date object and string
1233 var dateEquals = function dateEquals(a, b) {
1234 var aIsDate = a instanceof Date;
1235 var bIsDate = b instanceof Date;
1236 if (aIsDate && bIsDate) {
1237 return a.getTime() === b.getTime();
1238 }
1239 if (!aIsDate && !bIsDate) {
1240 return a === b;
1241 }
1242 return false;
1243 };
1244
1245 var aIsArray = a instanceof Array;
1246 var bIsArray = b instanceof Array;
1247 if (aIsArray && bIsArray) {
1248 if (a.length !== b.length) {
1249 return false;
1250 }
1251 return a.every(function (item, index) {
1252 return dateEquals(item, b[index]);
1253 });
1254 }
1255 if (!aIsArray && !bIsArray) {
1256 return dateEquals(a, b);
1257 }
1258 return false;
1259};
1260
1261var isString = function isString(val) {
1262 return typeof val === 'string' || val instanceof String;
1263};
1264
1265var validator = function validator(val) {
1266 // either: String, Array of String, null / undefined
1267 return val === null || val === undefined || isString(val) || Array.isArray(val) && val.length === 2 && val.every(isString);
1268};
1269
1270exports.default = {
1271 mixins: [_emitter2.default, NewPopper],
1272
1273 inject: {
1274 elForm: {
1275 default: ''
1276 },
1277 elFormItem: {
1278 default: ''
1279 }
1280 },
1281
1282 props: {
1283 size: String,
1284 format: String,
1285 valueFormat: String,
1286 readonly: Boolean,
1287 placeholder: String,
1288 startPlaceholder: String,
1289 endPlaceholder: String,
1290 prefixIcon: String,
1291 clearIcon: {
1292 type: String,
1293 default: 'el-icon-circle-close'
1294 },
1295 name: {
1296 default: '',
1297 validator: validator
1298 },
1299 disabled: Boolean,
1300 clearable: {
1301 type: Boolean,
1302 default: true
1303 },
1304 id: {
1305 default: '',
1306 validator: validator
1307 },
1308 popperClass: String,
1309 editable: {
1310 type: Boolean,
1311 default: true
1312 },
1313 align: {
1314 type: String,
1315 default: 'left'
1316 },
1317 value: {},
1318 defaultValue: {},
1319 defaultTime: {},
1320 rangeSeparator: {
1321 default: '-'
1322 },
1323 pickerOptions: {},
1324 unlinkPanels: Boolean
1325 },
1326
1327 components: { ElInput: _input2.default },
1328
1329 directives: { Clickoutside: _clickoutside2.default },
1330
1331 data: function data() {
1332 return {
1333 pickerVisible: false,
1334 showClose: false,
1335 userInput: null,
1336 valueOnOpen: null, // value when picker opens, used to determine whether to emit change
1337 unwatchPickerOptions: null
1338 };
1339 },
1340
1341
1342 watch: {
1343 pickerVisible: function pickerVisible(val) {
1344 if (this.readonly || this.pickerDisabled) return;
1345 if (val) {
1346 this.showPicker();
1347 this.valueOnOpen = Array.isArray(this.value) ? [].concat(this.value) : this.value;
1348 } else {
1349 this.hidePicker();
1350 this.emitChange(this.value);
1351 this.userInput = null;
1352 this.dispatch('ElFormItem', 'el.form.blur');
1353 this.$emit('blur', this);
1354 this.blur();
1355 }
1356 },
1357
1358 parsedValue: {
1359 immediate: true,
1360 handler: function handler(val) {
1361 if (this.picker) {
1362 this.picker.value = val;
1363 }
1364 }
1365 },
1366 defaultValue: function defaultValue(val) {
1367 // NOTE: should eventually move to jsx style picker + panel ?
1368 if (this.picker) {
1369 this.picker.defaultValue = val;
1370 }
1371 },
1372 value: function value(val, oldVal) {
1373 if (!valueEquals(val, oldVal) && !this.pickerVisible) {
1374 this.dispatch('ElFormItem', 'el.form.change', val);
1375 }
1376 }
1377 },
1378
1379 computed: {
1380 ranged: function ranged() {
1381 return this.type.indexOf('range') > -1;
1382 },
1383 reference: function reference() {
1384 var reference = this.$refs.reference;
1385 return reference.$el || reference;
1386 },
1387 refInput: function refInput() {
1388 if (this.reference) {
1389 return [].slice.call(this.reference.querySelectorAll('input'));
1390 }
1391 return [];
1392 },
1393 valueIsEmpty: function valueIsEmpty() {
1394 var val = this.value;
1395 if (Array.isArray(val)) {
1396 for (var i = 0, len = val.length; i < len; i++) {
1397 if (val[i]) {
1398 return false;
1399 }
1400 }
1401 } else {
1402 if (val) {
1403 return false;
1404 }
1405 }
1406 return true;
1407 },
1408 triggerClass: function triggerClass() {
1409 return this.prefixIcon || (this.type.indexOf('time') !== -1 ? 'el-icon-time' : 'el-icon-date');
1410 },
1411 selectionMode: function selectionMode() {
1412 if (this.type === 'week') {
1413 return 'week';
1414 } else if (this.type === 'month') {
1415 return 'month';
1416 } else if (this.type === 'year') {
1417 return 'year';
1418 } else if (this.type === 'dates') {
1419 return 'dates';
1420 }
1421
1422 return 'day';
1423 },
1424 haveTrigger: function haveTrigger() {
1425 if (typeof this.showTrigger !== 'undefined') {
1426 return this.showTrigger;
1427 }
1428 return HAVE_TRIGGER_TYPES.indexOf(this.type) !== -1;
1429 },
1430 displayValue: function displayValue() {
1431 var formattedValue = formatAsFormatAndType(this.parsedValue, this.format, this.type, this.rangeSeparator);
1432 if (Array.isArray(this.userInput)) {
1433 return [this.userInput[0] || formattedValue && formattedValue[0] || '', this.userInput[1] || formattedValue && formattedValue[1] || ''];
1434 } else if (this.userInput !== null) {
1435 return this.userInput;
1436 } else if (formattedValue) {
1437 return this.type === 'dates' ? formattedValue.join(', ') : formattedValue;
1438 } else {
1439 return '';
1440 }
1441 },
1442 parsedValue: function parsedValue() {
1443 if (!this.value) return this.value; // component value is not set
1444 if (this.type === 'time-select') return this.value; // time-select does not require parsing, this might change in next major version
1445
1446 var valueIsDateObject = (0, _util.isDateObject)(this.value) || Array.isArray(this.value) && this.value.every(_util.isDateObject);
1447 if (valueIsDateObject) {
1448 return this.value;
1449 }
1450
1451 if (this.valueFormat) {
1452 return parseAsFormatAndType(this.value, this.valueFormat, this.type, this.rangeSeparator) || this.value;
1453 }
1454
1455 // NOTE: deal with common but incorrect usage, should remove in next major version
1456 // user might provide string / timestamp without value-format, coerce them into date (or array of date)
1457 return Array.isArray(this.value) ? this.value.map(function (val) {
1458 return new Date(val);
1459 }) : new Date(this.value);
1460 },
1461 _elFormItemSize: function _elFormItemSize() {
1462 return (this.elFormItem || {}).elFormItemSize;
1463 },
1464 pickerSize: function pickerSize() {
1465 return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;
1466 },
1467 pickerDisabled: function pickerDisabled() {
1468 return this.disabled || (this.elForm || {}).disabled;
1469 },
1470 firstInputId: function firstInputId() {
1471 var obj = {};
1472 var id = void 0;
1473 if (this.ranged) {
1474 id = this.id && this.id[0];
1475 } else {
1476 id = this.id;
1477 }
1478 if (id) obj.id = id;
1479 return obj;
1480 },
1481 secondInputId: function secondInputId() {
1482 var obj = {};
1483 var id = void 0;
1484 if (this.ranged) {
1485 id = this.id && this.id[1];
1486 }
1487 if (id) obj.id = id;
1488 return obj;
1489 }
1490 },
1491
1492 created: function created() {
1493 // vue-popper
1494 this.popperOptions = {
1495 boundariesPadding: 0,
1496 gpuAcceleration: false
1497 };
1498 this.placement = PLACEMENT_MAP[this.align] || PLACEMENT_MAP.left;
1499
1500 this.$on('fieldReset', this.handleFieldReset);
1501 },
1502
1503
1504 methods: {
1505 focus: function focus() {
1506 if (!this.ranged) {
1507 this.$refs.reference.focus();
1508 } else {
1509 this.handleFocus();
1510 }
1511 },
1512 blur: function blur() {
1513 this.refInput.forEach(function (input) {
1514 return input.blur();
1515 });
1516 },
1517
1518
1519 // {parse, formatTo} Value deals maps component value with internal Date
1520 parseValue: function parseValue(value) {
1521 var isParsed = (0, _util.isDateObject)(value) || Array.isArray(value) && value.every(_util.isDateObject);
1522 if (this.valueFormat && !isParsed) {
1523 return parseAsFormatAndType(value, this.valueFormat, this.type, this.rangeSeparator) || value;
1524 } else {
1525 return value;
1526 }
1527 },
1528 formatToValue: function formatToValue(date) {
1529 var isFormattable = (0, _util.isDateObject)(date) || Array.isArray(date) && date.every(_util.isDateObject);
1530 if (this.valueFormat && isFormattable) {
1531 return formatAsFormatAndType(date, this.valueFormat, this.type, this.rangeSeparator);
1532 } else {
1533 return date;
1534 }
1535 },
1536
1537
1538 // {parse, formatTo} String deals with user input
1539 parseString: function parseString(value) {
1540 var type = Array.isArray(value) ? this.type : this.type.replace('range', '');
1541 return parseAsFormatAndType(value, this.format, type);
1542 },
1543 formatToString: function formatToString(value) {
1544 var type = Array.isArray(value) ? this.type : this.type.replace('range', '');
1545 return formatAsFormatAndType(value, this.format, type);
1546 },
1547 handleMouseEnter: function handleMouseEnter() {
1548 if (this.readonly || this.pickerDisabled) return;
1549 if (!this.valueIsEmpty && this.clearable) {
1550 this.showClose = true;
1551 }
1552 },
1553 handleChange: function handleChange() {
1554 if (this.userInput) {
1555 var value = this.parseString(this.displayValue);
1556 if (value) {
1557 this.picker.value = value;
1558 if (this.isValidValue(value)) {
1559 this.emitInput(value);
1560 this.userInput = null;
1561 }
1562 }
1563 }
1564 if (this.userInput === '') {
1565 this.emitInput(null);
1566 this.emitChange(null);
1567 this.userInput = null;
1568 }
1569 },
1570 handleStartInput: function handleStartInput(event) {
1571 if (this.userInput) {
1572 this.userInput = [event.target.value, this.userInput[1]];
1573 } else {
1574 this.userInput = [event.target.value, null];
1575 }
1576 },
1577 handleEndInput: function handleEndInput(event) {
1578 if (this.userInput) {
1579 this.userInput = [this.userInput[0], event.target.value];
1580 } else {
1581 this.userInput = [null, event.target.value];
1582 }
1583 },
1584 handleStartChange: function handleStartChange(event) {
1585 var value = this.parseString(this.userInput && this.userInput[0]);
1586 if (value) {
1587 this.userInput = [this.formatToString(value), this.displayValue[1]];
1588 var newValue = [value, this.picker.value && this.picker.value[1]];
1589 this.picker.value = newValue;
1590 if (this.isValidValue(newValue)) {
1591 this.emitInput(newValue);
1592 this.userInput = null;
1593 }
1594 }
1595 },
1596 handleEndChange: function handleEndChange(event) {
1597 var value = this.parseString(this.userInput && this.userInput[1]);
1598 if (value) {
1599 this.userInput = [this.displayValue[0], this.formatToString(value)];
1600 var newValue = [this.picker.value && this.picker.value[0], value];
1601 this.picker.value = newValue;
1602 if (this.isValidValue(newValue)) {
1603 this.emitInput(newValue);
1604 this.userInput = null;
1605 }
1606 }
1607 },
1608 handleClickIcon: function handleClickIcon(event) {
1609 if (this.readonly || this.pickerDisabled) return;
1610 if (this.showClose) {
1611 this.valueOnOpen = this.value;
1612 event.stopPropagation();
1613 this.emitInput(null);
1614 this.emitChange(null);
1615 this.showClose = false;
1616 if (this.picker && typeof this.picker.handleClear === 'function') {
1617 this.picker.handleClear();
1618 }
1619 } else {
1620 this.pickerVisible = !this.pickerVisible;
1621 }
1622 },
1623 handleClose: function handleClose() {
1624 if (!this.pickerVisible) return;
1625 this.pickerVisible = false;
1626
1627 if (this.type === 'dates') {
1628 // restore to former value
1629 var oldValue = parseAsFormatAndType(this.valueOnOpen, this.valueFormat, this.type, this.rangeSeparator) || this.valueOnOpen;
1630 this.emitInput(oldValue);
1631 }
1632 },
1633 handleFieldReset: function handleFieldReset(initialValue) {
1634 this.userInput = initialValue === '' ? null : initialValue;
1635 },
1636 handleFocus: function handleFocus() {
1637 var type = this.type;
1638
1639 if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
1640 this.pickerVisible = true;
1641 }
1642 this.$emit('focus', this);
1643 },
1644 handleKeydown: function handleKeydown(event) {
1645 var _this = this;
1646
1647 var keyCode = event.keyCode;
1648
1649 // ESC
1650 if (keyCode === 27) {
1651 this.pickerVisible = false;
1652 event.stopPropagation();
1653 return;
1654 }
1655
1656 // Tab
1657 if (keyCode === 9) {
1658 if (!this.ranged) {
1659 this.handleChange();
1660 this.pickerVisible = this.picker.visible = false;
1661 this.blur();
1662 event.stopPropagation();
1663 } else {
1664 // user may change focus between two input
1665 setTimeout(function () {
1666 if (_this.refInput.indexOf(document.activeElement) === -1) {
1667 _this.pickerVisible = false;
1668 _this.blur();
1669 event.stopPropagation();
1670 }
1671 }, 0);
1672 }
1673 return;
1674 }
1675
1676 // Enter
1677 if (keyCode === 13) {
1678 if (this.userInput === '' || this.isValidValue(this.parseString(this.displayValue))) {
1679 this.handleChange();
1680 this.pickerVisible = this.picker.visible = false;
1681 this.blur();
1682 }
1683 event.stopPropagation();
1684 return;
1685 }
1686
1687 // if user is typing, do not let picker handle key input
1688 if (this.userInput) {
1689 event.stopPropagation();
1690 return;
1691 }
1692
1693 // delegate other keys to panel
1694 if (this.picker && this.picker.handleKeydown) {
1695 this.picker.handleKeydown(event);
1696 }
1697 },
1698 handleRangeClick: function handleRangeClick() {
1699 var type = this.type;
1700
1701 if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
1702 this.pickerVisible = true;
1703 }
1704 this.$emit('focus', this);
1705 },
1706 hidePicker: function hidePicker() {
1707 if (this.picker) {
1708 this.picker.resetView && this.picker.resetView();
1709 this.pickerVisible = this.picker.visible = false;
1710 this.destroyPopper();
1711 }
1712 },
1713 showPicker: function showPicker() {
1714 var _this2 = this;
1715
1716 if (this.$isServer) return;
1717 if (!this.picker) {
1718 this.mountPicker();
1719 }
1720 this.pickerVisible = this.picker.visible = true;
1721
1722 this.updatePopper();
1723
1724 this.picker.value = this.parsedValue;
1725 this.picker.resetView && this.picker.resetView();
1726
1727 this.$nextTick(function () {
1728 _this2.picker.adjustSpinners && _this2.picker.adjustSpinners();
1729 });
1730 },
1731 mountPicker: function mountPicker() {
1732 var _this3 = this;
1733
1734 this.picker = new _vue2.default(this.panel).$mount();
1735 this.picker.defaultValue = this.defaultValue;
1736 this.picker.defaultTime = this.defaultTime;
1737 this.picker.popperClass = this.popperClass;
1738 this.popperElm = this.picker.$el;
1739 this.picker.width = this.reference.getBoundingClientRect().width;
1740 this.picker.showTime = this.type === 'datetime' || this.type === 'datetimerange';
1741 this.picker.selectionMode = this.selectionMode;
1742 this.picker.unlinkPanels = this.unlinkPanels;
1743 this.picker.arrowControl = this.arrowControl || this.timeArrowControl || false;
1744 this.$watch('format', function (format) {
1745 _this3.picker.format = format;
1746 });
1747
1748 var updateOptions = function updateOptions() {
1749 var options = _this3.pickerOptions;
1750
1751 if (options && options.selectableRange) {
1752 (function () {
1753 var ranges = options.selectableRange;
1754 var parser = TYPE_VALUE_RESOLVER_MAP.datetimerange.parser;
1755 var format = DEFAULT_FORMATS.timerange;
1756
1757 ranges = Array.isArray(ranges) ? ranges : [ranges];
1758 _this3.picker.selectableRange = ranges.map(function (range) {
1759 return parser(range, format, _this3.rangeSeparator);
1760 });
1761 })();
1762 }
1763
1764 for (var option in options) {
1765 if (options.hasOwnProperty(option) &&
1766 // 忽略 time-picker 的该配置项
1767 option !== 'selectableRange') {
1768 _this3.picker[option] = options[option];
1769 }
1770 }
1771
1772 // main format must prevail over undocumented pickerOptions.format
1773 if (_this3.format) {
1774 _this3.picker.format = _this3.format;
1775 }
1776 };
1777 updateOptions();
1778 this.unwatchPickerOptions = this.$watch('pickerOptions', function () {
1779 return updateOptions();
1780 }, { deep: true });
1781
1782 this.$el.appendChild(this.picker.$el);
1783 this.picker.resetView && this.picker.resetView();
1784
1785 this.picker.$on('dodestroy', this.doDestroy);
1786 this.picker.$on('pick', function () {
1787 var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1788 var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1789
1790 _this3.userInput = null;
1791 _this3.pickerVisible = _this3.picker.visible = visible;
1792 _this3.emitInput(date);
1793 _this3.picker.resetView && _this3.picker.resetView();
1794 });
1795
1796 this.picker.$on('select-range', function (start, end, pos) {
1797 if (_this3.refInput.length === 0) return;
1798 if (!pos || pos === 'min') {
1799 _this3.refInput[0].setSelectionRange(start, end);
1800 _this3.refInput[0].focus();
1801 } else if (pos === 'max') {
1802 _this3.refInput[1].setSelectionRange(start, end);
1803 _this3.refInput[1].focus();
1804 }
1805 });
1806 },
1807 unmountPicker: function unmountPicker() {
1808 if (this.picker) {
1809 this.picker.$destroy();
1810 this.picker.$off();
1811 if (typeof this.unwatchPickerOptions === 'function') {
1812 this.unwatchPickerOptions();
1813 }
1814 this.picker.$el.parentNode.removeChild(this.picker.$el);
1815 }
1816 },
1817 emitChange: function emitChange(val) {
1818 // determine user real change only
1819 if (!valueEquals(val, this.valueOnOpen)) {
1820 this.$emit('change', val);
1821 this.dispatch('ElFormItem', 'el.form.change', val);
1822 this.valueOnOpen = val;
1823 }
1824 },
1825 emitInput: function emitInput(val) {
1826 var formatted = this.formatToValue(val);
1827 if (!valueEquals(this.value, formatted)) {
1828 this.$emit('input', formatted);
1829 }
1830 },
1831 isValidValue: function isValidValue(value) {
1832 if (!this.picker) {
1833 this.mountPicker();
1834 }
1835 if (this.picker.isValidValue) {
1836 return value && this.picker.isValidValue(value);
1837 } else {
1838 return true;
1839 }
1840 }
1841 }
1842};
1843
1844/***/ }),
1845
1846/***/ 29:
1847/***/ (function(module, exports) {
1848
1849module.exports = require("element-ui/lib/utils/date");
1850
1851/***/ }),
1852
1853/***/ 3:
1854/***/ (function(module, exports) {
1855
1856module.exports = require("element-ui/lib/utils/dom");
1857
1858/***/ }),
1859
1860/***/ 30:
1861/***/ (function(module, __webpack_exports__, __webpack_require__) {
1862
1863"use strict";
1864var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.ranged)?_c('el-input',_vm._b({directives:[{name:"clickoutside",rawName:"v-clickoutside",value:(_vm.handleClose),expression:"handleClose"}],ref:"reference",staticClass:"el-date-editor",class:'el-date-editor--' + _vm.type,attrs:{"readonly":!_vm.editable || _vm.readonly || _vm.type === 'dates',"disabled":_vm.pickerDisabled,"size":_vm.pickerSize,"name":_vm.name,"placeholder":_vm.placeholder,"value":_vm.displayValue,"validateEvent":false},on:{"focus":_vm.handleFocus,"input":function (value) { return _vm.userInput = value; },"change":_vm.handleChange},nativeOn:{"keydown":function($event){_vm.handleKeydown($event)},"mouseenter":function($event){_vm.handleMouseEnter($event)},"mouseleave":function($event){_vm.showClose = false}}},'el-input',_vm.firstInputId,false),[_c('i',{staticClass:"el-input__icon",class:_vm.triggerClass,attrs:{"slot":"prefix"},on:{"click":_vm.handleFocus},slot:"prefix"}),(_vm.haveTrigger)?_c('i',{staticClass:"el-input__icon",class:[_vm.showClose ? '' + _vm.clearIcon : ''],attrs:{"slot":"suffix"},on:{"click":_vm.handleClickIcon},slot:"suffix"}):_vm._e()]):_c('div',{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:(_vm.handleClose),expression:"handleClose"}],ref:"reference",staticClass:"el-date-editor el-range-editor el-input__inner",class:[
1865 'el-date-editor--' + _vm.type,
1866 _vm.pickerSize ? ("el-range-editor--" + _vm.pickerSize) : '',
1867 _vm.pickerDisabled ? 'is-disabled' : '',
1868 _vm.pickerVisible ? 'is-active' : ''
1869 ],on:{"click":_vm.handleRangeClick,"mouseenter":_vm.handleMouseEnter,"mouseleave":function($event){_vm.showClose = false},"keydown":_vm.handleKeydown}},[_c('i',{class:['el-input__icon', 'el-range__icon', _vm.triggerClass]}),_c('input',_vm._b({staticClass:"el-range-input",attrs:{"autocomplete":"off","placeholder":_vm.startPlaceholder,"disabled":_vm.pickerDisabled,"readonly":!_vm.editable || _vm.readonly,"name":_vm.name && _vm.name[0]},domProps:{"value":_vm.displayValue && _vm.displayValue[0]},on:{"input":_vm.handleStartInput,"change":_vm.handleStartChange,"focus":_vm.handleFocus}},'input',_vm.firstInputId,false)),_c('span',{staticClass:"el-range-separator"},[_vm._v(_vm._s(_vm.rangeSeparator))]),_c('input',_vm._b({staticClass:"el-range-input",attrs:{"autocomplete":"off","placeholder":_vm.endPlaceholder,"disabled":_vm.pickerDisabled,"readonly":!_vm.editable || _vm.readonly,"name":_vm.name && _vm.name[1]},domProps:{"value":_vm.displayValue && _vm.displayValue[1]},on:{"input":_vm.handleEndInput,"change":_vm.handleEndChange,"focus":_vm.handleFocus}},'input',_vm.secondInputId,false)),(_vm.haveTrigger)?_c('i',{staticClass:"el-input__icon el-range__close-icon",class:[_vm.showClose ? '' + _vm.clearIcon : ''],on:{"click":_vm.handleClickIcon}}):_vm._e()])}
1870var staticRenderFns = []
1871var esExports = { render: render, staticRenderFns: staticRenderFns }
1872/* harmony default export */ __webpack_exports__["a"] = (esExports);
1873
1874/***/ }),
1875
1876/***/ 31:
1877/***/ (function(module, __webpack_exports__, __webpack_require__) {
1878
1879"use strict";
1880Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
1881/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_vue__ = __webpack_require__(41);
1882/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_vue__);
1883/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3ea87726_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_time_vue__ = __webpack_require__(44);
1884var normalizeComponent = __webpack_require__(0)
1885/* script */
1886
1887/* template */
1888
1889/* template functional */
1890 var __vue_template_functional__ = false
1891/* styles */
1892var __vue_styles__ = null
1893/* scopeId */
1894var __vue_scopeId__ = null
1895/* moduleIdentifier (server only) */
1896var __vue_module_identifier__ = null
1897var Component = normalizeComponent(
1898 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_vue___default.a,
1899 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3ea87726_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_time_vue__["a" /* default */],
1900 __vue_template_functional__,
1901 __vue_styles__,
1902 __vue_scopeId__,
1903 __vue_module_identifier__
1904)
1905
1906/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
1907
1908
1909/***/ }),
1910
1911/***/ 32:
1912/***/ (function(module, __webpack_exports__, __webpack_require__) {
1913
1914"use strict";
1915Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
1916/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_spinner_vue__ = __webpack_require__(42);
1917/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_spinner_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_spinner_vue__);
1918/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3673a788_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_time_spinner_vue__ = __webpack_require__(43);
1919var normalizeComponent = __webpack_require__(0)
1920/* script */
1921
1922/* template */
1923
1924/* template functional */
1925 var __vue_template_functional__ = false
1926/* styles */
1927var __vue_styles__ = null
1928/* scopeId */
1929var __vue_scopeId__ = null
1930/* moduleIdentifier (server only) */
1931var __vue_module_identifier__ = null
1932var Component = normalizeComponent(
1933 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_time_spinner_vue___default.a,
1934 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3673a788_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_time_spinner_vue__["a" /* default */],
1935 __vue_template_functional__,
1936 __vue_styles__,
1937 __vue_scopeId__,
1938 __vue_module_identifier__
1939)
1940
1941/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
1942
1943
1944/***/ }),
1945
1946/***/ 4:
1947/***/ (function(module, exports) {
1948
1949module.exports = require("vue");
1950
1951/***/ }),
1952
1953/***/ 41:
1954/***/ (function(module, exports, __webpack_require__) {
1955
1956"use strict";
1957
1958
1959exports.__esModule = true;
1960
1961var _util = __webpack_require__(11);
1962
1963var _locale = __webpack_require__(5);
1964
1965var _locale2 = _interopRequireDefault(_locale);
1966
1967var _timeSpinner = __webpack_require__(32);
1968
1969var _timeSpinner2 = _interopRequireDefault(_timeSpinner);
1970
1971function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1972
1973exports.default = {
1974 mixins: [_locale2.default],
1975
1976 components: {
1977 TimeSpinner: _timeSpinner2.default
1978 },
1979
1980 props: {
1981 visible: Boolean,
1982 timeArrowControl: Boolean
1983 },
1984
1985 watch: {
1986 visible: function visible(val) {
1987 var _this = this;
1988
1989 if (val) {
1990 this.oldValue = this.value;
1991 this.$nextTick(function () {
1992 return _this.$refs.spinner.emitSelectRange('hours');
1993 });
1994 } else {
1995 this.needInitAdjust = true;
1996 }
1997 },
1998 value: function value(newVal) {
1999 var _this2 = this;
2000
2001 var date = void 0;
2002 if (newVal instanceof Date) {
2003 date = (0, _util.limitTimeRange)(newVal, this.selectableRange, this.format);
2004 } else if (!newVal) {
2005 date = this.defaultValue ? new Date(this.defaultValue) : new Date();
2006 }
2007
2008 this.date = date;
2009 if (this.visible && this.needInitAdjust) {
2010 this.$nextTick(function (_) {
2011 return _this2.adjustSpinners();
2012 });
2013 this.needInitAdjust = false;
2014 }
2015 },
2016 selectableRange: function selectableRange(val) {
2017 this.$refs.spinner.selectableRange = val;
2018 },
2019 defaultValue: function defaultValue(val) {
2020 if (!(0, _util.isDate)(this.value)) {
2021 this.date = val ? new Date(val) : new Date();
2022 }
2023 }
2024 },
2025
2026 data: function data() {
2027 return {
2028 popperClass: '',
2029 format: 'HH:mm:ss',
2030 value: '',
2031 defaultValue: null,
2032 date: new Date(),
2033 oldValue: new Date(),
2034 selectableRange: [],
2035 selectionRange: [0, 2],
2036 disabled: false,
2037 arrowControl: false,
2038 needInitAdjust: true
2039 };
2040 },
2041
2042
2043 computed: {
2044 showSeconds: function showSeconds() {
2045 return (this.format || '').indexOf('ss') !== -1;
2046 },
2047 useArrow: function useArrow() {
2048 return this.arrowControl || this.timeArrowControl || false;
2049 },
2050 amPmMode: function amPmMode() {
2051 if ((this.format || '').indexOf('A') !== -1) return 'A';
2052 if ((this.format || '').indexOf('a') !== -1) return 'a';
2053 return '';
2054 }
2055 },
2056
2057 methods: {
2058 handleCancel: function handleCancel() {
2059 this.$emit('pick', this.oldValue, false);
2060 },
2061 handleChange: function handleChange(date) {
2062 // this.visible avoids edge cases, when use scrolls during panel closing animation
2063 if (this.visible) {
2064 this.date = (0, _util.clearMilliseconds)(date);
2065 // if date is out of range, do not emit
2066 if (this.isValidValue(this.date)) {
2067 this.$emit('pick', this.date, true);
2068 }
2069 }
2070 },
2071 setSelectionRange: function setSelectionRange(start, end) {
2072 this.$emit('select-range', start, end);
2073 this.selectionRange = [start, end];
2074 },
2075 handleConfirm: function handleConfirm() {
2076 var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
2077 var first = arguments[1];
2078
2079 if (first) return;
2080 var date = (0, _util.clearMilliseconds)((0, _util.limitTimeRange)(this.date, this.selectableRange, this.format));
2081 this.$emit('pick', date, visible, first);
2082 },
2083 handleKeydown: function handleKeydown(event) {
2084 var keyCode = event.keyCode;
2085 var mapping = { 38: -1, 40: 1, 37: -1, 39: 1 };
2086
2087 // Left or Right
2088 if (keyCode === 37 || keyCode === 39) {
2089 var step = mapping[keyCode];
2090 this.changeSelectionRange(step);
2091 event.preventDefault();
2092 return;
2093 }
2094
2095 // Up or Down
2096 if (keyCode === 38 || keyCode === 40) {
2097 var _step = mapping[keyCode];
2098 this.$refs.spinner.scrollDown(_step);
2099 event.preventDefault();
2100 return;
2101 }
2102 },
2103 isValidValue: function isValidValue(date) {
2104 return (0, _util.timeWithinRange)(date, this.selectableRange, this.format);
2105 },
2106 adjustSpinners: function adjustSpinners() {
2107 return this.$refs.spinner.adjustSpinners();
2108 },
2109 changeSelectionRange: function changeSelectionRange(step) {
2110 var list = [0, 3].concat(this.showSeconds ? [6] : []);
2111 var mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);
2112 var index = list.indexOf(this.selectionRange[0]);
2113 var next = (index + step + list.length) % list.length;
2114 this.$refs.spinner.emitSelectRange(mapping[next]);
2115 }
2116 },
2117
2118 mounted: function mounted() {
2119 var _this3 = this;
2120
2121 this.$nextTick(function () {
2122 return _this3.handleConfirm(true, true);
2123 });
2124 this.$emit('mounted');
2125 }
2126}; //
2127//
2128//
2129//
2130//
2131//
2132//
2133//
2134//
2135//
2136//
2137//
2138//
2139//
2140//
2141//
2142//
2143//
2144//
2145//
2146//
2147//
2148//
2149//
2150//
2151//
2152//
2153//
2154//
2155//
2156//
2157//
2158
2159/***/ }),
2160
2161/***/ 42:
2162/***/ (function(module, exports, __webpack_require__) {
2163
2164"use strict";
2165
2166
2167exports.__esModule = true;
2168
2169var _util = __webpack_require__(11);
2170
2171var _scrollbar = __webpack_require__(17);
2172
2173var _scrollbar2 = _interopRequireDefault(_scrollbar);
2174
2175var _repeatClick = __webpack_require__(24);
2176
2177var _repeatClick2 = _interopRequireDefault(_repeatClick);
2178
2179function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2180
2181exports.default = {
2182 components: { ElScrollbar: _scrollbar2.default },
2183
2184 directives: {
2185 repeatClick: _repeatClick2.default
2186 },
2187
2188 props: {
2189 date: {},
2190 defaultValue: {}, // reserved for future use
2191 showSeconds: {
2192 type: Boolean,
2193 default: true
2194 },
2195 arrowControl: Boolean,
2196 amPmMode: {
2197 type: String,
2198 default: '' // 'a': am/pm; 'A': AM/PM
2199 }
2200 },
2201
2202 computed: {
2203 hours: function hours() {
2204 return this.date.getHours();
2205 },
2206 minutes: function minutes() {
2207 return this.date.getMinutes();
2208 },
2209 seconds: function seconds() {
2210 return this.date.getSeconds();
2211 },
2212 hoursList: function hoursList() {
2213 return (0, _util.getRangeHours)(this.selectableRange);
2214 },
2215 arrowHourList: function arrowHourList() {
2216 var hours = this.hours;
2217 return [hours > 0 ? hours - 1 : undefined, hours, hours < 23 ? hours + 1 : undefined];
2218 },
2219 arrowMinuteList: function arrowMinuteList() {
2220 var minutes = this.minutes;
2221 return [minutes > 0 ? minutes - 1 : undefined, minutes, minutes < 59 ? minutes + 1 : undefined];
2222 },
2223 arrowSecondList: function arrowSecondList() {
2224 var seconds = this.seconds;
2225 return [seconds > 0 ? seconds - 1 : undefined, seconds, seconds < 59 ? seconds + 1 : undefined];
2226 }
2227 },
2228
2229 data: function data() {
2230 return {
2231 selectableRange: [],
2232 currentScrollbar: null
2233 };
2234 },
2235 mounted: function mounted() {
2236 var _this = this;
2237
2238 this.$nextTick(function () {
2239 !_this.arrowControl && _this.bindScrollEvent();
2240 });
2241 },
2242
2243
2244 methods: {
2245 increase: function increase() {
2246 this.scrollDown(1);
2247 },
2248 decrease: function decrease() {
2249 this.scrollDown(-1);
2250 },
2251 modifyDateField: function modifyDateField(type, value) {
2252 switch (type) {
2253 case 'hours':
2254 this.$emit('change', (0, _util.modifyTime)(this.date, value, this.minutes, this.seconds));break;
2255 case 'minutes':
2256 this.$emit('change', (0, _util.modifyTime)(this.date, this.hours, value, this.seconds));break;
2257 case 'seconds':
2258 this.$emit('change', (0, _util.modifyTime)(this.date, this.hours, this.minutes, value));break;
2259 }
2260 },
2261 handleClick: function handleClick(type, _ref) {
2262 var value = _ref.value,
2263 disabled = _ref.disabled;
2264
2265 if (!disabled) {
2266 this.modifyDateField(type, value);
2267 this.emitSelectRange(type);
2268 this.adjustSpinner(type, value);
2269 }
2270 },
2271 emitSelectRange: function emitSelectRange(type) {
2272 if (type === 'hours') {
2273 this.$emit('select-range', 0, 2);
2274 } else if (type === 'minutes') {
2275 this.$emit('select-range', 3, 5);
2276 } else if (type === 'seconds') {
2277 this.$emit('select-range', 6, 8);
2278 }
2279 this.currentScrollbar = type;
2280 },
2281 bindScrollEvent: function bindScrollEvent() {
2282 var _this2 = this;
2283
2284 var bindFuntion = function bindFuntion(type) {
2285 _this2.$refs[type].wrap.onscroll = function (e) {
2286 // TODO: scroll is emitted when set scrollTop programatically
2287 // should find better solutions in the future!
2288 _this2.handleScroll(type, e);
2289 };
2290 };
2291 bindFuntion('hours');
2292 bindFuntion('minutes');
2293 bindFuntion('seconds');
2294 },
2295 handleScroll: function handleScroll(type) {
2296 var value = Math.min(Math.floor((this.$refs[type].wrap.scrollTop - (this.scrollBarHeight(type) * 0.5 - 10) / this.typeItemHeight(type) + 3) / this.typeItemHeight(type)), type === 'hours' ? 23 : 59);
2297 this.modifyDateField(type, value);
2298 },
2299
2300
2301 // NOTE: used by datetime / date-range panel
2302 // renamed from adjustScrollTop
2303 // should try to refactory it
2304 adjustSpinners: function adjustSpinners() {
2305 this.adjustSpinner('hours', this.hours);
2306 this.adjustSpinner('minutes', this.minutes);
2307 this.adjustSpinner('seconds', this.seconds);
2308 },
2309 adjustCurrentSpinner: function adjustCurrentSpinner(type) {
2310 this.adjustSpinner(type, this[type]);
2311 },
2312 adjustSpinner: function adjustSpinner(type, value) {
2313 if (this.arrowControl) return;
2314 var el = this.$refs[type].wrap;
2315 if (el) {
2316 el.scrollTop = Math.max(0, value * this.typeItemHeight(type));
2317 }
2318 },
2319 scrollDown: function scrollDown(step) {
2320 if (!this.currentScrollbar) {
2321 this.emitSelectRange('hours');
2322 }
2323
2324 var label = this.currentScrollbar;
2325 var hoursList = this.hoursList;
2326 var now = this[label];
2327
2328 if (this.currentScrollbar === 'hours') {
2329 var total = Math.abs(step);
2330 step = step > 0 ? 1 : -1;
2331 var length = hoursList.length;
2332 while (length-- && total) {
2333 now = (now + step + hoursList.length) % hoursList.length;
2334 if (hoursList[now]) {
2335 continue;
2336 }
2337 total--;
2338 }
2339 if (hoursList[now]) return;
2340 } else {
2341 now = (now + step + 60) % 60;
2342 }
2343
2344 this.modifyDateField(label, now);
2345 this.adjustSpinner(label, now);
2346 },
2347 amPm: function amPm(hour) {
2348 var shouldShowAmPm = this.amPmMode.toLowerCase() === 'a';
2349 if (!shouldShowAmPm) return '';
2350 var isCapital = this.amPmMode === 'A';
2351 var content = hour < 12 ? ' am' : ' pm';
2352 if (isCapital) content = content.toUpperCase();
2353 return content;
2354 },
2355 typeItemHeight: function typeItemHeight(type) {
2356 return this.$refs[type].$el.querySelector('li').offsetHeight;
2357 },
2358 scrollBarHeight: function scrollBarHeight(type) {
2359 return this.$refs[type].$el.offsetHeight;
2360 }
2361 }
2362}; //
2363//
2364//
2365//
2366//
2367//
2368//
2369//
2370//
2371//
2372//
2373//
2374//
2375//
2376//
2377//
2378//
2379//
2380//
2381//
2382//
2383//
2384//
2385//
2386//
2387//
2388//
2389//
2390//
2391//
2392//
2393//
2394//
2395//
2396//
2397//
2398//
2399//
2400//
2401//
2402//
2403//
2404//
2405//
2406//
2407//
2408//
2409//
2410//
2411//
2412//
2413//
2414//
2415//
2416//
2417//
2418//
2419//
2420//
2421//
2422//
2423//
2424//
2425//
2426//
2427//
2428//
2429//
2430//
2431//
2432//
2433//
2434//
2435//
2436//
2437//
2438//
2439//
2440//
2441//
2442//
2443//
2444//
2445//
2446//
2447//
2448//
2449//
2450//
2451//
2452//
2453//
2454//
2455//
2456//
2457//
2458//
2459//
2460//
2461//
2462
2463/***/ }),
2464
2465/***/ 43:
2466/***/ (function(module, __webpack_exports__, __webpack_require__) {
2467
2468"use strict";
2469var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"el-time-spinner",class:{ 'has-seconds': _vm.showSeconds }},[(!_vm.arrowControl)?[_c('el-scrollbar',{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list","noresize":"","tag":"ul"},nativeOn:{"mouseenter":function($event){_vm.emitSelectRange('hours')},"mousemove":function($event){_vm.adjustCurrentSpinner('hours')}}},_vm._l((_vm.hoursList),function(disabled,hour){return _c('li',{staticClass:"el-time-spinner__item",class:{ 'active': hour === _vm.hours, 'disabled': disabled },on:{"click":function($event){_vm.handleClick('hours', { value: hour, disabled: disabled })}}},[_vm._v(_vm._s(('0' + (_vm.amPmMode ? (hour % 12 || 12) : hour )).slice(-2))+_vm._s(_vm.amPm(hour)))])})),_c('el-scrollbar',{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list","noresize":"","tag":"ul"},nativeOn:{"mouseenter":function($event){_vm.emitSelectRange('minutes')},"mousemove":function($event){_vm.adjustCurrentSpinner('minutes')}}},_vm._l((60),function(minute,key){return _c('li',{staticClass:"el-time-spinner__item",class:{ 'active': key === _vm.minutes },on:{"click":function($event){_vm.handleClick('minutes', { value: key, disabled: false })}}},[_vm._v(_vm._s(('0' + key).slice(-2)))])})),_c('el-scrollbar',{directives:[{name:"show",rawName:"v-show",value:(_vm.showSeconds),expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list","noresize":"","tag":"ul"},nativeOn:{"mouseenter":function($event){_vm.emitSelectRange('seconds')},"mousemove":function($event){_vm.adjustCurrentSpinner('seconds')}}},_vm._l((60),function(second,key){return _c('li',{key:key,staticClass:"el-time-spinner__item",class:{ 'active': key === _vm.seconds },on:{"click":function($event){_vm.handleClick('seconds', { value: key, disabled: false })}}},[_vm._v(_vm._s(('0' + key).slice(-2)))])}))]:_vm._e(),(_vm.arrowControl)?[_c('div',{staticClass:"el-time-spinner__wrapper is-arrow",on:{"mouseenter":function($event){_vm.emitSelectRange('hours')}}},[_c('i',{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:(_vm.decrease),expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),_c('i',{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:(_vm.increase),expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),_c('ul',{ref:"hours",staticClass:"el-time-spinner__list"},_vm._l((_vm.arrowHourList),function(hour,key){return _c('li',{key:key,staticClass:"el-time-spinner__item",class:{ 'active': hour === _vm.hours, 'disabled': _vm.hoursList[hour] }},[_vm._v(_vm._s(hour === undefined ? '' : ('0' + (_vm.amPmMode ? (hour % 12 || 12) : hour )).slice(-2) + _vm.amPm(hour)))])}))]),_c('div',{staticClass:"el-time-spinner__wrapper is-arrow",on:{"mouseenter":function($event){_vm.emitSelectRange('minutes')}}},[_c('i',{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:(_vm.decrease),expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),_c('i',{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:(_vm.increase),expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),_c('ul',{ref:"minutes",staticClass:"el-time-spinner__list"},_vm._l((_vm.arrowMinuteList),function(minute,key){return _c('li',{key:key,staticClass:"el-time-spinner__item",class:{ 'active': minute === _vm.minutes }},[_vm._v("\n "+_vm._s(minute === undefined ? '' : ('0' + minute).slice(-2))+"\n ")])}))]),(_vm.showSeconds)?_c('div',{staticClass:"el-time-spinner__wrapper is-arrow",on:{"mouseenter":function($event){_vm.emitSelectRange('seconds')}}},[_c('i',{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:(_vm.decrease),expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),_c('i',{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:(_vm.increase),expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),_c('ul',{ref:"seconds",staticClass:"el-time-spinner__list"},_vm._l((_vm.arrowSecondList),function(second,key){return _c('li',{key:key,staticClass:"el-time-spinner__item",class:{ 'active': second === _vm.seconds }},[_vm._v("\n "+_vm._s(second === undefined ? '' : ('0' + second).slice(-2))+"\n ")])}))]):_vm._e()]:_vm._e()],2)}
2470var staticRenderFns = []
2471var esExports = { render: render, staticRenderFns: staticRenderFns }
2472/* harmony default export */ __webpack_exports__["a"] = (esExports);
2473
2474/***/ }),
2475
2476/***/ 44:
2477/***/ (function(module, __webpack_exports__, __webpack_require__) {
2478
2479"use strict";
2480var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"el-zoom-in-top"},on:{"after-leave":function($event){_vm.$emit('dodestroy')}}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],staticClass:"el-time-panel el-popper",class:_vm.popperClass},[_c('div',{staticClass:"el-time-panel__content",class:{ 'has-seconds': _vm.showSeconds }},[_c('time-spinner',{ref:"spinner",attrs:{"arrow-control":_vm.useArrow,"show-seconds":_vm.showSeconds,"am-pm-mode":_vm.amPmMode,"date":_vm.date},on:{"change":_vm.handleChange,"select-range":_vm.setSelectionRange}})],1),_c('div',{staticClass:"el-time-panel__footer"},[_c('button',{staticClass:"el-time-panel__btn cancel",attrs:{"type":"button"},on:{"click":_vm.handleCancel}},[_vm._v(_vm._s(_vm.t('el.datepicker.cancel')))]),_c('button',{staticClass:"el-time-panel__btn",class:{confirm: !_vm.disabled},attrs:{"type":"button"},on:{"click":function($event){_vm.handleConfirm()}}},[_vm._v(_vm._s(_vm.t('el.datepicker.confirm')))])])])])}
2481var staticRenderFns = []
2482var esExports = { render: render, staticRenderFns: staticRenderFns }
2483/* harmony default export */ __webpack_exports__["a"] = (esExports);
2484
2485/***/ }),
2486
2487/***/ 5:
2488/***/ (function(module, exports) {
2489
2490module.exports = require("element-ui/lib/mixins/locale");
2491
2492/***/ }),
2493
2494/***/ 6:
2495/***/ (function(module, exports) {
2496
2497module.exports = require("element-ui/lib/input");
2498
2499/***/ }),
2500
2501/***/ 7:
2502/***/ (function(module, exports) {
2503
2504module.exports = require("element-ui/lib/utils/vue-popper");
2505
2506/***/ }),
2507
2508/***/ 9:
2509/***/ (function(module, exports) {
2510
2511module.exports = require("element-ui/lib/utils/merge");
2512
2513/***/ })
2514
2515/******/ });
\No newline at end of file