使用VUE重构项目
Some checks failed
build / build (api, amd64, linux) (push) Failing after -51s
build / build (api, arm64, linux) (push) Failing after -52s
build / build (api.exe, amd64, windows) (push) Failing after -51s

This commit is contained in:
2026-04-20 00:19:11 +08:00
parent c080bb8d4a
commit db7f1ba82f
12743 changed files with 1250466 additions and 359982 deletions

View File

@@ -0,0 +1,12 @@
import { SFCWithInstall } from "../../utils/vue/typescript.js";
import "../../utils/index.js";
import { _default } from "./src/date-picker-panel.js";
import { ROOT_PICKER_INJECTION_KEY, ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY } from "./src/constants.js";
import { DateCell, DatePickerType } from "./src/types.js";
import { DatePickerPanelProps, DatePickerPanelPropsPublic, datePickerPanelProps } from "./src/props/date-picker-panel.js";
import { DatePickerPanelInstance } from "./src/instance.js";
//#region ../../packages/components/date-picker-panel/index.d.ts
declare const ElDatePickerPanel: SFCWithInstall<typeof _default>;
//#endregion
export { DateCell, type DatePickerPanelInstance, DatePickerPanelProps, DatePickerPanelPropsPublic, DatePickerType, ElDatePickerPanel, ElDatePickerPanel as default, ROOT_PICKER_INJECTION_KEY, ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, datePickerPanelProps };

View File

@@ -0,0 +1,16 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_install = require('../../utils/vue/install.js');
const require_date_picker_panel = require('./src/props/date-picker-panel.js');
const require_constants = require('./src/constants.js');
const require_date_picker_panel$1 = require('./src/date-picker-panel.js');
//#region ../../packages/components/date-picker-panel/index.ts
const ElDatePickerPanel = require_install.withInstall(require_date_picker_panel$1.default);
//#endregion
exports.ElDatePickerPanel = ElDatePickerPanel;
exports.default = ElDatePickerPanel;
exports.ROOT_PICKER_INJECTION_KEY = require_constants.ROOT_PICKER_INJECTION_KEY;
exports.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = require_constants.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY;
exports.datePickerPanelProps = require_date_picker_panel.datePickerPanelProps;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["withInstall","DatePickerPanel"],"sources":["../../../../../packages/components/date-picker-panel/index.ts"],"sourcesContent":["import { withInstall } from '@element-plus/utils'\nimport DatePickerPanel from './src/date-picker-panel'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElDatePickerPanel: SFCWithInstall<typeof DatePickerPanel> =\n withInstall(DatePickerPanel)\n\nexport default ElDatePickerPanel\nexport * from './src/constants'\nexport * from './src/props/date-picker-panel'\nexport * from './src/types'\nexport type { DatePickerPanelInstance } from './src/instance'\n"],"mappings":";;;;;;;AAKA,MAAa,oBACXA,4BAAYC,oCAAgB"}

View File

@@ -0,0 +1,312 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_arrays = require('../../../../utils/arrays.js');
const require_index = require('../../../../hooks/use-locale/index.js');
const require_index$1 = require('../../../../hooks/use-namespace/index.js');
const require_utils = require('../utils.js');
let lodash_unified = require("lodash-unified");
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/date-picker-panel/src/composables/use-basic-date-table.ts
const isNormalDay = (type = "") => {
return ["normal", "today"].includes(type);
};
const useBasicDateTable = (props, emit) => {
const { lang } = require_index.useLocale();
const tbodyRef = (0, vue.ref)();
const currentCellRef = (0, vue.ref)();
const lastRow = (0, vue.ref)();
const lastColumn = (0, vue.ref)();
const tableRows = (0, vue.ref)([
[],
[],
[],
[],
[],
[]
]);
let focusWithClick = false;
const firstDayOfWeek = props.date.$locale().weekStart || 7;
const WEEKS_CONSTANT = props.date.locale("en").localeData().weekdaysShort().map((_) => _.toLowerCase());
const offsetDay = (0, vue.computed)(() => {
return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek;
});
const startDate = (0, vue.computed)(() => {
const startDayOfMonth = props.date.startOf("month");
return startDayOfMonth.subtract(startDayOfMonth.day() || 7, "day");
});
const WEEKS = (0, vue.computed)(() => {
return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(firstDayOfWeek, firstDayOfWeek + 7);
});
const hasCurrent = (0, vue.computed)(() => {
return (0, lodash_unified.flatten)((0, vue.unref)(rows)).some((row) => {
return row.isCurrent;
});
});
const days = (0, vue.computed)(() => {
const startOfMonth = props.date.startOf("month");
return {
startOfMonthDay: startOfMonth.day() || 7,
dateCountOfMonth: startOfMonth.daysInMonth(),
dateCountOfLastMonth: startOfMonth.subtract(1, "month").daysInMonth()
};
});
const selectedDate = (0, vue.computed)(() => {
return props.selectionMode === "dates" ? require_arrays.castArray(props.parsedValue) : [];
});
const setDateText = (cell, { count, rowIndex, columnIndex }) => {
const { startOfMonthDay, dateCountOfMonth, dateCountOfLastMonth } = (0, vue.unref)(days);
const offset = (0, vue.unref)(offsetDay);
if (rowIndex >= 0 && rowIndex <= 1) {
const numberOfDaysFromPreviousMonth = startOfMonthDay + offset < 0 ? 7 + startOfMonthDay + offset : startOfMonthDay + offset;
if (columnIndex + rowIndex * 7 >= numberOfDaysFromPreviousMonth) {
cell.text = count;
return true;
} else {
cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - columnIndex % 7) + 1 + rowIndex * 7;
cell.type = "prev-month";
}
} else {
if (count <= dateCountOfMonth) cell.text = count;
else {
cell.text = count - dateCountOfMonth;
cell.type = "next-month";
}
return true;
}
return false;
};
const setCellMetadata = (cell, { columnIndex, rowIndex }, count) => {
const { disabledDate, cellClassName } = props;
const _selectedDate = (0, vue.unref)(selectedDate);
const shouldIncrement = setDateText(cell, {
count,
rowIndex,
columnIndex
});
const cellDate = cell.dayjs.toDate();
cell.selected = _selectedDate.find((d) => d.isSame(cell.dayjs, "day"));
cell.isSelected = !!cell.selected;
cell.isCurrent = isCurrent(cell);
cell.disabled = disabledDate?.(cellDate);
cell.customClass = cellClassName?.(cellDate);
return shouldIncrement;
};
const setRowMetadata = (row) => {
if (props.selectionMode === "week") {
const [start, end] = props.showWeekNumber ? [1, 7] : [0, 6];
const isActive = isWeekActive(row[start + 1]);
row[start].inRange = isActive;
row[start].start = isActive;
row[end].inRange = isActive;
row[end].end = isActive;
}
};
const rows = (0, vue.computed)(() => {
const { minDate, maxDate, rangeState, showWeekNumber } = props;
const offset = (0, vue.unref)(offsetDay);
const rows_ = (0, vue.unref)(tableRows);
const dateUnit = "day";
let count = 1;
require_utils.buildPickerTable({
row: 6,
column: 7
}, rows_, {
startDate: minDate,
columnIndexOffset: showWeekNumber ? 1 : 0,
nextEndDate: rangeState.endDate || maxDate || rangeState.selecting && minDate || null,
now: (0, dayjs.default)().locale((0, vue.unref)(lang)).startOf(dateUnit),
unit: dateUnit,
relativeDateGetter: (idx) => (0, vue.unref)(startDate).add(idx - offset, dateUnit),
setCellMetadata: (...args) => {
if (setCellMetadata(...args, count)) count += 1;
},
setRowMetadata
});
if (showWeekNumber) {
for (let rowIndex = 0; rowIndex < 6; rowIndex++) if (rows_[rowIndex][1].dayjs) rows_[rowIndex][0] = {
type: "week",
text: rows_[rowIndex][1].dayjs.week()
};
}
return rows_;
});
(0, vue.watch)(() => props.date, async () => {
if ((0, vue.unref)(tbodyRef)?.contains(document.activeElement)) {
await (0, vue.nextTick)();
await focus();
}
});
const focus = async () => (0, vue.unref)(currentCellRef)?.focus();
const isCurrent = (cell) => {
return props.selectionMode === "date" && isNormalDay(cell.type) && cellMatchesDate(cell, props.parsedValue);
};
const cellMatchesDate = (cell, date) => {
if (!date) return false;
return (0, dayjs.default)(date).locale((0, vue.unref)(lang)).isSame(props.date.date(Number(cell.text)), "day");
};
const getDateOfCell = (row, column) => {
const startOfMonthDay = (0, vue.unref)(days).startOfMonthDay;
const offset = (0, vue.unref)(offsetDay);
const numberOfDaysFromPreviousMonth = startOfMonthDay + offset < 0 ? 7 + startOfMonthDay + offset : startOfMonthDay + offset;
const offsetFromStart = row * 7 + (column - (props.showWeekNumber ? 1 : 0));
return props.date.startOf("month").subtract(numberOfDaysFromPreviousMonth, "day").add(offsetFromStart, "day");
};
const handleMouseMove = (event) => {
if (!props.rangeState.selecting) return;
let target = event.target;
if (target.tagName === "SPAN") target = target.parentNode?.parentNode;
if (target.tagName === "DIV") target = target.parentNode;
if (target.tagName !== "TD") return;
const row = target.parentNode.rowIndex - 1;
const column = target.cellIndex;
if ((0, vue.unref)(rows)[row][column].disabled) return;
if (row !== (0, vue.unref)(lastRow) || column !== (0, vue.unref)(lastColumn)) {
lastRow.value = row;
lastColumn.value = column;
emit("changerange", {
selecting: true,
endDate: getDateOfCell(row, column)
});
}
};
const isSelectedCell = (cell) => {
return !(0, vue.unref)(hasCurrent) && cell?.text === 1 && isNormalDay(cell.type) || cell.isCurrent;
};
const handleFocus = (event) => {
if (focusWithClick || (0, vue.unref)(hasCurrent) || props.selectionMode !== "date") return;
handlePickDate(event, true);
};
const handleMouseDown = (event) => {
if (!event.target.closest("td")) return;
focusWithClick = true;
};
const handleMouseUp = (event) => {
if (!event.target.closest("td")) return;
focusWithClick = false;
};
const handleRangePick = (newDate) => {
if (!props.rangeState.selecting || !props.minDate) {
emit("pick", {
minDate: newDate,
maxDate: null
});
emit("select", true);
} else {
if (newDate >= props.minDate) emit("pick", {
minDate: props.minDate,
maxDate: newDate
});
else emit("pick", {
minDate: newDate,
maxDate: props.minDate
});
emit("select", false);
}
};
const handleWeekPick = (newDate) => {
const weekNumber = newDate.week();
const value = `${newDate.year()}w${weekNumber}`;
emit("pick", {
year: newDate.year(),
week: weekNumber,
value,
date: newDate.startOf("week")
});
};
const handleDatesPick = (newDate, selected) => {
emit("pick", selected ? require_arrays.castArray(props.parsedValue).filter((d) => d?.valueOf() !== newDate.valueOf()) : require_arrays.castArray(props.parsedValue).concat([newDate]));
};
const handlePickDate = (event, isKeyboardMovement = false) => {
if (props.disabled) return;
const target = event.target.closest("td");
if (!target) return;
const row = target.parentNode.rowIndex - 1;
const column = target.cellIndex;
const cell = (0, vue.unref)(rows)[row][column];
if (cell.disabled || cell.type === "week") return;
const newDate = getDateOfCell(row, column);
switch (props.selectionMode) {
case "range":
handleRangePick(newDate);
break;
case "date":
emit("pick", newDate, isKeyboardMovement);
break;
case "week":
handleWeekPick(newDate);
break;
case "dates":
handleDatesPick(newDate, !!cell.selected);
break;
default: break;
}
};
const isWeekActive = (cell) => {
if (props.selectionMode !== "week") return false;
let newDate = props.date.startOf("day");
if (cell.type === "prev-month") newDate = newDate.subtract(1, "month");
if (cell.type === "next-month") newDate = newDate.add(1, "month");
newDate = newDate.date(Number.parseInt(cell.text, 10));
if (props.parsedValue && !(0, _vue_shared.isArray)(props.parsedValue)) {
const dayOffset = (props.parsedValue.day() - firstDayOfWeek + 7) % 7 - 1;
return props.parsedValue.subtract(dayOffset, "day").isSame(newDate, "day");
}
return false;
};
return {
WEEKS,
rows,
tbodyRef,
currentCellRef,
focus,
isCurrent,
isWeekActive,
isSelectedCell,
handlePickDate,
handleMouseUp,
handleMouseDown,
handleMouseMove,
handleFocus
};
};
const useBasicDateTableDOM = (props, { isCurrent, isWeekActive }) => {
const ns = require_index$1.useNamespace("date-table");
const { t } = require_index.useLocale();
const tableKls = (0, vue.computed)(() => [ns.b(), ns.is("week-mode", props.selectionMode === "week" && !props.disabled)]);
const tableLabel = (0, vue.computed)(() => t("el.datepicker.dateTablePrompt"));
const getCellClasses = (cell) => {
const classes = [];
if (isNormalDay(cell.type) && !cell.disabled) {
classes.push("available");
if (cell.type === "today") classes.push("today");
} else classes.push(cell.type);
if (isCurrent(cell)) classes.push("current");
if (cell.inRange && (isNormalDay(cell.type) || props.selectionMode === "week")) {
classes.push("in-range");
if (cell.start) classes.push("start-date");
if (cell.end) classes.push("end-date");
}
if (cell.disabled || props.disabled) classes.push("disabled");
if (cell.selected) classes.push("selected");
if (cell.customClass) classes.push(cell.customClass);
return classes.join(" ");
};
const getRowKls = (cell) => [ns.e("row"), { current: isWeekActive(cell) }];
return {
tableKls,
tableLabel,
weekHeaderClass: ns.e("week-header"),
getCellClasses,
getRowKls,
t
};
};
//#endregion
exports.useBasicDateTable = useBasicDateTable;
exports.useBasicDateTableDOM = useBasicDateTableDOM;
//# sourceMappingURL=use-basic-date-table.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,45 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../../hooks/use-locale/index.js');
let vue = require("vue");
//#region ../../packages/components/date-picker-panel/src/composables/use-month-range-header.ts
const useMonthRangeHeader = ({ unlinkPanels, leftDate, rightDate }) => {
const { t } = require_index.useLocale();
const leftPrevYear = () => {
leftDate.value = leftDate.value.subtract(1, "year");
if (!unlinkPanels.value) rightDate.value = rightDate.value.subtract(1, "year");
};
const rightNextYear = () => {
if (!unlinkPanels.value) leftDate.value = leftDate.value.add(1, "year");
rightDate.value = rightDate.value.add(1, "year");
};
const leftNextYear = () => {
leftDate.value = leftDate.value.add(1, "year");
};
const rightPrevYear = () => {
rightDate.value = rightDate.value.subtract(1, "year");
};
return {
leftPrevYear,
rightNextYear,
leftNextYear,
rightPrevYear,
leftLabel: (0, vue.computed)(() => {
return `${leftDate.value.year()} ${t("el.datepicker.year")}`;
}),
rightLabel: (0, vue.computed)(() => {
return `${rightDate.value.year()} ${t("el.datepicker.year")}`;
}),
leftYear: (0, vue.computed)(() => {
return leftDate.value.year();
}),
rightYear: (0, vue.computed)(() => {
return rightDate.value.year() === leftDate.value.year() ? leftDate.value.year() + 1 : rightDate.value.year();
})
};
};
//#endregion
exports.useMonthRangeHeader = useMonthRangeHeader;
//# sourceMappingURL=use-month-range-header.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"use-month-range-header.js","names":["useLocale"],"sources":["../../../../../../../packages/components/date-picker-panel/src/composables/use-month-range-header.ts"],"sourcesContent":["import { computed } from 'vue'\nimport { useLocale } from '@element-plus/hooks'\n\nimport type { Ref, ToRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const useMonthRangeHeader = ({\n unlinkPanels,\n leftDate,\n rightDate,\n}: {\n unlinkPanels: ToRef<boolean>\n leftDate: Ref<Dayjs>\n rightDate: Ref<Dayjs>\n}) => {\n const { t } = useLocale()\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!unlinkPanels.value) {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!unlinkPanels.value) {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n rightDate.value = rightDate.value.add(1, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year() === leftDate.value.year()\n ? leftDate.value.year() + 1\n : rightDate.value.year()\n })\n\n return {\n leftPrevYear,\n rightNextYear,\n leftNextYear,\n rightPrevYear,\n leftLabel,\n rightLabel,\n leftYear,\n rightYear,\n }\n}\n"],"mappings":";;;;;;AAMA,MAAa,uBAAuB,EAClC,cACA,UACA,gBAKI;CACJ,MAAM,EAAE,MAAMA,yBAAW;CACzB,MAAM,qBAAqB;AACzB,WAAS,QAAQ,SAAS,MAAM,SAAS,GAAG,OAAO;AACnD,MAAI,CAAC,aAAa,MAChB,WAAU,QAAQ,UAAU,MAAM,SAAS,GAAG,OAAO;;CAIzD,MAAM,sBAAsB;AAC1B,MAAI,CAAC,aAAa,MAChB,UAAS,QAAQ,SAAS,MAAM,IAAI,GAAG,OAAO;AAEhD,YAAU,QAAQ,UAAU,MAAM,IAAI,GAAG,OAAO;;CAGlD,MAAM,qBAAqB;AACzB,WAAS,QAAQ,SAAS,MAAM,IAAI,GAAG,OAAO;;CAGhD,MAAM,sBAAsB;AAC1B,YAAU,QAAQ,UAAU,MAAM,SAAS,GAAG,OAAO;;AAoBvD,QAAO;EACL;EACA;EACA;EACA;EACA,mCAvB+B;AAC/B,UAAO,GAAG,SAAS,MAAM,MAAM,CAAC,GAAG,EAAE,qBAAqB;IAC1D;EAsBA,oCApBgC;AAChC,UAAO,GAAG,UAAU,MAAM,MAAM,CAAC,GAAG,EAAE,qBAAqB;IAC3D;EAmBA,kCAjB8B;AAC9B,UAAO,SAAS,MAAM,MAAM;IAC5B;EAgBA,mCAd+B;AAC/B,UAAO,UAAU,MAAM,MAAM,KAAK,SAAS,MAAM,MAAM,GACnD,SAAS,MAAM,MAAM,GAAG,IACxB,UAAU,MAAM,MAAM;IAC1B;EAWD"}

View File

