前端初始化

This commit is contained in:
“hsc”
2026-08-21 15:36:24 +08:00
commit e4d8ecde13
14411 changed files with 2275932 additions and 0 deletions
@@ -0,0 +1,23 @@
import { DateCell } from "../types.js";
import * as _$vue from "vue";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-cell-render.d.ts
declare const _default: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
readonly cell: {
readonly type: _$vue.PropType<DateCell>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}>, () => _$vue.VNode<_$vue.RendererNode, _$vue.RendererElement, {
[key: string]: any;
}>, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
readonly cell: {
readonly type: _$vue.PropType<DateCell>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}>> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
//#endregion
export { _default as default };
@@ -0,0 +1,22 @@
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
@@ -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,IAAA,4BAAeA,iBAAAA,GAAAA,IAAAA,iBAAgB;CAC7BQ,MAAM;CACNC,OAAOF,mBAAAA;CACPG,MAAMD,OAAO;EACX,MAAME,KAAKN,cAAAA,aAAa,kBAAkB;EAC1C,MAAM,EAAEO,WAAAA,GAAAA,IAAAA,QAAiBN,kBAAAA,0BAA2B;EACpD,aAAa;GACX,MAAM,EAAEO,SAASJ;GAEjB,QAAA,GAAA,IAAA,YAAkBG,OAAO,WAAW,EAAE,GAAGC,MAAM,QAAQ,EAAA,GAAA,IAAA,aAAA,OAAA,EAAA,SACzCF,GAAGG,GAAE,EAAC,EAAA,EAAA,GAAA,IAAA,aAAA,QAAA,EAAA,SACHH,GAAGI,EAAE,OAAM,EAAC,EAAA,CAAGF,MAAMG,cAAcH,MAAMI,KAAI,CAAA,CAAA,CAAA,CAE7D,CAAC;;;CAGP,CAAC"}
@@ -0,0 +1,10 @@
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#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.js").default;
//#endregion
exports.default = basic_date_table_default;
//# sourceMappingURL=basic-date-table.js.map
@@ -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":""}
@@ -0,0 +1,108 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import { CellClassNameType, DisabledDateType, RangeState } from "../props/shared.js";
import * as _$vue from "vue";
import * as _$dayjs from "dayjs";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-date-table.vue.d.ts
declare const __VLS_export: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
readonly showWeekNumber: BooleanConstructor;
readonly selectionMode: EpPropFinalized<StringConstructor, string, unknown, string, boolean>;
readonly cellClassName: {
readonly type: _$vue.PropType<CellClassNameType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledDate: {
readonly type: _$vue.PropType<DisabledDateType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly date: {
readonly type: _$vue.PropType<_$dayjs.Dayjs>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly minDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null) | (((new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly maxDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null) | (((new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => _$dayjs.Dayjs | _$dayjs.Dayjs[]) | (() => _$dayjs.Dayjs | _$dayjs.Dayjs[]) | (((new (...args: any[]) => _$dayjs.Dayjs | _$dayjs.Dayjs[]) | (() => _$dayjs.Dayjs | _$dayjs.Dayjs[])) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly rangeState: EpPropFinalized<(new (...args: any[]) => RangeState) | (() => RangeState) | (((new (...args: any[]) => RangeState) | (() => RangeState)) | null)[], unknown, unknown, () => {
endDate: null;
selecting: boolean;
}, boolean>;
readonly disabled: BooleanConstructor;
}>, {
/**
* @description focus on current cell
*/
focus: () => Promise<void | undefined>;
}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
readonly showWeekNumber: BooleanConstructor;
readonly selectionMode: EpPropFinalized<StringConstructor, string, unknown, string, boolean>;
readonly cellClassName: {
readonly type: _$vue.PropType<CellClassNameType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledDate: {
readonly type: _$vue.PropType<DisabledDateType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly date: {
readonly type: _$vue.PropType<_$dayjs.Dayjs>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly minDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null) | (((new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly maxDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null) | (((new (...args: any[]) => _$dayjs.Dayjs) | (() => _$dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => _$dayjs.Dayjs | _$dayjs.Dayjs[]) | (() => _$dayjs.Dayjs | _$dayjs.Dayjs[]) | (((new (...args: any[]) => _$dayjs.Dayjs | _$dayjs.Dayjs[]) | (() => _$dayjs.Dayjs | _$dayjs.Dayjs[])) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly rangeState: EpPropFinalized<(new (...args: any[]) => RangeState) | (() => RangeState) | (((new (...args: any[]) => RangeState) | (() => RangeState)) | null)[], unknown, unknown, () => {
endDate: null;
selecting: boolean;
}, boolean>;
readonly disabled: BooleanConstructor;
}>> & Readonly<{}>, {
readonly disabled: boolean;
readonly showWeekNumber: boolean;
readonly rangeState: RangeState;
readonly selectionMode: string;
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
declare const _default: typeof __VLS_export;
//#endregion
export { _default as default };
@@ -0,0 +1,83 @@
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({
/**
* @description focus on current cell
*/
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
@@ -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,6BAAA,kBAAkB,OAAO,OAAI;EACjC,MAAM,EAAE,YAAY,UAAU,gBAAgB,WAAW,iBAAiB,MACxE,6BAAA,qBAAqB,OAAO;GAC1B;GACA;GACD,CAAA;EACH,IAAI,eAAe;EAEnB,CAAA,GAAA,IAAA,uBAAsB;GACpB,eAAe;IAChB;EAED,SAAa;;;;AAIX,OACD,CAAA;;4DAnDS,SAAA;IA/CL,eAAA,GAAA,IAAA,OAAY,WAAU;IACtB,QAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,OAAO,SAAQ,CAAA;IAChB,aAAY;IACZ,aAAY;IACZ,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,UAAA,GAAA,IAAA,OAAE,eAAA,KAAA,GAAA,IAAA,OAAA,eAAA,CAAA,GAAA,KAAc;IACrB,aAAS,OAAA,OAAA,OAAA,MAAA,GAAA,UAAA,GAAA,IAAA,OAAE,gBAAA,KAAA,GAAA,IAAA,OAAA,gBAAA,CAAA,GAAA,KAAe;IAC1B,aAAS,OAAA,OAAA,OAAA,MAAA,GAAA,UAAA,GAAA,IAAA,OAAE,gBAAA,KAAA,GAAA,IAAA,OAAA,gBAAA,CAAA,GAAA,KAAe;IAC1B,WAAO,OAAA,OAAA,OAAA,MAAA,GAAA,UAAA,GAAA,IAAA,OAAE,cAAA,KAAA,GAAA,IAAA,OAAA,cAAA,CAAA,GAAA,KAAa;mCAsCf,SAAA;aApCG;IAAJ,KAAI;mCAWJ,MAAA,MAAA,CATOA,KAAAA,mBAAAA,GAAAA,IAAAA,YAAAA,GAAAA,GAAAA,IAAAA,oBAAuD,MAAA;;IAAvC,OAAM;IAAO,QAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,OAAO,gBAAe,CAAA;oHAQxD,IAAA,UAAA,OAAA,GAAA,IAAA,aAAA,GAAA,IAAA,OANmB,MAAK,GAAnB,MAAM,QAAG;6DAMd,MAAA;KALG;KACL,eAAA,GAAA,IAAA,OAAY,EAAC,CAAA,6BAA8B,KAAI;KAChD,OAAM;+CAEH,EAAC,CAAA,yBAA0B,KAAI,CAAA,EAAA,GAAA,WAAA;uEA0BjC,IAAA,UAAA,OAAA,GAAA,IAAA,aAAA,GAAA,IAAA,OAtBqB,KAAI,GAApB,KAAK,WAAM;6DAsBhB,MAAA;KArBF,KAAK;KACL,QAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,OAAO,UAAS,CAACA,KAAAA,iBAAiB,IAAG,KAAM,IAAG,GAAA,CAAA;+DAmB1C,IAAA,UAAA,OAAA,GAAA,IAAA,YAhByB,MAApB,MAAM,cAAS;8DAgBpB,MAAA;MAfF,KAAG,GAAK,OAAM,GAAI;;MAClB,MAAmB,OAAA,EAAA,GAAA,IAAA,OAAsB,aAAY,KAAA,GAAA,IAAA,OAAkB,eAAc,CAAC,KAAI,KAAoB,eAAA,QAAiB;MAM/H,QAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,OAAO,eAAc,CAAC,KAAI,CAAA;MAC1B,gBAAc,KAAK,YAAS,SAAY,KAAA;MACxC,iBAAe,KAAK;MACpB,UAAUC,KAAAA,WAAW,KAAA,KAAA,GAAA,IAAA,OAAY,eAAc,CAAC,KAAI,GAAA,IAAA;MACpD,iBAAeA,KAAAA;MACf,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,UAAA,GAAA,IAAA,OAAE,YAAA,KAAA,GAAA,IAAA,OAAA,YAAA,CAAA,GAAA,KAAW;6CAEiB,0BAAA,QAAA,EAAA,EAAR,MAAI,EAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,EAAA,IAAA,WAAA"}
@@ -0,0 +1,10 @@
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#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.js").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
@@ -0,0 +1,113 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import { CellClassNameType, DisabledDateType, RangeState } from "../props/shared.js";
import * as _$vue from "vue";
import dayjs from "dayjs";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue.d.ts
declare const __VLS_export: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
selectionMode: EpPropFinalized<StringConstructor, string, unknown, string, boolean>;
cellClassName: {
readonly type: _$vue.PropType<CellClassNameType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
disabledDate: {
readonly type: _$vue.PropType<DisabledDateType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
date: {
readonly type: _$vue.PropType<dayjs.Dayjs>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
minDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
maxDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[]) | (((new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[])) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
rangeState: EpPropFinalized<(new (...args: any[]) => RangeState) | (() => RangeState) | (((new (...args: any[]) => RangeState) | (() => RangeState)) | null)[], unknown, unknown, () => {
endDate: null;
selecting: boolean;
}, boolean>;
disabled: BooleanConstructor;
}>, {
/**
* @description focus current cell
*/
focus: () => void;
}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
select: (...args: any[]) => void;
pick: (...args: any[]) => void;
changerange: (...args: any[]) => void;
}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
selectionMode: EpPropFinalized<StringConstructor, string, unknown, string, boolean>;
cellClassName: {
readonly type: _$vue.PropType<CellClassNameType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
disabledDate: {
readonly type: _$vue.PropType<DisabledDateType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
date: {
readonly type: _$vue.PropType<dayjs.Dayjs>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
minDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
maxDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[]) | (((new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[])) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
rangeState: EpPropFinalized<(new (...args: any[]) => RangeState) | (() => RangeState) | (((new (...args: any[]) => RangeState) | (() => RangeState)) | null)[], unknown, unknown, () => {
endDate: null;
selecting: boolean;
}, boolean>;
disabled: BooleanConstructor;
}>> & Readonly<{
onSelect?: ((...args: any[]) => any) | undefined;
onPick?: ((...args: any[]) => any) | undefined;
onChangerange?: ((...args: any[]) => any) | undefined;
}>, {
disabled: boolean;
rangeState: RangeState;
selectionMode: string;
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
declare const _default: typeof __VLS_export;
//#endregion
export { _default as default };
@@ -0,0 +1,212 @@
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({
/**
* @description focus current cell
*/
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
@@ -0,0 +1,10 @@
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#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.js").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
@@ -0,0 +1,113 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import { CellClassNameType, DisabledDateType, RangeState } from "../props/shared.js";
import * as _$vue from "vue";
import dayjs from "dayjs";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue.d.ts
declare const __VLS_export: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
readonly selectionMode: EpPropFinalized<StringConstructor, string, unknown, string, boolean>;
readonly cellClassName: {
readonly type: _$vue.PropType<CellClassNameType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledDate: {
readonly type: _$vue.PropType<DisabledDateType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly date: {
readonly type: _$vue.PropType<dayjs.Dayjs>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly minDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly maxDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[]) | (((new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[])) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly rangeState: EpPropFinalized<(new (...args: any[]) => RangeState) | (() => RangeState) | (((new (...args: any[]) => RangeState) | (() => RangeState)) | null)[], unknown, unknown, () => {
endDate: null;
selecting: boolean;
}, boolean>;
readonly disabled: BooleanConstructor;
}>, {
/**
* @description focus on the current cell
*/
focus: () => void;
}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
select: (...args: any[]) => void;
pick: (...args: any[]) => void;
changerange: (...args: any[]) => void;
}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
readonly selectionMode: EpPropFinalized<StringConstructor, string, unknown, string, boolean>;
readonly cellClassName: {
readonly type: _$vue.PropType<CellClassNameType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly disabledDate: {
readonly type: _$vue.PropType<DisabledDateType>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly date: {
readonly type: _$vue.PropType<dayjs.Dayjs>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly minDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly maxDate: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null) | (((new (...args: any[]) => dayjs.Dayjs) | (() => dayjs.Dayjs | null)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[]) | (((new (...args: any[]) => dayjs.Dayjs | dayjs.Dayjs[]) | (() => dayjs.Dayjs | dayjs.Dayjs[])) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly rangeState: EpPropFinalized<(new (...args: any[]) => RangeState) | (() => RangeState) | (((new (...args: any[]) => RangeState) | (() => RangeState)) | null)[], unknown, unknown, () => {
endDate: null;
selecting: boolean;
}, boolean>;
readonly disabled: BooleanConstructor;
}>> & Readonly<{
onSelect?: ((...args: any[]) => any) | undefined;
onPick?: ((...args: any[]) => any) | undefined;
onChangerange?: ((...args: any[]) => any) | undefined;
}>, {
readonly disabled: boolean;
readonly rangeState: RangeState;
readonly selectionMode: string;
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
declare const _default: typeof __VLS_export;
//#endregion
export { _default as default };
@@ -0,0 +1,214 @@
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({
/**
* @description focus on the current cell
*/
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
@@ -0,0 +1,10 @@
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#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.js").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
@@ -0,0 +1,96 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import { DayOrDays } from "../../../time-picker/src/common/props.js";
import * as _$vue from "vue";
import dayjs from "dayjs";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue.d.ts
declare var __VLS_1: {
class: string;
}, __VLS_27: {}, __VLS_40: {}, __VLS_53: {}, __VLS_66: {};
type __VLS_Slots = {} & {
sidebar?: (props: typeof __VLS_1) => any;
} & {
'prev-year'?: (props: typeof __VLS_27) => any;
} & {
'prev-month'?: (props: typeof __VLS_40) => any;
} & {
'next-month'?: (props: typeof __VLS_53) => any;
} & {
'next-year'?: (props: typeof __VLS_66) => any;
};
declare const __VLS_base: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly format: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly type: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (((new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange")) | null)[], "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange", unknown>>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly dateFormat: StringConstructor;
readonly timeFormat: StringConstructor;
readonly showNow: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showWeekNumber: BooleanConstructor;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
}>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
"panel-change": (...args: any[]) => void;
pick: (...args: any[]) => void;
"set-picker-option": (...args: any[]) => void;
}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly format: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly type: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (((new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange")) | null)[], "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange", unknown>>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly dateFormat: StringConstructor;
readonly timeFormat: StringConstructor;
readonly showNow: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showWeekNumber: BooleanConstructor;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
}>> & Readonly<{
"onPanel-change"?: ((...args: any[]) => any) | undefined;
onPick?: ((...args: any[]) => any) | undefined;
"onSet-picker-option"?: ((...args: any[]) => any) | undefined;
}>, {
readonly disabled: boolean;
readonly visible: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly border: boolean;
readonly editable: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly format: string;
readonly showNow: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showConfirm: boolean;
readonly showFooter: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showWeekNumber: boolean;
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default as default };
@@ -0,0 +1,647 @@
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("../../../../hooks/use-locale/index.js");
const require_index$1 = require("../../../../hooks/use-namespace/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_index$5 = require("../../../../directives/click-outside/index.js");
const require_panel_time_pick = require("../../../time-picker/src/time-picker-com/panel-time-pick.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$1.useNamespace("picker-panel");
const dpNs = require_index$1.useNamespace("date-picker");
const attrs = (0, vue.useAttrs)();
const slots = (0, vue.useSlots)();
const { t, lang } = require_index.useLocale();
const pickerBase = (0, vue.inject)(require_constants.PICKER_BASE_INJECTION_KEY);
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 || "HH:mm:ss") : 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) || "HH:mm:ss";
});
const dateFormat = (0, vue.computed)(() => {
return props.dateFormat || require_utils.extractDateFormat(props.format) || "YYYY-MM-DD";
});
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);
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);
};
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$3.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$3.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$5.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$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",
"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$2.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$2.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$2.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$4.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$4.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
@@ -0,0 +1,10 @@
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#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.js").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
@@ -0,0 +1,111 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import { DayOrDays } from "../../../time-picker/src/common/props.js";
import * as _$vue from "vue";
import dayjs from "dayjs";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-date-range.vue.d.ts
declare var __VLS_1: {
class: string;
}, __VLS_62: {}, __VLS_75: {}, __VLS_88: {}, __VLS_101: {}, __VLS_143: {}, __VLS_156: {}, __VLS_169: {}, __VLS_182: {};
type __VLS_Slots = {} & {
sidebar?: (props: typeof __VLS_1) => any;
} & {
'prev-year'?: (props: typeof __VLS_62) => any;
} & {
'prev-month'?: (props: typeof __VLS_75) => any;
} & {
'next-year'?: (props: typeof __VLS_88) => any;
} & {
'next-month'?: (props: typeof __VLS_101) => any;
} & {
'prev-year'?: (props: typeof __VLS_143) => any;
} & {
'prev-month'?: (props: typeof __VLS_156) => any;
} & {
'next-year'?: (props: typeof __VLS_169) => any;
} & {
'next-month'?: (props: typeof __VLS_182) => any;
};
declare const __VLS_base: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
readonly unlinkPanels: BooleanConstructor;
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly singlePanel: BooleanConstructor;
readonly type: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (((new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange")) | null)[], "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange", unknown>>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly dateFormat: StringConstructor;
readonly timeFormat: StringConstructor;
readonly showNow: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showWeekNumber: BooleanConstructor;
readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
}>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
clear: (...args: any[]) => void;
"calendar-change": (...args: any[]) => void;
"panel-change": (...args: any[]) => void;
pick: (...args: any[]) => void;
"set-picker-option": (...args: any[]) => void;
}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
readonly unlinkPanels: BooleanConstructor;
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly singlePanel: BooleanConstructor;
readonly type: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (((new (...args: any[]) => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange") | (() => "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange")) | null)[], "year" | "months" | "month" | "years" | "date" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "yearrange", unknown>>;
readonly required: true;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly dateFormat: StringConstructor;
readonly timeFormat: StringConstructor;
readonly showNow: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showWeekNumber: BooleanConstructor;
readonly editable: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
}>> & Readonly<{
onClear?: ((...args: any[]) => any) | undefined;
"onCalendar-change"?: ((...args: any[]) => any) | undefined;
"onPanel-change"?: ((...args: any[]) => any) | undefined;
onPick?: ((...args: any[]) => any) | undefined;
"onSet-picker-option"?: ((...args: any[]) => any) | undefined;
}>, {
readonly disabled: boolean;
readonly visible: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly border: boolean;
readonly editable: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showNow: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showConfirm: boolean;
readonly showFooter: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showWeekNumber: boolean;
readonly unlinkPanels: boolean;
readonly singlePanel: boolean;
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default as default };
@@ -0,0 +1,733 @@
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_index$2 = require("../../../input/index.js");
const require_index$3 = require("../../../button/index.js");
const require_constants = require("../../../time-picker/src/constants.js");
const require_utils = require("../../../time-picker/src/utils.js");
const require_index$4 = require("../../../../directives/click-outside/index.js");
const require_panel_time_pick = require("../../../time-picker/src/time-picker-com/panel-time-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");
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 { 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.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 || "") || "HH:mm:ss";
});
const dateFormat = (0, vue.computed)(() => {
return props.dateFormat || require_utils.extractDateFormat(format.value || "") || "YYYY-MM-DD";
});
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.singlePanel || props.unlinkPanels && new Date(leftYear.value + yearOffset, nextMonth) < new Date(rightYear.value, rightMonth.value);
});
const enableYearArrow = (0, vue.computed)(() => {
return props.singlePanel || 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 findValidDateToward = (from, toward) => {
if (!disabledDate || !disabledDate(from.toDate())) return from;
const forward = from.isBefore(toward);
let cursor = from;
while (forward ? cursor.isBefore(toward) : cursor.isAfter(toward)) {
cursor = forward ? cursor.add(1, "day") : cursor.subtract(1, "day");
if (!disabledDate(cursor.toDate())) return cursor;
}
return from;
};
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) {
const adjustedMax = findValidDateToward(minDate.value.add(1, "month"), minDate.value);
rightDate.value = adjustedMax;
maxDate.value = adjustedMax;
}
} else {
rightDate.value = parsedValueD;
maxDate.value = (maxDate.value || rightDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());
if (!props.unlinkPanels && !minDate.value) {
const adjustedMin = findValidDateToward(maxDate.value.subtract(1, "month"), maxDate.value);
leftDate.value = adjustedMin;
minDate.value = adjustedMin;
}
}
sortDates(minDate.value, maxDate.value);
handleRangeConfirm(true);
}
};
const handleDateChange = (_, type) => {
dateUserInput.value[type] = null;
if (type === "min") {
if (!props.unlinkPanels && maxDate.value && minDate.value && maxDate.value.isBefore(minDate.value)) {
const adjustedMax = findValidDateToward(minDate.value.add(1, "month"), minDate.value);
rightDate.value = adjustedMax;
maxDate.value = adjustedMax;
}
} else if (!props.unlinkPanels && minDate.value && maxDate.value && minDate.value.isAfter(maxDate.value)) {
const adjustedMin = findValidDateToward(maxDate.value.subtract(1, "month"), maxDate.value);
leftDate.value = adjustedMin;
minDate.value = adjustedMin;
}
sortDates(minDate.value, maxDate.value);
handleRangeConfirm(true);
};
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);
};
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,
"single-panel": _ctx.singlePanel
}
]) }, [(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$2.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$2.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$4.default), handleMinTimeClose]])], 2),
(0, vue.createElementVNode)("span", null, [(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.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$2.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$2.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$4.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"),
(0, vue.unref)(drpNs).is("left", !_ctx.singlePanel)
]) }, [
(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$1.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$1.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 || _ctx.singlePanel ? ((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$1.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" || _ctx.singlePanel ? ((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$1.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),
!_ctx.singlePanel ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 1,
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$1.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$1.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$1.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$1.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)) : (0, vue.createCommentVNode)("v-if", true)
], 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$3.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$3.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
@@ -0,0 +1,10 @@
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#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.js").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
@@ -0,0 +1,66 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import { DayOrDays } from "../../../time-picker/src/common/props.js";
import * as _$vue from "vue";
import dayjs from "dayjs";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-month-range.vue.d.ts
declare var __VLS_1: {
class: string;
}, __VLS_3: {}, __VLS_16: {}, __VLS_38: {}, __VLS_51: {};
type __VLS_Slots = {} & {
sidebar?: (props: typeof __VLS_1) => any;
} & {
'prev-year'?: (props: typeof __VLS_3) => any;
} & {
'next-year'?: (props: typeof __VLS_16) => any;
} & {
'prev-year'?: (props: typeof __VLS_38) => any;
} & {
'next-year'?: (props: typeof __VLS_51) => any;
};
declare const __VLS_base: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
readonly unlinkPanels: BooleanConstructor;
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly singlePanel: BooleanConstructor;
}>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
readonly unlinkPanels: BooleanConstructor;
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly singlePanel: BooleanConstructor;
}>> & Readonly<{}>, {
readonly disabled: boolean;
readonly visible: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly border: boolean;
readonly showConfirm: boolean;
readonly showFooter: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly unlinkPanels: boolean;
readonly singlePanel: boolean;
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default as default };
@@ -0,0 +1,216 @@
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_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 { 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.singlePanel || 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);
};
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,
"single-panel": _ctx.singlePanel
}
]) }, [(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"),
(0, vue.unref)(drpNs).is("left", !_ctx.singlePanel)
]) }, [(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 || _ctx.singlePanel ? ((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), !_ctx.singlePanel ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
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)) : (0, vue.createCommentVNode)("v-if", true)], 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
@@ -0,0 +1,10 @@
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#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.js").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
@@ -0,0 +1,66 @@
import { EpPropFinalized, EpPropMergeType } from "../../../../utils/vue/props/types.js";
import { DayOrDays } from "../../../time-picker/src/common/props.js";
import * as _$vue from "vue";
import dayjs from "dayjs";
//#region ../../packages/components/date-picker-panel/src/date-picker-com/panel-year-range.vue.d.ts
declare var __VLS_1: {
class: string;
}, __VLS_3: {}, __VLS_16: {}, __VLS_38: {}, __VLS_51: {};
type __VLS_Slots = {} & {
sidebar?: (props: typeof __VLS_1) => any;
} & {
'prev-year'?: (props: typeof __VLS_3) => any;
} & {
'next-year'?: (props: typeof __VLS_16) => any;
} & {
'prev-year'?: (props: typeof __VLS_38) => any;
} & {
'next-year'?: (props: typeof __VLS_51) => any;
};
declare const __VLS_base: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
readonly unlinkPanels: BooleanConstructor;
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly singlePanel: BooleanConstructor;
}>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
readonly unlinkPanels: BooleanConstructor;
readonly visible: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showConfirm: BooleanConstructor;
readonly showFooter: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly border: BooleanConstructor;
readonly disabled: BooleanConstructor;
readonly parsedValue: {
readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays) | (((new (...args: any[]) => dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs]) | (() => DayOrDays)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly singlePanel: BooleanConstructor;
}>> & Readonly<{}>, {
readonly disabled: boolean;
readonly visible: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly border: boolean;
readonly showConfirm: boolean;
readonly showFooter: EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly unlinkPanels: boolean;
readonly singlePanel: boolean;
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default as default };
@@ -0,0 +1,253 @@
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_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 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,
"single-panel": props.singlePanel
}
]);
const leftPanelKls = (0, vue.computed)(() => {
return {
content: [
ppNs.e("content"),
drpNs.e("content"),
drpNs.is("left", !props.singlePanel)
],
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.singlePanel || 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);
};
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 || _ctx.singlePanel ? ((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), !_ctx.singlePanel ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 0,
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)) : (0, vue.createCommentVNode)("v-if", true)], 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