UNPKG

element-nice-ui

Version:

A Component Library for Vue.js.

1,361 lines (1,299 loc) 185 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, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // 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 = 182); /******/ }) /************************************************************************/ /******/ ({ /***/ 13: /***/ (function(module, exports) { module.exports = require("element-nice-ui/lib/mixins/emitter"); /***/ }), /***/ 17: /***/ (function(module, exports) { module.exports = require("element-nice-ui/lib/utils/vue-popper"); /***/ }), /***/ 18: /***/ (function(module, exports) { module.exports = require("vue"); /***/ }), /***/ 182: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXTERNAL MODULE: ./packages/date-picker/src/picker.vue + 4 modules var picker = __webpack_require__(73); // CONCATENATED MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/panel/date.vue?vue&type=template&id=12078611 var render = function render() { var _vm = this, _c = _vm._self._c return _c( "transition", { attrs: { name: "el-zoom-in-top" }, on: { "after-enter": _vm.handleEnter, "after-leave": _vm.handleLeave }, }, [ _c( "div", { directives: [ { name: "show", rawName: "v-show", value: _vm.visible, expression: "visible", }, ], staticClass: "el-picker-panel el-date-picker el-popper", class: [ { "has-sidebar": _vm.$slots.sidebar || _vm.shortcuts, "has-time": _vm.showTime, }, _vm.popperClass, ], }, [ _c( "div", { staticClass: "el-picker-panel__body-wrapper" }, [ _vm._t("sidebar"), _vm.shortcuts ? _c( "div", { staticClass: "el-picker-panel__sidebar" }, _vm._l(_vm.shortcuts, function (shortcut, key) { return _c( "button", { key: key, staticClass: "el-picker-panel__shortcut", attrs: { type: "button" }, on: { click: function ($event) { return _vm.handleShortcutClick(shortcut) }, }, }, [_vm._v(_vm._s(shortcut.text))] ) }), 0 ) : _vm._e(), _c("div", { staticClass: "el-picker-panel__body" }, [ _vm.showTime ? _c("div", { staticClass: "el-date-picker__time-header" }, [ _c( "span", { staticClass: "el-date-picker__editor-wrap" }, [ _c("el-input", { attrs: { placeholder: _vm.t("el.datepicker.selectDate"), value: _vm.visibleDate, size: "small", clearable: false, }, on: { input: (val) => (_vm.userInputDate = val), change: _vm.handleVisibleDateChange, }, }), ], 1 ), _c( "span", { directives: [ { name: "clickoutside", rawName: "v-clickoutside", value: _vm.handleTimePickClose, expression: "handleTimePickClose", }, ], staticClass: "el-date-picker__editor-wrap", }, [ _c("el-input", { ref: "input", attrs: { placeholder: _vm.t("el.datepicker.selectTime"), value: _vm.visibleTime, size: "small", clearable: false, }, on: { focus: function ($event) { _vm.timePickerVisible = true }, input: (val) => (_vm.userInputTime = val), change: _vm.handleVisibleTimeChange, }, }), _c("time-picker", { ref: "timepicker", attrs: { "time-arrow-control": _vm.arrowControl, visible: _vm.timePickerVisible, }, on: { pick: _vm.handleTimePick, mounted: _vm.proxyTimePickerDataProperties, }, }), ], 1 ), ]) : _vm._e(), _c( "div", { directives: [ { name: "show", rawName: "v-show", value: _vm.currentView !== "time", expression: "currentView !== 'time'", }, ], staticClass: "el-date-picker__header", class: { "el-date-picker__header--bordered": _vm.currentView === "year" || _vm.currentView === "month", }, }, [ _c("button", { staticClass: "el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left", attrs: { type: "button", "aria-label": _vm.t(`el.datepicker.prevYear`), }, on: { click: _vm.prevYear }, }), _c("button", { directives: [ { name: "show", rawName: "v-show", value: _vm.currentView === "date", expression: "currentView === 'date'", }, ], staticClass: "el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left", attrs: { type: "button", "aria-label": _vm.t(`el.datepicker.prevMonth`), }, on: { click: _vm.prevMonth }, }), _c( "span", { staticClass: "el-date-picker__header-label", attrs: { role: "button" }, on: { click: _vm.showYearPicker }, }, [_vm._v(_vm._s(_vm.yearLabel))] ), _c( "span", { directives: [ { name: "show", rawName: "v-show", value: _vm.currentView === "date", expression: "currentView === 'date'", }, ], staticClass: "el-date-picker__header-label", class: { active: _vm.currentView === "month" }, attrs: { role: "button" }, on: { click: _vm.showMonthPicker }, }, [ _vm._v( _vm._s(_vm.t(`el.datepicker.month${_vm.month + 1}`)) ), ] ), _c("button", { staticClass: "el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right", attrs: { type: "button", "aria-label": _vm.t(`el.datepicker.nextYear`), }, on: { click: _vm.nextYear }, }), _c("button", { directives: [ { name: "show", rawName: "v-show", value: _vm.currentView === "date", expression: "currentView === 'date'", }, ], staticClass: "el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right", attrs: { type: "button", "aria-label": _vm.t(`el.datepicker.nextMonth`), }, on: { click: _vm.nextMonth }, }), ] ), _c( "div", { staticClass: "el-picker-panel__content" }, [ _c("date-table", { directives: [ { name: "show", rawName: "v-show", value: _vm.currentView === "date", expression: "currentView === 'date'", }, ], attrs: { "selection-mode": _vm.selectionMode, "first-day-of-week": _vm.firstDayOfWeek, value: _vm.value, "default-value": _vm.defaultValue ? new Date(_vm.defaultValue) : null, date: _vm.date, "cell-class-name": _vm.cellClassName, "disabled-date": _vm.disabledDate, }, on: { pick: _vm.handleDatePick }, }), _c("year-table", { directives: [ { name: "show", rawName: "v-show", value: _vm.currentView === "year", expression: "currentView === 'year'", }, ], attrs: { value: _vm.value, "default-value": _vm.defaultValue ? new Date(_vm.defaultValue) : null, date: _vm.date, "disabled-date": _vm.disabledDate, }, on: { pick: _vm.handleYearPick }, }), _c("month-table", { directives: [ { name: "show", rawName: "v-show", value: _vm.currentView === "month", expression: "currentView === 'month'", }, ], attrs: { value: _vm.value, "default-value": _vm.defaultValue ? new Date(_vm.defaultValue) : null, date: _vm.date, "disabled-date": _vm.disabledDate, }, on: { pick: _vm.handleMonthPick }, }), ], 1 ), ]), ], 2 ), _c( "div", { directives: [ { name: "show", rawName: "v-show", value: _vm.footerVisible && _vm.currentView === "date", expression: "footerVisible && currentView === 'date'", }, ], staticClass: "el-picker-panel__footer", }, [ _c( "el-btn", { directives: [ { name: "show", rawName: "v-show", value: _vm.selectionMode !== "dates", expression: "selectionMode !== 'dates'", }, ], staticClass: "el-picker-panel__link-btn", attrs: { size: "mini", type: "text" }, on: { click: _vm.changeToNow }, }, [ _vm._v( "\n " + _vm._s(_vm.t("el.datepicker.now")) + "\n " ), ] ), _c( "el-btn", { staticClass: "el-picker-panel__link-btn", attrs: { plain: "", size: "mini" }, on: { click: _vm.confirm }, }, [ _vm._v( "\n " + _vm._s(_vm.t("el.datepicker.confirm")) + "\n " ), ] ), ], 1 ), ] ), ] ) } var staticRenderFns = [] render._withStripped = true // CONCATENATED MODULE: ./packages/date-picker/src/panel/date.vue?vue&type=template&id=12078611 // EXTERNAL MODULE: external "element-nice-ui/lib/utils/date-util" var date_util_ = __webpack_require__(4); // EXTERNAL MODULE: external "element-nice-ui/lib/utils/clickoutside" var clickoutside_ = __webpack_require__(27); var clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_); // EXTERNAL MODULE: external "element-nice-ui/lib/mixins/locale" var locale_ = __webpack_require__(19); var locale_default = /*#__PURE__*/__webpack_require__.n(locale_); // EXTERNAL MODULE: external "element-nice-ui/lib/input" var input_ = __webpack_require__(22); var input_default = /*#__PURE__*/__webpack_require__.n(input_); // EXTERNAL MODULE: external "element-nice-ui/lib/btn" var btn_ = __webpack_require__(21); var btn_default = /*#__PURE__*/__webpack_require__.n(btn_); // EXTERNAL MODULE: ./packages/date-picker/src/panel/time.vue + 4 modules var panel_time = __webpack_require__(64); // CONCATENATED MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/year-table.vue?vue&type=template&id=5c5ff758 var year_tablevue_type_template_id_5c5ff758_render = function render() { var _vm = this, _c = _vm._self._c 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 year_tablevue_type_template_id_5c5ff758_staticRenderFns = [] year_tablevue_type_template_id_5c5ff758_render._withStripped = true // CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue?vue&type=template&id=5c5ff758 // EXTERNAL MODULE: external "element-nice-ui/lib/utils/dom" var dom_ = __webpack_require__(8); // EXTERNAL MODULE: external "element-nice-ui/lib/utils/util" var util_ = __webpack_require__(5); // CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.28.0_webpack@4.47.0/node_modules/babel-loader/lib!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/year-table.vue?vue&type=script&lang=js const datesInYear = year => { const numOfDays = Object(date_util_["getDayCountOfYear"])(year); const firstDay = new Date(year, 0, 1); return Object(date_util_["range"])(numOfDays).map(n => Object(date_util_["nextDate"])(firstDay, n)); }; /* harmony default export */ var year_tablevue_type_script_lang_js = ({ props: { disabledDate: {}, value: {}, defaultValue: { validator(val) { // null or valid Date Object return val === null || val instanceof Date && Object(date_util_["isDate"])(val); } }, date: {} }, computed: { startYear() { return Math.floor(this.date.getFullYear() / 10) * 10; } }, methods: { getCellStyle(year) { const style = {}; const today = new Date(); style.disabled = typeof this.disabledDate === 'function' ? datesInYear(year).every(this.disabledDate) : false; style.current = Object(util_["arrayFindIndex"])(Object(util_["coerceTruthyValueToArray"])(this.value), date => date.getFullYear() === year) >= 0; style.today = today.getFullYear() === year; style.default = this.defaultValue && this.defaultValue.getFullYear() === year; return style; }, handleYearTableClick(event) { const target = event.target; if (target.tagName === 'A') { if (Object(dom_["hasClass"])(target.parentNode, 'disabled')) return; const year = target.textContent || target.innerText; this.$emit('pick', Number(year)); } } } }); // CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue?vue&type=script&lang=js /* harmony default export */ var basic_year_tablevue_type_script_lang_js = (year_tablevue_type_script_lang_js); // EXTERNAL MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(2); // CONCATENATED MODULE: ./packages/date-picker/src/basic/year-table.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( basic_year_tablevue_type_script_lang_js, year_tablevue_type_template_id_5c5ff758_render, year_tablevue_type_template_id_5c5ff758_staticRenderFns, false, null, null, null ) /* harmony default export */ var year_table = (component.exports); // CONCATENATED MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/month-table.vue?vue&type=template&id=1e37ceac var month_tablevue_type_template_id_1e37ceac_render = function render() { var _vm = this, _c = _vm._self._c return _c( "table", { staticClass: "el-month-table", on: { click: _vm.handleMonthTableClick, mousemove: _vm.handleMouseMove }, }, [ _c( "tbody", _vm._l(_vm.rows, function (row, key) { return _c( "tr", { key: key }, _vm._l(row, function (cell, key) { return _c("td", { key: key, class: _vm.getCellStyle(cell) }, [ _c("div", [ _c("a", { staticClass: "cell" }, [ _vm._v( _vm._s( _vm.t("el.datepicker.months." + _vm.months[cell.text]) ) ), ]), ]), ]) }), 0 ) }), 0 ), ] ) } var month_tablevue_type_template_id_1e37ceac_staticRenderFns = [] month_tablevue_type_template_id_1e37ceac_render._withStripped = true // CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue?vue&type=template&id=1e37ceac // CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.28.0_webpack@4.47.0/node_modules/babel-loader/lib!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/month-table.vue?vue&type=script&lang=js const datesInMonth = (year, month) => { const numOfDays = Object(date_util_["getDayCountOfMonth"])(year, month); const firstDay = new Date(year, month, 1); return Object(date_util_["range"])(numOfDays).map(n => Object(date_util_["nextDate"])(firstDay, n)); }; const clearDate = date => { return new Date(date.getFullYear(), date.getMonth()); }; const getMonthTimestamp = function getMonthTimestamp(time) { if (typeof time === 'number' || typeof time === 'string') { return clearDate(new Date(time)).getTime(); } else if (time instanceof Date) { return clearDate(time).getTime(); } else { return NaN; } }; /* harmony default export */ var month_tablevue_type_script_lang_js = ({ props: { disabledDate: {}, value: {}, selectionMode: { default: 'month' }, minDate: {}, maxDate: {}, defaultValue: { validator(val) { // null or valid Date Object return val === null || Object(date_util_["isDate"])(val) || Array.isArray(val) && val.every(date_util_["isDate"]); } }, date: {}, rangeState: { default() { return { endDate: null, selecting: false }; } } }, mixins: [locale_default.a], watch: { 'rangeState.endDate'(newVal) { this.markRange(this.minDate, newVal); }, minDate(newVal, oldVal) { if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) { this.markRange(this.minDate, this.maxDate); } }, maxDate(newVal, oldVal) { if (getMonthTimestamp(newVal) !== getMonthTimestamp(oldVal)) { this.markRange(this.minDate, this.maxDate); } } }, data() { return { months: ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'], tableRows: [[], [], []], lastRow: null, lastColumn: null }; }, methods: { cellMatchesDate(cell, date) { const value = new Date(date); return this.date.getFullYear() === value.getFullYear() && Number(cell.text) === value.getMonth(); }, getCellStyle(cell) { const style = {}; const year = this.date.getFullYear(); const today = new Date(); const month = cell.text; const defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : []; style.disabled = typeof this.disabledDate === 'function' ? datesInMonth(year, month).every(this.disabledDate) : false; style.current = Object(util_["arrayFindIndex"])(Object(util_["coerceTruthyValueToArray"])(this.value), date => date.getFullYear() === year && date.getMonth() === month) >= 0; style.today = today.getFullYear() === year && today.getMonth() === month; style.default = defaultValue.some(date => this.cellMatchesDate(cell, date)); if (cell.inRange) { style['in-range'] = true; if (cell.start) { style['start-date'] = true; } if (cell.end) { style['end-date'] = true; } } return style; }, getMonthOfCell(month) { const year = this.date.getFullYear(); return new Date(year, month, 1); }, markRange(minDate, maxDate) { minDate = getMonthTimestamp(minDate); maxDate = getMonthTimestamp(maxDate) || minDate; [minDate, maxDate] = [Math.min(minDate, maxDate), Math.max(minDate, maxDate)]; const rows = this.rows; for (let i = 0, k = rows.length; i < k; i++) { const row = rows[i]; for (let j = 0, l = row.length; j < l; j++) { const cell = row[j]; const index = i * 4 + j; const time = new Date(this.date.getFullYear(), index).getTime(); cell.inRange = minDate && time >= minDate && time <= maxDate; cell.start = minDate && time === minDate; cell.end = maxDate && time === maxDate; } } }, handleMouseMove(event) { if (!this.rangeState.selecting) return; let target = event.target; if (target.tagName === 'A') { target = target.parentNode.parentNode; } if (target.tagName === 'DIV') { target = target.parentNode; } if (target.tagName !== 'TD') return; const row = target.parentNode.rowIndex; const column = target.cellIndex; // can not select disabled date if (this.rows[row][column].disabled) return; // only update rangeState when mouse moves to a new cell // this avoids frequent Date object creation and improves performance if (row !== this.lastRow || column !== this.lastColumn) { this.lastRow = row; this.lastColumn = column; this.$emit('changerange', { minDate: this.minDate, maxDate: this.maxDate, rangeState: { selecting: true, endDate: this.getMonthOfCell(row * 4 + column) } }); } }, handleMonthTableClick(event) { let target = event.target; if (target.tagName === 'A') { target = target.parentNode.parentNode; } if (target.tagName === 'DIV') { target = target.parentNode; } if (target.tagName !== 'TD') return; if (Object(dom_["hasClass"])(target, 'disabled')) return; const column = target.cellIndex; const row = target.parentNode.rowIndex; const month = row * 4 + column; const newDate = this.getMonthOfCell(month); if (this.selectionMode === 'range') { if (!this.rangeState.selecting) { this.$emit('pick', { minDate: newDate, maxDate: null }); this.rangeState.selecting = true; } else { if (newDate >= this.minDate) { this.$emit('pick', { minDate: this.minDate, maxDate: newDate }); } else { this.$emit('pick', { minDate: newDate, maxDate: this.minDate }); } this.rangeState.selecting = false; } } else { this.$emit('pick', month); } } }, computed: { rows() { // TODO: refactory rows / getCellClasses const rows = this.tableRows; const disabledDate = this.disabledDate; const selectedDate = []; const now = getMonthTimestamp(new Date()); for (let i = 0; i < 3; i++) { const row = rows[i]; for (let j = 0; j < 4; j++) { let cell = row[j]; if (!cell) { cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false }; } cell.type = 'normal'; const index = i * 4 + j; const time = new Date(this.date.getFullYear(), index).getTime(); cell.inRange = time >= getMonthTimestamp(this.minDate) && time <= getMonthTimestamp(this.maxDate); cell.start = this.minDate && time === getMonthTimestamp(this.minDate); cell.end = this.maxDate && time === getMonthTimestamp(this.maxDate); const isToday = time === now; if (isToday) { cell.type = 'today'; } cell.text = index; let cellDate = new Date(time); cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate); cell.selected = Object(util_["arrayFind"])(selectedDate, date => date.getTime() === cellDate.getTime()); this.$set(row, j, cell); } } return rows; } } }); // CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue?vue&type=script&lang=js /* harmony default export */ var basic_month_tablevue_type_script_lang_js = (month_tablevue_type_script_lang_js); // CONCATENATED MODULE: ./packages/date-picker/src/basic/month-table.vue /* normalize component */ var month_table_component = Object(componentNormalizer["a" /* default */])( basic_month_tablevue_type_script_lang_js, month_tablevue_type_template_id_1e37ceac_render, month_tablevue_type_template_id_1e37ceac_staticRenderFns, false, null, null, null ) /* harmony default export */ var month_table = (month_table_component.exports); // CONCATENATED MODULE: ./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/date-table.vue?vue&type=template&id=25876179 var date_tablevue_type_template_id_25876179_render = function render() { var _vm = this, _c = _vm._self._c return _c( "table", { staticClass: "el-date-table", class: { "is-week-mode": _vm.selectionMode === "week" }, attrs: { cellspacing: "0", cellpadding: "0" }, on: { click: _vm.handleClick, mousemove: _vm.handleMouseMove }, }, [ _c( "tbody", [ _c( "tr", [ _vm.showWeekNumber ? _c("th", [_vm._v(_vm._s(_vm.t("el.datepicker.week")))]) : _vm._e(), _vm._l(_vm.WEEKS, function (week, key) { return _c("th", { key: key }, [ _vm._v(_vm._s(_vm.t("el.datepicker.weeks." + week))), ]) }), ], 2 ), _vm._l(_vm.rows, function (row, key) { return _c( "tr", { key: key, staticClass: "el-date-table__row", class: { current: _vm.isWeekActive(row[1]) }, }, _vm._l(row, function (cell, key) { return _c("td", { key: key, class: _vm.getCellClasses(cell) }, [ _c("div", [ _c("span", [ _vm._v("\n " + _vm._s(cell.text) + "\n "), ]), ]), ]) }), 0 ) }), ], 2 ), ] ) } var date_tablevue_type_template_id_25876179_staticRenderFns = [] date_tablevue_type_template_id_25876179_render._withStripped = true // CONCATENATED MODULE: ./packages/date-picker/src/basic/date-table.vue?vue&type=template&id=25876179 // CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.28.0_webpack@4.47.0/node_modules/babel-loader/lib!./node_modules/.pnpm/vue-loader@15.11.1_@vue+compiler-sfc@3.5.18_css-loader@5.2.7_webpack@4.47.0__lodash@4.1_bb9a19950a80e648dc95ba33c71fa343/node_modules/vue-loader/lib??vue-loader-options!./packages/date-picker/src/basic/date-table.vue?vue&type=script&lang=js const WEEKS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; const date_tablevue_type_script_lang_js_getDateTimestamp = function getDateTimestamp(time) { if (typeof time === 'number' || typeof time === 'string') { return Object(date_util_["clearTime"])(new Date(time)).getTime(); } else if (time instanceof Date) { return Object(date_util_["clearTime"])(time).getTime(); } else { return NaN; } }; // remove the first element that satisfies `pred` from arr // return a new array if modification occurs // return the original array otherwise const date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray(arr, pred) { const idx = typeof pred === 'function' ? Object(util_["arrayFindIndex"])(arr, pred) : arr.indexOf(pred); return idx >= 0 ? [...arr.slice(0, idx), ...arr.slice(idx + 1)] : arr; }; /* harmony default export */ var date_tablevue_type_script_lang_js = ({ mixins: [locale_default.a], props: { firstDayOfWeek: { default: 7, type: Number, validator: val => val >= 1 && val <= 7 }, value: {}, defaultValue: { validator(val) { // either: null, valid Date object, Array of valid Date objects return val === null || Object(date_util_["isDate"])(val) || Array.isArray(val) && val.every(date_util_["isDate"]); } }, date: {}, selectionMode: { default: 'day' }, showWeekNumber: { type: Boolean, default: false }, disabledDate: {}, cellClassName: {}, minDate: {}, maxDate: {}, rangeState: { default() { return { endDate: null, selecting: false }; } } }, computed: { offsetDay() { const week = this.firstDayOfWeek; // 周日为界限,左右偏移的天数,3217654 例如周一就是 -1,目的是调整前两行日期的位置 return week > 3 ? 7 - week : -week; }, WEEKS() { const week = this.firstDayOfWeek; return WEEKS.concat(WEEKS).slice(week, week + 7); }, year() { return this.date.getFullYear(); }, month() { return this.date.getMonth(); }, startDate() { return Object(date_util_["getStartDateOfMonth"])(this.year, this.month); }, rows() { // TODO: refactory rows / getCellClasses const date = new Date(this.year, this.month, 1); let day = Object(date_util_["getFirstDayOfMonth"])(date); // day of first day const dateCountOfMonth = Object(date_util_["getDayCountOfMonth"])(date.getFullYear(), date.getMonth()); const dateCountOfLastMonth = Object(date_util_["getDayCountOfMonth"])(date.getFullYear(), date.getMonth() === 0 ? 11 : date.getMonth() - 1); day = day === 0 ? 7 : day; const offset = this.offsetDay; const rows = this.tableRows; let count = 1; const startDate = this.startDate; const disabledDate = this.disabledDate; const cellClassName = this.cellClassName; const selectedDate = this.selectionMode === 'dates' ? Object(util_["coerceTruthyValueToArray"])(this.value) : []; const now = date_tablevue_type_script_lang_js_getDateTimestamp(new Date()); for (let i = 0; i < 6; i++) { const row = rows[i]; if (this.showWeekNumber) { if (!row[0]) { row[0] = { type: 'week', text: Object(date_util_["getWeekNumber"])(Object(date_util_["nextDate"])(startDate, i * 7 + 1)) }; } } for (let j = 0; j < 7; j++) { let 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'; const index = i * 7 + j; const time = Object(date_util_["nextDate"])(startDate, index - offset).getTime(); cell.inRange = time >= date_tablevue_type_script_lang_js_getDateTimestamp(this.minDate) && time <= date_tablevue_type_script_lang_js_getDateTimestamp(this.maxDate); cell.start = this.minDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(this.minDate); cell.end = this.maxDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(this.maxDate); const isToday = time === now; if (isToday) { cell.type = 'today'; } if (i >= 0 && i <= 1) { const numberOfDaysFromPreviousMonth = day + offset < 0 ? 7 + day + offset : day + offset; if (j + i * 7 >= numberOfDaysFromPreviousMonth) { cell.text = count++; } else { cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - j % 7) + 1 + i * 7; cell.type = 'prev-month'; } } else { if (count <= dateCountOfMonth) { cell.text = count++; } else { cell.text = count++ - dateCountOfMonth; cell.type = 'next-month'; } } let cellDate = new Date(time); cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate); cell.selected = Object(util_["arrayFind"])(selectedDate, date => date.getTime() === cellDate.getTime()); cell.customClass = typeof cellClassName === 'function' && cellClassName(cellDate); this.$set(row, this.showWeekNumber ? j + 1 : j, cell); } if (this.selectionMode === 'week') { const start = this.showWeekNumber ? 1 : 0; const end = this.showWeekNumber ? 7 : 6; const isWeekActive = this.isWeekActive(row[start + 1]); row[start].inRange = isWeekActive; row[start].start = isWeekActive; row[end].inRange = isWeekActive; row[end].end = isWeekActive; } } return rows; } }, watch: { 'rangeState.endDate'(newVal) { this.markRange(this.minDate, newVal); }, minDate(newVal, oldVal) { if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) { this.markRange(this.minDate, this.maxDate); } }, maxDate(newVal, oldVal) { if (date_tablevue_type_script_lang_js_getDateTimestamp(newVal) !== date_tablevue_type_script_lang_js_getDateTimestamp(oldVal)) { this.markRange(this.minDate, this.maxDate); } } }, data() { return { tableRows: [[], [], [], [], [], []], lastRow: null, lastColumn: null }; }, methods: { cellMatchesDate(cell, date) { const value = new Date(date); return this.year === value.getFullYear() && this.month === value.getMonth() && Number(cell.text) === value.getDate(); }, getCellClasses(cell) { const selectionMode = this.selectionMode; const defaultValue = this.defaultValue ? Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue] : []; let classes = []; if ((cell.type === 'normal' || cell.type === 'today') && !cell.disabled) { classes.push('available'); if (cell.type === 'today') { classes.push('today'); } } else { classes.push(cell.type); } if (cell.type === 'normal' && defaultValue.some(date => this.cellMatchesDate(cell, date))) { classes.push('default'); } if (selectionMode === 'day' && (cell.type === 'normal' || cell.type === 'today') && this.cellMatchesDate(cell, this.value)) { classes.push('current'); } if (cell.inRange && (cell.type === 'normal' || cell.type === 'today' || this.selectionMode === 'week')) { classes.push('in-range'); if (cell.start) { classes.push('start-date'); } if (cell.end) { classes.push('end-date'); } } if (cell.disabled) { classes.push('disabled'); } if (cell.selected) { classes.push('selected'); } if (cell.customClass) { classes.push(cell.customClass); } return classes.join(' '); }, getDateOfCell(row, column) { const offsetFromStart = row * 7 + (column - (this.showWeekNumber ? 1 : 0)) - this.offsetDay; return Object(date_util_["nextDate"])(this.startDate, offsetFromStart); }, isWeekActive(cell) { if (this.selectionMode !== 'week') return false; const newDate = new Date(this.year, this.month, 1); const year = newDate.getFullYear(); const month = newDate.getMonth(); if (cell.type === 'prev-month') { newDate.setMonth(month === 0 ? 11 : month - 1); newDate.setFullYear(month === 0 ? year - 1 : year); } if (cell.type === 'next-month') { newDate.setMonth(month === 11 ? 0 : month + 1); newDate.setFullYear(month === 11 ? year + 1 : year); } newDate.setDate(parseInt(cell.text, 10)); if (Object(date_util_["isDate"])(this.value)) { const dayOffset = (this.value.getDay() - this.firstDayOfWeek + 7) % 7 - 1; const weekDate = Object(date_util_["prevDate"])(this.value, dayOffset); return weekDate.getTime() === newDate.getTime(); } return false; }, markRange(minDate, maxDate) { minDate = date_tablevue_type_script_lang_js_getDateTimestamp(minDate); maxDate = date_tablevue_type_script_lang_js_getDateTimestamp(maxDate) || minDate; [minDate, maxDate] = [Math.min(minDate, maxDate), Math.max(minDate, maxDate)]; const startDate = this.startDate; const rows = this.rows; for (let i = 0, k = rows.length; i < k; i++) { const row = rows[i]; for (let j = 0, l = row.length; j < l; j++) { if (this.showWeekNumber && j === 0) continue; const cell = row[j]; const index = i * 7 + j + (this.showWeekNumber ? -1 : 0); const time = Object(date_util_["nextDate"])(startDate, index - this.offsetDay).getTime(); cell.inRange = minDate && time >= minDate && time <= maxDate; cell.start = minDate && time === minDate; cell.end = maxDate && time === maxDate; } } }, handleMouseMove(event) { if (!this.rangeState.selecting) return; let target = event.target; if (target.t