UNPKG

element-ui

Version:

A Component Library for Vue.js.

1,707 lines (1,459 loc) 146 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dist/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 176); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { /* globals __VUE_SSR_CONTEXT__ */ // IMPORTANT: Do NOT use ES2015 features in this file. // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. module.exports = function normalizeComponent ( rawScriptExports, compiledTemplate, functionalTemplate, injectStyles, scopeId, moduleIdentifier /* server only */ ) { var esModule var scriptExports = rawScriptExports = rawScriptExports || {} // ES6 modules interop var type = typeof rawScriptExports.default if (type === 'object' || type === 'function') { esModule = rawScriptExports scriptExports = rawScriptExports.default } // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (compiledTemplate) { options.render = compiledTemplate.render options.staticRenderFns = compiledTemplate.staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = scopeId } var hook if (moduleIdentifier) { // server build hook = function (context) { // 2.3 injection context = context || // cached call (this.$vnode && this.$vnode.ssrContext) || // stateful (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional // 2.2 with runInNewContext: true if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__ } // inject component styles if (injectStyles) { injectStyles.call(this, context) } // register component module identifier for async chunk inferrence if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier) } } // used by ssr in case component is cached and beforeCreate // never gets called options._ssrRegister = hook } else if (injectStyles) { hook = injectStyles } if (hook) { var functional = options.functional var existing = functional ? options.render : options.beforeCreate if (!functional) { // inject component registration as beforeCreate hook options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } else { // for template-only hot-reload because in that case the render fn doesn't // go through the normalizer options._injectStyles = hook // register for functioal component in vue file options.render = function renderWithStyleInjection (h, context) { hook.call(context) return existing(h, context) } } } return { esModule: esModule, exports: scriptExports, options: options } } /***/ }), /***/ 1: /***/ (function(module, exports) { module.exports = require("element-ui/lib/mixins/emitter"); /***/ }), /***/ 10: /***/ (function(module, exports) { module.exports = require("element-ui/lib/utils/clickoutside"); /***/ }), /***/ 11: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; exports.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; var _date = __webpack_require__(29); var _date2 = _interopRequireDefault(_date); var _locale = __webpack_require__(12); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; var getI18nSettings = function getI18nSettings() { return { dayNamesShort: weeks.map(function (week) { return (0, _locale.t)('el.datepicker.weeks.' + week); }), dayNames: weeks.map(function (week) { return (0, _locale.t)('el.datepicker.weeks.' + week); }), monthNamesShort: months.map(function (month) { return (0, _locale.t)('el.datepicker.months.' + month); }), monthNames: months.map(function (month, index) { return (0, _locale.t)('el.datepicker.month' + (index + 1)); }), amPm: ['am', 'pm'] }; }; var newArray = function newArray(start, end) { var result = []; for (var i = start; i <= end; i++) { result.push(i); } return result; }; var toDate = exports.toDate = function toDate(date) { return isDate(date) ? new Date(date) : null; }; var isDate = exports.isDate = function isDate(date) { if (date === null || date === undefined) return false; if (isNaN(new Date(date).getTime())) return false; if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()` return true; }; var isDateObject = exports.isDateObject = function isDateObject(val) { return val instanceof Date; }; var formatDate = exports.formatDate = function formatDate(date, format) { date = toDate(date); if (!date) return ''; return _date2.default.format(date, format || 'yyyy-MM-dd', getI18nSettings()); }; var parseDate = exports.parseDate = function parseDate(string, format) { return _date2.default.parse(string, format || 'yyyy-MM-dd', getI18nSettings()); }; var getDayCountOfMonth = exports.getDayCountOfMonth = function getDayCountOfMonth(year, month) { if (month === 3 || month === 5 || month === 8 || month === 10) { return 30; } if (month === 1) { if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { return 29; } else { return 28; } } return 31; }; var getDayCountOfYear = exports.getDayCountOfYear = function getDayCountOfYear(year) { var isLeapYear = year % 400 === 0 || year % 100 !== 0 && year % 4 === 0; return isLeapYear ? 366 : 365; }; var getFirstDayOfMonth = exports.getFirstDayOfMonth = function getFirstDayOfMonth(date) { var temp = new Date(date.getTime()); temp.setDate(1); return temp.getDay(); }; // see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript // {prev, next} Date should work for Daylight Saving Time // Adding 24 * 60 * 60 * 1000 does not work in the above scenario var prevDate = exports.prevDate = function prevDate(date) { var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount); }; var nextDate = exports.nextDate = function nextDate(date) { var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount); }; var getStartDateOfMonth = exports.getStartDateOfMonth = function getStartDateOfMonth(year, month) { var result = new Date(year, month, 1); var day = result.getDay(); if (day === 0) { return prevDate(result, 7); } else { return prevDate(result, day); } }; var getWeekNumber = exports.getWeekNumber = function getWeekNumber(src) { if (!isDate(src)) return null; var date = new Date(src.getTime()); date.setHours(0, 0, 0, 0); // Thursday in current week decides the year. date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7); // January 4 is always in week 1. var week1 = new Date(date.getFullYear(), 0, 4); // Adjust to Thursday in week 1 and count number of weeks from date to week 1. // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours. return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7); }; var getRangeHours = exports.getRangeHours = function getRangeHours(ranges) { var hours = []; var disabledHours = []; (ranges || []).forEach(function (range) { var value = range.map(function (date) { return date.getHours(); }); disabledHours = disabledHours.concat(newArray(value[0], value[1])); }); if (disabledHours.length) { for (var i = 0; i < 24; i++) { hours[i] = disabledHours.indexOf(i) === -1; } } else { for (var _i = 0; _i < 24; _i++) { hours[_i] = false; } } return hours; }; var range = exports.range = function range(n) { // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n return Array.apply(null, { length: n }).map(function (_, n) { return n; }); }; var modifyDate = exports.modifyDate = function modifyDate(date, y, m, d) { return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()); }; var modifyTime = exports.modifyTime = function modifyTime(date, h, m, s) { return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds()); }; var modifyWithTimeString = exports.modifyWithTimeString = function modifyWithTimeString(date, time) { if (date == null || !time) { return date; } time = parseDate(time, 'HH:mm:ss'); return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds()); }; var clearTime = exports.clearTime = function clearTime(date) { return new Date(date.getFullYear(), date.getMonth(), date.getDate()); }; var clearMilliseconds = exports.clearMilliseconds = function clearMilliseconds(date) { return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0); }; var limitTimeRange = exports.limitTimeRange = function limitTimeRange(date, ranges) { var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'HH:mm:ss'; // TODO: refactory a more elegant solution if (ranges.length === 0) return date; var normalizeDate = function normalizeDate(date) { return _date2.default.parse(_date2.default.format(date, format), format); }; var ndate = normalizeDate(date); var nranges = ranges.map(function (range) { return range.map(normalizeDate); }); if (nranges.some(function (nrange) { return ndate >= nrange[0] && ndate <= nrange[1]; })) return date; var minDate = nranges[0][0]; var maxDate = nranges[0][0]; nranges.forEach(function (nrange) { minDate = new Date(Math.min(nrange[0], minDate)); maxDate = new Date(Math.max(nrange[1], minDate)); }); var ret = ndate < minDate ? minDate : maxDate; // preserve Year/Month/Date return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate()); }; var timeWithinRange = exports.timeWithinRange = function timeWithinRange(date, selectableRange, format) { var limitedDate = limitTimeRange(date, selectableRange, format); return limitedDate.getTime() === date.getTime(); }; var changeYearMonthAndClampDate = exports.changeYearMonthAndClampDate = function changeYearMonthAndClampDate(date, year, month) { // clamp date to the number of days in `year`, `month` // eg: (2010-1-31, 2010, 2) => 2010-2-28 var monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month)); return modifyDate(date, year, month, monthDate); }; var prevMonth = exports.prevMonth = function prevMonth(date) { var year = date.getFullYear(); var month = date.getMonth(); return month === 0 ? changeYearMonthAndClampDate(date, year - 1, 11) : changeYearMonthAndClampDate(date, year, month - 1); }; var nextMonth = exports.nextMonth = function nextMonth(date) { var year = date.getFullYear(); var month = date.getMonth(); return month === 11 ? changeYearMonthAndClampDate(date, year + 1, 0) : changeYearMonthAndClampDate(date, year, month + 1); }; var prevYear = exports.prevYear = function prevYear(date) { var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var year = date.getFullYear(); var month = date.getMonth(); return changeYearMonthAndClampDate(date, year - amount, month); }; var nextYear = exports.nextYear = function nextYear(date) { var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var year = date.getFullYear(); var month = date.getMonth(); return changeYearMonthAndClampDate(date, year + amount, month); }; var extractDateFormat = exports.extractDateFormat = function extractDateFormat(format) { return format.replace(/\W?m{1,2}|\W?ZZ/g, '').replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '').trim(); }; var extractTimeFormat = exports.extractTimeFormat = function extractTimeFormat(format) { return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '').trim(); }; /***/ }), /***/ 12: /***/ (function(module, exports) { module.exports = require("element-ui/lib/locale"); /***/ }), /***/ 15: /***/ (function(module, exports) { module.exports = require("element-ui/lib/button"); /***/ }), /***/ 17: /***/ (function(module, exports) { module.exports = require("element-ui/lib/scrollbar"); /***/ }), /***/ 176: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _datePicker = __webpack_require__(177); var _datePicker2 = _interopRequireDefault(_datePicker); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* istanbul ignore next */ _datePicker2.default.install = function install(Vue) { Vue.component(_datePicker2.default.name, _datePicker2.default); }; exports.default = _datePicker2.default; /***/ }), /***/ 177: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _picker = __webpack_require__(27); var _picker2 = _interopRequireDefault(_picker); var _date = __webpack_require__(178); var _date2 = _interopRequireDefault(_date); var _dateRange = __webpack_require__(189); var _dateRange2 = _interopRequireDefault(_dateRange); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getPanel = function getPanel(type) { if (type === 'daterange' || type === 'datetimerange') { return _dateRange2.default; } return _date2.default; }; exports.default = { mixins: [_picker2.default], name: 'ElDatePicker', props: { type: { type: String, default: 'date' }, timeArrowControl: Boolean }, watch: { type: function type(_type) { if (this.picker) { this.unmountPicker(); this.panel = getPanel(_type); this.mountPicker(); } else { this.panel = getPanel(_type); } } }, created: function created() { this.panel = getPanel(this.type); } }; /***/ }), /***/ 178: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_date_vue__ = __webpack_require__(179); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_date_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_date_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2555bb87_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_date_vue__ = __webpack_require__(188); var normalizeComponent = __webpack_require__(0) /* script */ /* template */ /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = null /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_date_vue___default.a, __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2555bb87_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_date_vue__["a" /* default */], __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["default"] = (Component.exports); /***/ }), /***/ 179: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _util = __webpack_require__(11); var _clickoutside = __webpack_require__(10); var _clickoutside2 = _interopRequireDefault(_clickoutside); var _locale = __webpack_require__(5); var _locale2 = _interopRequireDefault(_locale); var _input = __webpack_require__(6); var _input2 = _interopRequireDefault(_input); var _button = __webpack_require__(15); var _button2 = _interopRequireDefault(_button); var _time = __webpack_require__(31); var _time2 = _interopRequireDefault(_time); var _yearTable = __webpack_require__(180); var _yearTable2 = _interopRequireDefault(_yearTable); var _monthTable = __webpack_require__(183); var _monthTable2 = _interopRequireDefault(_monthTable); var _dateTable = __webpack_require__(49); var _dateTable2 = _interopRequireDefault(_dateTable); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { mixins: [_locale2.default], directives: { Clickoutside: _clickoutside2.default }, watch: { showTime: function showTime(val) { var _this = this; /* istanbul ignore if */ if (!val) return; this.$nextTick(function (_) { var inputElm = _this.$refs.input.$el; if (inputElm) { _this.pickerWidth = inputElm.getBoundingClientRect().width + 10; } }); }, value: function value(val) { if (this.selectionMode === 'dates' && this.value) return; if ((0, _util.isDate)(val)) { this.date = new Date(val); } else { this.date = this.getDefaultValue(); } }, defaultValue: function defaultValue(val) { if (!(0, _util.isDate)(this.value)) { this.date = val ? new Date(val) : new Date(); } }, timePickerVisible: function timePickerVisible(val) { var _this2 = this; if (val) this.$nextTick(function () { return _this2.$refs.timepicker.adjustSpinners(); }); }, selectionMode: function selectionMode(newVal) { if (newVal === 'month') { /* istanbul ignore next */ if (this.currentView !== 'year' || this.currentView !== 'month') { this.currentView = 'month'; } } else if (newVal === 'dates') { this.currentView = 'date'; } } }, methods: { proxyTimePickerDataProperties: function proxyTimePickerDataProperties() { var _this3 = this; var format = function format(timeFormat) { _this3.$refs.timepicker.format = timeFormat; }; var value = function value(_value) { _this3.$refs.timepicker.value = _value; }; var date = function date(_date) { _this3.$refs.timepicker.date = _date; }; this.$watch('value', value); this.$watch('date', date); format(this.timeFormat); value(this.value); date(this.date); }, handleClear: function handleClear() { this.date = this.getDefaultValue(); this.$emit('pick', null); }, emit: function emit(value) { var _this4 = this; for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } if (!value) { this.$emit.apply(this, ['pick', value].concat(args)); } else if (Array.isArray(value)) { var dates = value.map(function (date) { return _this4.showTime ? (0, _util.clearMilliseconds)(date) : (0, _util.clearTime)(date); }); this.$emit.apply(this, ['pick', dates].concat(args)); } else { this.$emit.apply(this, ['pick', this.showTime ? (0, _util.clearMilliseconds)(value) : (0, _util.clearTime)(value)].concat(args)); } this.userInputDate = null; this.userInputTime = null; }, // resetDate() { // this.date = new Date(this.date); // }, showMonthPicker: function showMonthPicker() { this.currentView = 'month'; }, showYearPicker: function showYearPicker() { this.currentView = 'year'; }, // XXX: 没用到 // handleLabelClick() { // if (this.currentView === 'date') { // this.showMonthPicker(); // } else if (this.currentView === 'month') { // this.showYearPicker(); // } // }, prevMonth: function prevMonth() { this.date = (0, _util.prevMonth)(this.date); }, nextMonth: function nextMonth() { this.date = (0, _util.nextMonth)(this.date); }, prevYear: function prevYear() { if (this.currentView === 'year') { this.date = (0, _util.prevYear)(this.date, 10); } else { this.date = (0, _util.prevYear)(this.date); } }, nextYear: function nextYear() { if (this.currentView === 'year') { this.date = (0, _util.nextYear)(this.date, 10); } else { this.date = (0, _util.nextYear)(this.date); } }, handleShortcutClick: function handleShortcutClick(shortcut) { if (shortcut.onClick) { shortcut.onClick(this); } }, handleTimePick: function handleTimePick(value, visible, first) { if ((0, _util.isDate)(value)) { var newDate = this.value ? (0, _util.modifyTime)(this.value, value.getHours(), value.getMinutes(), value.getSeconds()) : (0, _util.modifyWithTimeString)(this.getDefaultValue(), this.defaultTime); this.date = newDate; this.emit(this.date, true); } else { this.emit(value, true); } if (!first) { this.timePickerVisible = visible; } }, handleTimePickClose: function handleTimePickClose() { this.timePickerVisible = false; }, handleMonthPick: function handleMonthPick(month) { if (this.selectionMode === 'month') { this.date = (0, _util.modifyDate)(this.date, this.year, month, 1); this.emit(this.date); } else { this.date = (0, _util.changeYearMonthAndClampDate)(this.date, this.year, month); // TODO: should emit intermediate value ?? // this.emit(this.date); this.currentView = 'date'; } }, handleDateSelect: function handleDateSelect(value) { if (this.selectionMode === 'dates') { this.selectedDate = value; } }, handleDatePick: function handleDatePick(value) { if (this.selectionMode === 'day') { this.date = this.value ? (0, _util.modifyDate)(this.value, value.getFullYear(), value.getMonth(), value.getDate()) : (0, _util.modifyWithTimeString)(value, this.defaultTime); this.emit(this.date, this.showTime); } else if (this.selectionMode === 'week') { this.emit(value.date); } }, handleYearPick: function handleYearPick(year) { if (this.selectionMode === 'year') { this.date = (0, _util.modifyDate)(this.date, year, 0, 1); this.emit(this.date); } else { this.date = (0, _util.changeYearMonthAndClampDate)(this.date, year, this.month); // TODO: should emit intermediate value ?? // this.emit(this.date, true); this.currentView = 'month'; } }, changeToNow: function changeToNow() { // NOTE: not a permanent solution // consider disable "now" button in the future if (!this.disabledDate || !this.disabledDate(new Date())) { this.date = new Date(); this.emit(this.date); } }, confirm: function confirm() { if (this.selectionMode === 'dates') { this.emit(this.selectedDate); } else { // value were emitted in handle{Date,Time}Pick, nothing to update here // deal with the scenario where: user opens the picker, then confirm without doing anything var value = this.value ? this.value : (0, _util.modifyWithTimeString)(this.getDefaultValue(), this.defaultTime); this.date = new Date(value); // refresh date this.emit(value); } }, resetView: function resetView() { if (this.selectionMode === 'month') { this.currentView = 'month'; } else if (this.selectionMode === 'year') { this.currentView = 'year'; } else { this.currentView = 'date'; } }, handleEnter: function handleEnter() { document.body.addEventListener('keydown', this.handleKeydown); }, handleLeave: function handleLeave() { this.$emit('dodestroy'); document.body.removeEventListener('keydown', this.handleKeydown); }, handleKeydown: function handleKeydown(event) { var keyCode = event.keyCode; var list = [38, 40, 37, 39]; if (this.visible && !this.timePickerVisible) { if (list.indexOf(keyCode) !== -1) { this.handleKeyControl(keyCode); event.stopPropagation(); event.preventDefault(); } if (keyCode === 13 && this.userInputDate === null && this.userInputTime === null) { // Enter this.emit(this.date, false); } } }, handleKeyControl: function handleKeyControl(keyCode) { var mapping = { 'year': { 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) { return date.setFullYear(date.getFullYear() + step); } }, 'month': { 38: -4, 40: 4, 37: -1, 39: 1, offset: function offset(date, step) { return date.setMonth(date.getMonth() + step); } }, 'week': { 38: -1, 40: 1, 37: -1, 39: 1, offset: function offset(date, step) { return date.setDate(date.getDate() + step * 7); } }, 'day': { 38: -7, 40: 7, 37: -1, 39: 1, offset: function offset(date, step) { return date.setDate(date.getDate() + step); } } }; var mode = this.selectionMode; var year = 3.1536e10; var now = this.date.getTime(); var newDate = new Date(this.date.getTime()); while (Math.abs(now - newDate.getTime()) <= year) { var map = mapping[mode]; map.offset(newDate, map[keyCode]); if (typeof this.disabledDate === 'function' && this.disabledDate(newDate)) { continue; } this.date = newDate; this.$emit('pick', newDate, true); break; } }, handleVisibleTimeChange: function handleVisibleTimeChange(value) { var time = (0, _util.parseDate)(value, this.timeFormat); if (time) { this.date = (0, _util.modifyDate)(time, this.year, this.month, this.monthDate); this.userInputTime = null; this.$refs.timepicker.value = this.date; this.timePickerVisible = false; this.emit(this.date, true); } }, handleVisibleDateChange: function handleVisibleDateChange(value) { var date = (0, _util.parseDate)(value, this.dateFormat); if (date) { if (typeof this.disabledDate === 'function' && this.disabledDate(date)) { return; } this.date = (0, _util.modifyTime)(date, this.date.getHours(), this.date.getMinutes(), this.date.getSeconds()); this.userInputDate = null; this.resetView(); this.emit(this.date, true); } }, isValidValue: function isValidValue(value) { return value && !isNaN(value) && (typeof this.disabledDate === 'function' ? !this.disabledDate(value) : true); }, getDefaultValue: function getDefaultValue() { // if default-value is set, return it // otherwise, return now (the moment this method gets called) return this.defaultValue ? new Date(this.defaultValue) : new Date(); } }, components: { TimePicker: _time2.default, YearTable: _yearTable2.default, MonthTable: _monthTable2.default, DateTable: _dateTable2.default, ElInput: _input2.default, ElButton: _button2.default }, data: function data() { return { popperClass: '', date: new Date(), value: '', defaultValue: null, // use getDefaultValue() for time computation defaultTime: null, showTime: false, selectionMode: 'day', shortcuts: '', visible: false, currentView: 'date', disabledDate: '', selectedDate: [], firstDayOfWeek: 7, showWeekNumber: false, timePickerVisible: false, format: '', arrowControl: false, userInputDate: null, userInputTime: null }; }, computed: { year: function year() { return this.date.getFullYear(); }, month: function month() { return this.date.getMonth(); }, week: function week() { return (0, _util.getWeekNumber)(this.date); }, monthDate: function monthDate() { return this.date.getDate(); }, footerVisible: function footerVisible() { return this.showTime || this.selectionMode === 'dates'; }, visibleTime: function visibleTime() { if (this.userInputTime !== null) { return this.userInputTime; } else { return (0, _util.formatDate)(this.value || this.defaultValue, this.timeFormat); } }, visibleDate: function visibleDate() { if (this.userInputDate !== null) { return this.userInputDate; } else { return (0, _util.formatDate)(this.value || this.defaultValue, this.dateFormat); } }, yearLabel: function yearLabel() { var yearTranslation = this.t('el.datepicker.year'); if (this.currentView === 'year') { var startYear = Math.floor(this.year / 10) * 10; if (yearTranslation) { return startYear + ' ' + yearTranslation + ' - ' + (startYear + 9) + ' ' + yearTranslation; } return startYear + ' - ' + (startYear + 9); } return this.year + ' ' + yearTranslation; }, timeFormat: function timeFormat() { if (this.format) { return (0, _util.extractTimeFormat)(this.format); } else { return 'HH:mm:ss'; } }, dateFormat: function dateFormat() { if (this.format) { return (0, _util.extractDateFormat)(this.format); } else { return 'yyyy-MM-dd'; } } } }; // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /***/ }), /***/ 180: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_year_table_vue__ = __webpack_require__(181); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_year_table_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_year_table_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6f653c26_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_year_table_vue__ = __webpack_require__(182); var normalizeComponent = __webpack_require__(0) /* script */ /* template */ /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = null /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_year_table_vue___default.a, __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6f653c26_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_year_table_vue__["a" /* default */], __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["default"] = (Component.exports); /***/ }), /***/ 181: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _dom = __webpack_require__(2); var _util = __webpack_require__(11); // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // var datesInYear = function datesInYear(year) { var numOfDays = (0, _util.getDayCountOfYear)(year); var firstDay = new Date(year, 0, 1); return (0, _util.range)(numOfDays).map(function (n) { return (0, _util.nextDate)(firstDay, n); }); }; exports.default = { props: { disabledDate: {}, value: {}, defaultValue: { validator: function validator(val) { // null or valid Date Object return val === null || val instanceof Date && (0, _util.isDate)(val); } }, date: {} }, computed: { startYear: function startYear() { return Math.floor(this.date.getFullYear() / 10) * 10; } }, methods: { getCellStyle: function getCellStyle(year) { var style = {}; var today = new Date(); style.disabled = typeof this.disabledDate === 'function' ? datesInYear(year).every(this.disabledDate) : false; style.current = this.value.getFullYear() === year; style.today = today.getFullYear() === year; style.default = this.defaultValue && this.defaultValue.getFullYear() === year; return style; }, handleYearTableClick: function handleYearTableClick(event) { var target = event.target; if (target.tagName === 'A') { if ((0, _dom.hasClass)(target.parentNode, 'disabled')) return; var year = target.textContent || target.innerText; this.$emit('pick', Number(year)); } } } }; /***/ }), /***/ 182: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{staticClass:"el-year-table",on:{"click":_vm.handleYearTableClick}},[_c('tbody',[_c('tr',[_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 0)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear))])]),_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 1)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 1))])]),_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 2)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 2))])]),_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 3)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 3))])])]),_c('tr',[_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 4)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 4))])]),_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 5)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 5))])]),_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 6)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 6))])]),_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 7)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 7))])])]),_c('tr',[_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 8)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 8))])]),_c('td',{staticClass:"available",class:_vm.getCellStyle(_vm.startYear + 9)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.startYear + 9))])]),_c('td'),_c('td')])])])} var staticRenderFns = [] var esExports = { render: render, staticRenderFns: staticRenderFns } /* harmony default export */ __webpack_exports__["a"] = (esExports); /***/ }), /***/ 183: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_month_table_vue__ = __webpack_require__(184); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_month_table_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_month_table_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_312e3722_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_month_table_vue__ = __webpack_require__(185); var normalizeComponent = __webpack_require__(0) /* script */ /* template */ /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = null /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_month_table_vue___default.a, __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_312e3722_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_month_table_vue__["a" /* default */], __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["default"] = (Component.exports); /***/ }), /***/ 184: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _locale = __webpack_require__(5); var _locale2 = _interopRequireDefault(_locale); var _util = __webpack_require__(11); var _dom = __webpack_require__(2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var datesInMonth = function datesInMonth(year, month) { var numOfDays = (0, _util.getDayCountOfMonth)(year, month); var firstDay = new Date(year, month, 1); return (0, _util.range)(numOfDays).map(function (n) { return (0, _util.nextDate)(firstDay, n); }); }; // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // exports.default = { props: { disabledDate: {}, value: {}, defaultValue: { validator: function validator(val) { // null or valid Date Object return val === null || val instanceof Date && (0, _util.isDate)(val); } }, date: {} }, mixins: [_locale2.default], methods: { getCellStyle: function getCellStyle(month) { var style = {}; var year = this.date.getFullYear(); var today = new Date(); style.disabled = typeof this.disabledDate === 'function' ? datesInMonth(year, month).every(this.disabledDate) : false; style.current = this.value.getFullYear() === year && this.value.getMonth() === month; style.today = today.getFullYear() === year && today.getMonth() === month; style.default = this.defaultValue && this.defaultValue.getFullYear() === year && this.defaultValue.getMonth() === month; return style; }, handleMonthTableClick: function handleMonthTableClick(event) { var target = event.target; if (target.tagName !== 'A') return; if ((0, _dom.hasClass)(target.parentNode, 'disabled')) return; var column = target.parentNode.cellIndex; var row = target.parentNode.parentNode.rowIndex; var month = row * 4 + column; this.$emit('pick', month); } } }; /***/ }), /***/ 185: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{staticClass:"el-month-table",on:{"click":_vm.handleMonthTableClick}},[_c('tbody',[_c('tr',[_c('td',{class:_vm.getCellStyle(0)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.jan')))])]),_c('td',{class:_vm.getCellStyle(1)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.feb')))])]),_c('td',{class:_vm.getCellStyle(2)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.mar')))])]),_c('td',{class:_vm.getCellStyle(3)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.apr')))])])]),_c('tr',[_c('td',{class:_vm.getCellStyle(4)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.may')))])]),_c('td',{class:_vm.getCellStyle(5)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.jun')))])]),_c('td',{class:_vm.getCellStyle(6)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.jul')))])]),_c('td',{class:_vm.getCellStyle(7)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.aug')))])])]),_c('tr',[_c('td',{class:_vm.getCellStyle(8)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.sep')))])]),_c('td',{class:_vm.getCellStyle(9)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.oct')))])]),_c('td',{class:_vm.getCellStyle(10)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.nov')))])]),_c('td',{class:_vm.getCellStyle(11)},[_c('a',{staticClass:"cell"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.dec')))])])])])])} var staticRenderFns = [] var esExports = { render: render, staticRenderFns: staticRenderFns } /* harmony default export */ __webpack_exports__["a"] = (esExports); /***/ }), /***/ 186: /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _util = __webpack_require__(11); var _dom = __webpack_require__(2); var _locale = __webpack_require__(5); var _locale2 = _interopRequireDefault(_locale); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _WEEKS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // var clearHours = function clearHours(time) { var cloneDate = new Date(time); cloneDate.setHours(0, 0, 0, 0); return cloneDate.getTime(); }; exports.default = { mixins: [_locale2.default], props: { firstDayOfWeek: { default: 7, type: Number, validator: function validator(val) { return val >= 1 && val <= 7; } }, value: {}, defaultValue: { validator: function validator(val) { // either: null, valid Date object, Array of valid Date objects return val === null || (0, _util.isDate)(val) || Array.isArray(val) && val.every(_util.isDate); } }, date: {}, selectionMode: { default: 'day' }, showWeekNumber: { type: Boolean, default: false }, disabledDate: {}, selectedDate: { type: Array }, minDate: {}, maxDate: {}, rangeState: { default: function _default() { return { endDate: null, selecting: false, row: null, column: null }; } } }, computed: { offsetDay: function offsetDay() { var week = this.firstDayOfWeek; // 周日为界限,左右偏移的天数,3217654 例如周一就是 -1,目的是调整前两行日期的位置 return week > 3 ? 7 - week : -week; }, WEEKS: function WEEKS() { var week = this.firstDayOfWeek; return _WEEKS.concat(_WEEKS).slice(week, week + 7); }, year: function year() { return this.date.getFullYear(); }, month: function month() { return this.date.getMonth(); }, startDate: function startDate() { return (0, _util.getStartDateOfMonth)(this.year, this.month); }, rows: function rows() { var _this = this; // TODO: refactory rows / getCellClasses var date = new Date(this.year, this.month, 1); var day = (0, _util.getFirstDayOfMonth)(date); // day of first day var dateCountOfMonth = (0, _util.getDayCountOfMonth)(date.getFullYear(), date.getMonth()); var dateCountOfLastMonth = (0, _util.getDayCountOfMonth)(date.getFullYear(), date.getMonth() === 0 ? 11 : date.getMonth() - 1); day = day === 0 ? 7 : day; var offset = this.offsetDay; var rows = this.tableRows; var count = 1; var firstDayPosition = void 0; var startDate = this.startDate; var disabledDate = this.disabledDate; var selectedDate = this.selectedDate || this.value; var now = clearHours(new Date()); for (var i = 0; i < 6; i++) { var row = rows[i]; if (this.showWeekNumber) { if (!row[0]) { row[0] = { type: 'week', text: (0, _util.getWeekNumber)((0, _util.nextDate)(startDate, i * 7 + 1)) }; } } var _loop = function _loop(j) { var cell = row[_this.showWeekNumber ? j + 1 : j]; if (!cell) { cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false }; } cell.type = 'normal'; var index = i * 7 + j; var time = (0, _util.nextDate)(startDate, index - offset).getTime(); cell.inRange = time >= clearHours(_this.minDate) && time <= clearHours(_this.maxDate); cell.start = _this.minDate && time === clearHours(_this.minDate); cell.end = _this.maxDate && time === clearHours(_this.maxDate); var isToday = time === now; if (isToday) { cell.type = 'today'; } if (i >= 0 && i <= 1) { if (j + i * 7 >= day + offset) { cell.text = count++; if (count === 2) { firstDayPosition = i * 7 + j; } } else { cell.text = dateCountOfLastMonth - (day + offset - j % 7) + 1 + i * 7; cell.type = 'prev-month'; } } else { if (count <= dateCountOfMonth) { cell.text = count++; if (count === 2) { firstDayPosition = i * 7 + j; }