vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 19 kB
Source Map (JSON)
{"version":3,"file":"calendar-panel.vue2.cjs","sources":["../../../components/calendar/calendar-panel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, ref, toRef, watch } from 'vue'\n\nimport CalendarCell from './calendar-cell.vue'\nimport { emitEvent, useLocale, useNameHelper, useProps } from '@vexip-ui/config'\nimport { useHover } from '@vexip-ui/hooks'\nimport {\n debounceMinor,\n differenceDays,\n differenceWeeks,\n endOfDay,\n rangeDate,\n startOfDay,\n startOfWeek,\n toFalse,\n} from '@vexip-ui/utils'\nimport { calendarPanelProps } from './props'\n\nimport type { Dateable } from '@vexip-ui/utils'\nimport type { CalendarPanelSlots, WeekIndex } from './symbol'\n\ndefineOptions({ name: 'CalendarPanel' })\n\nconst _props = defineProps(calendarPanelProps)\nconst props = useProps('calendarBase', _props, {\n locale: null,\n value: {\n default: null,\n static: true,\n },\n year: () => new Date().getFullYear(),\n month: {\n default: () => new Date().getMonth() + 1,\n validator: value => value > 0 && value <= 12,\n },\n weekDays: {\n default: null,\n validator: value => !value || value.length === 0 || value.length === 7,\n },\n weekStart: {\n default: 0,\n validator: value => value >= 0 && value < 7,\n },\n today: {\n default: () => new Date(),\n validator: value => !Number.isNaN(+new Date(value)),\n },\n disabledDate: {\n default: toFalse,\n isFunc: true,\n },\n valueType: {\n default: 'start',\n validator: value => value === 'start' || value === 'end',\n },\n min: null,\n max: null,\n range: null,\n selectRow: false,\n slots: () => ({}),\n})\n\nconst emit = defineEmits(['update:value'])\n\ndefineSlots<CalendarPanelSlots>()\n\nconst nh = useNameHelper('calendar')\n\nconst startValue = ref<Date | null>(null)\nconst endValue = ref<Date | null>(null)\nconst dateRange = ref<Date[]>([])\nconst hoveredDate = ref<Date | null>(null)\n\nconst { wrapper: body, isHover } = useHover()\nconst locale = useLocale('calendar', toRef(props, 'locale'))\n\nconst min = computed(() => (props.min ? +startOfDay(props.min) : -Infinity))\nconst max = computed(() => (props.max ? +endOfDay(props.max) : Infinity))\nconst reversed = computed(() => {\n if (Number.isNaN(min.value) || Number.isNaN(max.value)) {\n return false\n }\n\n return min.value > max.value\n})\n\nconst updateDateRange = debounceMinor(setDateRange)\n\nparseValue(props.value)\nsetDateRange()\n\nwatch(() => props.value, parseValue)\nwatch([() => props.year, () => props.month, () => props.weekStart], updateDateRange)\nwatch(isHover, value => {\n if (!value) {\n hoveredDate.value = null\n }\n})\nwatch(hoveredDate, value => {\n emitEvent(props.onHover, value)\n})\n\ndefineExpose({\n startValue,\n endValue,\n body,\n isSelected,\n isHovered,\n isPrevMonth,\n isNextMonth,\n isDisabled,\n isToday,\n isInRange,\n})\n\nfunction getWeekLabel(index: number) {\n return props.weekDays?.[index] || locale.value[`week${(index || 7) as WeekIndex}`]\n}\n\nfunction setDateRange() {\n dateRange.value = rangeDate(\n startOfWeek(new Date(props.year, props.month - 1, 1), props.weekStart),\n 42,\n )\n}\n\nfunction parseValue(value: Dateable | Dateable[]) {\n if (!Array.isArray(value)) {\n value = [value, value]\n }\n\n for (let i = 0; i < 2; ++i) {\n const date = new Date(value[i] ?? '')\n\n if (i === 0) {\n startValue.value = Number.isNaN(+date) ? null : date\n } else {\n endValue.value = Number.isNaN(+date) ? null : date\n }\n\n if (!props.range) break\n }\n}\n\nfunction isSameRow(current: Date, target: Date) {\n return props.selectRow && differenceWeeks(current, target) === 0\n}\n\nfunction isSelected(date: Date) {\n if (!date || (!startValue.value && !endValue.value)) {\n return false\n }\n\n return !!(\n (startValue.value &&\n (!differenceDays(date, startValue.value) || isSameRow(date, startValue.value))) ||\n (endValue.value && (!differenceDays(date, endValue.value) || isSameRow(date, endValue.value)))\n )\n}\n\nfunction isDisabled(date: Date) {\n if (typeof props.disabledDate === 'function') {\n if (props.disabledDate(date)) {\n return true\n }\n }\n\n const time = date.getTime()\n\n if (reversed.value) {\n if (time > max.value && time < min.value) {\n return true\n }\n } else {\n if (time < min.value || time > max.value) {\n return true\n }\n }\n\n return false\n}\n\nfunction isHovered(date: Date) {\n if (!date || !hoveredDate.value) {\n return false\n }\n\n return !differenceDays(date, hoveredDate.value) || isSameRow(date, hoveredDate.value)\n}\n\nfunction isPrevMonth(date: Date) {\n const { year, month } = props\n const dateYear = date.getFullYear()\n const dateMonth = date.getMonth()\n\n return dateYear < year || (dateYear === year && dateMonth < month - 1)\n}\n\nfunction isNextMonth(date: Date) {\n const { year, month } = props\n const dateYear = date.getFullYear()\n const dateMonth = date.getMonth()\n\n return dateYear > year || (dateYear === year && dateMonth > month - 1)\n}\n\nfunction isToday(date: Date) {\n return differenceDays(date, props.today) === 0\n}\n\nfunction handleSelect(date: Date) {\n if (isDisabled(date)) {\n return\n }\n\n if (props.valueType === 'start') {\n startValue.value = date\n } else {\n endValue.value = date\n }\n\n emitEvent(props.onSelect, date)\n emit('update:value', date)\n}\n\nfunction handleHover(date: Date) {\n hoveredDate.value = isDisabled(date) ? null : date\n}\n\nfunction isInRange(date: Date) {\n if (!hoveredDate.value && !startValue.value && !endValue.value) {\n return false\n }\n\n let min: number\n let max: number\n\n if (startValue.value && endValue.value) {\n const startTime = startValue.value.getTime()\n const endTime = endValue.value.getTime()\n\n min = Math.min(startTime, endTime)\n max = Math.max(startTime, endTime)\n } else if (hoveredDate.value) {\n if (!startValue.value && !endValue.value) return false\n\n const hoveredTime = hoveredDate.value.getTime()\n\n if (!startValue.value || !endValue.value) {\n const selectedTime = (startValue.value ?? endValue.value)!.getTime()\n\n min = Math.min(hoveredTime, selectedTime)\n max = Math.max(hoveredTime, selectedTime)\n } else {\n const startTime = startValue.value.getTime()\n const endTime = endValue.value.getTime()\n const minTime = Math.min(startTime, endTime)\n const maxTime = Math.max(startTime, endTime)\n\n min = Math.min(hoveredTime, minTime)\n max = Math.max(hoveredTime, maxTime)\n }\n } else {\n return false\n }\n\n return date.getTime() >= min && date.getTime() <= max\n}\n</script>\n\n<template>\n <div\n :class=\"[\n nh.be('panel'),\n nh.bs('vars'),\n props.selectRow && nh.bem('panel', 'select-row'),\n props.inherit && nh.bem('panel', 'inherit')\n ]\"\n role=\"grid\"\n >\n <slot name=\"header\">\n <Renderer :renderer=\"props.slots.header\"></Renderer>\n </slot>\n <div :class=\"[nh.be('row'), nh.bem('row', 'week')]\" aria-hidden>\n <div v-for=\"week in 7\" :key=\"week\" :class=\"[nh.be('cell'), nh.be('cell-week')]\">\n <slot\n name=\"week\"\n :label=\"getWeekLabel((week - 1 + props.weekStart) % 7)\"\n :index=\"week - 1\"\n :week=\"(week - 1 + props.weekStart) % 7\"\n >\n <Renderer\n :renderer=\"props.slots.week\"\n :data=\"{\n label: getWeekLabel((week - 1 + props.weekStart) % 7),\n index: week - 1,\n week: (week - 1 + props.weekStart) % 7\n }\"\n >\n <div :class=\"nh.be('index')\">\n {{ getWeekLabel((week - 1 + props.weekStart) % 7) }}\n </div>\n </Renderer>\n </slot>\n </div>\n </div>\n <div ref=\"body\" :class=\"nh.be('body')\">\n <div v-for=\"row in 6\" :key=\"row\" :class=\"nh.be('row')\">\n <CalendarCell\n v-for=\"cell in 7\"\n :key=\"(row - 1) * 7 + cell\"\n :date=\"dateRange[(row - 1) * 7 + cell - 1]\"\n :locale=\"locale\"\n :selected=\"isSelected(dateRange[(row - 1) * 7 + cell - 1])\"\n :hovered=\"isHovered(dateRange[(row - 1) * 7 + cell - 1])\"\n :is-prev=\"isPrevMonth(dateRange[(row - 1) * 7 + cell - 1])\"\n :is-next=\"isNextMonth(dateRange[(row - 1) * 7 + cell - 1])\"\n :is-today=\"isToday(dateRange[(row - 1) * 7 + cell - 1])\"\n :disabled=\"isDisabled(dateRange[(row - 1) * 7 + cell - 1])\"\n :in-range=\"props.range && isInRange(dateRange[(row - 1) * 7 + cell - 1])\"\n @hover=\"handleHover\"\n @select=\"handleSelect\"\n >\n <template\n v-if=\"$slots.item || props.slots.item\"\n #item=\"{\n date,\n label,\n selected,\n hovered,\n isPrev,\n isNext,\n isToday: matchedToday,\n disabled,\n inRange\n }\"\n >\n <slot\n name=\"item\"\n :date=\"date\"\n :label=\"label\"\n :selected=\"selected\"\n :hovered=\"hovered\"\n :is-prev=\"isPrev\"\n :is-next=\"isNext\"\n :is-today=\"matchedToday\"\n :disabled=\"disabled\"\n :in-range=\"inRange\"\n >\n <Renderer\n :renderer=\"props.slots.item\"\n :data=\"{\n date,\n label,\n selected,\n hovered,\n isPrev,\n isNext,\n isToday: matchedToday,\n disabled,\n inRange\n }\"\n ></Renderer>\n </slot>\n </template>\n <template v-if=\"$slots.itemContent || props.slots.itemContent\" #default=\"cellParams\">\n <slot name=\"itemContent\" v-bind=\"cellParams\">\n <Renderer :renderer=\"props.slots.itemContent\" :data=\"cellParams\"></Renderer>\n </slot>\n </template>\n </CalendarCell>\n </div>\n </div>\n <slot name=\"footer\">\n <Renderer :renderer=\"props.slots.footer\"></Renderer>\n </slot>\n </div>\n</template>\n"],"names":["_props","__props","props","useProps","value","toFalse","emit","__emit","nh","useNameHelper","startValue","ref","endValue","dateRange","hoveredDate","body","isHover","useHover","locale","useLocale","toRef","min","computed","startOfDay","max","endOfDay","reversed","updateDateRange","debounceMinor","setDateRange","parseValue","watch","emitEvent","__expose","isSelected","isHovered","isPrevMonth","isNextMonth","isDisabled","isToday","isInRange","getWeekLabel","index","_a","rangeDate","startOfWeek","i","date","isSameRow","current","target","differenceWeeks","differenceDays","time","year","month","dateYear","dateMonth","handleSelect","handleHover","startTime","endTime","hoveredTime","selectedTime","minTime","maxTime","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_createVNode","Renderer","_createElementVNode","_Fragment","_renderList","week","_toDisplayString","row","cell","CalendarCell","$slots","label","selected","hovered","isPrev","isNext","matchedToday","disabled","inRange","_withCtx","cellParams","_mergeProps"],"mappings":"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"}