song-ui-u
Version:
vue3 + js的PC前端组件库
1 lines • 57.3 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../../../packages/components/datePicker/src/index.jsx"],"sourcesContent":["import { ref, computed, onMounted, onUnmounted, defineComponent } from \"vue\";\r\nimport { XIcon, XInput } from \"@ui-library/components\";\r\n\r\nimport {\r\n ChevronLeft,\r\n ChevronsLeft,\r\n ChevronRight,\r\n ChevronsRight,\r\n Calendar,\r\n} from \"song-ui-pro-icon\";\r\nimport { useNamespace } from \"@ui-library/hook\";\r\nimport {\r\n format,\r\n parse,\r\n addMonths,\r\n addYears,\r\n subMonths,\r\n subYears,\r\n isSameDay,\r\n setDate,\r\n isSameMonth,\r\n isSameYear,\r\n setMonth,\r\n isAfter,\r\n isBefore,\r\n isToday,\r\n setYear,\r\n endOfMonth,\r\n getDay,\r\n subDays,\r\n addDays,\r\n} from \"date-fns\";\r\n\r\nexport default defineComponent({\r\n name: \"x-date-picker\",\r\n props: {\r\n modelValue: {\r\n type: [String, Date, Array],\r\n default: \"\",\r\n },\r\n placeholder: {\r\n type: String,\r\n default: \"请选择日期\",\r\n },\r\n format: {\r\n type: String,\r\n default: \"yyyy-MM-dd\",\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n clearance: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n model: {\r\n type: String,\r\n default: \"date\",\r\n },\r\n multiple: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n range: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n startPlaceholder: {\r\n type: String,\r\n default: \"开始日期\",\r\n },\r\n endPlaceholder: {\r\n type: String,\r\n default: \"结束日期\",\r\n },\r\n },\r\n\r\n setup(props, { emit }) {\r\n const ns = useNamespace(\"date-picker\");\r\n\r\n const visible = ref(false);\r\n const currentDate = ref(new Date(props.modelValue || new Date()));\r\n const nextMonthDate = ref(addMonths(currentDate.value, 1));\r\n const displayValue = ref(\"\");\r\n const weekDays = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\r\n\r\n // 范围选择相关状态\r\n const rangeState = ref({\r\n selecting: false, // 是否正在选择范围\r\n startDate: null, // 开始日期\r\n endDate: null, // 结束日期\r\n });\r\n\r\n // 初始化范围值\r\n if (\r\n props.range &&\r\n Array.isArray(props.modelValue) &&\r\n props.modelValue.length === 2\r\n ) {\r\n rangeState.value.startDate = parse(\r\n props.modelValue[0],\r\n props.format,\r\n new Date()\r\n );\r\n rangeState.value.endDate = parse(\r\n props.modelValue[1],\r\n props.format,\r\n new Date()\r\n );\r\n displayValue.value = `${formatDate(\r\n rangeState.value.startDate\r\n )} 至 ${formatDate(rangeState.value.endDate)}`;\r\n }\r\n\r\n const currentYear = computed(() => currentDate.value.getFullYear());\r\n const currentMonth = computed(() => currentDate.value.getMonth());\r\n\r\n // 计算提示占位符\r\n const placeholder = computed(() => {\r\n if (props.range)\r\n return `${props.startPlaceholder} 至 ${props.endPlaceholder}`;\r\n if (props.model == \"date\") return \"请选择日期\";\r\n if (props.model == \"year\") return \"请选择年份\";\r\n if (props.model == \"month\") return \"请选择月份\";\r\n });\r\n\r\n const years = computed(() => {\r\n const startYear = currentYear.value - 10;\r\n const endYear = currentYear.value + 10;\r\n const years = [];\r\n\r\n for (let year = startYear; year <= endYear; year++) {\r\n years.push({\r\n year,\r\n isSelected: isSelected(year),\r\n isYear: isYear(year),\r\n });\r\n }\r\n\r\n return years;\r\n });\r\n\r\n const months = computed(() => {\r\n const months = [];\r\n for (let month = 0; month < 12; month++) {\r\n months.push({\r\n month,\r\n name: `${month + 1}月`,\r\n isSelected: isSelectedMonth(month),\r\n isCurrentMonth: isCurrentMonth(month),\r\n });\r\n }\r\n return months;\r\n });\r\n\r\n const isSelectedMonth = (month) => {\r\n if (!props.modelValue) return false;\r\n\r\n if (props.model === \"month\") {\r\n if (props.multiple) {\r\n // 对于多选模式,比较月份是否包含在已选月份列表中\r\n const formattedMonth = format(\r\n setMonth(setYear(new Date(), currentYear.value), month),\r\n \"yyyy-MM\"\r\n );\r\n return multipleData.value.includes(formattedMonth);\r\n }\r\n\r\n // 对于单选模式,比较月份是否相同\r\n return month === new Date(props.modelValue).getMonth();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const isCurrentMonth = (month) => {\r\n return month === new Date().getMonth();\r\n };\r\n\r\n // const isToday = (date) => {\r\n // return isToday(date);\r\n // };\r\n\r\n const isYear = (data) => {\r\n return data == currentYear.value;\r\n };\r\n\r\n const isSelected = (value) => {\r\n if (!props.modelValue) return false;\r\n\r\n if (props.model === \"date\") {\r\n if (props.range) {\r\n // 范围选择模式\r\n const date = new Date(value);\r\n if (!rangeState.value.startDate && !rangeState.value.endDate)\r\n return false;\r\n\r\n // 检查是否是开始日期或结束日期\r\n if (\r\n rangeState.value.startDate &&\r\n isSameDay(date, rangeState.value.startDate)\r\n )\r\n return true;\r\n if (\r\n rangeState.value.endDate &&\r\n isSameDay(date, rangeState.value.endDate)\r\n )\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n if (props.multiple) {\r\n // 对于多选模式,比较日期是否包含在已选日期列表中\r\n return multipleData.value.includes(formatDate(value));\r\n }\r\n\r\n // 对于单选模式,比较日期是否相同\r\n return isSameDay(new Date(value), new Date(props.modelValue));\r\n }\r\n\r\n // 其他模式(年份、月份)保持不变\r\n if (props.model === \"year\") {\r\n if (props.multiple) {\r\n return multipleData.value.includes(value.toString());\r\n }\r\n return value == new Date(props.modelValue).getFullYear();\r\n }\r\n\r\n if (props.model === \"month\") {\r\n if (props.multiple) {\r\n const formattedMonth = format(\r\n setMonth(setYear(new Date(), currentYear.value), value),\r\n \"yyyy-MM\"\r\n );\r\n return multipleData.value.includes(formattedMonth);\r\n }\r\n return value == new Date(props.modelValue).getMonth();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n // 判断日期是否在选择范围内\r\n const isInRange = (value) => {\r\n if (\r\n !props.range ||\r\n !rangeState.value.startDate ||\r\n !rangeState.value.endDate\r\n )\r\n return false;\r\n\r\n const date = new Date(value);\r\n const start = rangeState.value.startDate;\r\n const end = rangeState.value.endDate;\r\n\r\n return isAfter(date, start) && isBefore(date, end);\r\n };\r\n\r\n const formatDate = (date) => {\r\n return format(date, props.format);\r\n };\r\n\r\n const showPanel = () => {\r\n if (props.disabled || props.readonly) return;\r\n visible.value = true;\r\n console.log(\"showPanel\", visible.value);\r\n };\r\n\r\n const handleClear = () => {\r\n emit(\"update:modelValue\", props.range ? [] : \"\");\r\n emit(\"change\", props.range ? [] : \"\");\r\n displayValue.value = \"\";\r\n if (props.multiple) {\r\n multipleData.value = [];\r\n visible.value = false;\r\n }\r\n if (props.range) {\r\n rangeState.value.startDate = null;\r\n rangeState.value.endDate = null;\r\n rangeState.value.selecting = false;\r\n }\r\n };\r\n\r\n const multipleData = ref([]);\r\n\r\n const selectDate = (value) => {\r\n if (props.model === \"year\") {\r\n const formattedYear = value.toString();\r\n emit(\"update:modelValue\", formattedYear);\r\n emit(\"change\", formattedYear);\r\n\r\n if (!props.multiple) {\r\n displayValue.value = formattedYear;\r\n }\r\n\r\n if (props.multiple) {\r\n if (multipleData.value.includes(formattedYear)) {\r\n multipleData.value = multipleData.value.filter(\r\n (item) => item !== formattedYear\r\n );\r\n } else {\r\n multipleData.value.push(formattedYear);\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (props.model === \"month\") {\r\n const selectedDate = setMonth(\r\n setYear(new Date(), currentYear.value),\r\n value.month\r\n );\r\n const formattedMonth = format(selectedDate, \"yyyy-MM\");\r\n emit(\"update:modelValue\", formattedMonth);\r\n emit(\"change\", formattedMonth);\r\n\r\n console.log(format(selectedDate, \"yyyy-MM\"));\r\n\r\n if (!props.multiple) {\r\n displayValue.value = formattedMonth;\r\n }\r\n\r\n if (props.multiple) {\r\n if (multipleData.value.includes(formattedMonth)) {\r\n multipleData.value = multipleData.value.filter(\r\n (item) => item !== formattedMonth\r\n );\r\n } else {\r\n multipleData.value.push(formattedMonth);\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (!value.isCurrentMonth) {\r\n currentDate.value = value.date;\r\n return;\r\n }\r\n\r\n if (props.model === \"date\") {\r\n // 范围选择模式\r\n if (props.range) {\r\n const selectedDate = value.date;\r\n\r\n if (!rangeState.value.selecting) {\r\n // 第一次点击,选择开始日期\r\n rangeState.value.startDate = selectedDate;\r\n rangeState.value.endDate = null;\r\n rangeState.value.selecting = true;\r\n } else {\r\n // 第二次点击,选择结束日期\r\n if (isBefore(selectedDate, rangeState.value.startDate)) {\r\n // 如果结束日期早于开始日期,交换它们\r\n rangeState.value.endDate = rangeState.value.startDate;\r\n rangeState.value.startDate = selectedDate;\r\n } else {\r\n rangeState.value.endDate = selectedDate;\r\n }\r\n\r\n // 更新模型值和显示值\r\n const startFormatted = formatDate(rangeState.value.startDate);\r\n const endFormatted = formatDate(rangeState.value.endDate);\r\n\r\n emit(\"update:modelValue\", [startFormatted, endFormatted]);\r\n emit(\"change\", [startFormatted, endFormatted]);\r\n displayValue.value = `${startFormatted} 至 ${endFormatted}`;\r\n\r\n // 重置选择状态\r\n rangeState.value.selecting = false;\r\n visible.value = false;\r\n }\r\n return;\r\n }\r\n\r\n if (!props.multiple) {\r\n const formattedDate = formatDate(value.date);\r\n emit(\"update:modelValue\", formattedDate);\r\n emit(\"change\", formattedDate);\r\n displayValue.value = formattedDate;\r\n visible.value = false;\r\n return;\r\n }\r\n\r\n if (props.multiple) {\r\n if (multipleData.value.includes(formatDate(value.date))) {\r\n multipleData.value = multipleData.value.filter(\r\n (item) => item !== formatDate(value.date)\r\n );\r\n } else {\r\n multipleData.value.push(formatDate(value.date));\r\n }\r\n }\r\n }\r\n\r\n if (!props.multiple) {\r\n visible.value = false;\r\n }\r\n };\r\n\r\n // 多选时候的确定\r\n const confirm = () => {\r\n visible.value = false;\r\n emit(\"update:modelValue\", multipleData.value.join(\",\")); // 将多选结果以逗号分隔的字符串形式返回\r\n emit(\"change\", multipleData.value.join(\",\"));\r\n displayValue.value = multipleData.value.join(\",\");\r\n };\r\n\r\n const prevYear = () => {\r\n currentDate.value = subYears(currentDate.value, 1);\r\n if (props.range) {\r\n nextMonthDate.value = subYears(nextMonthDate.value, 1);\r\n }\r\n };\r\n\r\n const nextYear = () => {\r\n currentDate.value = addYears(currentDate.value, 1);\r\n if (props.range) {\r\n nextMonthDate.value = addYears(nextMonthDate.value, 1);\r\n }\r\n };\r\n\r\n const prevMonth = () => {\r\n currentDate.value = subMonths(currentDate.value, 1);\r\n if (props.range) {\r\n nextMonthDate.value = subMonths(nextMonthDate.value, 1);\r\n }\r\n };\r\n\r\n const nextMonth = () => {\r\n currentDate.value = addMonths(currentDate.value, 1);\r\n if (props.range) {\r\n nextMonthDate.value = addMonths(nextMonthDate.value, 1);\r\n }\r\n };\r\n\r\n // 生成唯一 ID 的工具函数\r\n const generateUniqueId = () => {\r\n return `date-picker-${Math.random().toString(36).substr(2, 9)}`;\r\n };\r\n\r\n const uniqueId = ref(generateUniqueId());\r\n\r\n const handleClickOutside = (e) => {\r\n const root = e.currentTarget; // 当前组件的根元素\r\n const panel = root.querySelector(\".x-date-picker__panel\");\r\n const input = root.querySelector(\".x-date-picker__input\");\r\n\r\n if (panel && !panel.contains(e.target) && !input.contains(e.target)) {\r\n visible.value = false;\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n const root = document.querySelector(`[data-id=\"${uniqueId.value}\"]`);\r\n if (root) {\r\n root.addEventListener(\"click\", handleClickOutside);\r\n }\r\n });\r\n\r\n onUnmounted(() => {\r\n const root = document.querySelector(`[data-id=\"${uniqueId.value}\"]`);\r\n if (root) {\r\n root.removeEventListener(\"click\", handleClickOutside);\r\n }\r\n });\r\n\r\n // 计算右侧日历面板的日期数据\r\n const nextMonthDays = computed(() => {\r\n const year = nextMonthDate.value.getFullYear();\r\n const month = nextMonthDate.value.getMonth();\r\n\r\n // 获取当前月的第一天和最后一天\r\n const firstDay = setDate(setMonth(setYear(new Date(), year), month), 1);\r\n const lastDay = endOfMonth(setMonth(setYear(new Date(), year), month));\r\n\r\n const days = [];\r\n\r\n // 填充上个月的日期\r\n for (let i = getDay(firstDay); i > 0; i--) {\r\n const date = subDays(firstDay, i);\r\n days.push({\r\n day: date.getDate(),\r\n date: date,\r\n isCurrentMonth: false,\r\n });\r\n }\r\n\r\n // 当前月的日期\r\n for (let i = 1; i <= lastDay.getDate(); i++) {\r\n const date = setDate(setMonth(setYear(new Date(), year), month), i);\r\n days.push({\r\n day: i,\r\n date: date,\r\n isCurrentMonth: true,\r\n isToday: isToday(date),\r\n isSelected: isSelected(date),\r\n isInRange: isInRange(date),\r\n });\r\n }\r\n\r\n // 填充下个月的日期\r\n const remaining = 42 - days.length;\r\n for (let i = 1; i <= remaining; i++) {\r\n const date = addDays(lastDay, i);\r\n days.push({\r\n day: date.getDate(),\r\n date: date,\r\n isCurrentMonth: false,\r\n });\r\n }\r\n\r\n return days;\r\n });\r\n\r\n // 修改days计算属性,添加范围选择相关状态\r\n const days = computed(() => {\r\n const year = currentYear.value;\r\n const month = currentMonth.value;\r\n\r\n // 获取当前月的第一天和最后一天\r\n const firstDay = setDate(setMonth(setYear(new Date(), year), month), 1);\r\n const lastDay = endOfMonth(setMonth(setYear(new Date(), year), month));\r\n\r\n const days = [];\r\n\r\n // 填充上个月的日期\r\n for (let i = getDay(firstDay); i > 0; i--) {\r\n const date = subDays(firstDay, i);\r\n days.push({\r\n day: date.getDate(),\r\n date: date,\r\n isCurrentMonth: false,\r\n });\r\n }\r\n\r\n // 当前月的日期\r\n for (let i = 1; i <= lastDay.getDate(); i++) {\r\n const date = setDate(setMonth(setYear(new Date(), year), month), i);\r\n days.push({\r\n day: i,\r\n date: date,\r\n isCurrentMonth: true,\r\n isToday: isToday(date),\r\n isSelected: isSelected(date),\r\n isInRange: isInRange(date),\r\n });\r\n }\r\n\r\n // 填充下个月的日期\r\n const remaining = 42 - days.length;\r\n for (let i = 1; i <= remaining; i++) {\r\n const date = addDays(lastDay, i);\r\n days.push({\r\n day: date.getDate(),\r\n date: date,\r\n isCurrentMonth: false,\r\n });\r\n }\r\n\r\n return days;\r\n });\r\n\r\n const renderDays = (data, getKey, getContent, getClasses, onClick) => {\r\n return (\r\n <div class={ns.e(\"days\")}>\r\n {data.map((item, index) => (\r\n <span\r\n key={getKey(item, index)}\r\n class={getClasses(item)}\r\n onClick={() => onClick(item)}\r\n >\r\n {getContent(item)}\r\n </span>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n return () => (\r\n <div data-id={uniqueId.value} class={ns.b()}>\r\n {/* 输入框部分 */}\r\n <div\r\n class={[ns.e(\"input\"), ns.is(\"range\", props.range)]}\r\n onClick={showPanel}\r\n >\r\n <XInput\r\n modelValue={displayValue.value}\r\n placeholder={placeholder.value}\r\n disabled={props.disabled}\r\n readonly={props.readonly}\r\n clearance={props.clearance}\r\n onClear={handleClear}\r\n v-slots={{\r\n prepend: () => (\r\n <XIcon>\r\n <Calendar />\r\n </XIcon>\r\n ),\r\n }}\r\n />\r\n </div>\r\n\r\n {/* 日期面板 */}\r\n {visible.value && (\r\n <div\r\n class={[ns.e(\"panel\"), props.range ? ns.m(\"panel\", \"range\") : \"\"]}\r\n >\r\n {/* 左侧日历面板 */}\r\n <div class={props.range ? ns.e(\"panel-left\") : \"\"}>\r\n {/* 头部导航- 按照天数 */}\r\n {props.model == \"date\" && (\r\n <div class={ns.e(\"header\")}>\r\n <span class={ns.e(\"prev-year\")} onClick={prevYear}>\r\n <XIcon>\r\n <ChevronsLeft />\r\n </XIcon>\r\n </span>\r\n <span class={ns.e(\"prev-month\")} onClick={prevMonth}>\r\n <XIcon>\r\n <ChevronLeft />\r\n </XIcon>\r\n </span>\r\n <span class={ns.e(\"header-label\")}>\r\n {currentYear.value}年 {currentMonth.value + 1}月\r\n </span>\r\n <span class={ns.e(\"next-month\")} onClick={nextMonth}>\r\n <XIcon>\r\n <ChevronRight />\r\n </XIcon>\r\n </span>\r\n <span class={ns.e(\"next-year\")} onClick={nextYear}>\r\n <XIcon>\r\n <ChevronsRight />\r\n </XIcon>\r\n </span>\r\n </div>\r\n )}\r\n\r\n {/* 头部导航- 按照年份 */}\r\n {props.model == \"year\" && (\r\n <div class={ns.e(\"header\")}>\r\n <span class={ns.e(\"prev-year\")} onClick={prevYear}>\r\n <XIcon>\r\n <ChevronsLeft />\r\n </XIcon>\r\n </span>\r\n\r\n <span class={ns.e(\"header-label\")}>\r\n {currentYear.value}年\r\n </span>\r\n\r\n <span class={ns.e(\"next-year\")} onClick={nextYear}>\r\n <XIcon>\r\n <ChevronsRight />\r\n </XIcon>\r\n </span>\r\n </div>\r\n )}\r\n\r\n {/* 头部导航- 按照月份 */}\r\n {props.model == \"month\" && (\r\n <div class={ns.e(\"header\")}>\r\n <span class={ns.e(\"prev-year\")} onClick={prevYear}>\r\n <XIcon>\r\n <ChevronsLeft />\r\n </XIcon>\r\n </span>\r\n <span class={ns.e(\"header-label\")}>\r\n {currentYear.value}年\r\n </span>\r\n <span class={ns.e(\"next-year\")} onClick={nextYear}>\r\n <XIcon>\r\n <ChevronsRight />\r\n </XIcon>\r\n </span>\r\n </div>\r\n )}\r\n\r\n {/* 周标题 */}\r\n <div class={ns.e(\"content\")}>\r\n {props.model == \"date\" && (\r\n <div class={ns.e(\"week-header\")}>\r\n {weekDays.map((day) => (\r\n <span key={day}>{day}</span>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* 动态渲染日期/年份/月份 */}\r\n {props.model == \"date\" &&\r\n renderDays(\r\n days.value,\r\n (_, index) => index, // 使用索引作为 key\r\n (cell) => cell.day, // 显示日期\r\n (cell) => [\r\n ns.e(\"cell\"),\r\n ns.is(\"selected\", cell.isSelected),\r\n ns.is(\"today\", cell.isToday),\r\n ns.is(\"not-current-month\", !cell.isCurrentMonth),\r\n ns.is(\"in-range\", cell.isInRange),\r\n ns.is(\r\n \"range-start\",\r\n props.range &&\r\n rangeState.value.startDate &&\r\n isSameDay(cell.date, rangeState.value.startDate)\r\n ),\r\n ns.is(\r\n \"range-end\",\r\n props.range &&\r\n rangeState.value.endDate &&\r\n isSameDay(cell.date, rangeState.value.endDate)\r\n ),\r\n ],\r\n (cell) => selectDate(cell)\r\n )}\r\n\r\n {props.model == \"year\" &&\r\n renderDays(\r\n years.value,\r\n (cell) => cell.year, // 使用年份作为 key\r\n (cell) => cell.year, // 显示年份\r\n (cell) => [\r\n ns.e(\"cell\"),\r\n ns.is(\"today\", cell.isYear),\r\n ns.is(\"selected\", cell.isSelected),\r\n ],\r\n (cell) => selectDate(cell.year)\r\n )}\r\n\r\n {props.model == \"month\" &&\r\n renderDays(\r\n months.value,\r\n (cell) => cell.month, // 使用月份作为 key\r\n (cell) => cell.name, // 显示月份名称\r\n (cell) => [\r\n ns.e(\"cell\"),\r\n ns.is(\"selected\", cell.isSelected),\r\n ns.is(\"today\", cell.isCurrentMonth),\r\n ],\r\n (cell) => selectDate(cell)\r\n )}\r\n </div>\r\n\r\n {props.multiple && (\r\n <div class={ns.e(\"footer\")}>\r\n <x-button\r\n type=\"primary\"\r\n size=\"small\"\r\n onClick={() => confirm()}\r\n >\r\n 确定\r\n </x-button>\r\n <x-button size=\"small\" onClick={() => handleClear()}>\r\n 取消\r\n </x-button>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* 右侧日历面板(仅在范围选择模式下显示) */}\r\n {props.range && props.model === \"date\" && (\r\n <div class={ns.e(\"panel-right\")}>\r\n <div class={ns.e(\"header\")}>\r\n <span class={ns.e(\"prev-year\")} onClick={prevYear}>\r\n <XIcon>\r\n <ChevronsLeft />\r\n </XIcon>\r\n </span>\r\n <span class={ns.e(\"prev-month\")} onClick={prevMonth}>\r\n <XIcon>\r\n <ChevronLeft />\r\n </XIcon>\r\n </span>\r\n <span class={ns.e(\"header-label\")}>\r\n {nextMonthDate.value.getFullYear()}年{\" \"}\r\n {nextMonthDate.value.getMonth() + 1}月\r\n </span>\r\n <span class={ns.e(\"next-month\")} onClick={nextMonth}>\r\n <XIcon>\r\n <ChevronRight />\r\n </XIcon>\r\n </span>\r\n <span class={ns.e(\"next-year\")} onClick={nextYear}>\r\n <XIcon>\r\n <ChevronsRight />\r\n </XIcon>\r\n </span>\r\n </div>\r\n\r\n <div class={ns.e(\"content\")}>\r\n <div class={ns.e(\"week-header\")}>\r\n {weekDays.map((day) => (\r\n <span key={day}>{day}</span>\r\n ))}\r\n </div>\r\n\r\n {renderDays(\r\n nextMonthDays.value,\r\n (_, index) => index,\r\n (cell) => cell.day,\r\n (cell) => [\r\n ns.e(\"cell\"),\r\n ns.is(\"selected\", cell.isSelected),\r\n ns.is(\"today\", cell.isToday),\r\n ns.is(\"not-current-month\", !cell.isCurrentMonth),\r\n ns.is(\"in-range\", cell.isInRange),\r\n ns.is(\r\n \"range-start\",\r\n props.range &&\r\n rangeState.value.startDate &&\r\n isSameDay(cell.date, rangeState.value.startDate)\r\n ),\r\n ns.is(\r\n \"range-end\",\r\n props.range &&\r\n rangeState.value.endDate &&\r\n isSameDay(cell.date, rangeState.value.endDate)\r\n ),\r\n ],\r\n (cell) => selectDate(cell)\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","modelValue","type","String","Date","Array","default","placeholder","format","disabled","Boolean","readonly","clearance","model","multiple","range","startPlaceholder","endPlaceholder","setup","emit","ns","useNamespace","visible","ref","currentDate","nextMonthDate","addMonths","value","displayValue","weekDays","rangeState","selecting","startDate","endDate","isArray","length","parse","formatDate","currentYear","computed","getFullYear","currentMonth","getMonth","years","startYear","endYear","year","push","isSelected","isYear","months","month","isSelectedMonth","isCurrentMonth","formattedMonth","setMonth","setYear","multipleData","includes","data","date","isSameDay","toString","isInRange","start","end","isAfter","isBefore","showPanel","console","log","handleClear","selectDate","formattedYear","filter","item","selectedDate","startFormatted","endFormatted","formattedDate","confirm","join","prevYear","subYears","nextYear","addYears","prevMonth","subMonths","nextMonth","generateUniqueId","Math","random","substr","uniqueId","handleClickOutside","e","root","currentTarget","panel","querySelector","input","contains","target","onMounted","document","addEventListener","onUnmounted","removeEventListener","nextMonthDays","firstDay","setDate","lastDay","endOfMonth","days","i","getDay","subDays","day","getDate","isToday","remaining","addDays","renderDays","getKey","getContent","getClasses","onClick","_createVNode","map","index","b","is","XInput","prepend","XIcon","Calendar","m","ChevronsLeft","ChevronLeft","_createTextVNode","ChevronRight","ChevronsRight","_","cell","_resolveComponent"],"mappings":"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