@@ -0,0 +1,93 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../../hooks/use-locale/index.js');
const require_constants = require('../../../time-picker/src/constants.js');
const require_utils = require('../utils.js');
let vue = require("vue");
//#region ../../packages/components/date-picker-panel/src/composables/use-panel-date-range.ts
const usePanelDateRange = (props, emit, leftDate, rightDate) => {
const leftCurrentView = (0, vue.ref)("date");
const leftCurrentViewRef = (0, vue.ref)();
const rightCurrentView = (0, vue.ref)("date");
const rightCurrentViewRef = (0, vue.ref)();
const { disabledDate } = (0, vue.inject)(require_constants.PICKER_BASE_INJECTION_KEY).props;
const { t, lang } = require_index.useLocale();
const leftYear = (0, vue.computed)(() => {
return leftDate.value.year();
});
const leftMonth = (0, vue.computed)(() => {
return leftDate.value.month();
});
const rightYear = (0, vue.computed)(() => {
return rightDate.value.year();
});
const rightMonth = (0, vue.computed)(() => {
return rightDate.value.month();
});
function computedYearLabel(currentView, yearValue) {
const yearTranslation = t("el.datepicker.year");
if (currentView.value === "year") {
const startYear = Math.floor(yearValue.value / 10) * 10;
return yearTranslation ? `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}` : `${startYear} - ${startYear + 9}`;
}
return `${yearValue.value} ${yearTranslation}`;
}
function focusPicker(currentViewRef) {
currentViewRef?.focus();
}
async function showPicker(pickerType, view) {
if (props.disabled) return;
const currentView = pickerType === "left" ? leftCurrentView : rightCurrentView;
const currentViewRef = pickerType === "left" ? leftCurrentViewRef : rightCurrentViewRef;
currentView.value = view;
await (0, vue.nextTick)();
focusPicker(currentViewRef.value);
}
async function handlePick(mode, pickerType, value) {
if (props.disabled) return;
const isLeftPicker = pickerType === "left";
const startDate = isLeftPicker ? leftDate : rightDate;
const endDate = isLeftPicker ? rightDate : leftDate;
const currentView = isLeftPicker ? leftCurrentView : rightCurrentView;
const currentViewRef = isLeftPicker ? leftCurrentViewRef : rightCurrentViewRef;
if (mode === "year") startDate.value = require_utils.getValidDateOfYear(startDate.value.year(value), lang.value, disabledDate);
if (mode === "month") startDate.value = require_utils.getValidDateOfMonth(startDate.value, startDate.value.year(), value, lang.value, disabledDate);
if (!props.unlinkPanels) endDate.value = pickerType === "left" ? startDate.value.add(1, "month") : startDate.value.subtract(1, "month");
currentView.value = mode === "year" ? "month" : "date";
await (0, vue.nextTick)();
focusPicker(currentViewRef.value);
handlePanelChange(mode);
}
function handlePanelChange(mode) {
emit("panel-change", [leftDate.value.toDate(), rightDate.value.toDate()], mode);
}
function adjustDateByView(currentView, date, forward) {
const action = forward ? "add" : "subtract";
return currentView === "year" ? date[action](10, "year") : date[action](1, "year");
}
return {
leftCurrentView,
rightCurrentView,
leftCurrentViewRef,
rightCurrentViewRef,
leftYear,
rightYear,
leftMonth,
rightMonth,
leftYearLabel: (0, vue.computed)(() => computedYearLabel(leftCurrentView, leftYear)),
rightYearLabel: (0, vue.computed)(() => computedYearLabel(rightCurrentView, rightYear)),
showLeftPicker: (view) => showPicker("left", view),
showRightPicker: (view) => showPicker("right", view),
handleLeftYearPick: (year) => handlePick("year", "left", year),
handleRightYearPick: (year) => handlePick("year", "right", year),
handleLeftMonthPick: (month) => handlePick("month", "left", month),
handleRightMonthPick: (month) => handlePick("month", "right", month),
handlePanelChange,
adjustDateByView
};
};
//#endregion
exports.usePanelDateRange = usePanelDateRange;
//# sourceMappingURL=use-panel-date-range.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,106 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../../hooks/use-locale/index.js');
const require_index$1 = require('../../../../hooks/use-namespace/index.js');
const require_constants = require('../constants.js');
const require_utils = require('../utils.js');
const require_use_shortcut = require('./use-shortcut.js');
let lodash_unified = require("lodash-unified");
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/date-picker-panel/src/composables/use-range-picker.ts
const useRangePicker = (props, { defaultValue, defaultTime, leftDate, rightDate, step, unit, sortDates }) => {
const { emit } = (0, vue.getCurrentInstance)();
const { pickerNs } = (0, vue.inject)(require_constants.ROOT_PICKER_INJECTION_KEY);
const drpNs = require_index$1.useNamespace("date-range-picker");
const { t, lang } = require_index.useLocale();
const handleShortcutClick = require_use_shortcut.useShortcut(lang);
const minDate = (0, vue.ref)();
const maxDate = (0, vue.ref)();
const rangeState = (0, vue.ref)({
endDate: null,
selecting: false
});
const handleChangeRange = (val) => {
rangeState.value = val;
};
const handleRangeConfirm = (visible = false) => {
const _minDate = (0, vue.unref)(minDate);
const _maxDate = (0, vue.unref)(maxDate);
if (require_utils.isValidRange([_minDate, _maxDate])) emit("pick", [_minDate, _maxDate], visible);
};
const onSelect = (selecting) => {
rangeState.value.selecting = selecting;
if (!selecting) rangeState.value.endDate = null;
};
const parseValue = (parsedValue) => {
if ((0, _vue_shared.isArray)(parsedValue) && parsedValue.length === 2) {
const [start, end] = parsedValue;
minDate.value = start;
leftDate.value = start;
maxDate.value = end;
sortDates((0, vue.unref)(minDate), (0, vue.unref)(maxDate));
} else restoreDefault();
};
const restoreDefault = () => {
let [start, end] = require_utils.getDefaultValue((0, vue.unref)(defaultValue), {
lang: (0, vue.unref)(lang),
step,
unit,
unlinkPanels: props.unlinkPanels
});
const getShift = (day) => {
return day.diff(day.startOf("d"), "ms");
};
const maybeTimes = (0, vue.unref)(defaultTime);
if (maybeTimes) {
let leftShift = 0;
let rightShift = 0;
if ((0, _vue_shared.isArray)(maybeTimes)) {
const [timeStart, timeEnd] = maybeTimes.map(dayjs.default);
leftShift = getShift(timeStart);
rightShift = getShift(timeEnd);
} else {
const shift = getShift((0, dayjs.default)(maybeTimes));
leftShift = shift;
rightShift = shift;
}
start = start.startOf("d").add(leftShift, "ms");
end = end.startOf("d").add(rightShift, "ms");
}
minDate.value = void 0;
maxDate.value = void 0;
leftDate.value = start;
rightDate.value = end;
};
(0, vue.watch)(defaultValue, (val) => {
if (val) restoreDefault();
}, { immediate: true });
(0, vue.watch)(() => props.parsedValue, (parsedValue) => {
if (!parsedValue?.length || !(0, lodash_unified.isEqual)(parsedValue, [minDate.value, maxDate.value])) parseValue(parsedValue);
}, { immediate: true });
(0, vue.watch)(() => props.visible, () => {
if (props.visible) parseValue(props.parsedValue);
}, { immediate: true });
return {
minDate,
maxDate,
rangeState,
lang,
ppNs: pickerNs,
drpNs,
handleChangeRange,
handleRangeConfirm,
handleShortcutClick,
onSelect,
parseValue,
t
};
};
//#endregion
exports.useRangePicker = useRangePicker;
//# sourceMappingURL=use-range-picker.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,30 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/date-picker-panel/src/composables/use-shortcut.ts
const useShortcut = (lang) => {
const { emit } = (0, vue.getCurrentInstance)();
const attrs = (0, vue.useAttrs)();
const slots = (0, vue.useSlots)();
const handleShortcutClick = (shortcut) => {
const shortcutValues = (0, _vue_shared.isFunction)(shortcut.value) ? shortcut.value() : shortcut.value;
if (shortcutValues) {
emit("pick", [(0, dayjs.default)(shortcutValues[0]).locale(lang.value), (0, dayjs.default)(shortcutValues[1]).locale(lang.value)]);
return;
}
if (shortcut.onClick) shortcut.onClick({
attrs,
slots,
emit
});
};
return handleShortcutClick;
};
//#endregion
exports.useShortcut = useShortcut;
//# sourceMappingURL=use-shortcut.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"use-shortcut.js","names":[],"sources":["../../../../../../../packages/components/date-picker-panel/src/composables/use-shortcut.ts"],"sourcesContent":["import { getCurrentInstance, useAttrs, useSlots } from 'vue'\nimport dayjs from 'dayjs'\nimport { isFunction } from '@element-plus/utils'\n\nimport type { SetupContext } from 'vue'\nimport type { useLocale } from '@element-plus/hooks'\nimport type { RangePickerSharedEmits } from '../props/shared'\n\n// FIXME: extract this to `date-picker.ts`\nexport type Shortcut = {\n text: string\n value: [Date, Date] | (() => [Date, Date])\n onClick?: (ctx: Omit<SetupContext<RangePickerSharedEmits>, 'expose'>) => void\n}\n\nexport const useShortcut = (lang: ReturnType<typeof useLocale>['lang']) => {\n const { emit } = getCurrentInstance()!\n const attrs = useAttrs()\n const slots = useSlots()\n\n const handleShortcutClick = (shortcut: Shortcut) => {\n const shortcutValues = isFunction(shortcut.value)\n ? shortcut.value()\n : shortcut.value\n\n if (shortcutValues) {\n emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick({\n attrs,\n slots,\n emit,\n })\n }\n }\n\n return handleShortcutClick\n}\n"],"mappings":";;;;;;;;AAeA,MAAa,eAAe,SAA+C;CACzE,MAAM,EAAE,sCAA6B;CACrC,MAAM,2BAAkB;CACxB,MAAM,2BAAkB;CAExB,MAAM,uBAAuB,aAAuB;EAClD,MAAM,6CAA4B,SAAS,MAAM,GAC7C,SAAS,OAAO,GAChB,SAAS;AAEb,MAAI,gBAAgB;AAClB,QAAK,QAAQ,oBACL,eAAe,GAAG,CAAC,OAAO,KAAK,MAAM,qBACrC,eAAe,GAAG,CAAC,OAAO,KAAK,MAAM,CAC5C,CAAC;AACF;;AAEF,MAAI,SAAS,QACX,UAAS,QAAQ;GACf;GACA;GACA;GACD,CAAC;;AAIN,QAAO"}

View File

@@ -0,0 +1,45 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
let vue = require("vue");
//#region ../../packages/components/date-picker-panel/src/composables/use-year-range-header.ts
const useYearRangeHeader = ({ unlinkPanels, leftDate, rightDate }) => {
const leftPrevYear = () => {
leftDate.value = leftDate.value.subtract(10, "year");
if (!unlinkPanels.value) rightDate.value = rightDate.value.subtract(10, "year");
};
const rightNextYear = () => {
if (!unlinkPanels.value) leftDate.value = leftDate.value.add(10, "year");
rightDate.value = rightDate.value.add(10, "year");
};
const leftNextYear = () => {
leftDate.value = leftDate.value.add(10, "year");
};
const rightPrevYear = () => {
rightDate.value = rightDate.value.subtract(10, "year");
};
return {
leftPrevYear,
rightNextYear,
leftNextYear,
rightPrevYear,
leftLabel: (0, vue.computed)(() => {
const leftStartDate = Math.floor(leftDate.value.year() / 10) * 10;
return `${leftStartDate}-${leftStartDate + 9}`;
}),
rightLabel: (0, vue.computed)(() => {
const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10;
return `${rightStartDate}-${rightStartDate + 9}`;
}),
leftYear: (0, vue.computed)(() => {
return Math.floor(leftDate.value.year() / 10) * 10 + 9;
}),
rightYear: (0, vue.computed)(() => {
return Math.floor(rightDate.value.year() / 10) * 10;
})
};
};
//#endregion
exports.useYearRangeHeader = useYearRangeHeader;
//# sourceMappingURL=use-year-range-header.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"use-year-range-header.js","names":[],"sources":["../../../../../../../packages/components/date-picker-panel/src/composables/use-year-range-header.ts"],"sourcesContent":["import { computed } from 'vue'\n\nimport type { Ref, ToRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const useYearRangeHeader = ({\n unlinkPanels,\n leftDate,\n rightDate,\n}: {\n unlinkPanels: ToRef<boolean>\n leftDate: Ref<Dayjs>\n rightDate: Ref<Dayjs>\n}) => {\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(10, 'year')\n if (!unlinkPanels.value) {\n rightDate.value = rightDate.value.subtract(10, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!unlinkPanels.value) {\n leftDate.value = leftDate.value.add(10, 'year')\n }\n rightDate.value = rightDate.value.add(10, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(10, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(10, 'year')\n }\n\n const leftLabel = computed(() => {\n const leftStartDate = Math.floor(leftDate.value.year() / 10) * 10\n return `${leftStartDate}-${leftStartDate + 9}`\n })\n\n const rightLabel = computed(() => {\n const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10\n return `${rightStartDate}-${rightStartDate + 9}`\n })\n\n const leftYear = computed(() => {\n const leftEndDate = Math.floor(leftDate.value.year() / 10) * 10 + 9\n return leftEndDate\n })\n\n const rightYear = computed(() => {\n const rightStartDate = Math.floor(rightDate.value.year() / 10) * 10\n return rightStartDate\n })\n\n return {\n leftPrevYear,\n rightNextYear,\n leftNextYear,\n rightPrevYear,\n leftLabel,\n rightLabel,\n leftYear,\n rightYear,\n }\n}\n"],"mappings":";;;;;AAKA,MAAa,sBAAsB,EACjC,cACA,UACA,gBAKI;CACJ,MAAM,qBAAqB;AACzB,WAAS,QAAQ,SAAS,MAAM,SAAS,IAAI,OAAO;AACpD,MAAI,CAAC,aAAa,MAChB,WAAU,QAAQ,UAAU,MAAM,SAAS,IAAI,OAAO;;CAI1D,MAAM,sBAAsB;AAC1B,MAAI,CAAC,aAAa,MAChB,UAAS,QAAQ,SAAS,MAAM,IAAI,IAAI,OAAO;AAEjD,YAAU,QAAQ,UAAU,MAAM,IAAI,IAAI,OAAO;;CAGnD,MAAM,qBAAqB;AACzB,WAAS,QAAQ,SAAS,MAAM,IAAI,IAAI,OAAO;;CAGjD,MAAM,sBAAsB;AAC1B,YAAU,QAAQ,UAAU,MAAM,SAAS,IAAI,OAAO;;AAuBxD,QAAO;EACL;EACA;EACA;EACA;EACA,mCAzB+B;GAC/B,MAAM,gBAAgB,KAAK,MAAM,SAAS,MAAM,MAAM,GAAG,GAAG,GAAG;AAC/D,UAAO,GAAG,cAAc,GAAG,gBAAgB;IAC3C;EAuBA,oCArBgC;GAChC,MAAM,iBAAiB,KAAK,MAAM,UAAU,MAAM,MAAM,GAAG,GAAG,GAAG;AACjE,UAAO,GAAG,eAAe,GAAG,iBAAiB;IAC7C;EAmBA,kCAjB8B;AAE9B,UADoB,KAAK,MAAM,SAAS,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK;IAElE;EAeA,mCAb+B;AAE/B,UADuB,KAAK,MAAM,UAAU,MAAM,MAAM,GAAG,GAAG,GAAG;IAEjE;EAWD"}

View File

@@ -0,0 +1,13 @@
import { UseNamespaceReturn } from "../../../hooks/use-namespace/index.js";
import "../../../hooks/index.js";
import { InjectionKey, SetupContext } from "vue";
//#region ../../packages/components/date-picker-panel/src/constants.d.ts
interface DatePickerContext {
slots: SetupContext['slots'];
pickerNs: UseNamespaceReturn;
}
declare const ROOT_PICKER_INJECTION_KEY: InjectionKey<DatePickerContext>;
declare const ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = "ElIsDefaultFormat";
//#endregion
export { ROOT_PICKER_INJECTION_KEY, ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY };

View File

@@ -0,0 +1,10 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
//#region ../../packages/components/date-picker-panel/src/constants.ts
const ROOT_PICKER_INJECTION_KEY = Symbol("rootPickerContextKey");
const ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = "ElIsDefaultFormat";
//#endregion
exports.ROOT_PICKER_INJECTION_KEY = ROOT_PICKER_INJECTION_KEY;
exports.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY;
//# sourceMappingURL=constants.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants.js","names":[],"sources":["../../../../../../packages/components/date-picker-panel/src/constants.ts"],"sourcesContent":["import type { InjectionKey, SetupContext } from 'vue'\nimport type { UseNamespaceReturn } from '@element-plus/hooks'\n\ninterface DatePickerContext {\n slots: SetupContext['slots']\n pickerNs: UseNamespaceReturn\n}\n\nexport const ROOT_PICKER_INJECTION_KEY: InjectionKey<DatePickerContext> =\n Symbol('rootPickerContextKey')\n\nexport const ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY = 'ElIsDefaultFormat'\n"],"mappings":";;;AAQA,MAAa,4BACX,OAAO,uBAAuB;AAEhC,MAAa,8CAA8C"}

View File

