reka-ui
Version:
Vue port for Radix UI Primitives.
1 lines • 17.9 kB
Source Map (JSON)
{"version":3,"file":"RangeCalendarCellTrigger.cjs","sources":["../../src/RangeCalendar/RangeCalendarCellTrigger.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport {\n type DateValue,\n getLocalTimeZone,\n isSameDay,\n isSameMonth,\n isToday,\n} from '@internationalized/date'\nimport { computed, nextTick } from 'vue'\nimport { useKbd } from '@/shared'\nimport { getDaysInMonth, isBetweenInclusive, toDate } from '@/date'\nimport { getSelectableCells } from '@/Calendar/utils'\n\nexport interface RangeCalendarCellTriggerProps extends PrimitiveProps {\n day: DateValue\n month: DateValue\n}\n\nexport interface RangeCalendarCellTriggerSlot {\n default: (props: {\n /** Current day */\n dayValue: string\n /** Current disable state */\n disabled: boolean\n /** Current selected state */\n selected: boolean\n /** Current today state */\n today: boolean\n /** Current outside view state */\n outsideView: boolean\n /** Current outside visible view state */\n outsideVisibleView: boolean\n /** Current unavailable state */\n unavailable: boolean\n /** Current highlighted state */\n highlighted: boolean\n /** Current highlighted start state */\n highlightedStart: boolean\n /** Current highlighted end state */\n highlightedEnd: boolean\n /** Current selection start state */\n selectionStart: boolean\n /** Current selection end state */\n selectionEnd: boolean\n\n }) => any\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { injectRangeCalendarRootContext } from './RangeCalendarRoot.vue'\n\nconst props = withDefaults(defineProps<RangeCalendarCellTriggerProps>(), { as: 'div' })\ndefineSlots<RangeCalendarCellTriggerSlot>()\n\nconst rootContext = injectRangeCalendarRootContext()\n\nconst kbd = useKbd()\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst labelText = computed(() => rootContext.formatter.custom(toDate(props.day), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n}))\n\nconst isDisabled = computed(() => rootContext.isDateDisabled(props.day))\nconst isUnavailable = computed(() => rootContext.isDateUnavailable?.(props.day) ?? false)\nconst isSelectedDate = computed(() => rootContext.isSelected(props.day))\nconst isSelectionStart = computed(() => rootContext.isSelectionStart(props.day))\nconst isSelectionEnd = computed(() => rootContext.isSelectionEnd(props.day))\nconst isHighlightStart = computed(() => rootContext.isHighlightedStart(props.day))\nconst isHighlightEnd = computed(() => rootContext.isHighlightedEnd(props.day))\nconst isHighlighted = computed(() => rootContext.highlightedRange.value\n ? isBetweenInclusive(props.day, rootContext.highlightedRange.value.start, rootContext.highlightedRange.value.end)\n : false)\n\nconst isDateToday = computed(() => {\n return isToday(props.day, getLocalTimeZone())\n})\nconst isOutsideView = computed(() => {\n return !isSameMonth(props.day, props.month)\n})\nconst isOutsideVisibleView = computed(() =>\n rootContext.isOutsideVisibleView(props.day),\n)\n\nconst dayValue = computed(() => props.day.day.toLocaleString(rootContext.locale.value))\n\nconst isFocusedDate = computed(() => {\n return !rootContext.disabled.value && isSameDay(props.day, rootContext.placeholder.value)\n})\n\nfunction changeDate(e: MouseEvent | KeyboardEvent, date: DateValue) {\n if (rootContext.readonly.value)\n return\n if (rootContext.isDateDisabled(date) || rootContext.isDateUnavailable?.(date))\n return\n\n rootContext.lastPressedDateValue.value = date.copy()\n\n if (rootContext.startValue.value && rootContext.highlightedRange.value === null) {\n if (isSameDay(date, rootContext.startValue.value) && !rootContext.preventDeselect.value && !rootContext.endValue.value) {\n rootContext.startValue.value = undefined\n rootContext.onPlaceholderChange(date)\n return\n }\n else if (!rootContext.endValue.value) {\n e.preventDefault()\n if (rootContext.lastPressedDateValue.value && isSameDay(rootContext.lastPressedDateValue.value, date))\n rootContext.startValue.value = date.copy()\n return\n }\n }\n\n if (rootContext.startValue.value && rootContext.endValue.value && isSameDay(rootContext.endValue.value, date) && !rootContext.preventDeselect.value) {\n rootContext.startValue.value = undefined\n rootContext.endValue.value = undefined\n rootContext.onPlaceholderChange(date)\n return\n }\n\n if (!rootContext.startValue.value) {\n rootContext.startValue.value = date.copy()\n }\n else if (!rootContext.endValue.value) {\n rootContext.endValue.value = date.copy()\n }\n else if (rootContext.endValue.value && rootContext.startValue.value) {\n rootContext.endValue.value = undefined\n rootContext.startValue.value = date.copy()\n }\n}\n\nfunction handleClick(e: MouseEvent) {\n changeDate(e, props.day)\n}\n\nfunction handleFocus() {\n if (rootContext.isDateDisabled(props.day) || rootContext.isDateUnavailable?.(props.day))\n return\n rootContext.focusedValue.value = props.day.copy()\n}\n\nfunction handleArrowKey(e: KeyboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n const parentElement = rootContext.parentElement.value!\n const indexIncrementation = 7\n const sign = rootContext.dir.value === 'rtl' ? -1 : 1\n switch (e.code) {\n case kbd.ARROW_RIGHT:\n shiftFocus(currentElement.value, sign)\n break\n case kbd.ARROW_LEFT:\n shiftFocus(currentElement.value, -sign)\n break\n case kbd.ARROW_UP:\n shiftFocus(currentElement.value, -indexIncrementation)\n break\n case kbd.ARROW_DOWN:\n shiftFocus(currentElement.value, indexIncrementation)\n break\n case kbd.ENTER:\n case kbd.SPACE_CODE:\n changeDate(e, props.day)\n }\n\n function shiftFocus(node: HTMLElement, add: number) {\n const allCollectionItems: HTMLElement[] = getSelectableCells(parentElement)\n if (!allCollectionItems.length)\n return\n\n const index = allCollectionItems.indexOf(node)\n const newIndex = index + add\n\n if (newIndex >= 0 && newIndex < allCollectionItems.length) {\n if (allCollectionItems[newIndex].hasAttribute('data-disabled')) {\n shiftFocus(allCollectionItems[newIndex], add)\n }\n allCollectionItems[newIndex].focus()\n return\n }\n\n if (newIndex < 0) {\n if (rootContext.isPrevButtonDisabled())\n return\n rootContext.prevPage()\n nextTick(() => {\n const newCollectionItems: HTMLElement[] = getSelectableCells(parentElement)\n if (!newCollectionItems.length)\n return\n if (!rootContext.pagedNavigation.value && rootContext.numberOfMonths.value > 1) {\n // Placeholder is set to first month of the new page\n const numberOfDays = getDaysInMonth(rootContext.placeholder.value)\n const computedIndex = numberOfDays - Math.abs(newIndex)\n if (newCollectionItems[computedIndex].hasAttribute('data-disabled')) {\n shiftFocus(newCollectionItems[computedIndex], add)\n }\n newCollectionItems[\n computedIndex\n ].focus()\n return\n }\n const computedIndex = newCollectionItems.length - Math.abs(newIndex)\n if (newCollectionItems[computedIndex].hasAttribute('data-disabled')) {\n shiftFocus(newCollectionItems[computedIndex], add)\n }\n newCollectionItems[\n computedIndex\n ].focus()\n })\n return\n }\n\n if (newIndex >= allCollectionItems.length) {\n if (rootContext.isNextButtonDisabled())\n return\n rootContext.nextPage()\n nextTick(() => {\n const newCollectionItems: HTMLElement[] = getSelectableCells(parentElement)\n if (!newCollectionItems.length)\n return\n\n if (!rootContext.pagedNavigation.value && rootContext.numberOfMonths.value > 1) {\n // Placeholder is set to first month of the new page\n const numberOfDays = getDaysInMonth(\n rootContext.placeholder.value.add({ months: rootContext.numberOfMonths.value - 1 }),\n )\n\n const computedIndex = newIndex - allCollectionItems.length + (newCollectionItems.length - numberOfDays)\n\n if (newCollectionItems[computedIndex].hasAttribute('data-disabled')) {\n shiftFocus(newCollectionItems[computedIndex], add)\n }\n newCollectionItems[computedIndex].focus()\n return\n }\n\n const computedIndex = newIndex - allCollectionItems.length\n if (newCollectionItems[computedIndex].hasAttribute('data-disabled')) {\n shiftFocus(newCollectionItems[computedIndex], add)\n }\n\n newCollectionItems[computedIndex].focus()\n })\n }\n }\n}\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n v-bind=\"props\"\n role=\"button\"\n :aria-label=\"labelText\"\n data-reka-calendar-cell-trigger\n :aria-selected=\"isSelectedDate && !isUnavailable ? true : undefined\"\n :aria-disabled=\"isDisabled || isUnavailable ? true : undefined\"\n :data-highlighted=\"isHighlighted && !isUnavailable ? '' : undefined\"\n :data-selection-start=\"isSelectionStart ? true : undefined\"\n :data-selection-end=\"isSelectionEnd ? true : undefined\"\n :data-highlighted-start=\"isHighlightStart ? true : undefined\"\n :data-highlighted-end=\"isHighlightEnd ? true : undefined\"\n :data-selected=\"isSelectedDate && !isUnavailable ? true : undefined\"\n :data-outside-visible-view=\"isOutsideVisibleView ? '' : undefined\"\n :data-value=\"day.toString()\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n :data-unavailable=\"isUnavailable ? '' : undefined\"\n :data-today=\"isDateToday ? '' : undefined\"\n :data-outside-view=\"isOutsideView ? '' : undefined\"\n :data-focused=\"isFocusedDate ? '' : undefined\"\n :tabindex=\"isFocusedDate ? 0 : isOutsideView || isDisabled ? undefined : -1\"\n @click=\"handleClick\"\n @focusin=\"handleFocus\"\n @mouseenter=\"handleFocus\"\n @keydown.up.down.left.right.enter.space=\"handleArrowKey\"\n >\n <slot\n :day-value=\"dayValue\"\n :disabled=\"isDisabled\"\n :today=\"isDateToday\"\n :selected=\"isSelectedDate\"\n :outside-view=\"isOutsideView\"\n :outside-visible-view=\"isOutsideVisibleView\"\n :unavailable=\"isUnavailable\"\n :highlighted=\"isHighlighted && !isUnavailable\"\n :highlighted-start=\"isHighlightStart\"\n :highlighted-end=\"isHighlightEnd\"\n :selection-start=\"isSelectionStart\"\n :selection-end=\"isSelectionEnd\"\n >\n {{ dayValue }}\n </slot>\n </Primitive>\n</template>\n"],"names":["injectRangeCalendarRootContext","useKbd","usePrimitiveElement","computed","toDate","isBetweenInclusive","isToday","getLocalTimeZone","isSameMonth","isSameDay","date","getSelectableCells","nextTick","getDaysInMonth","computedIndex"],"mappings":"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"}