@@ -0,0 +1,23 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../../hooks/use-namespace/index.js');
const require_constants = require('../constants.js');
const require_basic_cell = require('../props/basic-cell.js');
let vue = require("vue");
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-cell-render.tsx
var basic_cell_render_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElDatePickerCell",
props: require_basic_cell.basicCellProps,
setup(props) {
const ns = require_index.useNamespace("date-table-cell");
const { slots } = (0, vue.inject)(require_constants.ROOT_PICKER_INJECTION_KEY);
return () => {
const { cell } = props;
return (0, vue.renderSlot)(slots, "default", { ...cell }, () => [(0, vue.createVNode)("div", { "class": ns.b() }, [(0, vue.createVNode)("span", { "class": ns.e("text") }, [cell?.renderText ?? cell?.text])])]);
};
}
});
//#endregion
exports.default = basic_cell_render_default;
//# sourceMappingURL=basic-cell-render.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"basic-cell-render.js","names":["defineComponent","inject","renderSlot","createVNode","_createVNode","useNamespace","ROOT_PICKER_INJECTION_KEY","basicCellProps","name","props","setup","ns","slots","cell","b","e","renderText","text"],"sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/basic-cell-render.tsx"],"sourcesContent":["import { defineComponent, inject, renderSlot } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ROOT_PICKER_INJECTION_KEY } from '../constants'\nimport { basicCellProps } from '../props/basic-cell'\n\nexport default defineComponent({\n name: 'ElDatePickerCell',\n props: basicCellProps,\n setup(props) {\n const ns = useNamespace('date-table-cell')\n const { slots } = inject(ROOT_PICKER_INJECTION_KEY)!\n return () => {\n const { cell } = props\n\n return renderSlot(slots, 'default', { ...cell }, () => [\n <div class={ns.b()}>\n <span class={ns.e('text')}>{cell?.renderText ?? cell?.text}</span>\n </div>,\n ])\n }\n },\n})\n"],"mappings":";;;;;;;AAKA,gCAAeA,yCAAgB;CAC7BQ,MAAM;CACNC,OAAOF;CACPG,MAAMD,OAAO;EACX,MAAME,KAAKN,2BAAa,kBAAkB;EAC1C,MAAM,EAAEO,0BAAiBN,4CAA2B;AACpD,eAAa;GACX,MAAM,EAAEO,SAASJ;AAEjB,8BAAkBG,OAAO,WAAW,EAAE,GAAGC,MAAM,QAAQ,sBAAA,OAAA,EAAA,SACzCF,GAAGG,GAAE,EAAC,EAAA,sBAAA,QAAA,EAAA,SACHH,GAAGI,EAAE,OAAM,EAAC,EAAA,CAAGF,MAAMG,cAAcH,MAAMI,KAAI,CAAA,CAAA,CAAA,CAE7D,CAAC;;;CAGP,CAAC"}

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_basic_date_table_vue_vue_type_script_setup_true_lang = require('./basic-date-table.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue
var basic_date_table_default = require_basic_date_table_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = basic_date_table_default;
//# sourceMappingURL=basic-date-table.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"basic-date-table.js","names":[],"sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue"],"sourcesContent":["<template>\n <table\n :aria-label=\"tableLabel\"\n :class=\"tableKls\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n role=\"grid\"\n @click=\"handlePickDate\"\n @mousemove=\"handleMouseMove\"\n @mousedown=\"handleMouseDown\"\n @mouseup=\"handleMouseUp\"\n >\n <tbody ref=\"tbodyRef\">\n <tr>\n <th v-if=\"showWeekNumber\" scope=\"col\" :class=\"weekHeaderClass\" />\n <th\n v-for=\"(week, key) in WEEKS\"\n :key=\"key\"\n :aria-label=\"t('el.datepicker.weeksFull.' + week)\"\n scope=\"col\"\n >\n {{ t('el.datepicker.weeks.' + week) }}\n </th>\n </tr>\n <tr\n v-for=\"(row, rowKey) in rows\"\n :key=\"rowKey\"\n :class=\"getRowKls(showWeekNumber ? row[2] : row[1])\"\n >\n <td\n v-for=\"(cell, columnKey) in row\"\n :key=\"`${rowKey}.${columnKey}`\"\n :ref=\"\n (el) =>\n !isUnmounting &&\n isSelectedCell(cell) &&\n (currentCellRef = el as HTMLElement)\n \"\n :class=\"getCellClasses(cell)\"\n :aria-current=\"cell.isCurrent ? 'date' : undefined\"\n :aria-selected=\"cell.isCurrent\"\n :tabindex=\"disabled ? undefined : isSelectedCell(cell) ? 0 : -1\"\n :aria-disabled=\"disabled\"\n @focus=\"handleFocus\"\n >\n <el-date-picker-cell :cell=\"cell\" />\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onBeforeUnmount } from 'vue'\nimport {\n basicDateTableEmits,\n basicDateTableProps,\n} from '../props/basic-date-table'\nimport {\n useBasicDateTable,\n useBasicDateTableDOM,\n} from '../composables/use-basic-date-table'\nimport ElDatePickerCell from './basic-cell-render'\n\nconst props = defineProps(basicDateTableProps)\nconst emit = defineEmits(basicDateTableEmits)\n\nconst {\n WEEKS,\n rows,\n tbodyRef,\n currentCellRef,\n\n focus,\n isCurrent,\n isWeekActive,\n isSelectedCell,\n\n handlePickDate,\n handleMouseUp,\n handleMouseDown,\n handleMouseMove,\n handleFocus,\n} = useBasicDateTable(props, emit)\nconst { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } =\n useBasicDateTableDOM(props, {\n isCurrent,\n isWeekActive,\n })\nlet isUnmounting = false\n\nonBeforeUnmount(() => {\n isUnmounting = true\n})\n\ndefineExpose({\n /**\n * @description focus on current cell\n */\n focus,\n})\n</script>\n"],"mappings":""}

View File

@@ -0,0 +1,80 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_basic_date_table = require('../props/basic-date-table.js');
const require_use_basic_date_table = require('../composables/use-basic-date-table.js');
const require_basic_cell_render = require('./basic-cell-render.js');
let vue = require("vue");
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = ["aria-label"];
const _hoisted_2 = ["aria-label"];
const _hoisted_3 = [
"aria-current",
"aria-selected",
"tabindex",
"aria-disabled"
];
var basic_date_table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "basic-date-table",
props: require_basic_date_table.basicDateTableProps,
emits: require_basic_date_table.basicDateTableEmits,
setup(__props, { expose: __expose, emit: __emit }) {
const props = __props;
const { WEEKS, rows, tbodyRef, currentCellRef, focus, isCurrent, isWeekActive, isSelectedCell, handlePickDate, handleMouseUp, handleMouseDown, handleMouseMove, handleFocus } = require_use_basic_date_table.useBasicDateTable(props, __emit);
const { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } = require_use_basic_date_table.useBasicDateTableDOM(props, {
isCurrent,
isWeekActive
});
let isUnmounting = false;
(0, vue.onBeforeUnmount)(() => {
isUnmounting = true;
});
__expose({ focus });
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("table", {
"aria-label": (0, vue.unref)(tableLabel),
class: (0, vue.normalizeClass)((0, vue.unref)(tableKls)),
cellspacing: "0",
cellpadding: "0",
role: "grid",
onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(handlePickDate) && (0, vue.unref)(handlePickDate)(...args)),
onMousemove: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(handleMouseMove) && (0, vue.unref)(handleMouseMove)(...args)),
onMousedown: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(handleMouseDown) && (0, vue.unref)(handleMouseDown)(...args)),
onMouseup: _cache[4] || (_cache[4] = (...args) => (0, vue.unref)(handleMouseUp) && (0, vue.unref)(handleMouseUp)(...args))
}, [(0, vue.createElementVNode)("tbody", {
ref_key: "tbodyRef",
ref: tbodyRef
}, [(0, vue.createElementVNode)("tr", null, [_ctx.showWeekNumber ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("th", {
key: 0,
scope: "col",
class: (0, vue.normalizeClass)((0, vue.unref)(weekHeaderClass))
}, null, 2)) : (0, vue.createCommentVNode)("v-if", true), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(WEEKS), (week, key) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("th", {
key,
"aria-label": (0, vue.unref)(t)("el.datepicker.weeksFull." + week),
scope: "col"
}, (0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.weeks." + week)), 9, _hoisted_2);
}), 128))]), ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(rows), (row, rowKey) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("tr", {
key: rowKey,
class: (0, vue.normalizeClass)((0, vue.unref)(getRowKls)(_ctx.showWeekNumber ? row[2] : row[1]))
}, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(row, (cell, columnKey) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", {
key: `${rowKey}.${columnKey}`,
ref_for: true,
ref: (el) => !(0, vue.unref)(isUnmounting) && (0, vue.unref)(isSelectedCell)(cell) && (currentCellRef.value = el),
class: (0, vue.normalizeClass)((0, vue.unref)(getCellClasses)(cell)),
"aria-current": cell.isCurrent ? "date" : void 0,
"aria-selected": cell.isCurrent,
tabindex: _ctx.disabled ? void 0 : (0, vue.unref)(isSelectedCell)(cell) ? 0 : -1,
"aria-disabled": _ctx.disabled,
onFocus: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(handleFocus) && (0, vue.unref)(handleFocus)(...args))
}, [(0, vue.createVNode)((0, vue.unref)(require_basic_cell_render.default), { cell }, null, 8, ["cell"])], 42, _hoisted_3);
}), 128))], 2);
}), 128))], 512)], 42, _hoisted_1);
};
}
});
//#endregion
exports.default = basic_date_table_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=basic-date-table.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"basic-date-table.vue_vue_type_script_setup_true_lang.js","names":["showWeekNumber","disabled"],"sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue"],"sourcesContent":["<template>\n <table\n :aria-label=\"tableLabel\"\n :class=\"tableKls\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n role=\"grid\"\n @click=\"handlePickDate\"\n @mousemove=\"handleMouseMove\"\n @mousedown=\"handleMouseDown\"\n @mouseup=\"handleMouseUp\"\n >\n <tbody ref=\"tbodyRef\">\n <tr>\n <th v-if=\"showWeekNumber\" scope=\"col\" :class=\"weekHeaderClass\" />\n <th\n v-for=\"(week, key) in WEEKS\"\n :key=\"key\"\n :aria-label=\"t('el.datepicker.weeksFull.' + week)\"\n scope=\"col\"\n >\n {{ t('el.datepicker.weeks.' + week) }}\n </th>\n </tr>\n <tr\n v-for=\"(row, rowKey) in rows\"\n :key=\"rowKey\"\n :class=\"getRowKls(showWeekNumber ? row[2] : row[1])\"\n >\n <td\n v-for=\"(cell, columnKey) in row\"\n :key=\"`${rowKey}.${columnKey}`\"\n :ref=\"\n (el) =>\n !isUnmounting &&\n isSelectedCell(cell) &&\n (currentCellRef = el as HTMLElement)\n \"\n :class=\"getCellClasses(cell)\"\n :aria-current=\"cell.isCurrent ? 'date' : undefined\"\n :aria-selected=\"cell.isCurrent\"\n :tabindex=\"disabled ? undefined : isSelectedCell(cell) ? 0 : -1\"\n :aria-disabled=\"disabled\"\n @focus=\"handleFocus\"\n >\n <el-date-picker-cell :cell=\"cell\" />\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onBeforeUnmount } from 'vue'\nimport {\n basicDateTableEmits,\n basicDateTableProps,\n} from '../props/basic-date-table'\nimport {\n useBasicDateTable,\n useBasicDateTableDOM,\n} from '../composables/use-basic-date-table'\nimport ElDatePickerCell from './basic-cell-render'\n\nconst props = defineProps(basicDateTableProps)\nconst emit = defineEmits(basicDateTableEmits)\n\nconst {\n WEEKS,\n rows,\n tbodyRef,\n currentCellRef,\n\n focus,\n isCurrent,\n isWeekActive,\n isSelectedCell,\n\n handlePickDate,\n handleMouseUp,\n handleMouseDown,\n handleMouseMove,\n handleFocus,\n} = useBasicDateTable(props, emit)\nconst { tableLabel, tableKls, getCellClasses, getRowKls, weekHeaderClass, t } =\n useBasicDateTableDOM(props, {\n isCurrent,\n isWeekActive,\n })\nlet isUnmounting = false\n\nonBeforeUnmount(() => {\n isUnmounting = true\n})\n\ndefineExpose({\n /**\n * @description focus on current cell\n */\n focus,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAgEA,MAAM,QAAQ;EAGd,MAAM,EACJ,OACA,MACA,UACA,gBAEA,OACA,WACA,cACA,gBAEA,gBACA,eACA,iBACA,iBACA,gBACE,+CAAkB,OAlBT,OAkBoB;EACjC,MAAM,EAAE,YAAY,UAAU,gBAAgB,WAAW,iBAAiB,MACxE,kDAAqB,OAAO;GAC1B;GACA;GACD,CAAA;EACH,IAAI,eAAe;AAEnB,iCAAsB;AACpB,kBAAe;IAChB;AAED,WAAa,EAIX,OACD,CAAA;;4DAnDS,SAAA;IA/CL,6BAAY,WAAU;IACtB,8CAAO,SAAQ,CAAA;IAChB,aAAY;IACZ,aAAY;IACZ,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,iCAAE,eAAA,mBAAA,eAAA,CAAA,GAAA,KAAc;IACrB,aAAS,OAAA,OAAA,OAAA,iCAAE,gBAAA,mBAAA,gBAAA,CAAA,GAAA,KAAe;IAC1B,aAAS,OAAA,OAAA,OAAA,iCAAE,gBAAA,mBAAA,gBAAA,CAAA,GAAA,KAAe;IAC1B,WAAO,OAAA,OAAA,OAAA,iCAAE,cAAA,mBAAA,cAAA,CAAA,GAAA,KAAa;mCAsCf,SAAA;aApCG;IAAJ,KAAI;mCAWJ,MAAA,MAAA,CATOA,KAAAA,oEAAuD,MAAA;;IAAvC,OAAM;IAAO,8CAAO,gBAAe,CAAA;oHAQxD,cAAA,yCANmB,MAAK,GAAnB,MAAM,QAAG;6DAMd,MAAA;KALG;KACL,6BAAY,EAAC,CAAA,6BAA8B,KAAI;KAChD,OAAM;+CAEH,EAAC,CAAA,yBAA0B,KAAI,CAAA,EAAA,GAAA,WAAA;uEA0BjC,cAAA,yCAtBqB,KAAI,GAApB,KAAK,WAAM;6DAsBhB,MAAA;KArBF,KAAK;KACL,8CAAO,UAAS,CAACA,KAAAA,iBAAiB,IAAG,KAAM,IAAG,GAAA,CAAA;+DAmB1C,cAAA,0BAhByB,MAApB,MAAM,cAAS;8DAgBpB,MAAA;MAfF,KAAG,GAAK,OAAM,GAAI;;MAClB,MAAmB,uBAAsB,aAAY,mBAAkB,eAAc,CAAC,KAAI,KAAoB,eAAA,QAAiB;MAM/H,8CAAO,eAAc,CAAC,KAAI,CAAA;MAC1B,gBAAc,KAAK,YAAS,SAAY;MACxC,iBAAe,KAAK;MACpB,UAAUC,KAAAA,WAAW,wBAAY,eAAc,CAAC,KAAI,GAAA,IAAA;MACpD,iBAAeA,KAAAA;MACf,SAAK,OAAA,OAAA,OAAA,iCAAE,YAAA,mBAAA,YAAA,CAAA,GAAA,KAAW;6CAEiB,kCAAA,EAAA,EAAR,MAAI,EAAA,MAAA,GAAA,CAAA,OAAA,CAAA"}

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_basic_month_table_vue_vue_type_script_setup_true_lang = require('./basic-month-table.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue
var basic_month_table_default = require_basic_month_table_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = basic_month_table_default;
//# sourceMappingURL=basic-month-table.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,209 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_style = require('../../../../utils/dom/style.js');
const require_arrays = require('../../../../utils/arrays.js');
const require_index = require('../../../../hooks/use-locale/index.js');
const require_index$1 = require('../../../../hooks/use-namespace/index.js');
const require_utils = require('../utils.js');
const require_basic_cell_render = require('./basic-cell-render.js');
const require_basic_month_table = require('../props/basic-month-table.js');
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = ["aria-label"];
const _hoisted_2 = [
"aria-selected",
"aria-label",
"tabindex",
"onKeydown"
];
var basic_month_table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "basic-month-table",
props: require_basic_month_table.basicMonthTableProps,
emits: [
"changerange",
"pick",
"select"
],
setup(__props, { expose: __expose, emit: __emit }) {
const props = __props;
const emit = __emit;
const ns = require_index$1.useNamespace("month-table");
const { t, lang } = require_index.useLocale();
const tbodyRef = (0, vue.ref)();
const currentCellRef = (0, vue.ref)();
const months = (0, vue.ref)(props.date.locale("en").localeData().monthsShort().map((_) => _.toLowerCase()));
const tableRows = (0, vue.ref)([
[],
[],
[]
]);
const lastRow = (0, vue.ref)();
const lastColumn = (0, vue.ref)();
const rows = (0, vue.computed)(() => {
const rows = tableRows.value;
const now = (0, dayjs.default)().locale(lang.value).startOf("month");
for (let i = 0; i < 3; i++) {
const row = rows[i];
for (let j = 0; j < 4; j++) {
const cell = row[j] ||= {
row: i,
column: j,
type: "normal",
inRange: false,
start: false,
end: false,
text: -1,
disabled: false,
isSelected: false,
customClass: void 0,
date: void 0,
dayjs: void 0,
isCurrent: void 0,
selected: void 0,
renderText: void 0,
timestamp: void 0
};
cell.type = "normal";
const index = i * 4 + j;
const calTime = props.date.startOf("year").month(index);
const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate || null;
cell.inRange = !!(props.minDate && calTime.isSameOrAfter(props.minDate, "month") && calEndDate && calTime.isSameOrBefore(calEndDate, "month")) || !!(props.minDate && calTime.isSameOrBefore(props.minDate, "month") && calEndDate && calTime.isSameOrAfter(calEndDate, "month"));
if (props.minDate?.isSameOrAfter(calEndDate)) {
cell.start = !!(calEndDate && calTime.isSame(calEndDate, "month"));
cell.end = props.minDate && calTime.isSame(props.minDate, "month");
} else {
cell.start = !!(props.minDate && calTime.isSame(props.minDate, "month"));
cell.end = !!(calEndDate && calTime.isSame(calEndDate, "month"));
}
if (now.isSame(calTime)) cell.type = "today";
const cellDate = calTime.toDate();
cell.text = index;
cell.disabled = props.disabledDate?.(cellDate) || false;
cell.date = cellDate;
cell.customClass = props.cellClassName?.(cellDate);
cell.dayjs = calTime;
cell.timestamp = calTime.valueOf();
cell.isSelected = isSelectedCell(cell);
}
}
return rows;
});
const focus = () => {
currentCellRef.value?.focus();
};
const getCellStyle = (cell) => {
const style = {};
const year = props.date.year();
const today = /* @__PURE__ */ new Date();
const month = cell.text;
style.disabled = props.disabled || (props.disabledDate ? require_utils.datesInMonth(props.date, year, month, lang.value).every(props.disabledDate) : false);
style.current = require_arrays.castArray(props.parsedValue).some((date) => dayjs.default.isDayjs(date) && date.year() === year && date.month() === month);
style.today = today.getFullYear() === year && today.getMonth() === month;
if (cell.customClass) style[cell.customClass] = true;
if (cell.inRange) {
style["in-range"] = true;
if (cell.start) style["start-date"] = true;
if (cell.end) style["end-date"] = true;
}
return style;
};
const isSelectedCell = (cell) => {
const year = props.date.year();
const month = cell.text;
return require_arrays.castArray(props.date).some((date) => date.year() === year && date.month() === month);
};
const handleMouseMove = (event) => {
if (!props.rangeState.selecting) return;
let target = event.target;
if (target.tagName === "SPAN") 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;
if (rows.value[row][column].disabled) return;
if (row !== lastRow.value || column !== lastColumn.value) {
lastRow.value = row;
lastColumn.value = column;
emit("changerange", {
selecting: true,
endDate: props.date.startOf("year").month(row * 4 + column)
});
}
};
const handleMonthTableClick = (event) => {
if (props.disabled) return;
const target = event.target?.closest("td");
if (target?.tagName !== "TD") return;
if (require_style.hasClass(target, "disabled")) return;
const column = target.cellIndex;
const month = target.parentNode.rowIndex * 4 + column;
const newDate = props.date.startOf("year").month(month);
if (props.selectionMode === "months") {
if (event.type === "keydown") {
emit("pick", require_arrays.castArray(props.parsedValue), false);
return;
}
const newMonth = require_utils.getValidDateOfMonth(props.date, props.date.year(), month, lang.value, props.disabledDate);
emit("pick", require_style.hasClass(target, "current") ? require_arrays.castArray(props.parsedValue).filter((d) => d?.year() !== newMonth.year() || d?.month() !== newMonth.month()) : require_arrays.castArray(props.parsedValue).concat([(0, dayjs.default)(newMonth)]));
} else if (props.selectionMode === "range") if (!props.rangeState.selecting) {
emit("pick", {
minDate: newDate,
maxDate: null
});
emit("select", true);
} else {
if (props.minDate && newDate >= props.minDate) emit("pick", {
minDate: props.minDate,
maxDate: newDate
});
else emit("pick", {
minDate: newDate,
maxDate: props.minDate
});
emit("select", false);
}
else emit("pick", month);
};
(0, vue.watch)(() => props.date, async () => {
if (tbodyRef.value?.contains(document.activeElement)) {
await (0, vue.nextTick)();
currentCellRef.value?.focus();
}
});
__expose({ focus });
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("table", {
role: "grid",
"aria-label": (0, vue.unref)(t)("el.datepicker.monthTablePrompt"),
class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()),
onClick: handleMonthTableClick,
onMousemove: handleMouseMove
}, [(0, vue.createElementVNode)("tbody", {
ref_key: "tbodyRef",
ref: tbodyRef
}, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(rows.value, (row, key) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("tr", { key }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(row, (cell, key_) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", {
key: key_,
ref_for: true,
ref: (el) => cell.isSelected && (currentCellRef.value = el),
class: (0, vue.normalizeClass)(getCellStyle(cell)),
"aria-selected": !!cell.isSelected,
"aria-label": (0, vue.unref)(t)(`el.datepicker.month${+cell.text + 1}`),
tabindex: cell.isSelected ? 0 : -1,
onKeydown: [(0, vue.withKeys)((0, vue.withModifiers)(handleMonthTableClick, ["prevent", "stop"]), ["space"]), (0, vue.withKeys)((0, vue.withModifiers)(handleMonthTableClick, ["prevent", "stop"]), ["enter"])]
}, [(0, vue.createVNode)((0, vue.unref)(require_basic_cell_render.default), { cell: {
...cell,
renderText: (0, vue.unref)(t)("el.datepicker.months." + months.value[cell.text])
} }, null, 8, ["cell"])], 42, _hoisted_2);
}), 128))]);
}), 128))], 512)], 42, _hoisted_1);
};
}
});
//#endregion
exports.default = basic_month_table_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=basic-month-table.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_basic_year_table_vue_vue_type_script_setup_true_lang = require('./basic-year-table.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue
var basic_year_table_default = require_basic_year_table_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = basic_year_table_default;
//# sourceMappingURL=basic-year-table.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,211 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_style = require('../../../../utils/dom/style.js');
const require_arrays = require('../../../../utils/arrays.js');
const require_index = require('../../../../hooks/use-locale/index.js');
const require_index$1 = require('../../../../hooks/use-namespace/index.js');
const require_utils = require('../../../time-picker/src/utils.js');
const require_utils$1 = require('../utils.js');
const require_basic_cell_render = require('./basic-cell-render.js');
const require_basic_year_table = require('../props/basic-year-table.js');
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = ["aria-label"];
const _hoisted_2 = [
"aria-selected",
"aria-label",
"tabindex",
"onKeydown"
];
var basic_year_table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "basic-year-table",
props: require_basic_year_table.basicYearTableProps,
emits: [
"changerange",
"pick",
"select"
],
setup(__props, { expose: __expose, emit: __emit }) {
const datesInYear = (year, lang) => {
const firstDay = (0, dayjs.default)(String(year)).locale(lang).startOf("year");
return require_utils.rangeArr(firstDay.endOf("year").dayOfYear()).map((n) => firstDay.add(n, "day").toDate());
};
const props = __props;
const emit = __emit;
const ns = require_index$1.useNamespace("year-table");
const { t, lang } = require_index.useLocale();
const tbodyRef = (0, vue.ref)();
const currentCellRef = (0, vue.ref)();
const startYear = (0, vue.computed)(() => {
return Math.floor(props.date.year() / 10) * 10;
});
const tableRows = (0, vue.ref)([
[],
[],
[]
]);
const lastRow = (0, vue.ref)();
const lastColumn = (0, vue.ref)();
const rows = (0, vue.computed)(() => {
const rows = tableRows.value;
const now = (0, dayjs.default)().locale(lang.value).startOf("year");
for (let i = 0; i < 3; i++) {
const row = rows[i];
for (let j = 0; j < 4; j++) {
if (i * 4 + j >= 10) break;
let cell = row[j];
if (!cell) cell = {
row: i,
column: j,
type: "normal",
inRange: false,
start: false,
end: false,
text: -1,
disabled: false,
isSelected: false,
customClass: void 0,
date: void 0,
dayjs: void 0,
isCurrent: void 0,
selected: void 0,
renderText: void 0,
timestamp: void 0
};
cell.type = "normal";
const index = i * 4 + j + startYear.value;
const calTime = (0, dayjs.default)().year(index);
const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate || null;
cell.inRange = !!(props.minDate && calTime.isSameOrAfter(props.minDate, "year") && calEndDate && calTime.isSameOrBefore(calEndDate, "year")) || !!(props.minDate && calTime.isSameOrBefore(props.minDate, "year") && calEndDate && calTime.isSameOrAfter(calEndDate, "year"));
if (props.minDate?.isSameOrAfter(calEndDate)) {
cell.start = !!(calEndDate && calTime.isSame(calEndDate, "year"));
cell.end = !!(props.minDate && calTime.isSame(props.minDate, "year"));
} else {
cell.start = !!(props.minDate && calTime.isSame(props.minDate, "year"));
cell.end = !!(calEndDate && calTime.isSame(calEndDate, "year"));
}
if (now.isSame(calTime)) cell.type = "today";
cell.text = index;
const cellDate = calTime.toDate();
cell.disabled = props.disabledDate?.(cellDate) || false;
cell.date = cellDate;
cell.customClass = props.cellClassName?.(cellDate);
cell.dayjs = calTime;
cell.timestamp = calTime.valueOf();
cell.isSelected = isSelectedCell(cell);
row[j] = cell;
}
}
return rows;
});
const focus = () => {
currentCellRef.value?.focus();
};
const getCellKls = (cell) => {
const kls = {};
const today = (0, dayjs.default)().locale(lang.value);
const year = cell.text;
kls.disabled = props.disabled || (props.disabledDate ? datesInYear(year, lang.value).every(props.disabledDate) : false);
kls.today = today.year() === year;
kls.current = require_arrays.castArray(props.parsedValue).some((d) => d.year() === year);
if (cell.customClass) kls[cell.customClass] = true;
if (cell.inRange) {
kls["in-range"] = true;
if (cell.start) kls["start-date"] = true;
if (cell.end) kls["end-date"] = true;
}
return kls;
};
const isSelectedCell = (cell) => {
const year = cell.text;
return require_arrays.castArray(props.date).some((date) => date.year() === year);
};
const handleYearTableClick = (event) => {
if (props.disabled) return;
const target = event.target?.closest("td");
if (!target || !target.textContent || require_style.hasClass(target, "disabled")) return;
const column = target.cellIndex;
const selectedYear = target.parentNode.rowIndex * 4 + column + startYear.value;
const newDate = (0, dayjs.default)().year(selectedYear);
if (props.selectionMode === "range") if (!props.rangeState.selecting) {
emit("pick", {
minDate: newDate,
maxDate: null
});
emit("select", true);
} else {
if (props.minDate && newDate >= props.minDate) emit("pick", {
minDate: props.minDate,
maxDate: newDate
});
else emit("pick", {
minDate: newDate,
maxDate: props.minDate
});
emit("select", false);
}
else if (props.selectionMode === "years") {
if (event.type === "keydown") {
emit("pick", require_arrays.castArray(props.parsedValue), false);
return;
}
const vaildYear = require_utils$1.getValidDateOfYear(newDate.startOf("year"), lang.value, props.disabledDate);
emit("pick", require_style.hasClass(target, "current") ? require_arrays.castArray(props.parsedValue).filter((d) => d?.year() !== selectedYear) : require_arrays.castArray(props.parsedValue).concat([vaildYear]));
} else emit("pick", selectedYear);
};
const handleMouseMove = (event) => {
if (!props.rangeState.selecting) return;
const target = event.target?.closest("td");
if (!target) return;
const row = target.parentNode.rowIndex;
const column = target.cellIndex;
if (rows.value[row][column].disabled) return;
if (row !== lastRow.value || column !== lastColumn.value) {
lastRow.value = row;
lastColumn.value = column;
emit("changerange", {
selecting: true,
endDate: (0, dayjs.default)().year(startYear.value).add(row * 4 + column, "year")
});
}
};
(0, vue.watch)(() => props.date, async () => {
if (tbodyRef.value?.contains(document.activeElement)) {
await (0, vue.nextTick)();
currentCellRef.value?.focus();
}
});
__expose({ focus });
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("table", {
role: "grid",
"aria-label": (0, vue.unref)(t)("el.datepicker.yearTablePrompt"),
class: (0, vue.normalizeClass)((0, vue.unref)(ns).b()),
onClick: handleYearTableClick,
onMousemove: handleMouseMove
}, [(0, vue.createElementVNode)("tbody", {
ref_key: "tbodyRef",
ref: tbodyRef
}, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(rows.value, (row, rowKey) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("tr", { key: rowKey }, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(row, (cell, cellKey) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("td", {
key: `${rowKey}_${cellKey}`,
ref_for: true,
ref: (el) => cell.isSelected && (currentCellRef.value = el),
class: (0, vue.normalizeClass)(["available", getCellKls(cell)]),
"aria-selected": cell.isSelected,
"aria-label": String(cell.text),
tabindex: cell.isSelected ? 0 : -1,
onKeydown: [(0, vue.withKeys)((0, vue.withModifiers)(handleYearTableClick, ["prevent", "stop"]), ["space"]), (0, vue.withKeys)((0, vue.withModifiers)(handleYearTableClick, ["prevent", "stop"]), ["enter"])]
}, [(0, vue.createVNode)((0, vue.unref)(require_basic_cell_render.default), { cell }, null, 8, ["cell"])], 42, _hoisted_2);
}), 128))]);
}), 128))], 512)], 42, _hoisted_1);
};
}
});
//#endregion
exports.default = basic_year_table_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=basic-year-table.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_panel_date_pick_vue_vue_type_script_setup_true_lang = require('./panel-date-pick.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue
var panel_date_pick_default = require_panel_date_pick_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = panel_date_pick_default;
//# sourceMappingURL=panel-date-pick.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,650 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_aria = require('../../../../constants/aria.js');
const require_event = require('../../../../utils/dom/event.js');
const require_arrays = require('../../../../utils/arrays.js');
const require_index = require('../../../../directives/click-outside/index.js');
const require_index$1 = require('../../../../hooks/use-locale/index.js');
const require_index$2 = require('../../../../hooks/use-namespace/index.js');
const require_index$3 = require('../../../icon/index.js');
const require_use_form_common_props = require('../../../form/src/hooks/use-form-common-props.js');
const require_index$4 = require('../../../input/index.js');
const require_index$5 = require('../../../button/index.js');
const require_constants = require('../../../time-picker/src/constants.js');
const require_utils = require('../../../time-picker/src/utils.js');
const require_panel_time_pick = require('../../../time-picker/src/time-picker-com/panel-time-pick.js');
const require_constants$1 = require('../constants.js');
const require_panel_date_pick = require('../props/panel-date-pick.js');
const require_utils$1 = require('../utils.js');
const require_basic_date_table = require('./basic-date-table.js');
const require_basic_month_table = require('./basic-month-table.js');
const require_basic_year_table = require('./basic-year-table.js');
let _element_plus_icons_vue = require("@element-plus/icons-vue");
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = ["disabled", "onClick"];
const _hoisted_2 = ["aria-label", "disabled"];
const _hoisted_3 = ["aria-label", "disabled"];
const _hoisted_4 = ["tabindex", "aria-disabled"];
const _hoisted_5 = ["tabindex", "aria-disabled"];
const _hoisted_6 = ["aria-label", "disabled"];
const _hoisted_7 = ["aria-label", "disabled"];
var panel_date_pick_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "panel-date-pick",
props: require_panel_date_pick.panelDatePickProps,
emits: [
"pick",
"set-picker-option",
"panel-change"
],
setup(__props, { emit: __emit }) {
const timeWithinRange = (_, __, ___) => true;
const props = __props;
const contextEmit = __emit;
const ppNs = require_index$2.useNamespace("picker-panel");
const dpNs = require_index$2.useNamespace("date-picker");
const attrs = (0, vue.useAttrs)();
const slots = (0, vue.useSlots)();
const { t, lang } = require_index$1.useLocale();
const pickerBase = (0, vue.inject)(require_constants.PICKER_BASE_INJECTION_KEY);
const isDefaultFormat = (0, vue.inject)(require_constants$1.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0);
const { shortcuts, disabledDate, cellClassName, defaultTime } = pickerBase.props;
const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue");
const currentViewRef = (0, vue.ref)();
const innerDate = (0, vue.ref)((0, dayjs.default)().locale(lang.value));
const isChangeToNow = (0, vue.ref)(false);
let isShortcut = false;
const defaultTimeD = (0, vue.computed)(() => {
return (0, dayjs.default)(defaultTime).locale(lang.value);
});
const month = (0, vue.computed)(() => {
return innerDate.value.month();
});
const year = (0, vue.computed)(() => {
return innerDate.value.year();
});
const selectableRange = (0, vue.ref)([]);
const userInputDate = (0, vue.ref)(null);
const userInputTime = (0, vue.ref)(null);
const checkDateWithinRange = (date) => {
return selectableRange.value.length > 0 ? timeWithinRange(date, selectableRange.value, props.format || require_constants.DEFAULT_FORMATS_TIME) : true;
};
const formatEmit = (emitDayjs) => {
if (defaultTime && !visibleTime.value && !isChangeToNow.value && !isShortcut) return defaultTimeD.value.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());
if (showTime.value) return emitDayjs.millisecond(0);
return emitDayjs.startOf("day");
};
const emit = (value, ...args) => {
if (!value) contextEmit("pick", value, ...args);
else if ((0, _vue_shared.isArray)(value)) contextEmit("pick", value.map(formatEmit), ...args);
else contextEmit("pick", formatEmit(value), ...args);
userInputDate.value = null;
userInputTime.value = null;
isChangeToNow.value = false;
isShortcut = false;
};
const handleDatePick = async (value, keepOpen) => {
if (selectionMode.value === "date" && dayjs.default.isDayjs(value)) {
const parsedDateValue = require_arrays.extractFirst(props.parsedValue);
let newDate = parsedDateValue ? parsedDateValue.year(value.year()).month(value.month()).date(value.date()) : value;
if (!checkDateWithinRange(newDate)) newDate = selectableRange.value[0][0].year(value.year()).month(value.month()).date(value.date());
innerDate.value = newDate;
emit(newDate, showTime.value || keepOpen);
} else if (selectionMode.value === "week") emit(value.date);
else if (selectionMode.value === "dates") emit(value, true);
};
const moveByMonth = (forward) => {
const action = forward ? "add" : "subtract";
innerDate.value = innerDate.value[action](1, "month");
handlePanelChange("month");
};
const moveByYear = (forward) => {
const currentDate = innerDate.value;
const action = forward ? "add" : "subtract";
innerDate.value = currentView.value === "year" ? currentDate[action](10, "year") : currentDate[action](1, "year");
handlePanelChange("year");
};
const currentView = (0, vue.ref)("date");
const yearLabel = (0, vue.computed)(() => {
const yearTranslation = t("el.datepicker.year");
if (currentView.value === "year") {
const startYear = Math.floor(year.value / 10) * 10;
if (yearTranslation) return `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}`;
return `${startYear} - ${startYear + 9}`;
}
return `${year.value} ${yearTranslation}`;
});
const handleShortcutClick = (shortcut) => {
const shortcutValue = (0, _vue_shared.isFunction)(shortcut.value) ? shortcut.value() : shortcut.value;
if (shortcutValue) {
isShortcut = true;
emit((0, dayjs.default)(shortcutValue).locale(lang.value));
return;
}
if (shortcut.onClick) shortcut.onClick({
attrs,
slots,
emit: contextEmit
});
};
const selectionMode = (0, vue.computed)(() => {
const { type } = props;
if ([
"week",
"month",
"months",
"year",
"years",
"dates"
].includes(type)) return type;
return "date";
});
const isMultipleType = (0, vue.computed)(() => {
return selectionMode.value === "dates" || selectionMode.value === "months" || selectionMode.value === "years";
});
const keyboardMode = (0, vue.computed)(() => {
return selectionMode.value === "date" ? currentView.value : selectionMode.value;
});
const hasShortcuts = (0, vue.computed)(() => !!shortcuts.length);
const handleMonthPick = async (month, keepOpen) => {
if (selectionMode.value === "month") {
innerDate.value = require_utils$1.getValidDateOfMonth(innerDate.value, innerDate.value.year(), month, lang.value, disabledDate);
emit(innerDate.value, false);
} else if (selectionMode.value === "months") emit(month, keepOpen ?? true);
else {
innerDate.value = require_utils$1.getValidDateOfMonth(innerDate.value, innerDate.value.year(), month, lang.value, disabledDate);
currentView.value = "date";
if ([
"month",
"year",
"date",
"week"
].includes(selectionMode.value)) {
emit(innerDate.value, true);
await (0, vue.nextTick)();
handleFocusPicker();
}
}
handlePanelChange("month");
};
const handleYearPick = async (year, keepOpen) => {
if (selectionMode.value === "year") {
innerDate.value = require_utils$1.getValidDateOfYear(innerDate.value.startOf("year").year(year), lang.value, disabledDate);
emit(innerDate.value, false);
} else if (selectionMode.value === "years") emit(year, keepOpen ?? true);
else {
innerDate.value = require_utils$1.getValidDateOfYear(innerDate.value.year(year), lang.value, disabledDate);
currentView.value = "month";
if ([
"month",
"year",
"date",
"week"
].includes(selectionMode.value)) {
emit(innerDate.value, true);
await (0, vue.nextTick)();
handleFocusPicker();
}
}
handlePanelChange("year");
};
const dateDisabled = require_use_form_common_props.useFormDisabled();
const showPicker = async (view) => {
if (dateDisabled.value) return;
currentView.value = view;
await (0, vue.nextTick)();
handleFocusPicker();
};
const showTime = (0, vue.computed)(() => props.type === "datetime" || props.type === "datetimerange");
const footerVisible = (0, vue.computed)(() => {
const showDateFooter = showTime.value || selectionMode.value === "dates";
const showYearFooter = selectionMode.value === "years";
const showMonthFooter = selectionMode.value === "months";
const isDateView = currentView.value === "date";
const isYearView = currentView.value === "year";
const isMonthView = currentView.value === "month";
return showDateFooter && isDateView || showYearFooter && isYearView || showMonthFooter && isMonthView;
});
const footerFilled = (0, vue.computed)(() => !isMultipleType.value && props.showNow || props.showConfirm);
const disabledConfirm = (0, vue.computed)(() => {
if (!disabledDate) return false;
if (!props.parsedValue) return true;
if ((0, _vue_shared.isArray)(props.parsedValue)) return disabledDate(props.parsedValue[0].toDate());
return disabledDate(props.parsedValue.toDate());
});
const onConfirm = () => {
if (isMultipleType.value) emit(props.parsedValue);
else {
let result = require_arrays.extractFirst(props.parsedValue);
if (!result) {
const defaultTimeD = (0, dayjs.default)(defaultTime).locale(lang.value);
const defaultValueD = getDefaultValue();
result = defaultTimeD.year(defaultValueD.year()).month(defaultValueD.month()).date(defaultValueD.date());
}
innerDate.value = result;
emit(result);
}
};
const disabledNow = (0, vue.computed)(() => {
if (!disabledDate) return false;
return disabledDate((0, dayjs.default)().locale(lang.value).toDate());
});
const changeToNow = () => {
const nowDate = (0, dayjs.default)().locale(lang.value).toDate();
isChangeToNow.value = true;
if ((!disabledDate || !disabledDate(nowDate)) && checkDateWithinRange(nowDate)) {
innerDate.value = (0, dayjs.default)().locale(lang.value);
emit(innerDate.value);
}
};
const timeFormat = (0, vue.computed)(() => {
return props.timeFormat || require_utils.extractTimeFormat(props.format) || require_constants.DEFAULT_FORMATS_TIME;
});
const dateFormat = (0, vue.computed)(() => {
return props.dateFormat || require_utils.extractDateFormat(props.format) || require_constants.DEFAULT_FORMATS_DATE;
});
const visibleTime = (0, vue.computed)(() => {
if (userInputTime.value) return userInputTime.value;
if (!props.parsedValue && !defaultValue.value) return;
return (require_arrays.extractFirst(props.parsedValue) || innerDate.value).format(timeFormat.value);
});
const visibleDate = (0, vue.computed)(() => {
if (userInputDate.value) return userInputDate.value;
if (!props.parsedValue && !defaultValue.value) return;
return (require_arrays.extractFirst(props.parsedValue) || innerDate.value).format(dateFormat.value);
});
const timePickerVisible = (0, vue.ref)(false);
const onTimePickerInputFocus = () => {
timePickerVisible.value = true;
};
const handleTimePickClose = () => {
timePickerVisible.value = false;
};
const getUnits = (date) => {
return {
hour: date.hour(),
minute: date.minute(),
second: date.second(),
year: date.year(),
month: date.month(),
date: date.date()
};
};
const handleTimePick = (value, visible, first) => {
const { hour, minute, second } = getUnits(value);
const parsedDateValue = require_arrays.extractFirst(props.parsedValue);
innerDate.value = parsedDateValue ? parsedDateValue.hour(hour).minute(minute).second(second) : value;
emit(innerDate.value, true);
if (!first) timePickerVisible.value = visible;
};
const handleVisibleTimeChange = (value) => {
const newDate = (0, dayjs.default)(value, timeFormat.value).locale(lang.value);
if (newDate.isValid() && checkDateWithinRange(newDate)) {
const { year, month, date } = getUnits(innerDate.value);
innerDate.value = newDate.year(year).month(month).date(date);
userInputTime.value = null;
timePickerVisible.value = false;
emit(innerDate.value, true);
}
};
const handleVisibleDateChange = (value) => {
const newDate = require_utils$1.correctlyParseUserInput(value, dateFormat.value, lang.value, isDefaultFormat);
if (newDate.isValid()) {
if (disabledDate && disabledDate(newDate.toDate())) return;
const { hour, minute, second } = getUnits(innerDate.value);
innerDate.value = newDate.hour(hour).minute(minute).second(second);
userInputDate.value = null;
emit(innerDate.value, true);
}
};
const isValidValue = (date) => {
return dayjs.default.isDayjs(date) && date.isValid() && (disabledDate ? !disabledDate(date.toDate()) : true);
};
const parseUserInput = (value) => {
return require_utils$1.correctlyParseUserInput(value, props.format, lang.value, isDefaultFormat);
};
const getDefaultValue = () => {
const parseDate = (0, dayjs.default)(defaultValue.value).locale(lang.value);
if (!defaultValue.value) {
const defaultTimeDValue = defaultTimeD.value;
return (0, dayjs.default)().hour(defaultTimeDValue.hour()).minute(defaultTimeDValue.minute()).second(defaultTimeDValue.second()).locale(lang.value);
}
return parseDate;
};
const handleFocusPicker = () => {
if ([
"week",
"month",
"year",
"date"
].includes(selectionMode.value)) currentViewRef.value?.focus();
};
const _handleFocusPicker = () => {
handleFocusPicker();
if (selectionMode.value === "week") handleKeyControl(require_aria.EVENT_CODE.down);
};
const handleKeydownTable = (event) => {
const code = require_event.getEventCode(event);
if ([
require_aria.EVENT_CODE.up,
require_aria.EVENT_CODE.down,
require_aria.EVENT_CODE.left,
require_aria.EVENT_CODE.right,
require_aria.EVENT_CODE.home,
require_aria.EVENT_CODE.end,
require_aria.EVENT_CODE.pageUp,
require_aria.EVENT_CODE.pageDown
].includes(code)) {
handleKeyControl(code);
event.stopPropagation();
event.preventDefault();
}
if ([
require_aria.EVENT_CODE.enter,
require_aria.EVENT_CODE.space,
require_aria.EVENT_CODE.numpadEnter
].includes(code) && userInputDate.value === null && userInputTime.value === null) {
event.preventDefault();
emit(innerDate.value, false);
}
};
const handleKeyControl = (code) => {
const { up, down, left, right, home, end, pageUp, pageDown } = require_aria.EVENT_CODE;
const mapping = {
year: {
[up]: -4,
[down]: 4,
[left]: -1,
[right]: 1,
offset: (date, step) => date.setFullYear(date.getFullYear() + step)
},
month: {
[up]: -4,
[down]: 4,
[left]: -1,
[right]: 1,
offset: (date, step) => date.setMonth(date.getMonth() + step)
},
week: {
[up]: -1,
[down]: 1,
[left]: -1,
[right]: 1,
offset: (date, step) => date.setDate(date.getDate() + step * 7)
},
date: {
[up]: -7,
[down]: 7,
[left]: -1,
[right]: 1,
[home]: (date) => -date.getDay(),
[end]: (date) => -date.getDay() + 6,
[pageUp]: (date) => -new Date(date.getFullYear(), date.getMonth(), 0).getDate(),
[pageDown]: (date) => new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(),
offset: (date, step) => date.setDate(date.getDate() + step)
}
};
const newDate = innerDate.value.toDate();
while (Math.abs(innerDate.value.diff(newDate, "year", true)) < 1) {
const map = mapping[keyboardMode.value];
if (!map) return;
map.offset(newDate, (0, _vue_shared.isFunction)(map[code]) ? map[code](newDate) : map[code] ?? 0);
if (disabledDate && disabledDate(newDate)) break;
const result = (0, dayjs.default)(newDate).locale(lang.value);
innerDate.value = result;
contextEmit("pick", result, true);
break;
}
};
const handlePanelChange = (mode) => {
contextEmit("panel-change", innerDate.value.toDate(), mode, currentView.value);
};
(0, vue.watch)(() => selectionMode.value, (val) => {
if (["month", "year"].includes(val)) {
currentView.value = val;
return;
} else if (val === "years") {
currentView.value = "year";
return;
} else if (val === "months") {
currentView.value = "month";
return;
}
currentView.value = "date";
}, { immediate: true });
(0, vue.watch)(() => defaultValue.value, (val) => {
if (val) innerDate.value = getDefaultValue();
}, { immediate: true });
(0, vue.watch)(() => props.parsedValue, (val) => {
if (val) {
if (isMultipleType.value) return;
if ((0, _vue_shared.isArray)(val)) return;
innerDate.value = val;
} else innerDate.value = getDefaultValue();
}, { immediate: true });
contextEmit("set-picker-option", ["isValidValue", isValidValue]);
contextEmit("set-picker-option", ["parseUserInput", parseUserInput]);
contextEmit("set-picker-option", ["handleFocusPicker", _handleFocusPicker]);
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([
(0, vue.unref)(ppNs).b(),
(0, vue.unref)(dpNs).b(),
(0, vue.unref)(ppNs).is("border", _ctx.border),
(0, vue.unref)(ppNs).is("disabled", (0, vue.unref)(dateDisabled)),
{
"has-sidebar": _ctx.$slots.sidebar || hasShortcuts.value,
"has-time": showTime.value
}
]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [
(0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }),
hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar"))
}, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(shortcuts), (shortcut, key) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key,
type: "button",
disabled: (0, vue.unref)(dateDisabled),
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")),
onClick: ($event) => handleShortcutClick(shortcut)
}, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1);
}), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [
showTime.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("time-header"))
}, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("editor-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(require_index$4.ElInput), {
placeholder: (0, vue.unref)(t)("el.datepicker.selectDate"),
"model-value": visibleDate.value,
size: "small",
"validate-event": false,
disabled: (0, vue.unref)(dateDisabled),
readonly: !_ctx.editable,
onInput: _cache[0] || (_cache[0] = (val) => userInputDate.value = val),
onChange: handleVisibleDateChange
}, null, 8, [
"placeholder",
"model-value",
"disabled",
"readonly"
])], 2), (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("editor-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(require_index$4.ElInput), {
placeholder: (0, vue.unref)(t)("el.datepicker.selectTime"),
"model-value": visibleTime.value,
size: "small",
"validate-event": false,
disabled: (0, vue.unref)(dateDisabled),
readonly: !_ctx.editable,
onFocus: onTimePickerInputFocus,
onInput: _cache[1] || (_cache[1] = (val) => userInputTime.value = val),
onChange: handleVisibleTimeChange
}, null, 8, [
"placeholder",
"model-value",
"disabled",
"readonly"
]), (0, vue.createVNode)((0, vue.unref)(require_panel_time_pick.default), {
visible: timePickerVisible.value,
format: timeFormat.value,
"parsed-value": innerDate.value,
onPick: handleTimePick
}, null, 8, [
"visible",
"format",
"parsed-value"
])], 2)), [[(0, vue.unref)(require_index.default), handleTimePickClose]])], 2)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.withDirectives)((0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([(0, vue.unref)(dpNs).e("header"), (currentView.value === "year" || currentView.value === "month") && (0, vue.unref)(dpNs).em("header", "bordered")]) }, [
(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("prev-btn")) }, [(0, vue.createElementVNode)("button", {
type: "button",
"aria-label": (0, vue.unref)(t)(`el.datepicker.prevYear`),
class: (0, vue.normalizeClass)(["d-arrow-left", (0, vue.unref)(ppNs).e("icon-btn")]),
disabled: (0, vue.unref)(dateDisabled),
onClick: _cache[2] || (_cache[2] = ($event) => moveByYear(false))
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowLeft))]),
_: 1
})])], 10, _hoisted_2), (0, vue.withDirectives)((0, vue.createElementVNode)("button", {
type: "button",
"aria-label": (0, vue.unref)(t)(`el.datepicker.prevMonth`),
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-left"]),
disabled: (0, vue.unref)(dateDisabled),
onClick: _cache[3] || (_cache[3] = ($event) => moveByMonth(false))
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ArrowLeft))]),
_: 1
})])], 10, _hoisted_3), [[vue.vShow, currentView.value === "date"]])], 2),
(0, vue.createElementVNode)("span", {
role: "button",
class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("header-label")),
"aria-live": "polite",
tabindex: _ctx.disabled ? void 0 : 0,
"aria-disabled": _ctx.disabled,
onKeydown: _cache[4] || (_cache[4] = (0, vue.withKeys)(($event) => showPicker("year"), ["enter"])),
onClick: _cache[5] || (_cache[5] = ($event) => showPicker("year"))
}, (0, vue.toDisplayString)(yearLabel.value), 43, _hoisted_4),
(0, vue.withDirectives)((0, vue.createElementVNode)("span", {
role: "button",
"aria-live": "polite",
tabindex: _ctx.disabled ? void 0 : 0,
"aria-disabled": _ctx.disabled,
class: (0, vue.normalizeClass)([(0, vue.unref)(dpNs).e("header-label"), { active: currentView.value === "month" }]),
onKeydown: _cache[6] || (_cache[6] = (0, vue.withKeys)(($event) => showPicker("month"), ["enter"])),
onClick: _cache[7] || (_cache[7] = ($event) => showPicker("month"))
}, (0, vue.toDisplayString)((0, vue.unref)(t)(`el.datepicker.month${month.value + 1}`)), 43, _hoisted_5), [[vue.vShow, currentView.value === "date"]]),
(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(dpNs).e("next-btn")) }, [(0, vue.withDirectives)((0, vue.createElementVNode)("button", {
type: "button",
"aria-label": (0, vue.unref)(t)(`el.datepicker.nextMonth`),
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-right"]),
disabled: (0, vue.unref)(dateDisabled),
onClick: _cache[8] || (_cache[8] = ($event) => moveByMonth(true))
}, [(0, vue.renderSlot)(_ctx.$slots, "next-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ArrowRight))]),
_: 1
})])], 10, _hoisted_6), [[vue.vShow, currentView.value === "date"]]), (0, vue.createElementVNode)("button", {
type: "button",
"aria-label": (0, vue.unref)(t)(`el.datepicker.nextYear`),
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-right"]),
disabled: (0, vue.unref)(dateDisabled),
onClick: _cache[9] || (_cache[9] = ($event) => moveByYear(true))
}, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowRight))]),
_: 1
})])], 10, _hoisted_7)], 2)
], 2), [[vue.vShow, currentView.value !== "time"]]),
(0, vue.createElementVNode)("div", {
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("content")),
onKeydown: handleKeydownTable
}, [
currentView.value === "date" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_date_table.default, {
key: 0,
ref_key: "currentViewRef",
ref: currentViewRef,
"selection-mode": selectionMode.value,
date: innerDate.value,
"parsed-value": _ctx.parsedValue,
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(dateDisabled),
"cell-class-name": (0, vue.unref)(cellClassName),
"show-week-number": _ctx.showWeekNumber,
onPick: handleDatePick
}, null, 8, [
"selection-mode",
"date",
"parsed-value",
"disabled-date",
"disabled",
"cell-class-name",
"show-week-number"
])) : (0, vue.createCommentVNode)("v-if", true),
currentView.value === "year" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_year_table.default, {
key: 1,
ref_key: "currentViewRef",
ref: currentViewRef,
"selection-mode": selectionMode.value,
date: innerDate.value,
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(dateDisabled),
"parsed-value": _ctx.parsedValue,
"cell-class-name": (0, vue.unref)(cellClassName),
onPick: handleYearPick
}, null, 8, [
"selection-mode",
"date",
"disabled-date",
"disabled",
"parsed-value",
"cell-class-name"
])) : (0, vue.createCommentVNode)("v-if", true),
currentView.value === "month" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_month_table.default, {
key: 2,
ref_key: "currentViewRef",
ref: currentViewRef,
"selection-mode": selectionMode.value,
date: innerDate.value,
"parsed-value": _ctx.parsedValue,
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(dateDisabled),
"cell-class-name": (0, vue.unref)(cellClassName),
onPick: handleMonthPick
}, null, 8, [
"selection-mode",
"date",
"parsed-value",
"disabled-date",
"disabled",
"cell-class-name"
])) : (0, vue.createCommentVNode)("v-if", true)
], 34)
], 2)
], 2), _ctx.showFooter && footerVisible.value && footerFilled.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("footer"))
}, [(0, vue.withDirectives)((0, vue.createVNode)((0, vue.unref)(require_index$5.ElButton), {
text: "",
size: "small",
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")),
disabled: disabledNow.value,
onClick: changeToNow
}, {
default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.now")), 1)]),
_: 1
}, 8, ["class", "disabled"]), [[vue.vShow, !isMultipleType.value && _ctx.showNow]]), _ctx.showConfirm ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$5.ElButton), {
key: 0,
plain: "",
size: "small",
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")),
disabled: disabledConfirm.value,
onClick: onConfirm
}, {
default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.confirm")), 1)]),
_: 1
}, 8, ["class", "disabled"])) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true)], 2);
};
}
});
//#endregion
exports.default = panel_date_pick_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=panel-date-pick.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_panel_date_range_vue_vue_type_script_setup_true_lang = require('./panel-date-range.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue
var panel_date_range_default = require_panel_date_range_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = panel_date_range_default;
//# sourceMappingURL=panel-date-range.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,703 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../../directives/click-outside/index.js');
const require_index$1 = require('../../../../hooks/use-locale/index.js');
const require_index$2 = require('../../../icon/index.js');
const require_use_form_common_props = require('../../../form/src/hooks/use-form-common-props.js');
const require_index$3 = require('../../../input/index.js');
const require_index$4 = require('../../../button/index.js');
const require_constants = require('../../../time-picker/src/constants.js');
const require_utils = require('../../../time-picker/src/utils.js');
const require_panel_time_pick = require('../../../time-picker/src/time-picker-com/panel-time-pick.js');
const require_constants$1 = require('../constants.js');
const require_utils$1 = require('../utils.js');
const require_basic_date_table = require('./basic-date-table.js');
const require_basic_month_table = require('./basic-month-table.js');
const require_basic_year_table = require('./basic-year-table.js');
const require_panel_date_range = require('../props/panel-date-range.js');
const require_use_range_picker = require('../composables/use-range-picker.js');
const require_use_panel_date_range = require('../composables/use-panel-date-range.js');
let _element_plus_icons_vue = require("@element-plus/icons-vue");
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = ["disabled", "onClick"];
const _hoisted_2 = ["aria-label", "disabled"];
const _hoisted_3 = ["aria-label", "disabled"];
const _hoisted_4 = ["disabled", "aria-label"];
const _hoisted_5 = ["disabled", "aria-label"];
const _hoisted_6 = ["tabindex", "aria-disabled"];
const _hoisted_7 = ["tabindex", "aria-disabled"];
const _hoisted_8 = ["disabled", "aria-label"];
const _hoisted_9 = ["disabled", "aria-label"];
const _hoisted_10 = ["aria-label", "disabled"];
const _hoisted_11 = ["disabled", "aria-label"];
const _hoisted_12 = ["tabindex", "aria-disabled"];
const _hoisted_13 = ["tabindex", "aria-disabled"];
const unit = "month";
var panel_date_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
__name: "panel-date-range",
props: require_panel_date_range.panelDateRangeProps,
emits: [
"pick",
"set-picker-option",
"calendar-change",
"panel-change",
"clear"
],
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const pickerBase = (0, vue.inject)(require_constants.PICKER_BASE_INJECTION_KEY);
const isDefaultFormat = (0, vue.inject)(require_constants$1.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0);
const { disabledDate, cellClassName, defaultTime, clearable } = pickerBase.props;
const format = (0, vue.toRef)(pickerBase.props, "format");
const shortcuts = (0, vue.toRef)(pickerBase.props, "shortcuts");
const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue");
const { lang } = require_index$1.useLocale();
const leftDate = (0, vue.ref)((0, dayjs.default)().locale(lang.value));
const rightDate = (0, vue.ref)((0, dayjs.default)().locale(lang.value).add(1, unit));
const { minDate, maxDate, rangeState, ppNs, drpNs, handleChangeRange, handleRangeConfirm, handleShortcutClick, onSelect, parseValue, t } = require_use_range_picker.useRangePicker(props, {
defaultValue,
defaultTime,
leftDate,
rightDate,
unit,
sortDates
});
(0, vue.watch)(() => props.visible, (visible) => {
if (!visible && rangeState.value.selecting) {
parseValue(props.parsedValue);
onSelect(false);
}
});
const dateUserInput = (0, vue.ref)({
min: null,
max: null
});
const timeUserInput = (0, vue.ref)({
min: null,
max: null
});
const { leftCurrentView, rightCurrentView, leftCurrentViewRef, rightCurrentViewRef, leftYear, rightYear, leftMonth, rightMonth, leftYearLabel, rightYearLabel, showLeftPicker, showRightPicker, handleLeftYearPick, handleRightYearPick, handleLeftMonthPick, handleRightMonthPick, handlePanelChange, adjustDateByView } = require_use_panel_date_range.usePanelDateRange(props, emit, leftDate, rightDate);
const hasShortcuts = (0, vue.computed)(() => !!shortcuts.value.length);
const minVisibleDate = (0, vue.computed)(() => {
if (dateUserInput.value.min !== null) return dateUserInput.value.min;
if (minDate.value) return minDate.value.format(dateFormat.value);
return "";
});
const maxVisibleDate = (0, vue.computed)(() => {
if (dateUserInput.value.max !== null) return dateUserInput.value.max;
if (maxDate.value || minDate.value) return (maxDate.value || minDate.value).format(dateFormat.value);
return "";
});
const minVisibleTime = (0, vue.computed)(() => {
if (timeUserInput.value.min !== null) return timeUserInput.value.min;
if (minDate.value) return minDate.value.format(timeFormat.value);
return "";
});
const maxVisibleTime = (0, vue.computed)(() => {
if (timeUserInput.value.max !== null) return timeUserInput.value.max;
if (maxDate.value || minDate.value) return (maxDate.value || minDate.value).format(timeFormat.value);
return "";
});
const timeFormat = (0, vue.computed)(() => {
return props.timeFormat || require_utils.extractTimeFormat(format.value || "") || require_constants.DEFAULT_FORMATS_TIME;
});
const dateFormat = (0, vue.computed)(() => {
return props.dateFormat || require_utils.extractDateFormat(format.value || "") || require_constants.DEFAULT_FORMATS_DATE;
});
const isValidValue = (date) => {
return require_utils$1.isValidRange(date) && (disabledDate ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate()) : true);
};
const leftPrevYear = () => {
leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, false);
if (!props.unlinkPanels) rightDate.value = leftDate.value.add(1, "month");
handlePanelChange("year");
};
const leftPrevMonth = () => {
leftDate.value = leftDate.value.subtract(1, "month");
if (!props.unlinkPanels) rightDate.value = leftDate.value.add(1, "month");
handlePanelChange("month");
};
const rightNextYear = () => {
if (!props.unlinkPanels) {
leftDate.value = adjustDateByView(rightCurrentView.value, leftDate.value, true);
rightDate.value = leftDate.value.add(1, "month");
} else rightDate.value = adjustDateByView(rightCurrentView.value, rightDate.value, true);
handlePanelChange("year");
};
const rightNextMonth = () => {
if (!props.unlinkPanels) {
leftDate.value = leftDate.value.add(1, "month");
rightDate.value = leftDate.value.add(1, "month");
} else rightDate.value = rightDate.value.add(1, "month");
handlePanelChange("month");
};
const leftNextYear = () => {
leftDate.value = adjustDateByView(leftCurrentView.value, leftDate.value, true);
handlePanelChange("year");
};
const leftNextMonth = () => {
leftDate.value = leftDate.value.add(1, "month");
handlePanelChange("month");
};
const rightPrevYear = () => {
rightDate.value = adjustDateByView(rightCurrentView.value, rightDate.value, false);
handlePanelChange("year");
};
const rightPrevMonth = () => {
rightDate.value = rightDate.value.subtract(1, "month");
handlePanelChange("month");
};
const enableMonthArrow = (0, vue.computed)(() => {
const nextMonth = (leftMonth.value + 1) % 12;
const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0;
return props.unlinkPanels && new Date(leftYear.value + yearOffset, nextMonth) < new Date(rightYear.value, rightMonth.value);
});
const enableYearArrow = (0, vue.computed)(() => {
return props.unlinkPanels && rightYear.value * 12 + rightMonth.value - (leftYear.value * 12 + leftMonth.value + 1) >= 12;
});
const dateRangeDisabled = require_use_form_common_props.useFormDisabled();
const btnDisabled = (0, vue.computed)(() => {
return !(minDate.value && maxDate.value && !rangeState.value.selecting && require_utils$1.isValidRange([minDate.value, maxDate.value]) && !dateRangeDisabled.value);
});
const showTime = (0, vue.computed)(() => props.type === "datetime" || props.type === "datetimerange");
const formatEmit = (emitDayjs, index) => {
if (!emitDayjs) return;
if (defaultTime) return (0, dayjs.default)(defaultTime[index] || defaultTime).locale(lang.value).year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());
return emitDayjs;
};
const handleRangePick = (val, close = true) => {
const min_ = val.minDate;
const max_ = val.maxDate;
const minDate_ = formatEmit(min_, 0);
const maxDate_ = formatEmit(max_, 1);
if (maxDate.value === maxDate_ && minDate.value === minDate_) return;
emit("calendar-change", [min_.toDate(), max_ && max_.toDate()]);
maxDate.value = maxDate_;
minDate.value = minDate_;
if (!showTime.value && close) close = !minDate_ || !maxDate_;
handleRangeConfirm(close);
};
const minTimePickerVisible = (0, vue.ref)(false);
const maxTimePickerVisible = (0, vue.ref)(false);
const handleMinTimeClose = () => {
minTimePickerVisible.value = false;
};
const handleMaxTimeClose = () => {
maxTimePickerVisible.value = false;
};
const handleDateInput = (value, type) => {
dateUserInput.value[type] = value;
const parsedValueD = (0, dayjs.default)(value, dateFormat.value).locale(lang.value);
if (parsedValueD.isValid()) {
if (disabledDate && disabledDate(parsedValueD.toDate())) return;
if (type === "min") {
leftDate.value = parsedValueD;
minDate.value = (minDate.value || leftDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());
if (!props.unlinkPanels && (!maxDate.value || maxDate.value.isBefore(minDate.value))) {
rightDate.value = parsedValueD.add(1, "month");
maxDate.value = minDate.value.add(1, "month");
}
} else {
rightDate.value = parsedValueD;
maxDate.value = (maxDate.value || rightDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());
if (!props.unlinkPanels && (!minDate.value || minDate.value.isAfter(maxDate.value))) {
leftDate.value = parsedValueD.subtract(1, "month");
minDate.value = maxDate.value.subtract(1, "month");
}
}
sortDates(minDate.value, maxDate.value);
handleRangeConfirm(true);
}
};
const handleDateChange = (_, type) => {
dateUserInput.value[type] = null;
};
const handleTimeInput = (value, type) => {
timeUserInput.value[type] = value;
const parsedValueD = (0, dayjs.default)(value, timeFormat.value).locale(lang.value);
if (parsedValueD.isValid()) if (type === "min") {
minTimePickerVisible.value = true;
minDate.value = (minDate.value || leftDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());
leftDate.value = minDate.value;
} else {
maxTimePickerVisible.value = true;
maxDate.value = (maxDate.value || rightDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());
rightDate.value = maxDate.value;
}
};
const handleTimeChange = (_value, type) => {
timeUserInput.value[type] = null;
if (type === "min") {
leftDate.value = minDate.value;
minTimePickerVisible.value = false;
if (!maxDate.value || maxDate.value.isBefore(minDate.value)) maxDate.value = minDate.value;
} else {
rightDate.value = maxDate.value;
maxTimePickerVisible.value = false;
if (maxDate.value && maxDate.value.isBefore(minDate.value)) minDate.value = maxDate.value;
}
handleRangeConfirm(true);
};
const handleMinTimePick = (value, visible, first) => {
if (timeUserInput.value.min) return;
if (value) minDate.value = (minDate.value || leftDate.value).hour(value.hour()).minute(value.minute()).second(value.second());
if (!first) minTimePickerVisible.value = visible;
if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {
maxDate.value = minDate.value;
rightDate.value = value;
(0, vue.nextTick)(() => {
parseValue(props.parsedValue);
});
}
handleRangeConfirm(true);
};
const handleMaxTimePick = (value, visible, first) => {
if (timeUserInput.value.max) return;
if (value) maxDate.value = (maxDate.value || rightDate.value).hour(value.hour()).minute(value.minute()).second(value.second());
if (!first) maxTimePickerVisible.value = visible;
if (maxDate.value && maxDate.value.isBefore(minDate.value)) minDate.value = maxDate.value;
handleRangeConfirm(true);
};
const onClear = () => {
handleClear();
emit("clear");
};
const handleClear = () => {
let valueOnClear = null;
if (pickerBase?.emptyValues) valueOnClear = pickerBase.emptyValues.valueOnClear.value;
leftDate.value = require_utils$1.getDefaultValue((0, vue.unref)(defaultValue), {
lang: (0, vue.unref)(lang),
unit: "month",
unlinkPanels: props.unlinkPanels
})[0];
rightDate.value = leftDate.value.add(1, "month");
maxDate.value = void 0;
minDate.value = void 0;
handleRangeConfirm(true);
emit("pick", valueOnClear);
};
const parseUserInput = (value) => {
return require_utils$1.correctlyParseUserInput(value, format.value || "", lang.value, isDefaultFormat);
};
function sortDates(minDate, maxDate) {
if (props.unlinkPanels && maxDate) {
const minDateYear = minDate?.year() || 0;
const minDateMonth = minDate?.month() || 0;
const maxDateYear = maxDate.year();
const maxDateMonth = maxDate.month();
rightDate.value = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? maxDate.add(1, unit) : maxDate;
} else {
rightDate.value = leftDate.value.add(1, unit);
if (maxDate) rightDate.value = rightDate.value.hour(maxDate.hour()).minute(maxDate.minute()).second(maxDate.second());
}
}
emit("set-picker-option", ["isValidValue", isValidValue]);
emit("set-picker-option", ["parseUserInput", parseUserInput]);
emit("set-picker-option", ["handleClear", handleClear]);
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([
(0, vue.unref)(ppNs).b(),
(0, vue.unref)(drpNs).b(),
(0, vue.unref)(ppNs).is("border", _ctx.border),
(0, vue.unref)(ppNs).is("disabled", (0, vue.unref)(dateRangeDisabled)),
{
"has-sidebar": _ctx.$slots.sidebar || hasShortcuts.value,
"has-time": showTime.value
}
]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [
(0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }),
hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar"))
}, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(shortcuts.value, (shortcut, key) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key,
type: "button",
disabled: (0, vue.unref)(dateRangeDisabled),
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")),
onClick: ($event) => (0, vue.unref)(handleShortcutClick)(shortcut)
}, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1);
}), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [
showTime.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-header"))
}, [
(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editors-wrap")) }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElInput), {
size: "small",
disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled),
placeholder: (0, vue.unref)(t)("el.datepicker.startDate"),
class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")),
"model-value": minVisibleDate.value,
"validate-event": false,
readonly: !_ctx.editable,
onInput: _cache[0] || (_cache[0] = (val) => handleDateInput(val, "min")),
onChange: _cache[1] || (_cache[1] = (val) => handleDateChange(val, "min"))
}, null, 8, [
"disabled",
"placeholder",
"class",
"model-value",
"readonly"
])], 2), (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElInput), {
size: "small",
class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")),
disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled),
placeholder: (0, vue.unref)(t)("el.datepicker.startTime"),
"model-value": minVisibleTime.value,
"validate-event": false,
readonly: !_ctx.editable,
onFocus: _cache[2] || (_cache[2] = ($event) => minTimePickerVisible.value = true),
onInput: _cache[3] || (_cache[3] = (val) => handleTimeInput(val, "min")),
onChange: _cache[4] || (_cache[4] = (val) => handleTimeChange(val, "min"))
}, null, 8, [
"class",
"disabled",
"placeholder",
"model-value",
"readonly"
]), (0, vue.createVNode)((0, vue.unref)(require_panel_time_pick.default), {
visible: minTimePickerVisible.value,
format: timeFormat.value,
"datetime-role": "start",
"parsed-value": (0, vue.unref)(minDate) || leftDate.value,
onPick: handleMinTimePick
}, null, 8, [
"visible",
"format",
"parsed-value"
])], 2)), [[(0, vue.unref)(require_index.default), handleMinTimeClose]])], 2),
(0, vue.createElementVNode)("span", null, [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ArrowRight))]),
_: 1
})]),
(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)([(0, vue.unref)(drpNs).e("editors-wrap"), "is-right"]) }, [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElInput), {
size: "small",
class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")),
disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled),
placeholder: (0, vue.unref)(t)("el.datepicker.endDate"),
"model-value": maxVisibleDate.value,
readonly: !(0, vue.unref)(minDate) || !_ctx.editable,
"validate-event": false,
onInput: _cache[5] || (_cache[5] = (val) => handleDateInput(val, "max")),
onChange: _cache[6] || (_cache[6] = (val) => handleDateChange(val, "max"))
}, null, 8, [
"class",
"disabled",
"placeholder",
"model-value",
"readonly"
])], 2), (0, vue.withDirectives)(((0, vue.openBlock)(), (0, vue.createElementBlock)("span", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("time-picker-wrap")) }, [(0, vue.createVNode)((0, vue.unref)(require_index$3.ElInput), {
size: "small",
class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("editor")),
disabled: (0, vue.unref)(rangeState).selecting || (0, vue.unref)(dateRangeDisabled),
placeholder: (0, vue.unref)(t)("el.datepicker.endTime"),
"model-value": maxVisibleTime.value,
readonly: !(0, vue.unref)(minDate) || !_ctx.editable,
"validate-event": false,
onFocus: _cache[7] || (_cache[7] = ($event) => (0, vue.unref)(minDate) && (maxTimePickerVisible.value = true)),
onInput: _cache[8] || (_cache[8] = (val) => handleTimeInput(val, "max")),
onChange: _cache[9] || (_cache[9] = (val) => handleTimeChange(val, "max"))
}, null, 8, [
"class",
"disabled",
"placeholder",
"model-value",
"readonly"
]), (0, vue.createVNode)((0, vue.unref)(require_panel_time_pick.default), {
"datetime-role": "end",
visible: maxTimePickerVisible.value,
format: timeFormat.value,
"parsed-value": (0, vue.unref)(maxDate) || rightDate.value,
onPick: handleMaxTimePick
}, null, 8, [
"visible",
"format",
"parsed-value"
])], 2)), [[(0, vue.unref)(require_index.default), handleMaxTimeClose]])], 2)
], 2)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-left"]) }, [
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [
(0, vue.createElementVNode)("button", {
type: "button",
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-left"]),
"aria-label": (0, vue.unref)(t)(`el.datepicker.prevYear`),
disabled: (0, vue.unref)(dateRangeDisabled),
onClick: leftPrevYear
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowLeft))]),
_: 1
})])], 10, _hoisted_2),
(0, vue.withDirectives)((0, vue.createElementVNode)("button", {
type: "button",
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-left"]),
"aria-label": (0, vue.unref)(t)(`el.datepicker.prevMonth`),
disabled: (0, vue.unref)(dateRangeDisabled),
onClick: leftPrevMonth
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ArrowLeft))]),
_: 1
})])], 10, _hoisted_3), [[vue.vShow, (0, vue.unref)(leftCurrentView) === "date"]]),
_ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 0,
type: "button",
disabled: !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled),
class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled))], "d-arrow-right"]),
"aria-label": (0, vue.unref)(t)(`el.datepicker.nextYear`),
onClick: leftNextYear
}, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowRight))]),
_: 1
})])], 10, _hoisted_4)) : (0, vue.createCommentVNode)("v-if", true),
_ctx.unlinkPanels && (0, vue.unref)(leftCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 1,
type: "button",
disabled: !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled),
class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled))], "arrow-right"]),
"aria-label": (0, vue.unref)(t)(`el.datepicker.nextMonth`),
onClick: leftNextMonth
}, [(0, vue.renderSlot)(_ctx.$slots, "next-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ArrowRight))]),
_: 1
})])], 10, _hoisted_5)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", null, [(0, vue.createElementVNode)("span", {
role: "button",
class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header-label")),
"aria-live": "polite",
tabindex: _ctx.disabled ? void 0 : 0,
"aria-disabled": _ctx.disabled,
onKeydown: _cache[10] || (_cache[10] = (0, vue.withKeys)(($event) => (0, vue.unref)(showLeftPicker)("year"), ["enter"])),
onClick: _cache[11] || (_cache[11] = ($event) => (0, vue.unref)(showLeftPicker)("year"))
}, (0, vue.toDisplayString)((0, vue.unref)(leftYearLabel)), 43, _hoisted_6), (0, vue.withDirectives)((0, vue.createElementVNode)("span", {
role: "button",
"aria-live": "polite",
tabindex: _ctx.disabled ? void 0 : 0,
"aria-disabled": _ctx.disabled,
class: (0, vue.normalizeClass)([(0, vue.unref)(drpNs).e("header-label"), { active: (0, vue.unref)(leftCurrentView) === "month" }]),
onKeydown: _cache[12] || (_cache[12] = (0, vue.withKeys)(($event) => (0, vue.unref)(showLeftPicker)("month"), ["enter"])),
onClick: _cache[13] || (_cache[13] = ($event) => (0, vue.unref)(showLeftPicker)("month"))
}, (0, vue.toDisplayString)((0, vue.unref)(t)(`el.datepicker.month${leftDate.value.month() + 1}`)), 43, _hoisted_7), [[vue.vShow, (0, vue.unref)(leftCurrentView) === "date"]])])
], 2),
(0, vue.unref)(leftCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_date_table.default, {
key: 0,
ref_key: "leftCurrentViewRef",
ref: leftCurrentViewRef,
"selection-mode": "range",
date: leftDate.value,
"min-date": (0, vue.unref)(minDate),
"max-date": (0, vue.unref)(maxDate),
"range-state": (0, vue.unref)(rangeState),
"disabled-date": (0, vue.unref)(disabledDate),
"cell-class-name": (0, vue.unref)(cellClassName),
"show-week-number": _ctx.showWeekNumber,
disabled: (0, vue.unref)(dateRangeDisabled),
onChangerange: (0, vue.unref)(handleChangeRange),
onPick: handleRangePick,
onSelect: (0, vue.unref)(onSelect)
}, null, 8, [
"date",
"min-date",
"max-date",
"range-state",
"disabled-date",
"cell-class-name",
"show-week-number",
"disabled",
"onChangerange",
"onSelect"
])) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.unref)(leftCurrentView) === "year" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_year_table.default, {
key: 1,
ref_key: "leftCurrentViewRef",
ref: leftCurrentViewRef,
"selection-mode": "year",
date: leftDate.value,
"disabled-date": (0, vue.unref)(disabledDate),
"parsed-value": _ctx.parsedValue,
disabled: (0, vue.unref)(dateRangeDisabled),
onPick: (0, vue.unref)(handleLeftYearPick)
}, null, 8, [
"date",
"disabled-date",
"parsed-value",
"disabled",
"onPick"
])) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.unref)(leftCurrentView) === "month" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_month_table.default, {
key: 2,
ref_key: "leftCurrentViewRef",
ref: leftCurrentViewRef,
"selection-mode": "month",
date: leftDate.value,
"parsed-value": _ctx.parsedValue,
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(dateRangeDisabled),
onPick: (0, vue.unref)(handleLeftMonthPick)
}, null, 8, [
"date",
"parsed-value",
"disabled-date",
"disabled",
"onPick"
])) : (0, vue.createCommentVNode)("v-if", true)
], 2),
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-right"]) }, [
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [
_ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 0,
type: "button",
disabled: !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled),
class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(dateRangeDisabled))], "d-arrow-left"]),
"aria-label": (0, vue.unref)(t)(`el.datepicker.prevYear`),
onClick: rightPrevYear
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowLeft))]),
_: 1
})])], 10, _hoisted_8)) : (0, vue.createCommentVNode)("v-if", true),
_ctx.unlinkPanels && (0, vue.unref)(rightCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 1,
type: "button",
disabled: !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled),
class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableMonthArrow.value || (0, vue.unref)(dateRangeDisabled))], "arrow-left"]),
"aria-label": (0, vue.unref)(t)(`el.datepicker.prevMonth`),
onClick: rightPrevMonth
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ArrowLeft))]),
_: 1
})])], 10, _hoisted_9)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("button", {
type: "button",
"aria-label": (0, vue.unref)(t)(`el.datepicker.nextYear`),
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-right"]),
disabled: (0, vue.unref)(dateRangeDisabled),
onClick: rightNextYear
}, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowRight))]),
_: 1
})])], 10, _hoisted_10),
(0, vue.withDirectives)((0, vue.createElementVNode)("button", {
type: "button",
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "arrow-right"]),
disabled: (0, vue.unref)(dateRangeDisabled),
"aria-label": (0, vue.unref)(t)(`el.datepicker.nextMonth`),
onClick: rightNextMonth
}, [(0, vue.renderSlot)(_ctx.$slots, "next-month", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ArrowRight))]),
_: 1
})])], 10, _hoisted_11), [[vue.vShow, (0, vue.unref)(rightCurrentView) === "date"]]),
(0, vue.createElementVNode)("div", null, [(0, vue.createElementVNode)("span", {
role: "button",
class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header-label")),
"aria-live": "polite",
tabindex: _ctx.disabled ? void 0 : 0,
"aria-disabled": _ctx.disabled,
onKeydown: _cache[14] || (_cache[14] = (0, vue.withKeys)(($event) => (0, vue.unref)(showRightPicker)("year"), ["enter"])),
onClick: _cache[15] || (_cache[15] = ($event) => (0, vue.unref)(showRightPicker)("year"))
}, (0, vue.toDisplayString)((0, vue.unref)(rightYearLabel)), 43, _hoisted_12), (0, vue.withDirectives)((0, vue.createElementVNode)("span", {
role: "button",
"aria-live": "polite",
tabindex: _ctx.disabled ? void 0 : 0,
"aria-disabled": _ctx.disabled,
class: (0, vue.normalizeClass)([(0, vue.unref)(drpNs).e("header-label"), { active: (0, vue.unref)(rightCurrentView) === "month" }]),
onKeydown: _cache[16] || (_cache[16] = (0, vue.withKeys)(($event) => (0, vue.unref)(showRightPicker)("month"), ["enter"])),
onClick: _cache[17] || (_cache[17] = ($event) => (0, vue.unref)(showRightPicker)("month"))
}, (0, vue.toDisplayString)((0, vue.unref)(t)(`el.datepicker.month${rightDate.value.month() + 1}`)), 43, _hoisted_13), [[vue.vShow, (0, vue.unref)(rightCurrentView) === "date"]])])
], 2),
(0, vue.unref)(rightCurrentView) === "date" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_date_table.default, {
key: 0,
ref_key: "rightCurrentViewRef",
ref: rightCurrentViewRef,
"selection-mode": "range",
date: rightDate.value,
"min-date": (0, vue.unref)(minDate),
"max-date": (0, vue.unref)(maxDate),
"range-state": (0, vue.unref)(rangeState),
"disabled-date": (0, vue.unref)(disabledDate),
"cell-class-name": (0, vue.unref)(cellClassName),
"show-week-number": _ctx.showWeekNumber,
disabled: (0, vue.unref)(dateRangeDisabled),
onChangerange: (0, vue.unref)(handleChangeRange),
onPick: handleRangePick,
onSelect: (0, vue.unref)(onSelect)
}, null, 8, [
"date",
"min-date",
"max-date",
"range-state",
"disabled-date",
"cell-class-name",
"show-week-number",
"disabled",
"onChangerange",
"onSelect"
])) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.unref)(rightCurrentView) === "year" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_year_table.default, {
key: 1,
ref_key: "rightCurrentViewRef",
ref: rightCurrentViewRef,
"selection-mode": "year",
date: rightDate.value,
"disabled-date": (0, vue.unref)(disabledDate),
"parsed-value": _ctx.parsedValue,
disabled: (0, vue.unref)(dateRangeDisabled),
onPick: (0, vue.unref)(handleRightYearPick)
}, null, 8, [
"date",
"disabled-date",
"parsed-value",
"disabled",
"onPick"
])) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.unref)(rightCurrentView) === "month" ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_basic_month_table.default, {
key: 2,
ref_key: "rightCurrentViewRef",
ref: rightCurrentViewRef,
"selection-mode": "month",
date: rightDate.value,
"parsed-value": _ctx.parsedValue,
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(dateRangeDisabled),
onPick: (0, vue.unref)(handleRightMonthPick)
}, null, 8, [
"date",
"parsed-value",
"disabled-date",
"disabled",
"onPick"
])) : (0, vue.createCommentVNode)("v-if", true)
], 2)
], 2)
], 2), _ctx.showFooter && showTime.value && (_ctx.showConfirm || (0, vue.unref)(clearable)) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("footer"))
}, [(0, vue.unref)(clearable) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$4.ElButton), {
key: 0,
text: "",
size: "small",
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")),
onClick: onClear
}, {
default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.clear")), 1)]),
_: 1
}, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true), _ctx.showConfirm ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$4.ElButton), {
key: 1,
plain: "",
size: "small",
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("link-btn")),
disabled: btnDisabled.value,
onClick: _cache[18] || (_cache[18] = ($event) => (0, vue.unref)(handleRangeConfirm)(false))
}, {
default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(t)("el.datepicker.confirm")), 1)]),
_: 1
}, 8, ["class", "disabled"])) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true)], 2);
};
}
});
//#endregion
exports.default = panel_date_range_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=panel-date-range.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_panel_month_range_vue_vue_type_script_setup_true_lang = require('./panel-month-range.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue
var panel_month_range_default = require_panel_month_range_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = panel_month_range_default;
//# sourceMappingURL=panel-month-range.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,209 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../../hooks/use-locale/index.js');
const require_index$1 = require('../../../icon/index.js');
const require_use_form_common_props = require('../../../form/src/hooks/use-form-common-props.js');
const require_constants = require('../../../time-picker/src/constants.js');
const require_constants$1 = require('../constants.js');
const require_utils = require('../utils.js');
const require_basic_month_table = require('./basic-month-table.js');
const require_use_range_picker = require('../composables/use-range-picker.js');
const require_panel_month_range = require('../props/panel-month-range.js');
const require_use_month_range_header = require('../composables/use-month-range-header.js');
let _element_plus_icons_vue = require("@element-plus/icons-vue");
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = ["disabled", "onClick"];
const _hoisted_2 = ["disabled"];
const _hoisted_3 = ["disabled"];
const _hoisted_4 = ["disabled"];
const _hoisted_5 = ["disabled"];
const unit = "year";
var panel_month_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "DatePickerMonthRange",
__name: "panel-month-range",
props: require_panel_month_range.panelMonthRangeProps,
emits: require_panel_month_range.panelMonthRangeEmits,
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const { lang } = require_index.useLocale();
const pickerBase = (0, vue.inject)(require_constants.PICKER_BASE_INJECTION_KEY);
const isDefaultFormat = (0, vue.inject)(require_constants$1.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0);
const { shortcuts, disabledDate, cellClassName } = pickerBase.props;
const format = (0, vue.toRef)(pickerBase.props, "format");
const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue");
const leftDate = (0, vue.ref)((0, dayjs.default)().locale(lang.value));
const rightDate = (0, vue.ref)((0, dayjs.default)().locale(lang.value).add(1, unit));
const { minDate, maxDate, rangeState, ppNs, drpNs, handleChangeRange, handleRangeConfirm, handleShortcutClick, onSelect, parseValue } = require_use_range_picker.useRangePicker(props, {
defaultValue,
leftDate,
rightDate,
unit,
sortDates
});
const hasShortcuts = (0, vue.computed)(() => !!shortcuts.length);
const { leftPrevYear, rightNextYear, leftNextYear, rightPrevYear, leftLabel, rightLabel, leftYear, rightYear } = require_use_month_range_header.useMonthRangeHeader({
unlinkPanels: (0, vue.toRef)(props, "unlinkPanels"),
leftDate,
rightDate
});
const enableYearArrow = (0, vue.computed)(() => {
return props.unlinkPanels && rightYear.value > leftYear.value + 1;
});
const handleRangePick = (val, close = true) => {
const minDate_ = val.minDate;
const maxDate_ = val.maxDate;
if (maxDate.value === maxDate_ && minDate.value === minDate_) return;
emit("calendar-change", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]);
maxDate.value = maxDate_;
minDate.value = minDate_;
if (!close) return;
handleRangeConfirm();
};
const handleClear = () => {
let valueOnClear = null;
if (pickerBase?.emptyValues) valueOnClear = pickerBase.emptyValues.valueOnClear.value;
leftDate.value = require_utils.getDefaultValue((0, vue.unref)(defaultValue), {
lang: (0, vue.unref)(lang),
unit: "year",
unlinkPanels: props.unlinkPanels
})[0];
rightDate.value = leftDate.value.add(1, "year");
emit("pick", valueOnClear);
};
const parseUserInput = (value) => {
return require_utils.correctlyParseUserInput(value, format.value, lang.value, isDefaultFormat);
};
function sortDates(minDate, maxDate) {
if (props.unlinkPanels && maxDate) rightDate.value = (minDate?.year() || 0) === maxDate.year() ? maxDate.add(1, unit) : maxDate;
else rightDate.value = leftDate.value.add(1, unit);
}
const monthRangeDisabled = require_use_form_common_props.useFormDisabled();
(0, vue.watch)(() => props.visible, (visible) => {
if (!visible && rangeState.value.selecting) {
parseValue(props.parsedValue);
onSelect(false);
}
});
emit("set-picker-option", ["isValidValue", require_utils.isValidRange]);
emit("set-picker-option", ["parseUserInput", parseUserInput]);
emit("set-picker-option", ["handleClear", handleClear]);
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)([
(0, vue.unref)(ppNs).b(),
(0, vue.unref)(drpNs).b(),
(0, vue.unref)(ppNs).is("border", _ctx.border),
(0, vue.unref)(ppNs).is("disabled", (0, vue.unref)(monthRangeDisabled)),
{ "has-sidebar": Boolean(_ctx.$slots.sidebar) || hasShortcuts.value }
]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [
(0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }),
hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar"))
}, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(shortcuts), (shortcut, key) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key,
type: "button",
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")),
disabled: (0, vue.unref)(monthRangeDisabled),
onClick: ($event) => (0, vue.unref)(handleShortcutClick)(shortcut)
}, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1);
}), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-left"]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [
(0, vue.createElementVNode)("button", {
type: "button",
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-left"]),
disabled: (0, vue.unref)(monthRangeDisabled),
onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(leftPrevYear) && (0, vue.unref)(leftPrevYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowLeft))]),
_: 1
})])], 10, _hoisted_2),
_ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 0,
type: "button",
disabled: !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled),
class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled))], "d-arrow-right"]),
onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(leftNextYear) && (0, vue.unref)(leftNextYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowRight))]),
_: 1
})])], 10, _hoisted_3)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(leftLabel)), 1)
], 2), (0, vue.createVNode)(require_basic_month_table.default, {
"selection-mode": "range",
date: leftDate.value,
"min-date": (0, vue.unref)(minDate),
"max-date": (0, vue.unref)(maxDate),
"range-state": (0, vue.unref)(rangeState),
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(monthRangeDisabled),
"cell-class-name": (0, vue.unref)(cellClassName),
onChangerange: (0, vue.unref)(handleChangeRange),
onPick: handleRangePick,
onSelect: (0, vue.unref)(onSelect)
}, null, 8, [
"date",
"min-date",
"max-date",
"range-state",
"disabled-date",
"disabled",
"cell-class-name",
"onChangerange",
"onSelect"
])], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("content"), (0, vue.unref)(drpNs).e("content")], "is-right"]) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [
_ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 0,
type: "button",
disabled: !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled),
class: (0, vue.normalizeClass)([[(0, vue.unref)(ppNs).e("icon-btn"), (0, vue.unref)(ppNs).is("disabled", !enableYearArrow.value || (0, vue.unref)(monthRangeDisabled))], "d-arrow-left"]),
onClick: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(rightPrevYear) && (0, vue.unref)(rightPrevYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowLeft))]),
_: 1
})])], 10, _hoisted_4)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("button", {
type: "button",
class: (0, vue.normalizeClass)([(0, vue.unref)(ppNs).e("icon-btn"), "d-arrow-right"]),
disabled: (0, vue.unref)(monthRangeDisabled),
onClick: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(rightNextYear) && (0, vue.unref)(rightNextYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowRight))]),
_: 1
})])], 10, _hoisted_5),
(0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(rightLabel)), 1)
], 2), (0, vue.createVNode)(require_basic_month_table.default, {
"selection-mode": "range",
date: rightDate.value,
"min-date": (0, vue.unref)(minDate),
"max-date": (0, vue.unref)(maxDate),
"range-state": (0, vue.unref)(rangeState),
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(monthRangeDisabled),
"cell-class-name": (0, vue.unref)(cellClassName),
onChangerange: (0, vue.unref)(handleChangeRange),
onPick: handleRangePick,
onSelect: (0, vue.unref)(onSelect)
}, null, 8, [
"date",
"min-date",
"max-date",
"range-state",
"disabled-date",
"disabled",
"cell-class-name",
"onChangerange",
"onSelect"
])], 2)], 2)
], 2)], 2);
};
}
});
//#endregion
exports.default = panel_month_range_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=panel-month-range.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_panel_year_range_vue_vue_type_script_setup_true_lang = require('./panel-year-range.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue
var panel_year_range_default = require_panel_year_range_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = panel_year_range_default;
//# sourceMappingURL=panel-year-range.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,250 @@
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../../hooks/use-locale/index.js');
const require_index$1 = require('../../../icon/index.js');
const require_use_form_common_props = require('../../../form/src/hooks/use-form-common-props.js');
const require_constants = require('../../../time-picker/src/constants.js');
const require_constants$1 = require('../constants.js');
const require_utils = require('../utils.js');
const require_basic_year_table = require('./basic-year-table.js');
const require_use_range_picker = require('../composables/use-range-picker.js');
const require_panel_year_range = require('../props/panel-year-range.js');
const require_use_year_range_header = require('../composables/use-year-range-header.js');
let _element_plus_icons_vue = require("@element-plus/icons-vue");
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = ["disabled", "onClick"];
const _hoisted_2 = ["disabled"];
const _hoisted_3 = ["disabled"];
const _hoisted_4 = ["disabled"];
const _hoisted_5 = ["disabled"];
const step = 10;
const unit = "year";
var panel_year_range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "DatePickerYearRange",
__name: "panel-year-range",
props: require_panel_year_range.panelYearRangeProps,
emits: require_panel_year_range.panelYearRangeEmits,
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const { lang } = require_index.useLocale();
const leftDate = (0, vue.ref)((0, dayjs.default)().locale(lang.value));
const rightDate = (0, vue.ref)((0, dayjs.default)().locale(lang.value).add(step, unit));
const isDefaultFormat = (0, vue.inject)(require_constants$1.ROOT_PICKER_IS_DEFAULT_FORMAT_INJECTION_KEY, void 0);
const pickerBase = (0, vue.inject)(require_constants.PICKER_BASE_INJECTION_KEY);
const { shortcuts, disabledDate, cellClassName } = pickerBase.props;
const format = (0, vue.toRef)(pickerBase.props, "format");
const defaultValue = (0, vue.toRef)(pickerBase.props, "defaultValue");
const { minDate, maxDate, rangeState, ppNs, drpNs, handleChangeRange, handleRangeConfirm, handleShortcutClick, onSelect, parseValue } = require_use_range_picker.useRangePicker(props, {
defaultValue,
leftDate,
rightDate,
step,
unit,
sortDates
});
const { leftPrevYear, rightNextYear, leftNextYear, rightPrevYear, leftLabel, rightLabel, leftYear, rightYear } = require_use_year_range_header.useYearRangeHeader({
unlinkPanels: (0, vue.toRef)(props, "unlinkPanels"),
leftDate,
rightDate
});
const yearRangeDisabled = require_use_form_common_props.useFormDisabled();
const hasShortcuts = (0, vue.computed)(() => !!shortcuts.length);
const panelKls = (0, vue.computed)(() => [
ppNs.b(),
drpNs.b(),
ppNs.is("border", props.border),
ppNs.is("disabled", yearRangeDisabled.value),
{ "has-sidebar": Boolean((0, vue.useSlots)().sidebar) || hasShortcuts.value }
]);
const leftPanelKls = (0, vue.computed)(() => {
return {
content: [
ppNs.e("content"),
drpNs.e("content"),
"is-left"
],
arrowLeftBtn: [ppNs.e("icon-btn"), "d-arrow-left"],
arrowRightBtn: [
ppNs.e("icon-btn"),
ppNs.is("disabled", !enableYearArrow.value || yearRangeDisabled.value),
"d-arrow-right"
]
};
});
const rightPanelKls = (0, vue.computed)(() => {
return {
content: [
ppNs.e("content"),
drpNs.e("content"),
"is-right"
],
arrowLeftBtn: [
ppNs.e("icon-btn"),
ppNs.is("disabled", !enableYearArrow.value || yearRangeDisabled.value),
"d-arrow-left"
],
arrowRightBtn: [ppNs.e("icon-btn"), "d-arrow-right"]
};
});
const enableYearArrow = (0, vue.computed)(() => {
return props.unlinkPanels && rightYear.value > leftYear.value + 1;
});
const handleRangePick = (val, close = true) => {
const minDate_ = val.minDate;
const maxDate_ = val.maxDate;
if (maxDate.value === maxDate_ && minDate.value === minDate_) return;
emit("calendar-change", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]);
maxDate.value = maxDate_;
minDate.value = minDate_;
if (!close) return;
handleRangeConfirm();
};
const parseUserInput = (value) => {
return require_utils.correctlyParseUserInput(value, format.value, lang.value, isDefaultFormat);
};
const isValidValue = (date) => {
return require_utils.isValidRange(date) && (disabledDate ? !disabledDate(date[0].toDate()) && !disabledDate(date[1].toDate()) : true);
};
const handleClear = () => {
let valueOnClear = null;
if (pickerBase?.emptyValues) valueOnClear = pickerBase.emptyValues.valueOnClear.value;
const defaultArr = require_utils.getDefaultValue((0, vue.unref)(defaultValue), {
lang: (0, vue.unref)(lang),
step,
unit,
unlinkPanels: props.unlinkPanels
});
leftDate.value = defaultArr[0];
rightDate.value = defaultArr[1];
emit("pick", valueOnClear);
};
function sortDates(minDate, maxDate) {
if (props.unlinkPanels && maxDate) {
const minDateYear = minDate?.year() || 0;
const maxDateYear = maxDate.year();
rightDate.value = minDateYear + step > maxDateYear ? maxDate.add(step, unit) : maxDate;
} else rightDate.value = leftDate.value.add(step, unit);
}
(0, vue.watch)(() => props.visible, (visible) => {
if (!visible && rangeState.value.selecting) {
parseValue(props.parsedValue);
onSelect(false);
}
});
emit("set-picker-option", ["isValidValue", isValidValue]);
emit("set-picker-option", ["parseUserInput", parseUserInput]);
emit("set-picker-option", ["handleClear", handleClear]);
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", { class: (0, vue.normalizeClass)(panelKls.value) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body-wrapper")) }, [
(0, vue.renderSlot)(_ctx.$slots, "sidebar", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar")) }),
hasShortcuts.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("sidebar"))
}, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(shortcuts), (shortcut, key) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key,
type: "button",
class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("shortcut")),
disabled: (0, vue.unref)(yearRangeDisabled),
onClick: ($event) => (0, vue.unref)(handleShortcutClick)(shortcut)
}, (0, vue.toDisplayString)(shortcut.text), 11, _hoisted_1);
}), 128))], 2)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(ppNs).e("body")) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(leftPanelKls.value.content) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [
(0, vue.createElementVNode)("button", {
type: "button",
class: (0, vue.normalizeClass)(leftPanelKls.value.arrowLeftBtn),
disabled: (0, vue.unref)(yearRangeDisabled),
onClick: _cache[0] || (_cache[0] = (...args) => (0, vue.unref)(leftPrevYear) && (0, vue.unref)(leftPrevYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowLeft))]),
_: 1
})])], 10, _hoisted_2),
_ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 0,
type: "button",
disabled: !enableYearArrow.value || (0, vue.unref)(yearRangeDisabled),
class: (0, vue.normalizeClass)(leftPanelKls.value.arrowRightBtn),
onClick: _cache[1] || (_cache[1] = (...args) => (0, vue.unref)(leftNextYear) && (0, vue.unref)(leftNextYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowRight))]),
_: 1
})])], 10, _hoisted_3)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(leftLabel)), 1)
], 2), (0, vue.createVNode)(require_basic_year_table.default, {
"selection-mode": "range",
date: leftDate.value,
"min-date": (0, vue.unref)(minDate),
"max-date": (0, vue.unref)(maxDate),
"range-state": (0, vue.unref)(rangeState),
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(yearRangeDisabled),
"cell-class-name": (0, vue.unref)(cellClassName),
onChangerange: (0, vue.unref)(handleChangeRange),
onPick: handleRangePick,
onSelect: (0, vue.unref)(onSelect)
}, null, 8, [
"date",
"min-date",
"max-date",
"range-state",
"disabled-date",
"disabled",
"cell-class-name",
"onChangerange",
"onSelect"
])], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(rightPanelKls.value.content) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(drpNs).e("header")) }, [
_ctx.unlinkPanels ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
key: 0,
type: "button",
disabled: !enableYearArrow.value || (0, vue.unref)(yearRangeDisabled),
class: (0, vue.normalizeClass)(rightPanelKls.value.arrowLeftBtn),
onClick: _cache[2] || (_cache[2] = (...args) => (0, vue.unref)(rightPrevYear) && (0, vue.unref)(rightPrevYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "prev-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowLeft))]),
_: 1
})])], 10, _hoisted_4)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("button", {
type: "button",
class: (0, vue.normalizeClass)(rightPanelKls.value.arrowRightBtn),
disabled: (0, vue.unref)(yearRangeDisabled),
onClick: _cache[3] || (_cache[3] = (...args) => (0, vue.unref)(rightNextYear) && (0, vue.unref)(rightNextYear)(...args))
}, [(0, vue.renderSlot)(_ctx.$slots, "next-year", {}, () => [(0, vue.createVNode)((0, vue.unref)(require_index$1.ElIcon), null, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.DArrowRight))]),
_: 1
})])], 10, _hoisted_5),
(0, vue.createElementVNode)("div", null, (0, vue.toDisplayString)((0, vue.unref)(rightLabel)), 1)
], 2), (0, vue.createVNode)(require_basic_year_table.default, {
"selection-mode": "range",
date: rightDate.value,
"min-date": (0, vue.unref)(minDate),
"max-date": (0, vue.unref)(maxDate),
"range-state": (0, vue.unref)(rangeState),
"disabled-date": (0, vue.unref)(disabledDate),
disabled: (0, vue.unref)(yearRangeDisabled),
"cell-class-name": (0, vue.unref)(cellClassName),
onChangerange: (0, vue.unref)(handleChangeRange),
onPick: handleRangePick,
onSelect: (0, vue.unref)(onSelect)
}, null, 8, [
"date",
"min-date",
"max-date",
"range-state",
"disabled-date",
"disabled",
"cell-class-name",
"onChangerange",
"onSelect"
])], 2)], 2)
], 2)], 2);
};
}
});
//#endregion
exports.default = panel_year_range_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=panel-year-range.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1,154 @@
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
import "../../../utils/index.js";
import { GetDisabledHours, GetDisabledMinutes, GetDisabledSeconds, ModelValueType, SingleOrRange } from "../../time-picker/src/common/props.js";
import "../../time-picker/index.js";
import { DatePickerType } from "./types.js";
import "../../../index.js";
import * as vue from "vue";
import * as vue_jsx_runtime0 from "vue/jsx-runtime";
//#region ../../packages/components/date-picker-panel/src/date-picker-panel.d.ts
declare const _default: vue.DefineComponent<vue.ExtractPropTypes<{
readonly disabledDate: {
readonly type: vue.PropType<Function>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly cellClassName: {
readonly type: vue.PropType<Function>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly shortcuts: EpPropFinalized<ArrayConstructor, unknown, unknown, () => never[], boolean>;
readonly arrowControl: BooleanConstructor;
readonly unlinkPanels: BooleanConstructor;
readonly showNow: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: BooleanConstructor;
readonly showWeekNumber: BooleanConstructor;
readonly type: EpPropFinalized<(new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType) | (((new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType)) | null)[], unknown, unknown, "date", boolean>;
readonly clearable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly disabledHours: {
readonly type: vue.PropType<GetDisabledHours>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledMinutes: {
readonly type: vue.PropType<GetDisabledMinutes>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledSeconds: {
readonly type: vue.PropType<GetDisabledSeconds>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly valueFormat: StringConstructor;
readonly dateFormat: StringConstructor;
readonly timeFormat: StringConstructor;
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly modelValue: EpPropFinalized<(new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType) | (((new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType)) | null)[], unknown, unknown, "", boolean>;
readonly defaultValue: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>) | (((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly defaultTime: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>) | (((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly isRange: BooleanConstructor;
}>, () => vue_jsx_runtime0.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("update:modelValue" | "clear" | "calendar-change" | "panel-change" | "visible-change")[], "update:modelValue" | "clear" | "calendar-change" | "panel-change" | "visible-change", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
readonly disabledDate: {
readonly type: vue.PropType<Function>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly cellClassName: {
readonly type: vue.PropType<Function>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly shortcuts: EpPropFinalized<ArrayConstructor, unknown, unknown, () => never[], boolean>;
readonly arrowControl: BooleanConstructor;
readonly unlinkPanels: BooleanConstructor;
readonly showNow: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: BooleanConstructor;
readonly showWeekNumber: BooleanConstructor;
readonly type: EpPropFinalized<(new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType) | (((new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType)) | null)[], unknown, unknown, "date", boolean>;
readonly clearable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly disabledHours: {
readonly type: vue.PropType<GetDisabledHours>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledMinutes: {
readonly type: vue.PropType<GetDisabledMinutes>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledSeconds: {
readonly type: vue.PropType<GetDisabledSeconds>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly valueFormat: StringConstructor;
readonly dateFormat: StringConstructor;
readonly timeFormat: StringConstructor;
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly modelValue: EpPropFinalized<(new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType) | (((new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType)) | null)[], unknown, unknown, "", boolean>;
readonly defaultValue: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>) | (((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly defaultTime: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>) | (((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly isRange: BooleanConstructor;
}>> & Readonly<{
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
onClear?: ((...args: any[]) => any) | undefined;
"onCalendar-change"?: ((...args: any[]) => any) | undefined;
"onPanel-change"?: ((...args: any[]) => any) | undefined;
"onVisible-change"?: ((...args: any[]) => any) | undefined;
}>, {
readonly type: EpPropMergeType<(new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType) | (((new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType)) | null)[], unknown, unknown>;
readonly disabled: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly modelValue: EpPropMergeType<(new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType) | (((new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType)) | null)[], unknown, unknown>;
readonly clearable: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly border: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly editable: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly shortcuts: unknown[];
readonly showNow: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showConfirm: boolean;
readonly showFooter: boolean;
readonly showWeekNumber: boolean;
readonly arrowControl: boolean;
readonly unlinkPanels: boolean;
readonly isRange: boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
//#endregion
export { _default };

View File

@@ -0,0 +1,78 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_event = require('../../../constants/event.js');
const require_types = require('../../../utils/types.js');
const require_index = require('../../../hooks/use-namespace/index.js');
const require_constants = require('../../time-picker/src/constants.js');
const require_use_common_picker = require('../../time-picker/src/composables/use-common-picker.js');
const require_date_picker_panel = require('./props/date-picker-panel.js');
const require_constants$1 = require('./constants.js');
const require_panel_utils = require('./panel-utils.js');
let lodash_unified = require("lodash-unified");
let vue = require("vue");
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
let dayjs_plugin_customParseFormat_js = require("dayjs/plugin/customParseFormat.js");
dayjs_plugin_customParseFormat_js = require_runtime.__toESM(dayjs_plugin_customParseFormat_js);
let dayjs_plugin_localeData_js = require("dayjs/plugin/localeData.js");
dayjs_plugin_localeData_js = require_runtime.__toESM(dayjs_plugin_localeData_js);
let dayjs_plugin_advancedFormat_js = require("dayjs/plugin/advancedFormat.js");
dayjs_plugin_advancedFormat_js = require_runtime.__toESM(dayjs_plugin_advancedFormat_js);
let dayjs_plugin_weekOfYear_js = require("dayjs/plugin/weekOfYear.js");
dayjs_plugin_weekOfYear_js = require_runtime.__toESM(dayjs_plugin_weekOfYear_js);
let dayjs_plugin_weekYear_js = require("dayjs/plugin/weekYear.js");
dayjs_plugin_weekYear_js = require_runtime.__toESM(dayjs_plugin_weekYear_js);
let dayjs_plugin_dayOfYear_js = require("dayjs/plugin/dayOfYear.js");
dayjs_plugin_dayOfYear_js = require_runtime.__toESM(dayjs_plugin_dayOfYear_js);
let dayjs_plugin_isSameOrAfter_js = require("dayjs/plugin/isSameOrAfter.js");
dayjs_plugin_isSameOrAfter_js = require_runtime.__toESM(dayjs_plugin_isSameOrAfter_js);
let dayjs_plugin_isSameOrBefore_js = require("dayjs/plugin/isSameOrBefore.js");
dayjs_plugin_isSameOrBefore_js = require_runtime.__toESM(dayjs_plugin_isSameOrBefore_js);
//#region ../../packages/components/date-picker-panel/src/date-picker-panel.tsx
function _isSlot(s) {
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s);
}
dayjs.default.extend(dayjs_plugin_localeData_js.default);
dayjs.default.extend(dayjs_plugin_advancedFormat_js.default);
dayjs.default.extend(dayjs_plugin_customParseFormat_js.default);
dayjs.default.extend(dayjs_plugin_weekOfYear_js.default);
dayjs.default.extend(dayjs_plugin_weekYear_js.default);
dayjs.default.extend(dayjs_plugin_dayOfYear_js.default);
dayjs.default.extend(dayjs_plugin_isSameOrAfter_js.default);
dayjs.default.extend(dayjs_plugin_isSameOrBefore_js.default);
var date_picker_panel_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElDatePickerPanel",
install: null,
inheritAttrs: false,
props: require_date_picker_panel.datePickerPanelProps,
emits: [
require_event.UPDATE_MODEL_EVENT,
"calendar-change",
"panel-change",
"visible-change",
"clear"
],
setup(props, { slots, emit, attrs }) {
const ns = require_index.useNamespace("picker-panel");
if (require_types.isUndefined((0, vue.inject)(require_constants.PICKER_BASE_INJECTION_KEY, void 0))) (0, vue.provide)(require_constants.PICKER_BASE_INJECTION_KEY, { props: (0, vue.reactive)({ ...(0, vue.toRefs)(props) }) });
(0, vue.provide)(require_constants$1.ROOT_PICKER_INJECTION_KEY, {
slots,
pickerNs: ns
});
const { parsedValue, onCalendarChange, onPanelChange, onSetPickerOption, onPick } = (0, vue.inject)(require_constants.ROOT_COMMON_PICKER_INJECTION_KEY, () => require_use_common_picker.useCommonPicker(props, emit), true);
return () => {
return (0, vue.createVNode)(require_panel_utils.getPanel(props.type), (0, vue.mergeProps)((0, lodash_unified.omit)(attrs, "onPick"), props, {
"parsedValue": parsedValue.value,
"onSet-picker-option": onSetPickerOption,
"onCalendar-change": onCalendarChange,
"onPanel-change": onPanelChange,
"onClear": () => emit("clear"),
"onPick": onPick
}), _isSlot(slots) ? slots : { default: () => [slots] });
};
}
});
//#endregion
exports.default = date_picker_panel_default;
//# sourceMappingURL=date-picker-panel.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"date-picker-panel.js","names":["defineComponent","inject","provide","reactive","toRefs","mergeProps","_mergeProps","isVNode","_isVNode","createVNode","_createVNode","omit","dayjs","customParseFormat","advancedFormat","localeData","weekOfYear","weekYear","dayOfYear","isSameOrAfter","isSameOrBefore","PICKER_BASE_INJECTION_KEY","ROOT_COMMON_PICKER_INJECTION_KEY","useNamespace","isUndefined","UPDATE_MODEL_EVENT","datePickerPanelProps","ROOT_PICKER_INJECTION_KEY","getPanel","useCommonPicker","_isSlot","s","Object","prototype","toString","call","extend","name","install","inheritAttrs","props","emits","setup","slots","emit","attrs","ns","pickerInjection","undefined","_props","pickerNs","parsedValue","onCalendarChange","onPanelChange","onSetPickerOption","onPick","Component","type","value","onClear","default"],"sources":["../../../../../../packages/components/date-picker-panel/src/date-picker-panel.tsx"],"sourcesContent":["import { defineComponent, inject, provide, reactive, toRefs } from 'vue'\nimport { omit } from 'lodash-unified'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport advancedFormat from 'dayjs/plugin/advancedFormat.js'\nimport localeData from 'dayjs/plugin/localeData.js'\nimport weekOfYear from 'dayjs/plugin/weekOfYear.js'\nimport weekYear from 'dayjs/plugin/weekYear.js'\nimport dayOfYear from 'dayjs/plugin/dayOfYear.js'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js'\nimport {\n PICKER_BASE_INJECTION_KEY,\n ROOT_COMMON_PICKER_INJECTION_KEY,\n} from '@element-plus/components/time-picker'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isUndefined } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { datePickerPanelProps } from './props/date-picker-panel'\nimport { ROOT_PICKER_INJECTION_KEY } from './constants'\nimport { getPanel } from './panel-utils'\nimport { useCommonPicker } from '../../time-picker/src/composables/use-common-picker'\n\ndayjs.extend(localeData)\ndayjs.extend(advancedFormat)\ndayjs.extend(customParseFormat)\ndayjs.extend(weekOfYear)\ndayjs.extend(weekYear)\ndayjs.extend(dayOfYear)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\n\nexport default defineComponent({\n name: 'ElDatePickerPanel',\n install: null,\n inheritAttrs: false,\n props: datePickerPanelProps,\n emits: [\n UPDATE_MODEL_EVENT,\n 'calendar-change',\n 'panel-change',\n 'visible-change',\n 'clear',\n ],\n setup(props, { slots, emit, attrs }) {\n const ns = useNamespace('picker-panel')\n const pickerInjection = inject(PICKER_BASE_INJECTION_KEY, undefined)\n if (isUndefined(pickerInjection)) {\n const _props = reactive({\n ...toRefs(props),\n })\n provide(PICKER_BASE_INJECTION_KEY, {\n props: _props,\n })\n }\n\n provide(ROOT_PICKER_INJECTION_KEY, {\n slots,\n pickerNs: ns,\n })\n const {\n parsedValue,\n onCalendarChange,\n onPanelChange,\n onSetPickerOption,\n onPick,\n } = inject(\n ROOT_COMMON_PICKER_INJECTION_KEY,\n () => useCommonPicker(props, emit),\n true\n )\n\n return () => {\n const Component = getPanel(props.type)\n return (\n <Component\n {...omit(attrs, 'onPick')}\n {...props}\n parsedValue={parsedValue.value}\n onSet-picker-option={onSetPickerOption}\n onCalendar-change={onCalendarChange}\n onPanel-change={onPanelChange}\n onClear={() => emit('clear')}\n onPick={onPick}\n >\n {slots}\n </Component>\n )\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBqF,SAAA8B,QAAAC,GAAA;AAAA,QAAA,OAAAA,MAAA,cAAAC,OAAAC,UAAAC,SAAAC,KAAAJ,EAAA,KAAA,qBAAA,kBAAAA,EAAA;;AAErFnB,cAAMwB,OAAOrB,mCAAW;AACxBH,cAAMwB,OAAOtB,uCAAe;AAC5BF,cAAMwB,OAAOvB,0CAAkB;AAC/BD,cAAMwB,OAAOpB,mCAAW;AACxBJ,cAAMwB,OAAOnB,iCAAS;AACtBL,cAAMwB,OAAOlB,kCAAU;AACvBN,cAAMwB,OAAOjB,sCAAc;AAC3BP,cAAMwB,OAAOhB,uCAAe;AAE5B,gCAAepB,yCAAgB;CAC7BqC,MAAM;CACNC,SAAS;CACTC,cAAc;CACdC,OAAOd;CACPe,OAAO;EACLhB;EACA;EACA;EACA;EACA;EACD;CACDiB,MAAMF,OAAO,EAAEG,OAAOC,MAAMC,SAAS;EACnC,MAAMC,KAAKvB,2BAAa,eAAe;AAEvC,MAAIC,0CAD2BH,6CAA2B2B,OAAU,CACpC,CAI9B9C,kBAAQmB,6CAA2B,EACjCmB,yBAJsB,EACtB,mBAAUA,MAAK,EAChB,CAAC,EAGD,CAAC;AAGJtC,mBAAQyB,+CAA2B;GACjCgB;GACAO,UAAUJ;GACX,CAAC;EACF,MAAM,EACJK,aACAC,kBACAC,eACAC,mBACAC,2BAEAjC,0DACMO,0CAAgBW,OAAOI,KAAK,EAClC,KACD;AAED,eAAa;AAEX,+BADkBhB,6BAASY,MAAMiB,KAAK,+CAGzBZ,OAAO,SAAS,EACrBL,OAAK;IAAA,eACIW,YAAYO;IAAK,uBACTJ;IAAiB,qBACnBF;IAAgB,kBACnBC;IAAa,iBACdT,KAAK,QAAQ;IAAA,UACpBW;IAAM,CAAA,EAAAzB,QAEba,MAAK,GAALA,QAAK,EAAAiB,eAAA,CAALjB,MAAK,EAAA,CAAA;;;CAKf,CAAC"}

View File

@@ -0,0 +1,6 @@
import { _default } from "./date-picker-panel.js";
//#region ../../packages/components/date-picker-panel/src/instance.d.ts
type DatePickerPanelInstance = InstanceType<typeof _default> & unknown;
//#endregion
export { DatePickerPanelInstance };

View File

@@ -0,0 +1 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });

View File

@@ -0,0 +1,20 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_panel_date_pick = require('./date-picker-com/panel-date-pick.js');
const require_panel_date_range = require('./date-picker-com/panel-date-range.js');
const require_panel_month_range = require('./date-picker-com/panel-month-range.js');
const require_panel_year_range = require('./date-picker-com/panel-year-range.js');
//#region ../../packages/components/date-picker-panel/src/panel-utils.ts
const getPanel = function(type) {
switch (type) {
case "daterange":
case "datetimerange": return require_panel_date_range.default;
case "monthrange": return require_panel_month_range.default;
case "yearrange": return require_panel_year_range.default;
default: return require_panel_date_pick.default;
}
};
//#endregion
exports.getPanel = getPanel;
//# sourceMappingURL=panel-utils.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"panel-utils.js","names":["DateRangePickPanel","MonthRangePickPanel","YearRangePickPanel","DatePickPanel"],"sources":["../../../../../../packages/components/date-picker-panel/src/panel-utils.ts"],"sourcesContent":["import DatePickPanel from './date-picker-com/panel-date-pick.vue'\nimport DateRangePickPanel from './date-picker-com/panel-date-range.vue'\nimport MonthRangePickPanel from './date-picker-com/panel-month-range.vue'\nimport YearRangePickPanel from './date-picker-com/panel-year-range.vue'\n\nimport type { DatePickerType } from './types'\n\nexport const getPanel = function (type: DatePickerType) {\n switch (type) {\n case 'daterange':\n case 'datetimerange': {\n return DateRangePickPanel\n }\n case 'monthrange': {\n return MonthRangePickPanel\n }\n case 'yearrange': {\n return YearRangePickPanel\n }\n default: {\n return DatePickPanel\n }\n }\n}\n"],"mappings":";;;;;;;AAOA,MAAa,WAAW,SAAU,MAAsB;AACtD,SAAQ,MAAR;EACE,KAAK;EACL,KAAK,gBACH,QAAOA;EAET,KAAK,aACH,QAAOC;EAET,KAAK,YACH,QAAOC;EAET,QACE,QAAOC"}

View File

@@ -0,0 +1,9 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
//#region ../../packages/components/date-picker-panel/src/props/basic-cell.ts
const basicCellProps = require_runtime.buildProps({ cell: { type: require_runtime.definePropType(Object) } });
//#endregion
exports.basicCellProps = basicCellProps;
//# sourceMappingURL=basic-cell.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"basic-cell.js","names":["buildProps","definePropType"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/basic-cell.ts"],"sourcesContent":["import { buildProps, definePropType } from '@element-plus/utils'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { DateCell } from '../types'\n\nexport const basicCellProps = buildProps({\n cell: {\n type: definePropType<DateCell>(Object),\n },\n} as const)\n\nexport type BasicCellProps = ExtractPropTypes<typeof basicCellProps>\nexport type BasicCellPropsPublic = ExtractPublicPropTypes<typeof basicCellProps>\n"],"mappings":";;;;AAKA,MAAa,iBAAiBA,2BAAW,EACvC,MAAM,EACJ,MAAMC,+BAAyB,OAAO,EACvC,EACF,CAAU"}

View File

@@ -0,0 +1,20 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('./shared.js');
//#region ../../packages/components/date-picker-panel/src/props/basic-date-table.ts
const basicDateTableProps = require_runtime.buildProps({
...require_shared.datePickerSharedProps,
showWeekNumber: Boolean,
selectionMode: require_shared.selectionModeWithDefault("date")
});
const basicDateTableEmits = [
"changerange",
"pick",
"select"
];
//#endregion
exports.basicDateTableEmits = basicDateTableEmits;
exports.basicDateTableProps = basicDateTableProps;
//# sourceMappingURL=basic-date-table.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"basic-date-table.js","names":["buildProps","datePickerSharedProps","selectionModeWithDefault"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/basic-date-table.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport const basicDateTableProps = buildProps({\n ...datePickerSharedProps,\n showWeekNumber: Boolean,\n selectionMode: selectionModeWithDefault('date'),\n} as const)\n\nexport const basicDateTableEmits = ['changerange', 'pick', 'select']\n\nexport type BasicDateTableProps = ExtractPropTypes<typeof basicDateTableProps>\nexport type BasicDateTablePropsPublic = ExtractPublicPropTypes<\n typeof basicDateTableProps\n>\nexport type BasicDateTableEmits = typeof basicDateTableEmits\n\nexport type RangePickerEmits = { minDate: Dayjs; maxDate: null }\nexport type DatePickerEmits = Dayjs\nexport type DatesPickerEmits = Dayjs[]\nexport type MonthsPickerEmits = Dayjs[]\nexport type YearsPickerEmits = Dayjs[]\nexport type WeekPickerEmits = {\n year: number\n week: number\n value: string\n date: Dayjs\n}\n\nexport type DateTableEmits =\n | RangePickerEmits\n | DatePickerEmits\n | DatesPickerEmits\n | WeekPickerEmits\n"],"mappings":";;;;;AAMA,MAAa,sBAAsBA,2BAAW;CAC5C,GAAGC;CACH,gBAAgB;CAChB,eAAeC,wCAAyB,OAAO;CAChD,CAAU;AAEX,MAAa,sBAAsB;CAAC;CAAe;CAAQ;CAAS"}

View File

@@ -0,0 +1,13 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('./shared.js');
//#region ../../packages/components/date-picker-panel/src/props/basic-month-table.ts
const basicMonthTableProps = require_runtime.buildProps({
...require_shared.datePickerSharedProps,
selectionMode: require_shared.selectionModeWithDefault("month")
});
//#endregion
exports.basicMonthTableProps = basicMonthTableProps;
//# sourceMappingURL=basic-month-table.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"basic-month-table.js","names":["buildProps","datePickerSharedProps","selectionModeWithDefault"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/basic-month-table.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const basicMonthTableProps = buildProps({\n ...datePickerSharedProps,\n selectionMode: selectionModeWithDefault('month'),\n})\n\nexport type BasicMonthTableProps = ExtractPropTypes<typeof basicMonthTableProps>\nexport type BasicMonthTablePropsPublic = ExtractPublicPropTypes<\n typeof basicMonthTableProps\n>\n"],"mappings":";;;;;AAKA,MAAa,uBAAuBA,2BAAW;CAC7C,GAAGC;CACH,eAAeC,wCAAyB,QAAQ;CACjD,CAAC"}

View File

@@ -0,0 +1,13 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('./shared.js');
//#region ../../packages/components/date-picker-panel/src/props/basic-year-table.ts
const basicYearTableProps = require_runtime.buildProps({
...require_shared.datePickerSharedProps,
selectionMode: require_shared.selectionModeWithDefault("year")
});
//#endregion
exports.basicYearTableProps = basicYearTableProps;
//# sourceMappingURL=basic-year-table.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"basic-year-table.js","names":["buildProps","datePickerSharedProps","selectionModeWithDefault"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/basic-year-table.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils'\nimport { datePickerSharedProps, selectionModeWithDefault } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const basicYearTableProps = buildProps({\n ...datePickerSharedProps,\n selectionMode: selectionModeWithDefault('year'),\n} as const)\n\nexport type BasicYearTableProps = ExtractPropTypes<typeof basicYearTableProps>\nexport type BasicYearTablePropsPublic = ExtractPublicPropTypes<\n typeof basicYearTableProps\n>\n"],"mappings":";;;;;AAKA,MAAa,sBAAsBA,2BAAW;CAC5C,GAAGC;CACH,eAAeC,wCAAyB,OAAO;CAChD,CAAU"}

View File

@@ -0,0 +1,74 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import "../../../../utils/index.js";
import { GetDisabledHours, GetDisabledMinutes, GetDisabledSeconds, ModelValueType, SingleOrRange } from "../../../time-picker/src/common/props.js";
import "../../../time-picker/index.js";
import { DatePickerType } from "../types.js";
import * as vue from "vue";
import { ExtractPropTypes, ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/date-picker-panel/src/props/date-picker-panel.d.ts
declare const datePickerPanelProps: {
readonly disabledDate: {
readonly type: vue.PropType<Function>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly cellClassName: {
readonly type: vue.PropType<Function>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly shortcuts: EpPropFinalized<ArrayConstructor, unknown, unknown, () => never[], boolean>;
readonly arrowControl: BooleanConstructor;
readonly unlinkPanels: BooleanConstructor;
readonly showNow: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: BooleanConstructor;
readonly showWeekNumber: BooleanConstructor;
readonly type: EpPropFinalized<(new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType) | (((new (...args: any[]) => "year" | "months" | "years" | "month" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => DatePickerType)) | null)[], unknown, unknown, "date", boolean>;
readonly clearable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly disabledHours: {
readonly type: vue.PropType<GetDisabledHours>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledMinutes: {
readonly type: vue.PropType<GetDisabledMinutes>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledSeconds: {
readonly type: vue.PropType<GetDisabledSeconds>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly valueFormat: StringConstructor;
readonly dateFormat: StringConstructor;
readonly timeFormat: StringConstructor;
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly modelValue: EpPropFinalized<(new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType) | (((new (...args: any[]) => string | number | string[] | Date | number[] | Date[]) | (() => ModelValueType)) | null)[], unknown, unknown, "", boolean>;
readonly defaultValue: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>) | (((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly defaultTime: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>) | (((new (...args: any[]) => Date | [Date, Date]) | (() => SingleOrRange<Date>)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly isRange: BooleanConstructor;
};
type DatePickerPanelProps = ExtractPropTypes<typeof datePickerPanelProps>;
type DatePickerPanelPropsPublic = ExtractPublicPropTypes<typeof datePickerPanelProps>;
//#endregion
export { DatePickerPanelProps, DatePickerPanelPropsPublic, datePickerPanelProps };

View File

@@ -0,0 +1,62 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('../../../time-picker/src/props/shared.js');
//#region ../../packages/components/date-picker-panel/src/props/date-picker-panel.ts
const datePickerPanelProps = require_runtime.buildProps({
valueFormat: String,
dateFormat: String,
timeFormat: String,
disabled: {
type: Boolean,
default: void 0
},
modelValue: {
type: require_runtime.definePropType([
Date,
Array,
String,
Number
]),
default: ""
},
defaultValue: { type: require_runtime.definePropType([Date, Array]) },
defaultTime: { type: require_runtime.definePropType([Date, Array]) },
isRange: Boolean,
...require_shared.disabledTimeListsProps,
disabledDate: { type: Function },
cellClassName: { type: Function },
shortcuts: {
type: Array,
default: () => []
},
arrowControl: Boolean,
unlinkPanels: Boolean,
showNow: {
type: Boolean,
default: true
},
showConfirm: Boolean,
showFooter: Boolean,
showWeekNumber: Boolean,
type: {
type: require_runtime.definePropType(String),
default: "date"
},
clearable: {
type: Boolean,
default: true
},
border: {
type: Boolean,
default: true
},
editable: {
type: Boolean,
default: true
}
});
//#endregion
exports.datePickerPanelProps = datePickerPanelProps;
//# sourceMappingURL=date-picker-panel.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"date-picker-panel.js","names":["buildProps","definePropType","disabledTimeListsProps"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/date-picker-panel.ts"],"sourcesContent":["import { buildProps, definePropType } from '@element-plus/utils'\nimport { disabledTimeListsProps } from '@element-plus/components/time-picker/src/props/shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type {\n ModelValueType,\n SingleOrRange,\n} from '@element-plus/components/time-picker'\nimport type { DatePickerType } from '../types'\n\nexport const datePickerPanelProps = buildProps({\n /**\n * @description optional, format of binding value. If not specified, the binding value will be a Date object\n */\n valueFormat: String,\n /**\n * @description optional, format of the date displayed in input's inner panel\n */\n dateFormat: String,\n /**\n * @description optional, format of the time displayed in input's inner panel\n */\n timeFormat: String,\n /**\n * @description whether picker is disabled\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description binding value, if it is an array, the length should be 2\n */\n modelValue: {\n type: definePropType<ModelValueType>([Date, Array, String, Number]),\n default: '',\n },\n /**\n * @description optional, default date of the calendar\n */\n defaultValue: {\n type: definePropType<SingleOrRange<Date>>([Date, Array]),\n },\n /**\n * @description optional, the time value to use when selecting date range\n */\n defaultTime: {\n type: definePropType<SingleOrRange<Date>>([Date, Array]),\n },\n /**\n * @description whether to pick a time range\n */\n isRange: Boolean,\n ...disabledTimeListsProps,\n /**\n * @description a function determining if a date is disabled with that date as its parameter. Should return a Boolean\n */\n disabledDate: {\n type: Function,\n },\n /**\n * @description set custom className\n */\n cellClassName: {\n type: Function,\n },\n /**\n * @description an object array to set shortcut options\n */\n shortcuts: {\n type: Array,\n default: () => [],\n },\n /**\n * @description whether to pick time using arrow buttons\n */\n arrowControl: Boolean,\n /**\n * @description unlink two date-panels in range-picker\n */\n unlinkPanels: Boolean,\n /**\n * @description whether to show the now button\n */\n showNow: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether to show the confirm button\n */\n showConfirm: Boolean,\n /**\n * @description whether to show footer\n */\n showFooter: Boolean,\n /**\n * @description whether to show the number of the calendar week\n */\n showWeekNumber: Boolean,\n /**\n * @description type of the picker\n */\n type: {\n type: definePropType<DatePickerType>(String),\n default: 'date',\n },\n /**\n * @description whether to show clear button in range mode\n */\n clearable: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether the date picker is bordered\n */\n border: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n} as const)\n\nexport type DatePickerPanelProps = ExtractPropTypes<typeof datePickerPanelProps>\nexport type DatePickerPanelPropsPublic = ExtractPublicPropTypes<\n typeof datePickerPanelProps\n>\n"],"mappings":";;;;;AAUA,MAAa,uBAAuBA,2BAAW;CAI7C,aAAa;CAIb,YAAY;CAIZ,YAAY;CAIZ,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,YAAY;EACV,MAAMC,+BAA+B;GAAC;GAAM;GAAO;GAAQ;GAAO,CAAC;EACnE,SAAS;EACV;CAID,cAAc,EACZ,MAAMA,+BAAoC,CAAC,MAAM,MAAM,CAAC,EACzD;CAID,aAAa,EACX,MAAMA,+BAAoC,CAAC,MAAM,MAAM,CAAC,EACzD;CAID,SAAS;CACT,GAAGC;CAIH,cAAc,EACZ,MAAM,UACP;CAID,eAAe,EACb,MAAM,UACP;CAID,WAAW;EACT,MAAM;EACN,eAAe,EAAE;EAClB;CAID,cAAc;CAId,cAAc;CAId,SAAS;EACP,MAAM;EACN,SAAS;EACV;CAID,aAAa;CAIb,YAAY;CAIZ,gBAAgB;CAIhB,MAAM;EACJ,MAAMD,+BAA+B,OAAO;EAC5C,SAAS;EACV;CAID,WAAW;EACT,MAAM;EACN,SAAS;EACV;CAID,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CAID,UAAU;EACR,MAAM;EACN,SAAS;EACV;CACF,CAAU"}

View File

@@ -0,0 +1,21 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('./shared.js');
//#region ../../packages/components/date-picker-panel/src/props/panel-date-pick.ts
const panelDatePickProps = require_runtime.buildProps({
...require_shared.panelSharedProps,
parsedValue: { type: require_runtime.definePropType([Object, Array]) },
visible: {
type: Boolean,
default: true
},
format: {
type: String,
default: ""
}
});
//#endregion
exports.panelDatePickProps = panelDatePickProps;
//# sourceMappingURL=panel-date-pick.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"panel-date-pick.js","names":["buildProps","panelSharedProps","definePropType"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/panel-date-pick.ts"],"sourcesContent":["import { buildProps, definePropType } from '@element-plus/utils'\nimport { panelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { DayOrDays } from '@element-plus/components/time-picker'\n\nexport const panelDatePickProps = buildProps({\n ...panelSharedProps,\n parsedValue: {\n type: definePropType<DayOrDays>([Object, Array]),\n },\n visible: {\n type: Boolean,\n default: true,\n },\n format: {\n type: String,\n default: '',\n },\n} as const)\n\nexport type PanelDatePickProps = ExtractPropTypes<typeof panelDatePickProps>\nexport type PanelDatePickPropsPublic = ExtractPublicPropTypes<\n typeof panelDatePickProps\n>\n"],"mappings":";;;;;AAMA,MAAa,qBAAqBA,2BAAW;CAC3C,GAAGC;CACH,aAAa,EACX,MAAMC,+BAA0B,CAAC,QAAQ,MAAM,CAAC,EACjD;CACD,SAAS;EACP,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CACF,CAAU"}

View File

@@ -0,0 +1,13 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('./shared.js');
//#region ../../packages/components/date-picker-panel/src/props/panel-date-range.ts
const panelDateRangeProps = require_runtime.buildProps({
...require_shared.panelSharedProps,
...require_shared.panelRangeSharedProps
});
//#endregion
exports.panelDateRangeProps = panelDateRangeProps;
//# sourceMappingURL=panel-date-range.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"panel-date-range.js","names":["buildProps","panelSharedProps","panelRangeSharedProps"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/panel-date-range.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils'\nimport { panelRangeSharedProps, panelSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const panelDateRangeProps = buildProps({\n ...panelSharedProps,\n ...panelRangeSharedProps,\n} as const)\n\nexport type PanelDateRangeProps = ExtractPropTypes<typeof panelDateRangeProps>\nexport type PanelDateRangePropsPublic = ExtractPublicPropTypes<\n typeof panelDateRangeProps\n>\n"],"mappings":";;;;;AAKA,MAAa,sBAAsBA,2BAAW;CAC5C,GAAGC;CACH,GAAGC;CACJ,CAAU"}

View File

@@ -0,0 +1,16 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('./shared.js');
//#region ../../packages/components/date-picker-panel/src/props/panel-month-range.ts
const panelMonthRangeProps = require_runtime.buildProps({ ...require_shared.panelRangeSharedProps });
const panelMonthRangeEmits = [
"pick",
"set-picker-option",
"calendar-change"
];
//#endregion
exports.panelMonthRangeEmits = panelMonthRangeEmits;
exports.panelMonthRangeProps = panelMonthRangeProps;
//# sourceMappingURL=panel-month-range.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"panel-month-range.js","names":["buildProps","panelRangeSharedProps"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/panel-month-range.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils'\nimport { panelRangeSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const panelMonthRangeProps = buildProps({\n ...panelRangeSharedProps,\n} as const)\n\nexport const panelMonthRangeEmits = [\n 'pick',\n 'set-picker-option',\n 'calendar-change',\n]\n\nexport type PanelMonthRangeProps = ExtractPropTypes<typeof panelMonthRangeProps>\nexport type PanelMonthRangePropsPublic = ExtractPublicPropTypes<\n typeof panelMonthRangeProps\n>\n"],"mappings":";;;;;AAKA,MAAa,uBAAuBA,2BAAW,EAC7C,GAAGC,sCACJ,CAAU;AAEX,MAAa,uBAAuB;CAClC;CACA;CACA;CACD"}

View File

@@ -0,0 +1,16 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../utils/vue/props/runtime.js');
const require_shared = require('./shared.js');
//#region ../../packages/components/date-picker-panel/src/props/panel-year-range.ts
const panelYearRangeProps = require_runtime.buildProps({ ...require_shared.panelRangeSharedProps });
const panelYearRangeEmits = [
"pick",
"set-picker-option",
"calendar-change"
];
//#endregion
exports.panelYearRangeEmits = panelYearRangeEmits;
exports.panelYearRangeProps = panelYearRangeProps;
//# sourceMappingURL=panel-year-range.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"panel-year-range.js","names":["buildProps","panelRangeSharedProps"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/panel-year-range.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils'\nimport { panelRangeSharedProps } from './shared'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\n\nexport const panelYearRangeProps = buildProps({\n ...panelRangeSharedProps,\n} as const)\n\nexport const panelYearRangeEmits = [\n 'pick',\n 'set-picker-option',\n 'calendar-change',\n]\n\nexport type PanelYearRangeProps = ExtractPropTypes<typeof panelYearRangeProps>\nexport type PanelYearRangePropsPublic = ExtractPublicPropTypes<\n typeof panelYearRangeProps\n>\n"],"mappings":";;;;;AAKA,MAAa,sBAAsBA,2BAAW,EAC5C,GAAGC,sCACJ,CAAU;AAEX,MAAa,sBAAsB;CACjC;CACA;CACA;CACD"}

View File

@@ -0,0 +1,92 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
const require_date = require('../../../../constants/date.js');
const require_runtime$1 = require('../../../../utils/vue/props/runtime.js');
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/date-picker-panel/src/props/shared.ts
const selectionModes = [
"date",
"dates",
"year",
"years",
"month",
"months",
"week",
"range"
];
const datePickerSharedProps = require_runtime$1.buildProps({
cellClassName: { type: require_runtime$1.definePropType(Function) },
disabledDate: { type: require_runtime$1.definePropType(Function) },
date: {
type: require_runtime$1.definePropType(Object),
required: true
},
minDate: { type: require_runtime$1.definePropType(Object) },
maxDate: { type: require_runtime$1.definePropType(Object) },
parsedValue: { type: require_runtime$1.definePropType([Object, Array]) },
rangeState: {
type: require_runtime$1.definePropType(Object),
default: () => ({
endDate: null,
selecting: false
})
},
disabled: Boolean
});
const panelSharedProps = require_runtime$1.buildProps({
type: {
type: require_runtime$1.definePropType(String),
required: true,
values: require_date.datePickTypes
},
dateFormat: String,
timeFormat: String,
showNow: {
type: Boolean,
default: true
},
showConfirm: Boolean,
showFooter: {
type: Boolean,
default: true
},
showWeekNumber: Boolean,
border: Boolean,
disabled: Boolean,
editable: {
type: Boolean,
default: true
}
});
const panelRangeSharedProps = require_runtime$1.buildProps({
unlinkPanels: Boolean,
visible: {
type: Boolean,
default: true
},
showConfirm: Boolean,
showFooter: {
type: Boolean,
default: true
},
border: Boolean,
disabled: Boolean,
parsedValue: { type: require_runtime$1.definePropType(Array) }
});
const selectionModeWithDefault = (mode) => {
return {
type: String,
values: selectionModes,
default: mode
};
};
const rangePickerSharedEmits = { pick: (range) => (0, _vue_shared.isArray)(range) };
//#endregion
exports.datePickerSharedProps = datePickerSharedProps;
exports.panelRangeSharedProps = panelRangeSharedProps;
exports.panelSharedProps = panelSharedProps;
exports.rangePickerSharedEmits = rangePickerSharedEmits;
exports.selectionModeWithDefault = selectionModeWithDefault;
//# sourceMappingURL=shared.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"shared.js","names":["buildProps","definePropType","datePickTypes"],"sources":["../../../../../../../packages/components/date-picker-panel/src/props/shared.ts"],"sourcesContent":["import { buildProps, definePropType, isArray } from '@element-plus/utils'\nimport { datePickTypes } from '@element-plus/constants'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { DatePickType } from '@element-plus/constants'\nimport type { DayOrDays } from '@element-plus/components/time-picker'\n\nconst selectionModes = [\n 'date',\n 'dates',\n 'year',\n 'years',\n 'month',\n 'months',\n 'week',\n 'range',\n]\n\nexport type RangeState = {\n endDate: null | Dayjs\n selecting: boolean\n}\n\nexport type DisabledDateType = (date: Date) => boolean\nexport type CellClassNameType = (date: Date) => string\n\nexport const datePickerSharedProps = buildProps({\n cellClassName: {\n type: definePropType<CellClassNameType>(Function),\n },\n disabledDate: {\n type: definePropType<DisabledDateType>(Function),\n },\n date: {\n type: definePropType<Dayjs>(Object),\n required: true,\n },\n minDate: {\n type: definePropType<Dayjs | null>(Object),\n },\n maxDate: {\n type: definePropType<Dayjs | null>(Object),\n },\n parsedValue: {\n type: definePropType<Dayjs | Dayjs[]>([Object, Array]),\n },\n rangeState: {\n type: definePropType<RangeState>(Object),\n default: () => ({\n endDate: null,\n selecting: false,\n }),\n },\n disabled: Boolean,\n} as const)\n\nexport const panelSharedProps = buildProps({\n type: {\n type: definePropType<DatePickType>(String),\n required: true,\n values: datePickTypes,\n },\n dateFormat: String,\n timeFormat: String,\n showNow: {\n type: Boolean,\n default: true,\n },\n showConfirm: Boolean,\n showFooter: {\n type: Boolean,\n default: true,\n },\n showWeekNumber: Boolean,\n border: Boolean,\n disabled: Boolean,\n editable: {\n type: Boolean,\n default: true,\n },\n} as const)\n\nexport const panelRangeSharedProps = buildProps({\n unlinkPanels: Boolean,\n visible: {\n type: Boolean,\n default: true,\n },\n showConfirm: Boolean,\n showFooter: {\n type: Boolean,\n default: true,\n },\n border: Boolean,\n disabled: Boolean,\n parsedValue: {\n type: definePropType<DayOrDays>(Array),\n },\n} as const)\n\nexport const selectionModeWithDefault = (\n mode: (typeof selectionModes)[number]\n) => {\n return {\n type: String,\n values: selectionModes,\n default: mode,\n }\n}\n\nexport const rangePickerSharedEmits = {\n pick: (range: [Dayjs, Dayjs]) => isArray(range),\n}\n\nexport type RangePickerSharedEmits = typeof rangePickerSharedEmits\nexport type PanelRangeSharedProps = ExtractPropTypes<\n typeof panelRangeSharedProps\n>\nexport type PanelRangeSharedPropsPublic = ExtractPublicPropTypes<\n typeof panelRangeSharedProps\n>\n"],"mappings":";;;;;;;AAQA,MAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAUD,MAAa,wBAAwBA,6BAAW;CAC9C,eAAe,EACb,MAAMC,iCAAkC,SAAS,EAClD;CACD,cAAc,EACZ,MAAMA,iCAAiC,SAAS,EACjD;CACD,MAAM;EACJ,MAAMA,iCAAsB,OAAO;EACnC,UAAU;EACX;CACD,SAAS,EACP,MAAMA,iCAA6B,OAAO,EAC3C;CACD,SAAS,EACP,MAAMA,iCAA6B,OAAO,EAC3C;CACD,aAAa,EACX,MAAMA,iCAAgC,CAAC,QAAQ,MAAM,CAAC,EACvD;CACD,YAAY;EACV,MAAMA,iCAA2B,OAAO;EACxC,gBAAgB;GACd,SAAS;GACT,WAAW;GACZ;EACF;CACD,UAAU;CACX,CAAU;AAEX,MAAa,mBAAmBD,6BAAW;CACzC,MAAM;EACJ,MAAMC,iCAA6B,OAAO;EAC1C,UAAU;EACV,QAAQC;EACT;CACD,YAAY;CACZ,YAAY;CACZ,SAAS;EACP,MAAM;EACN,SAAS;EACV;CACD,aAAa;CACb,YAAY;EACV,MAAM;EACN,SAAS;EACV;CACD,gBAAgB;CAChB,QAAQ;CACR,UAAU;CACV,UAAU;EACR,MAAM;EACN,SAAS;EACV;CACF,CAAU;AAEX,MAAa,wBAAwBF,6BAAW;CAC9C,cAAc;CACd,SAAS;EACP,MAAM;EACN,SAAS;EACV;CACD,aAAa;CACb,YAAY;EACV,MAAM;EACN,SAAS;EACV;CACD,QAAQ;CACR,UAAU;CACV,aAAa,EACX,MAAMC,iCAA0B,MAAM,EACvC;CACF,CAAU;AAEX,MAAa,4BACX,SACG;AACH,QAAO;EACL,MAAM;EACN,QAAQ;EACR,SAAS;EACV;;AAGH,MAAa,yBAAyB,EACpC,OAAO,mCAAkC,MAAM,EAChD"}

View File

@@ -0,0 +1,25 @@
import { Dayjs } from "dayjs";
//#region ../../packages/components/date-picker-panel/src/types.d.ts
type DatePickerType = 'year' | 'years' | 'month' | 'months' | 'date' | 'dates' | 'week' | 'datetime' | 'datetimerange' | 'daterange' | 'monthrange' | 'yearrange';
type DateCellType = 'normal' | 'today' | 'week' | 'next-month' | 'prev-month';
interface DateCell {
column?: number;
customClass?: string;
disabled?: boolean;
end?: boolean;
inRange?: boolean;
row?: number;
selected?: Dayjs;
isCurrent?: boolean;
isSelected?: boolean;
start?: boolean;
text?: number;
renderText?: string;
timestamp?: number;
date?: Date;
dayjs?: Dayjs;
type?: DateCellType;
}
//#endregion
export { DateCell, DatePickerType };

View File

@@ -0,0 +1 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });

View File

@@ -0,0 +1,98 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_utils = require('../../time-picker/src/utils.js');
let dayjs = require("dayjs");
dayjs = require_runtime.__toESM(dayjs);
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/date-picker-panel/src/utils.ts
const isValidRange = (range) => {
if (!(0, _vue_shared.isArray)(range)) return false;
const [left, right] = range;
return dayjs.default.isDayjs(left) && dayjs.default.isDayjs(right) && (0, dayjs.default)(left).isValid() && (0, dayjs.default)(right).isValid() && left.isSameOrBefore(right);
};
const getDefaultValue = (defaultValue, { lang, step = 1, unit, unlinkPanels }) => {
let start;
if ((0, _vue_shared.isArray)(defaultValue)) {
let [left, right] = defaultValue.map((d) => (0, dayjs.default)(d).locale(lang));
if (!unlinkPanels) right = left.add(step, unit);
return [left, right];
} else if (defaultValue) start = (0, dayjs.default)(defaultValue);
else start = (0, dayjs.default)();
start = start.locale(lang);
return [start, start.add(step, unit)];
};
const buildPickerTable = (dimension, rows, { columnIndexOffset, startDate, nextEndDate, now, unit, relativeDateGetter, setCellMetadata, setRowMetadata }) => {
for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {
const row = rows[rowIndex];
for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {
let cell = row[columnIndex + columnIndexOffset];
if (!cell) cell = {
row: rowIndex,
column: columnIndex,
type: "normal",
inRange: false,
start: false,
end: false
};
const nextStartDate = relativeDateGetter(rowIndex * dimension.column + columnIndex);
cell.dayjs = nextStartDate;
cell.date = nextStartDate.toDate();
cell.timestamp = nextStartDate.valueOf();
cell.type = "normal";
cell.inRange = !!(startDate && nextStartDate.isSameOrAfter(startDate, unit) && nextEndDate && nextStartDate.isSameOrBefore(nextEndDate, unit)) || !!(startDate && nextStartDate.isSameOrBefore(startDate, unit) && nextEndDate && nextStartDate.isSameOrAfter(nextEndDate, unit));
if (startDate?.isSameOrAfter(nextEndDate)) {
cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit);
cell.end = startDate && nextStartDate.isSame(startDate, unit);
} else {
cell.start = !!startDate && nextStartDate.isSame(startDate, unit);
cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit);
}
if (nextStartDate.isSame(now, unit)) cell.type = "today";
setCellMetadata?.(cell, {
rowIndex,
columnIndex
});
row[columnIndex + columnIndexOffset] = cell;
}
setRowMetadata?.(row);
}
};
const datesInMonth = (date, year, month, lang) => {
const firstDay = (0, dayjs.default)().locale(lang).startOf("month").month(month).year(year).hour(date.hour()).minute(date.minute()).second(date.second());
return require_utils.rangeArr(firstDay.daysInMonth()).map((n) => firstDay.add(n, "day").toDate());
};
const getValidDateOfMonth = (date, year, month, lang, disabledDate) => {
const _value = (0, dayjs.default)().year(year).month(month).startOf("month").hour(date.hour()).minute(date.minute()).second(date.second());
const _date = datesInMonth(date, year, month, lang).find((date) => {
return !disabledDate?.(date);
});
if (_date) return (0, dayjs.default)(_date).locale(lang);
return _value.locale(lang);
};
const getValidDateOfYear = (value, lang, disabledDate) => {
const year = value.year();
if (!disabledDate?.(value.toDate())) return value.locale(lang);
const month = value.month();
if (!datesInMonth(value, year, month, lang).every(disabledDate)) return getValidDateOfMonth(value, year, month, lang, disabledDate);
for (let i = 0; i < 12; i++) if (!datesInMonth(value, year, i, lang).every(disabledDate)) return getValidDateOfMonth(value, year, i, lang, disabledDate);
return value;
};
const correctlyParseUserInput = (value, format, lang, defaultFormat) => {
if ((0, _vue_shared.isArray)(value)) return value.map((v) => correctlyParseUserInput(v, format, lang, defaultFormat));
if ((0, _vue_shared.isString)(value)) {
const dayjsValue = defaultFormat?.value ? (0, dayjs.default)(value) : (0, dayjs.default)(value, format);
if (!dayjsValue.isValid()) return dayjsValue;
}
return (0, dayjs.default)(value, format).locale(lang);
};
//#endregion
exports.buildPickerTable = buildPickerTable;
exports.correctlyParseUserInput = correctlyParseUserInput;
exports.datesInMonth = datesInMonth;
exports.getDefaultValue = getDefaultValue;
exports.getValidDateOfMonth = getValidDateOfMonth;
exports.getValidDateOfYear = getValidDateOfYear;
exports.isValidRange = isValidRange;
//# sourceMappingURL=utils.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
require('../../base/style/css.js');
require('../../input/style/css.js');
require('../../scrollbar/style/css.js');
require('../../button/style/css.js');
require("element-plus/theme-chalk/el-date-picker-panel.css");

View File

@@ -0,0 +1,6 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
require('../../base/style/index.js');
require('../../input/style/index.js');
require('../../scrollbar/style/index.js');
require('../../button/style/index.js');
require("element-plus/theme-chalk/src/date-picker-panel.scss");