reka-ui 1.0.0-alpha.9 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/Calendar/CalendarCellTrigger.cjs +23 -5
- package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.js +24 -6
- package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
- package/dist/Calendar/CalendarNext.cjs +2 -2
- package/dist/Calendar/CalendarNext.cjs.map +1 -1
- package/dist/Calendar/CalendarNext.js +2 -2
- package/dist/Calendar/CalendarNext.js.map +1 -1
- package/dist/Calendar/CalendarPrev.cjs +2 -2
- package/dist/Calendar/CalendarPrev.cjs.map +1 -1
- package/dist/Calendar/CalendarPrev.js +2 -2
- package/dist/Calendar/CalendarPrev.js.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.cjs +1 -0
- package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.js +1 -0
- package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
- package/dist/DateField/DateFieldRoot.cjs +3 -3
- package/dist/DateField/DateFieldRoot.cjs.map +1 -1
- package/dist/DateField/DateFieldRoot.js +3 -3
- package/dist/DateField/DateFieldRoot.js.map +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.cjs +2 -2
- package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
- package/dist/DatePicker/DatePickerCellTrigger.js +2 -2
- package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
- package/dist/DatePicker/DatePickerField.cjs +6 -7
- package/dist/DatePicker/DatePickerField.cjs.map +1 -1
- package/dist/DatePicker/DatePickerField.js +2 -3
- package/dist/DatePicker/DatePickerField.js.map +1 -1
- package/dist/DatePicker/DatePickerNext.cjs +2 -2
- package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
- package/dist/DatePicker/DatePickerNext.js +2 -2
- package/dist/DatePicker/DatePickerNext.js.map +1 -1
- package/dist/DatePicker/DatePickerPrev.cjs +2 -2
- package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
- package/dist/DatePicker/DatePickerPrev.js +2 -2
- package/dist/DatePicker/DatePickerPrev.js.map +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +13 -9
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +9 -5
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.cjs +3 -4
- package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
- package/dist/DateRangeField/DateRangeFieldRoot.js +3 -4
- package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCellTrigger.cjs +2 -2
- package/dist/DateRangePicker/DateRangePickerCellTrigger.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerCellTrigger.js +2 -2
- package/dist/DateRangePicker/DateRangePickerCellTrigger.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.cjs +2 -2
- package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerNext.js +2 -2
- package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.cjs +2 -2
- package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerPrev.js +2 -2
- package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.cjs +5 -0
- package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js +6 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
- package/dist/Dialog/utils.cjs +1 -1
- package/dist/Dialog/utils.cjs.map +1 -1
- package/dist/Dialog/utils.js +1 -1
- package/dist/Dialog/utils.js.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
- package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
- package/dist/Editable/EditableRoot.cjs +1 -0
- package/dist/Editable/EditableRoot.cjs.map +1 -1
- package/dist/Editable/EditableRoot.js +1 -0
- package/dist/Editable/EditableRoot.js.map +1 -1
- package/dist/Menu/MenuContentImpl.cjs +2 -1
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js +2 -1
- package/dist/Menu/MenuContentImpl.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.cjs +1 -2
- package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuIndicator.js +1 -2
- package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
- package/dist/PinInput/PinInputInput.cjs +1 -1
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +1 -1
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/Presence/usePresence.cjs +2 -1
- package/dist/Presence/usePresence.cjs.map +1 -1
- package/dist/Presence/usePresence.js +2 -1
- package/dist/Presence/usePresence.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +30 -7
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js +31 -8
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarNext.js +2 -2
- package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.cjs +2 -2
- package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarPrev.js +2 -2
- package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +10 -9
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +10 -9
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.cjs +2 -1
- package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
- package/dist/RovingFocus/RovingFocusItem.js +2 -1
- package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/constant/components.cjs +10 -9
- package/dist/constant/components.cjs.map +1 -1
- package/dist/constant/components.js +10 -9
- package/dist/constant/components.js.map +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.d.ts +375 -324
- package/dist/index.js +3 -3
- package/dist/nuxt/index.d.cts +1 -1
- package/dist/nuxt/index.d.mts +1 -1
- package/dist/shared/useBodyScrollLock.cjs +1 -1
- package/dist/shared/useBodyScrollLock.cjs.map +1 -1
- package/dist/shared/useBodyScrollLock.js +1 -1
- package/dist/shared/useBodyScrollLock.js.map +1 -1
- package/dist/shared/useFilter.cjs.map +1 -1
- package/dist/shared/useFilter.js.map +1 -1
- package/dist/shared/useForwardExpose.cjs +2 -2
- package/dist/shared/useForwardExpose.cjs.map +1 -1
- package/dist/shared/useForwardExpose.js +2 -2
- package/dist/shared/useForwardExpose.js.map +1 -1
- package/package.json +20 -20
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ For changelog, visit [releases](https://github.com/unovue/reka-ui/releases).
|
|
|
50
50
|
|
|
51
51
|
## Contributing
|
|
52
52
|
|
|
53
|
-
We would love to have your contributions! All PRs
|
|
53
|
+
We would love to have your contributions! All PRs are welcome! We need help building the core components, docs, tests, stories! Join our discord and we will get you up and running!
|
|
54
54
|
|
|
55
55
|
## Dev Setup
|
|
56
56
|
|
|
@@ -33,7 +33,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
33
33
|
});
|
|
34
34
|
const isDisabled = vue.computed(() => rootContext.isDateDisabled(props.day));
|
|
35
35
|
const isUnavailable = vue.computed(
|
|
36
|
-
() => rootContext.isDateUnavailable?.(props.day)
|
|
36
|
+
() => rootContext.isDateUnavailable?.(props.day) ?? false
|
|
37
37
|
);
|
|
38
38
|
const isDateToday = vue.computed(() => {
|
|
39
39
|
return date.isToday(props.day, date.getLocalTimeZone());
|
|
@@ -48,7 +48,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
48
48
|
return !rootContext.disabled.value && date.isSameDay(props.day, rootContext.placeholder.value);
|
|
49
49
|
});
|
|
50
50
|
const isSelectedDate = vue.computed(() => rootContext.isDateSelected(props.day));
|
|
51
|
-
const SELECTOR = "[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-
|
|
51
|
+
const SELECTOR = "[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-view]):not([data-outside-visible-view])";
|
|
52
52
|
function changeDate(date) {
|
|
53
53
|
if (rootContext.readonly.value)
|
|
54
54
|
return;
|
|
@@ -98,6 +98,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
98
98
|
rootContext.prevPage();
|
|
99
99
|
vue.nextTick(() => {
|
|
100
100
|
const newCollectionItems = parentElement ? Array.from(parentElement.querySelectorAll(SELECTOR)) : [];
|
|
101
|
+
if (!rootContext.pagedNavigation.value) {
|
|
102
|
+
const numberOfDays = date_comparators.getDaysInMonth(rootContext.placeholder.value);
|
|
103
|
+
newCollectionItems[numberOfDays - Math.abs(newIndex)].focus();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
101
106
|
newCollectionItems[newCollectionItems.length - Math.abs(newIndex)].focus();
|
|
102
107
|
});
|
|
103
108
|
return;
|
|
@@ -108,6 +113,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
108
113
|
rootContext.nextPage();
|
|
109
114
|
vue.nextTick(() => {
|
|
110
115
|
const newCollectionItems = parentElement ? Array.from(parentElement.querySelectorAll(SELECTOR)) : [];
|
|
116
|
+
if (!rootContext.pagedNavigation.value) {
|
|
117
|
+
const numberOfDays = date_comparators.getDaysInMonth(rootContext.placeholder.value.add({ months: rootContext.numberOfMonths.value - 1 }));
|
|
118
|
+
newCollectionItems[newCollectionItems.length - numberOfDays + newIndex - allCollectionItems.length].focus();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
111
121
|
newCollectionItems[newIndex - allCollectionItems.length].focus();
|
|
112
122
|
});
|
|
113
123
|
}
|
|
@@ -120,10 +130,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
120
130
|
role: "button",
|
|
121
131
|
"aria-label": labelText.value,
|
|
122
132
|
"data-reka-calendar-cell-trigger": "",
|
|
123
|
-
"aria-disabled":
|
|
133
|
+
"aria-disabled": isDisabled.value || isUnavailable.value ? true : undefined,
|
|
124
134
|
"data-selected": isSelectedDate.value ? true : undefined,
|
|
125
135
|
"data-value": _ctx.day.toString(),
|
|
126
|
-
"data-disabled": isDisabled.value
|
|
136
|
+
"data-disabled": isDisabled.value ? "" : undefined,
|
|
127
137
|
"data-unavailable": isUnavailable.value ? "" : undefined,
|
|
128
138
|
"data-today": isDateToday.value ? "" : undefined,
|
|
129
139
|
"data-outside-view": isOutsideView.value ? "" : undefined,
|
|
@@ -138,7 +148,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
138
148
|
]
|
|
139
149
|
}), {
|
|
140
150
|
default: vue.withCtx(() => [
|
|
141
|
-
vue.renderSlot(_ctx.$slots, "default", {
|
|
151
|
+
vue.renderSlot(_ctx.$slots, "default", {
|
|
152
|
+
dayValue: dayValue.value,
|
|
153
|
+
disabled: isDisabled.value,
|
|
154
|
+
today: isDateToday.value,
|
|
155
|
+
selected: isSelectedDate.value,
|
|
156
|
+
outsideView: isOutsideView.value,
|
|
157
|
+
outsideVisibleView: isOutsideVisibleView.value,
|
|
158
|
+
unavailable: isUnavailable.value
|
|
159
|
+
}, () => [
|
|
142
160
|
vue.createTextVNode(vue.toDisplayString(dayValue.value), 1)
|
|
143
161
|
])
|
|
144
162
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarCellTrigger.cjs","sources":["../../src/Calendar/CalendarCellTrigger.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 { toDate } from '@/date'\n\nexport interface CalendarCellTriggerProps extends PrimitiveProps {\n /** The date value provided to the cell trigger */\n day: DateValue\n /** The month in which the cell is rendered */\n month: DateValue\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarCellTriggerProps>(), {\n as: 'div',\n})\n\ndefineSlots<{\n default: (props: {\n /** Current day */\n dayValue: string\n }) => any\n}>()\n\nconst kbd = useKbd()\nconst rootContext = injectCalendarRootContext()\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst dayValue = computed(() => props.day.day.toLocaleString(rootContext.locale.value))\n\nconst labelText = computed(() => {\n return rootContext.formatter.custom(toDate(props.day), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })\n})\n\nconst isDisabled = computed(() => rootContext.isDateDisabled(props.day))\nconst isUnavailable = computed(() =>\n rootContext.isDateUnavailable?.(props.day),\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 isFocusedDate = computed(() => {\n return !rootContext.disabled.value && isSameDay(props.day, rootContext.placeholder.value)\n})\nconst isSelectedDate = computed(() => rootContext.isDateSelected(props.day))\n\nconst SELECTOR\n = '[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-month]):not([data-outside-visible-months])'\n\nfunction changeDate(date: DateValue) {\n if (rootContext.readonly.value)\n return\n if (rootContext.isDateDisabled(date) || rootContext.isDateUnavailable?.(date))\n return\n\n rootContext.onDateChange(date)\n}\n\nfunction handleClick() {\n changeDate(props.day)\n}\n\nfunction handleArrowKey(e: KeyboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n const parentElement = rootContext.parentElement.value!\n const allCollectionItems: HTMLElement[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n const index = allCollectionItems.indexOf(currentElement.value)\n let newIndex = index\n const indexIncrementation = 7\n const sign = rootContext.dir.value === 'rtl' ? -1 : 1\n switch (e.code) {\n case kbd.ARROW_RIGHT:\n newIndex += sign\n break\n case kbd.ARROW_LEFT:\n newIndex -= sign\n break\n case kbd.ARROW_UP:\n newIndex -= indexIncrementation\n break\n case kbd.ARROW_DOWN:\n newIndex += indexIncrementation\n break\n case kbd.ENTER:\n case kbd.SPACE_CODE:\n changeDate(props.day)\n return\n default:\n return\n }\n\n if (newIndex >= 0 && newIndex < allCollectionItems.length) {\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n newCollectionItems[\n newCollectionItems.length - Math.abs(newIndex)\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n newCollectionItems[newIndex - allCollectionItems.length].focus()\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-disabled=\"isOutsideView || isDisabled || isUnavailable ? true : undefined\"\n :data-selected=\"isSelectedDate ? true : undefined\"\n :data-value=\"day.toString()\"\n :data-disabled=\"isDisabled || isOutsideView ? '' : undefined\"\n :data-unavailable=\"isUnavailable ? '' : undefined\"\n :data-today=\"isDateToday ? '' : undefined\"\n :data-outside-view=\"isOutsideView ? '' : undefined\"\n :data-outside-visible-view=\"isOutsideVisibleView ? '' : undefined\"\n :data-focused=\"isFocusedDate ? '' : undefined\"\n :tabindex=\"isFocusedDate ? 0 : isOutsideView || isDisabled ? undefined : -1\"\n @click=\"handleClick\"\n @keydown.up.down.left.right.space.enter=\"handleArrowKey\"\n @keydown.enter.prevent\n >\n <slot :day-value=\"dayValue\">\n {{ dayValue }}\n </slot>\n </Primitive>\n</template>\n"],"names":["useKbd","injectCalendarRootContext","usePrimitiveElement","computed","toDate","isToday","getLocalTimeZone","isSameMonth","isSameDay","nextTick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CalendarCellTrigger.cjs","sources":["../../src/Calendar/CalendarCellTrigger.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, toDate } from '@/date'\n\nexport interface CalendarCellTriggerProps extends PrimitiveProps {\n /** The date value provided to the cell trigger */\n day: DateValue\n /** The month in which the cell is rendered */\n month: DateValue\n}\n\nexport interface CalendarCellTriggerSlot {\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 }) => any\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarCellTriggerProps>(), {\n as: 'div',\n})\n\ndefineSlots<CalendarCellTriggerSlot>()\n\nconst kbd = useKbd()\nconst rootContext = injectCalendarRootContext()\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst dayValue = computed(() => props.day.day.toLocaleString(rootContext.locale.value))\n\nconst labelText = computed(() => {\n return rootContext.formatter.custom(toDate(props.day), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })\n})\n\nconst isDisabled = computed(() => rootContext.isDateDisabled(props.day))\nconst isUnavailable = computed(() =>\n rootContext.isDateUnavailable?.(props.day) ?? 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 isFocusedDate = computed(() => {\n return !rootContext.disabled.value && isSameDay(props.day, rootContext.placeholder.value)\n})\nconst isSelectedDate = computed(() => rootContext.isDateSelected(props.day))\n\nconst SELECTOR\n = '[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-view]):not([data-outside-visible-view])'\n\nfunction changeDate(date: DateValue) {\n if (rootContext.readonly.value)\n return\n if (rootContext.isDateDisabled(date) || rootContext.isDateUnavailable?.(date))\n return\n\n rootContext.onDateChange(date)\n}\n\nfunction handleClick() {\n changeDate(props.day)\n}\n\nfunction handleArrowKey(e: KeyboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n const parentElement = rootContext.parentElement.value!\n const allCollectionItems: HTMLElement[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n const index = allCollectionItems.indexOf(currentElement.value)\n let newIndex = index\n const indexIncrementation = 7\n const sign = rootContext.dir.value === 'rtl' ? -1 : 1\n switch (e.code) {\n case kbd.ARROW_RIGHT:\n newIndex += sign\n break\n case kbd.ARROW_LEFT:\n newIndex -= sign\n break\n case kbd.ARROW_UP:\n newIndex -= indexIncrementation\n break\n case kbd.ARROW_DOWN:\n newIndex += indexIncrementation\n break\n case kbd.ENTER:\n case kbd.SPACE_CODE:\n changeDate(props.day)\n return\n default:\n return\n }\n\n if (newIndex >= 0 && newIndex < allCollectionItems.length) {\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n if (!rootContext.pagedNavigation.value) {\n // Placeholder is set to first month of the new page\n const numberOfDays = getDaysInMonth(rootContext.placeholder.value)\n newCollectionItems[\n numberOfDays - Math.abs(newIndex)\n ].focus()\n return\n }\n newCollectionItems[\n newCollectionItems.length - Math.abs(newIndex)\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n\n if (!rootContext.pagedNavigation.value) {\n // Placeholder is set to first month of the new page\n const numberOfDays = getDaysInMonth(rootContext.placeholder.value.add({ months: rootContext.numberOfMonths.value - 1 }))\n newCollectionItems[newCollectionItems.length - numberOfDays + newIndex - allCollectionItems.length].focus()\n return\n }\n\n newCollectionItems[newIndex - allCollectionItems.length].focus()\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-disabled=\"isDisabled || isUnavailable ? true : undefined\"\n :data-selected=\"isSelectedDate ? true : 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-outside-visible-view=\"isOutsideVisibleView ? '' : undefined\"\n :data-focused=\"isFocusedDate ? '' : undefined\"\n :tabindex=\"isFocusedDate ? 0 : isOutsideView || isDisabled ? undefined : -1\"\n @click=\"handleClick\"\n @keydown.up.down.left.right.space.enter=\"handleArrowKey\"\n @keydown.enter.prevent\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 >\n {{ dayValue }}\n </slot>\n </Primitive>\n</template>\n"],"names":["useKbd","injectCalendarRootContext","usePrimitiveElement","computed","toDate","isToday","getLocalTimeZone","isSameMonth","isSameDay","nextTick","getDaysInMonth"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../date/calendar.js';
|
|
2
|
-
import { t as toDate } from '../date/comparators.js';
|
|
2
|
+
import { t as toDate, g as getDaysInMonth } from '../date/comparators.js';
|
|
3
3
|
import { defineComponent, computed, openBlock, createBlock, unref, mergeProps, withKeys, withModifiers, withCtx, renderSlot, createTextVNode, toDisplayString, nextTick } from 'vue';
|
|
4
4
|
import { isToday, getLocalTimeZone, isSameMonth, isSameDay } from '@internationalized/date';
|
|
5
5
|
import { u as usePrimitiveElement } from '../Primitive/usePrimitiveElement.js';
|
|
@@ -31,7 +31,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
31
31
|
});
|
|
32
32
|
const isDisabled = computed(() => rootContext.isDateDisabled(props.day));
|
|
33
33
|
const isUnavailable = computed(
|
|
34
|
-
() => rootContext.isDateUnavailable?.(props.day)
|
|
34
|
+
() => rootContext.isDateUnavailable?.(props.day) ?? false
|
|
35
35
|
);
|
|
36
36
|
const isDateToday = computed(() => {
|
|
37
37
|
return isToday(props.day, getLocalTimeZone());
|
|
@@ -46,7 +46,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
46
46
|
return !rootContext.disabled.value && isSameDay(props.day, rootContext.placeholder.value);
|
|
47
47
|
});
|
|
48
48
|
const isSelectedDate = computed(() => rootContext.isDateSelected(props.day));
|
|
49
|
-
const SELECTOR = "[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-
|
|
49
|
+
const SELECTOR = "[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-view]):not([data-outside-visible-view])";
|
|
50
50
|
function changeDate(date) {
|
|
51
51
|
if (rootContext.readonly.value)
|
|
52
52
|
return;
|
|
@@ -96,6 +96,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
96
96
|
rootContext.prevPage();
|
|
97
97
|
nextTick(() => {
|
|
98
98
|
const newCollectionItems = parentElement ? Array.from(parentElement.querySelectorAll(SELECTOR)) : [];
|
|
99
|
+
if (!rootContext.pagedNavigation.value) {
|
|
100
|
+
const numberOfDays = getDaysInMonth(rootContext.placeholder.value);
|
|
101
|
+
newCollectionItems[numberOfDays - Math.abs(newIndex)].focus();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
99
104
|
newCollectionItems[newCollectionItems.length - Math.abs(newIndex)].focus();
|
|
100
105
|
});
|
|
101
106
|
return;
|
|
@@ -106,6 +111,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
106
111
|
rootContext.nextPage();
|
|
107
112
|
nextTick(() => {
|
|
108
113
|
const newCollectionItems = parentElement ? Array.from(parentElement.querySelectorAll(SELECTOR)) : [];
|
|
114
|
+
if (!rootContext.pagedNavigation.value) {
|
|
115
|
+
const numberOfDays = getDaysInMonth(rootContext.placeholder.value.add({ months: rootContext.numberOfMonths.value - 1 }));
|
|
116
|
+
newCollectionItems[newCollectionItems.length - numberOfDays + newIndex - allCollectionItems.length].focus();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
109
119
|
newCollectionItems[newIndex - allCollectionItems.length].focus();
|
|
110
120
|
});
|
|
111
121
|
}
|
|
@@ -118,10 +128,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
118
128
|
role: "button",
|
|
119
129
|
"aria-label": labelText.value,
|
|
120
130
|
"data-reka-calendar-cell-trigger": "",
|
|
121
|
-
"aria-disabled":
|
|
131
|
+
"aria-disabled": isDisabled.value || isUnavailable.value ? true : undefined,
|
|
122
132
|
"data-selected": isSelectedDate.value ? true : undefined,
|
|
123
133
|
"data-value": _ctx.day.toString(),
|
|
124
|
-
"data-disabled": isDisabled.value
|
|
134
|
+
"data-disabled": isDisabled.value ? "" : undefined,
|
|
125
135
|
"data-unavailable": isUnavailable.value ? "" : undefined,
|
|
126
136
|
"data-today": isDateToday.value ? "" : undefined,
|
|
127
137
|
"data-outside-view": isOutsideView.value ? "" : undefined,
|
|
@@ -136,7 +146,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
136
146
|
]
|
|
137
147
|
}), {
|
|
138
148
|
default: withCtx(() => [
|
|
139
|
-
renderSlot(_ctx.$slots, "default", {
|
|
149
|
+
renderSlot(_ctx.$slots, "default", {
|
|
150
|
+
dayValue: dayValue.value,
|
|
151
|
+
disabled: isDisabled.value,
|
|
152
|
+
today: isDateToday.value,
|
|
153
|
+
selected: isSelectedDate.value,
|
|
154
|
+
outsideView: isOutsideView.value,
|
|
155
|
+
outsideVisibleView: isOutsideVisibleView.value,
|
|
156
|
+
unavailable: isUnavailable.value
|
|
157
|
+
}, () => [
|
|
140
158
|
createTextVNode(toDisplayString(dayValue.value), 1)
|
|
141
159
|
])
|
|
142
160
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarCellTrigger.js","sources":["../../src/Calendar/CalendarCellTrigger.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 { toDate } from '@/date'\n\nexport interface CalendarCellTriggerProps extends PrimitiveProps {\n /** The date value provided to the cell trigger */\n day: DateValue\n /** The month in which the cell is rendered */\n month: DateValue\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarCellTriggerProps>(), {\n as: 'div',\n})\n\ndefineSlots<{\n default: (props: {\n /** Current day */\n dayValue: string\n }) => any\n}>()\n\nconst kbd = useKbd()\nconst rootContext = injectCalendarRootContext()\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst dayValue = computed(() => props.day.day.toLocaleString(rootContext.locale.value))\n\nconst labelText = computed(() => {\n return rootContext.formatter.custom(toDate(props.day), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })\n})\n\nconst isDisabled = computed(() => rootContext.isDateDisabled(props.day))\nconst isUnavailable = computed(() =>\n rootContext.isDateUnavailable?.(props.day),\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 isFocusedDate = computed(() => {\n return !rootContext.disabled.value && isSameDay(props.day, rootContext.placeholder.value)\n})\nconst isSelectedDate = computed(() => rootContext.isDateSelected(props.day))\n\nconst SELECTOR\n = '[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-month]):not([data-outside-visible-months])'\n\nfunction changeDate(date: DateValue) {\n if (rootContext.readonly.value)\n return\n if (rootContext.isDateDisabled(date) || rootContext.isDateUnavailable?.(date))\n return\n\n rootContext.onDateChange(date)\n}\n\nfunction handleClick() {\n changeDate(props.day)\n}\n\nfunction handleArrowKey(e: KeyboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n const parentElement = rootContext.parentElement.value!\n const allCollectionItems: HTMLElement[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n const index = allCollectionItems.indexOf(currentElement.value)\n let newIndex = index\n const indexIncrementation = 7\n const sign = rootContext.dir.value === 'rtl' ? -1 : 1\n switch (e.code) {\n case kbd.ARROW_RIGHT:\n newIndex += sign\n break\n case kbd.ARROW_LEFT:\n newIndex -= sign\n break\n case kbd.ARROW_UP:\n newIndex -= indexIncrementation\n break\n case kbd.ARROW_DOWN:\n newIndex += indexIncrementation\n break\n case kbd.ENTER:\n case kbd.SPACE_CODE:\n changeDate(props.day)\n return\n default:\n return\n }\n\n if (newIndex >= 0 && newIndex < allCollectionItems.length) {\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n newCollectionItems[\n newCollectionItems.length - Math.abs(newIndex)\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n newCollectionItems[newIndex - allCollectionItems.length].focus()\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-disabled=\"isOutsideView || isDisabled || isUnavailable ? true : undefined\"\n :data-selected=\"isSelectedDate ? true : undefined\"\n :data-value=\"day.toString()\"\n :data-disabled=\"isDisabled || isOutsideView ? '' : undefined\"\n :data-unavailable=\"isUnavailable ? '' : undefined\"\n :data-today=\"isDateToday ? '' : undefined\"\n :data-outside-view=\"isOutsideView ? '' : undefined\"\n :data-outside-visible-view=\"isOutsideVisibleView ? '' : undefined\"\n :data-focused=\"isFocusedDate ? '' : undefined\"\n :tabindex=\"isFocusedDate ? 0 : isOutsideView || isDisabled ? undefined : -1\"\n @click=\"handleClick\"\n @keydown.up.down.left.right.space.enter=\"handleArrowKey\"\n @keydown.enter.prevent\n >\n <slot :day-value=\"dayValue\">\n {{ dayValue }}\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CalendarCellTrigger.js","sources":["../../src/Calendar/CalendarCellTrigger.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, toDate } from '@/date'\n\nexport interface CalendarCellTriggerProps extends PrimitiveProps {\n /** The date value provided to the cell trigger */\n day: DateValue\n /** The month in which the cell is rendered */\n month: DateValue\n}\n\nexport interface CalendarCellTriggerSlot {\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 }) => any\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarCellTriggerProps>(), {\n as: 'div',\n})\n\ndefineSlots<CalendarCellTriggerSlot>()\n\nconst kbd = useKbd()\nconst rootContext = injectCalendarRootContext()\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\n\nconst dayValue = computed(() => props.day.day.toLocaleString(rootContext.locale.value))\n\nconst labelText = computed(() => {\n return rootContext.formatter.custom(toDate(props.day), {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n })\n})\n\nconst isDisabled = computed(() => rootContext.isDateDisabled(props.day))\nconst isUnavailable = computed(() =>\n rootContext.isDateUnavailable?.(props.day) ?? 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 isFocusedDate = computed(() => {\n return !rootContext.disabled.value && isSameDay(props.day, rootContext.placeholder.value)\n})\nconst isSelectedDate = computed(() => rootContext.isDateSelected(props.day))\n\nconst SELECTOR\n = '[data-reka-calendar-cell-trigger]:not([data-disabled]):not([data-outside-view]):not([data-outside-visible-view])'\n\nfunction changeDate(date: DateValue) {\n if (rootContext.readonly.value)\n return\n if (rootContext.isDateDisabled(date) || rootContext.isDateUnavailable?.(date))\n return\n\n rootContext.onDateChange(date)\n}\n\nfunction handleClick() {\n changeDate(props.day)\n}\n\nfunction handleArrowKey(e: KeyboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n const parentElement = rootContext.parentElement.value!\n const allCollectionItems: HTMLElement[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n const index = allCollectionItems.indexOf(currentElement.value)\n let newIndex = index\n const indexIncrementation = 7\n const sign = rootContext.dir.value === 'rtl' ? -1 : 1\n switch (e.code) {\n case kbd.ARROW_RIGHT:\n newIndex += sign\n break\n case kbd.ARROW_LEFT:\n newIndex -= sign\n break\n case kbd.ARROW_UP:\n newIndex -= indexIncrementation\n break\n case kbd.ARROW_DOWN:\n newIndex += indexIncrementation\n break\n case kbd.ENTER:\n case kbd.SPACE_CODE:\n changeDate(props.day)\n return\n default:\n return\n }\n\n if (newIndex >= 0 && newIndex < allCollectionItems.length) {\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n if (!rootContext.pagedNavigation.value) {\n // Placeholder is set to first month of the new page\n const numberOfDays = getDaysInMonth(rootContext.placeholder.value)\n newCollectionItems[\n numberOfDays - Math.abs(newIndex)\n ].focus()\n return\n }\n newCollectionItems[\n newCollectionItems.length - Math.abs(newIndex)\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[] = parentElement\n ? Array.from(parentElement.querySelectorAll(SELECTOR))\n : []\n\n if (!rootContext.pagedNavigation.value) {\n // Placeholder is set to first month of the new page\n const numberOfDays = getDaysInMonth(rootContext.placeholder.value.add({ months: rootContext.numberOfMonths.value - 1 }))\n newCollectionItems[newCollectionItems.length - numberOfDays + newIndex - allCollectionItems.length].focus()\n return\n }\n\n newCollectionItems[newIndex - allCollectionItems.length].focus()\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-disabled=\"isDisabled || isUnavailable ? true : undefined\"\n :data-selected=\"isSelectedDate ? true : 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-outside-visible-view=\"isOutsideVisibleView ? '' : undefined\"\n :data-focused=\"isFocusedDate ? '' : undefined\"\n :tabindex=\"isFocusedDate ? 0 : isOutsideView || isDisabled ? undefined : -1\"\n @click=\"handleClick\"\n @keydown.up.down.left.right.space.enter=\"handleArrowKey\"\n @keydown.enter.prevent\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 >\n {{ dayValue }}\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA4CA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,MAAM,MAAO,EAAA;AACnB,IAAA,MAAM,cAAc,yBAA0B,EAAA;AAE9C,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAI,mBAAoB,EAAA;AAEjE,IAAM,MAAA,QAAA,GAAW,QAAS,CAAA,MAAM,KAAM,CAAA,GAAA,CAAI,IAAI,cAAe,CAAA,WAAA,CAAY,MAAO,CAAA,KAAK,CAAC,CAAA;AAEtF,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAA,OAAO,YAAY,SAAU,CAAA,MAAA,CAAO,MAAO,CAAA,KAAA,CAAM,GAAG,CAAG,EAAA;AAAA,QACrD,OAAS,EAAA,MAAA;AAAA,QACT,KAAO,EAAA,MAAA;AAAA,QACP,GAAK,EAAA,SAAA;AAAA,QACL,IAAM,EAAA;AAAA,OACP,CAAA;AAAA,KACF,CAAA;AAED,IAAA,MAAM,aAAa,QAAS,CAAA,MAAM,YAAY,cAAe,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA;AACvE,IAAA,MAAM,aAAgB,GAAA,QAAA;AAAA,MAAS,MAC7B,WAAA,CAAY,iBAAoB,GAAA,KAAA,CAAM,GAAG,CAAK,IAAA;AAAA,KAChD;AACA,IAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,OAAO,OAAQ,CAAA,KAAA,CAAM,GAAK,EAAA,gBAAA,EAAkB,CAAA;AAAA,KAC7C,CAAA;AACD,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAA,OAAO,CAAC,WAAA,CAAY,KAAM,CAAA,GAAA,EAAK,MAAM,KAAK,CAAA;AAAA,KAC3C,CAAA;AACD,IAAA,MAAM,oBAAuB,GAAA,QAAA;AAAA,MAAS,MACpC,WAAA,CAAY,oBAAqB,CAAA,KAAA,CAAM,GAAG;AAAA,KAC5C;AAEA,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAO,OAAA,CAAC,YAAY,QAAS,CAAA,KAAA,IAAS,UAAU,KAAM,CAAA,GAAA,EAAK,WAAY,CAAA,WAAA,CAAY,KAAK,CAAA;AAAA,KACzF,CAAA;AACD,IAAA,MAAM,iBAAiB,QAAS,CAAA,MAAM,YAAY,cAAe,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA;AAE3E,IAAA,MAAM,QACF,GAAA,kHAAA;AAEJ,IAAA,SAAS,WAAW,IAAiB,EAAA;AACnC,MAAA,IAAI,YAAY,QAAS,CAAA,KAAA;AACvB,QAAA;AACF,MAAA,IAAI,YAAY,cAAe,CAAA,IAAI,CAAK,IAAA,WAAA,CAAY,oBAAoB,IAAI,CAAA;AAC1E,QAAA;AAEF,MAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAAA;AAG/B,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA;AAGtB,IAAA,SAAS,eAAe,CAAkB,EAAA;AACxC,MAAA,CAAA,CAAE,cAAe,EAAA;AACjB,MAAA,CAAA,CAAE,eAAgB,EAAA;AAClB,MAAM,MAAA,aAAA,GAAgB,YAAY,aAAc,CAAA,KAAA;AAChD,MAAM,MAAA,kBAAA,GAAoC,gBACtC,KAAM,CAAA,IAAA,CAAK,cAAc,gBAAiB,CAAA,QAAQ,CAAC,CAAA,GACnD,EAAC;AACL,MAAA,MAAM,KAAQ,GAAA,kBAAA,CAAmB,OAAQ,CAAA,cAAA,CAAe,KAAK,CAAA;AAC7D,MAAA,IAAI,QAAW,GAAA,KAAA;AACf,MAAA,MAAM,mBAAsB,GAAA,CAAA;AAC5B,MAAA,MAAM,IAAO,GAAA,WAAA,CAAY,GAAI,CAAA,KAAA,KAAU,QAAQ,EAAK,GAAA,CAAA;AACpD,MAAA,QAAQ,EAAE,IAAM;AAAA,QACd,KAAK,GAAI,CAAA,WAAA;AACP,UAAY,QAAA,IAAA,IAAA;AACZ,UAAA;AAAA,QACF,KAAK,GAAI,CAAA,UAAA;AACP,UAAY,QAAA,IAAA,IAAA;AACZ,UAAA;AAAA,QACF,KAAK,GAAI,CAAA,QAAA;AACP,UAAY,QAAA,IAAA,mBAAA;AACZ,UAAA;AAAA,QACF,KAAK,GAAI,CAAA,UAAA;AACP,UAAY,QAAA,IAAA,mBAAA;AACZ,UAAA;AAAA,QACF,KAAK,GAAI,CAAA,KAAA;AAAA,QACT,KAAK,GAAI,CAAA,UAAA;AACP,UAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AACpB,UAAA;AAAA,QACF;AACE,UAAA;AAAA;AAGJ,MAAA,IAAI,QAAY,IAAA,CAAA,IAAK,QAAW,GAAA,kBAAA,CAAmB,MAAQ,EAAA;AACzD,QAAmB,kBAAA,CAAA,QAAQ,EAAE,KAAM,EAAA;AACnC,QAAA;AAAA;AAGF,MAAA,IAAI,WAAW,CAAG,EAAA;AAChB,QAAA,IAAI,YAAY,oBAAqB,EAAA;AACnC,UAAA;AACF,QAAA,WAAA,CAAY,QAAS,EAAA;AACrB,QAAA,QAAA,CAAS,MAAM;AACb,UAAM,MAAA,kBAAA,GAAoC,gBACtC,KAAM,CAAA,IAAA,CAAK,cAAc,gBAAiB,CAAA,QAAQ,CAAC,CAAA,GACnD,EAAC;AACL,UAAI,IAAA,CAAC,WAAY,CAAA,eAAA,CAAgB,KAAO,EAAA;AAEtC,YAAA,MAAM,YAAe,GAAA,cAAA,CAAe,WAAY,CAAA,WAAA,CAAY,KAAK,CAAA;AACjE,YAAA,kBAAA,CACE,eAAe,IAAK,CAAA,GAAA,CAAI,QAAQ,CAClC,EAAE,KAAM,EAAA;AACR,YAAA;AAAA;AAEF,UAAA,kBAAA,CACE,mBAAmB,MAAS,GAAA,IAAA,CAAK,IAAI,QAAQ,CAC/C,EAAE,KAAM,EAAA;AAAA,SACT,CAAA;AACD,QAAA;AAAA;AAGF,MAAI,IAAA,QAAA,IAAY,mBAAmB,MAAQ,EAAA;AACzC,QAAA,IAAI,YAAY,oBAAqB,EAAA;AACnC,UAAA;AACF,QAAA,WAAA,CAAY,QAAS,EAAA;AACrB,QAAA,QAAA,CAAS,MAAM;AACb,UAAM,MAAA,kBAAA,GAAoC,gBACtC,KAAM,CAAA,IAAA,CAAK,cAAc,gBAAiB,CAAA,QAAQ,CAAC,CAAA,GACnD,EAAC;AAEL,UAAI,IAAA,CAAC,WAAY,CAAA,eAAA,CAAgB,KAAO,EAAA;AAEtC,YAAA,MAAM,YAAe,GAAA,cAAA,CAAe,WAAY,CAAA,WAAA,CAAY,KAAM,CAAA,GAAA,CAAI,EAAE,MAAA,EAAQ,WAAY,CAAA,cAAA,CAAe,KAAQ,GAAA,CAAA,EAAG,CAAC,CAAA;AACvH,YAAA,kBAAA,CAAmB,mBAAmB,MAAS,GAAA,YAAA,GAAe,WAAW,kBAAmB,CAAA,MAAM,EAAE,KAAM,EAAA;AAC1G,YAAA;AAAA;AAGF,UAAA,kBAAA,CAAmB,QAAW,GAAA,kBAAA,CAAmB,MAAM,CAAA,CAAE,KAAM,EAAA;AAAA,SAChE,CAAA;AAAA;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -27,8 +27,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
27
27
|
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(rootContext).nextPage(props.nextPage))
|
|
28
28
|
}, {
|
|
29
29
|
default: vue.withCtx(() => [
|
|
30
|
-
vue.renderSlot(_ctx.$slots, "default", {}, () => [
|
|
31
|
-
_cache[1] || (_cache[1] = vue.createTextVNode("Next page"))
|
|
30
|
+
vue.renderSlot(_ctx.$slots, "default", { disabled: disabled.value }, () => [
|
|
31
|
+
_cache[1] || (_cache[1] = vue.createTextVNode(" Next page "))
|
|
32
32
|
])
|
|
33
33
|
]),
|
|
34
34
|
_: 3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarNext.cjs","sources":["../../src/Calendar/CalendarNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarNextProps extends PrimitiveProps {\n /** The function to be used for the next page. Overwrites the `nextPage` function set on the `CalendarRoot`. */\n nextPage?: (placeholder: DateValue) => DateValue\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarNextProps>(), { as: 'button', step: 'month' })\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isNextButtonDisabled(props.nextPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n aria-label=\"Next page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.nextPage(props.nextPage)\"\n >\n <slot
|
|
1
|
+
{"version":3,"file":"CalendarNext.cjs","sources":["../../src/Calendar/CalendarNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarNextProps extends PrimitiveProps {\n /** The function to be used for the next page. Overwrites the `nextPage` function set on the `CalendarRoot`. */\n nextPage?: (placeholder: DateValue) => DateValue\n}\n\nexport interface CalendarNextSlot {\n default: (props: {\n /** Current disable state */\n disabled: boolean\n }) => any\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarNextProps>(), { as: 'button', step: 'month' })\ndefineSlots<CalendarNextSlot>()\n\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isNextButtonDisabled(props.nextPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n aria-label=\"Next page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.nextPage(props.nextPage)\"\n >\n <slot :disabled>\n Next page\n </slot>\n </Primitive>\n</template>\n"],"names":["computed","injectCalendarRootContext"],"mappings":";;;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAM,MAAA,QAAA,GAAWA,YAAS,CAAA,MAAM,WAAY,CAAA,QAAA,CAAS,SAAS,WAAY,CAAA,oBAAA,CAAqB,KAAM,CAAA,QAAQ,CAAC,CAAA;AAE9G,IAAA,MAAM,cAAcC,+CAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -25,8 +25,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
25
25
|
onClick: _cache[0] || (_cache[0] = ($event) => unref(rootContext).nextPage(props.nextPage))
|
|
26
26
|
}, {
|
|
27
27
|
default: withCtx(() => [
|
|
28
|
-
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
29
|
-
_cache[1] || (_cache[1] = createTextVNode("Next page"))
|
|
28
|
+
renderSlot(_ctx.$slots, "default", { disabled: disabled.value }, () => [
|
|
29
|
+
_cache[1] || (_cache[1] = createTextVNode(" Next page "))
|
|
30
30
|
])
|
|
31
31
|
]),
|
|
32
32
|
_: 3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarNext.js","sources":["../../src/Calendar/CalendarNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarNextProps extends PrimitiveProps {\n /** The function to be used for the next page. Overwrites the `nextPage` function set on the `CalendarRoot`. */\n nextPage?: (placeholder: DateValue) => DateValue\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarNextProps>(), { as: 'button', step: 'month' })\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isNextButtonDisabled(props.nextPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n aria-label=\"Next page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.nextPage(props.nextPage)\"\n >\n <slot
|
|
1
|
+
{"version":3,"file":"CalendarNext.js","sources":["../../src/Calendar/CalendarNext.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarNextProps extends PrimitiveProps {\n /** The function to be used for the next page. Overwrites the `nextPage` function set on the `CalendarRoot`. */\n nextPage?: (placeholder: DateValue) => DateValue\n}\n\nexport interface CalendarNextSlot {\n default: (props: {\n /** Current disable state */\n disabled: boolean\n }) => any\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarNextProps>(), { as: 'button', step: 'month' })\ndefineSlots<CalendarNextSlot>()\n\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isNextButtonDisabled(props.nextPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n aria-label=\"Next page\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.nextPage(props.nextPage)\"\n >\n <slot :disabled>\n Next page\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAM,MAAA,QAAA,GAAW,QAAS,CAAA,MAAM,WAAY,CAAA,QAAA,CAAS,SAAS,WAAY,CAAA,oBAAA,CAAqB,KAAM,CAAA,QAAQ,CAAC,CAAA;AAE9G,IAAA,MAAM,cAAc,yBAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -27,8 +27,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
27
27
|
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(rootContext).prevPage(props.prevPage))
|
|
28
28
|
}, {
|
|
29
29
|
default: vue.withCtx(() => [
|
|
30
|
-
vue.renderSlot(_ctx.$slots, "default", {}, () => [
|
|
31
|
-
_cache[1] || (_cache[1] = vue.createTextVNode("Prev page"))
|
|
30
|
+
vue.renderSlot(_ctx.$slots, "default", { disabled: disabled.value }, () => [
|
|
31
|
+
_cache[1] || (_cache[1] = vue.createTextVNode(" Prev page "))
|
|
32
32
|
])
|
|
33
33
|
]),
|
|
34
34
|
_: 3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarPrev.cjs","sources":["../../src/Calendar/CalendarPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarPrevProps extends PrimitiveProps {\n /** The function to be used for the prev page. Overwrites the `prevPage` function set on the `CalendarRoot`. */\n prevPage?: (placeholder: DateValue) => DateValue\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarPrevProps>(), { as: 'button', step: 'month' })\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isPrevButtonDisabled(props.prevPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n aria-label=\"Previous page\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.prevPage(props.prevPage)\"\n >\n <slot
|
|
1
|
+
{"version":3,"file":"CalendarPrev.cjs","sources":["../../src/Calendar/CalendarPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarPrevProps extends PrimitiveProps {\n /** The function to be used for the prev page. Overwrites the `prevPage` function set on the `CalendarRoot`. */\n prevPage?: (placeholder: DateValue) => DateValue\n}\n\nexport interface CalendarPrevSlot {\n default: (props: {\n /** Current disable state */\n disabled: boolean\n }) => any\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarPrevProps>(), { as: 'button', step: 'month' })\ndefineSlots<CalendarPrevSlot>()\n\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isPrevButtonDisabled(props.prevPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n aria-label=\"Previous page\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.prevPage(props.prevPage)\"\n >\n <slot :disabled>\n Prev page\n </slot>\n </Primitive>\n</template>\n"],"names":["computed","injectCalendarRootContext"],"mappings":";;;;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAM,MAAA,QAAA,GAAWA,YAAS,CAAA,MAAM,WAAY,CAAA,QAAA,CAAS,SAAS,WAAY,CAAA,oBAAA,CAAqB,KAAM,CAAA,QAAQ,CAAC,CAAA;AAE9G,IAAA,MAAM,cAAcC,+CAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -25,8 +25,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
25
25
|
onClick: _cache[0] || (_cache[0] = ($event) => unref(rootContext).prevPage(props.prevPage))
|
|
26
26
|
}, {
|
|
27
27
|
default: withCtx(() => [
|
|
28
|
-
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
29
|
-
_cache[1] || (_cache[1] = createTextVNode("Prev page"))
|
|
28
|
+
renderSlot(_ctx.$slots, "default", { disabled: disabled.value }, () => [
|
|
29
|
+
_cache[1] || (_cache[1] = createTextVNode(" Prev page "))
|
|
30
30
|
])
|
|
31
31
|
]),
|
|
32
32
|
_: 3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarPrev.js","sources":["../../src/Calendar/CalendarPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarPrevProps extends PrimitiveProps {\n /** The function to be used for the prev page. Overwrites the `prevPage` function set on the `CalendarRoot`. */\n prevPage?: (placeholder: DateValue) => DateValue\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarPrevProps>(), { as: 'button', step: 'month' })\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isPrevButtonDisabled(props.prevPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n aria-label=\"Previous page\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.prevPage(props.prevPage)\"\n >\n <slot
|
|
1
|
+
{"version":3,"file":"CalendarPrev.js","sources":["../../src/Calendar/CalendarPrev.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { DateValue } from '@internationalized/date'\n\nexport interface CalendarPrevProps extends PrimitiveProps {\n /** The function to be used for the prev page. Overwrites the `prevPage` function set on the `CalendarRoot`. */\n prevPage?: (placeholder: DateValue) => DateValue\n}\n\nexport interface CalendarPrevSlot {\n default: (props: {\n /** Current disable state */\n disabled: boolean\n }) => any\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { injectCalendarRootContext } from './CalendarRoot.vue'\n\nconst props = withDefaults(defineProps<CalendarPrevProps>(), { as: 'button', step: 'month' })\ndefineSlots<CalendarPrevSlot>()\n\nconst disabled = computed(() => rootContext.disabled.value || rootContext.isPrevButtonDisabled(props.prevPage))\n\nconst rootContext = injectCalendarRootContext()\n</script>\n\n<template>\n <Primitive\n aria-label=\"Previous page\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled || undefined\"\n :disabled=\"disabled\"\n @click=\"rootContext.prevPage(props.prevPage)\"\n >\n <slot :disabled>\n Prev page\n </slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAsBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAM,MAAA,QAAA,GAAW,QAAS,CAAA,MAAM,WAAY,CAAA,QAAA,CAAS,SAAS,WAAY,CAAA,oBAAA,CAAqB,KAAM,CAAA,QAAQ,CAAC,CAAA;AAE9G,IAAA,MAAM,cAAc,yBAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -37,6 +37,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
37
37
|
side: "right",
|
|
38
38
|
"side-offset": 2,
|
|
39
39
|
align: "start",
|
|
40
|
+
"update-position-strategy": "always",
|
|
40
41
|
style: {
|
|
41
42
|
"--reka-context-menu-content-transform-origin": "var(--reka-popper-transform-origin)",
|
|
42
43
|
"--reka-context-menu-content-available-width": "var(--reka-popper-available-width)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenuContent.cjs","sources":["../../src/ContextMenu/ContextMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\n\nexport type ContextMenuContentEmits = MenuContentEmits\n\nexport interface ContextMenuContentProps\n extends Omit<\n MenuContentProps,\n | 'side'\n | 'sideOffset'\n | 'align'\n | 'arrowPadding'\n | 'updatePositionStrategy'\n > {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectContextMenuRootContext } from './ContextMenuRoot.vue'\nimport { MenuContent } from '@/Menu'\n\nconst props = withDefaults(defineProps<ContextMenuContentProps>(), {\n alignOffset: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial',\n hideWhenDetached: false,\n})\nconst emits = defineEmits<ContextMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nuseForwardExpose()\nconst rootContext = injectContextMenuRootContext()\nconst hasInteractedOutside = ref(false)\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n side=\"right\"\n :side-offset=\"2\"\n align=\"start\"\n :style=\"{\n '--reka-context-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-context-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-context-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-context-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-context-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"\n (event) => {\n if (!event.defaultPrevented && hasInteractedOutside) {\n event.preventDefault();\n }\n hasInteractedOutside = false;\n }\n \"\n @interact-outside=\"\n (event) => {\n const originalEvent = event.detail.originalEvent as PointerEvent\n // Prevent closing when right click (button=2) with the trigger element\n if (originalEvent.button === 2 && event.target === rootContext.triggerElement.value) {\n event.preventDefault()\n }\n if (!event.defaultPrevented && !rootContext.modal.value)\n hasInteractedOutside = true;\n }\n \"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":["useForwardPropsEmits","useForwardExpose","injectContextMenuRootContext","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAiBC,wCAAA,EAAA;AACjB,IAAA,MAAM,cAAcC,wDAA6B,EAAA;AACjD,IAAM,MAAA,oBAAA,GAAuBC,QAAI,KAAK,CAAA
|
|
1
|
+
{"version":3,"file":"ContextMenuContent.cjs","sources":["../../src/ContextMenu/ContextMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\n\nexport type ContextMenuContentEmits = MenuContentEmits\n\nexport interface ContextMenuContentProps\n extends Omit<\n MenuContentProps,\n | 'side'\n | 'sideOffset'\n | 'align'\n | 'arrowPadding'\n | 'updatePositionStrategy'\n > {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectContextMenuRootContext } from './ContextMenuRoot.vue'\nimport { MenuContent } from '@/Menu'\n\nconst props = withDefaults(defineProps<ContextMenuContentProps>(), {\n alignOffset: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial',\n hideWhenDetached: false,\n})\nconst emits = defineEmits<ContextMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nuseForwardExpose()\nconst rootContext = injectContextMenuRootContext()\nconst hasInteractedOutside = ref(false)\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n side=\"right\"\n :side-offset=\"2\"\n align=\"start\"\n update-position-strategy=\"always\"\n :style=\"{\n '--reka-context-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-context-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-context-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-context-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-context-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"\n (event) => {\n if (!event.defaultPrevented && hasInteractedOutside) {\n event.preventDefault();\n }\n hasInteractedOutside = false;\n }\n \"\n @interact-outside=\"\n (event) => {\n const originalEvent = event.detail.originalEvent as PointerEvent\n // Prevent closing when right click (button=2) with the trigger element\n if (originalEvent.button === 2 && event.target === rootContext.triggerElement.value) {\n event.preventDefault()\n }\n if (!event.defaultPrevented && !rootContext.modal.value)\n hasInteractedOutside = true;\n }\n \"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":["useForwardPropsEmits","useForwardExpose","injectContextMenuRootContext","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAYA,gDAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAiBC,wCAAA,EAAA;AACjB,IAAA,MAAM,cAAcC,wDAA6B,EAAA;AACjD,IAAM,MAAA,oBAAA,GAAuBC,QAAI,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -35,6 +35,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
35
35
|
side: "right",
|
|
36
36
|
"side-offset": 2,
|
|
37
37
|
align: "start",
|
|
38
|
+
"update-position-strategy": "always",
|
|
38
39
|
style: {
|
|
39
40
|
"--reka-context-menu-content-transform-origin": "var(--reka-popper-transform-origin)",
|
|
40
41
|
"--reka-context-menu-content-available-width": "var(--reka-popper-available-width)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenuContent.js","sources":["../../src/ContextMenu/ContextMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\n\nexport type ContextMenuContentEmits = MenuContentEmits\n\nexport interface ContextMenuContentProps\n extends Omit<\n MenuContentProps,\n | 'side'\n | 'sideOffset'\n | 'align'\n | 'arrowPadding'\n | 'updatePositionStrategy'\n > {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectContextMenuRootContext } from './ContextMenuRoot.vue'\nimport { MenuContent } from '@/Menu'\n\nconst props = withDefaults(defineProps<ContextMenuContentProps>(), {\n alignOffset: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial',\n hideWhenDetached: false,\n})\nconst emits = defineEmits<ContextMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nuseForwardExpose()\nconst rootContext = injectContextMenuRootContext()\nconst hasInteractedOutside = ref(false)\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n side=\"right\"\n :side-offset=\"2\"\n align=\"start\"\n :style=\"{\n '--reka-context-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-context-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-context-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-context-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-context-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"\n (event) => {\n if (!event.defaultPrevented && hasInteractedOutside) {\n event.preventDefault();\n }\n hasInteractedOutside = false;\n }\n \"\n @interact-outside=\"\n (event) => {\n const originalEvent = event.detail.originalEvent as PointerEvent\n // Prevent closing when right click (button=2) with the trigger element\n if (originalEvent.button === 2 && event.target === rootContext.triggerElement.value) {\n event.preventDefault()\n }\n if (!event.defaultPrevented && !rootContext.modal.value)\n hasInteractedOutside = true;\n }\n \"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,cAAc,4BAA6B,EAAA;AACjD,IAAM,MAAA,oBAAA,GAAuB,IAAI,KAAK,CAAA
|
|
1
|
+
{"version":3,"file":"ContextMenuContent.js","sources":["../../src/ContextMenu/ContextMenuContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n MenuContentEmits,\n MenuContentProps,\n} from '@/Menu'\nimport { useForwardExpose, useForwardPropsEmits } from '@/shared'\n\nexport type ContextMenuContentEmits = MenuContentEmits\n\nexport interface ContextMenuContentProps\n extends Omit<\n MenuContentProps,\n | 'side'\n | 'sideOffset'\n | 'align'\n | 'arrowPadding'\n | 'updatePositionStrategy'\n > {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { injectContextMenuRootContext } from './ContextMenuRoot.vue'\nimport { MenuContent } from '@/Menu'\n\nconst props = withDefaults(defineProps<ContextMenuContentProps>(), {\n alignOffset: 0,\n avoidCollisions: true,\n collisionBoundary: () => [],\n collisionPadding: 0,\n sticky: 'partial',\n hideWhenDetached: false,\n})\nconst emits = defineEmits<ContextMenuContentEmits>()\nconst forwarded = useForwardPropsEmits(props, emits)\n\nuseForwardExpose()\nconst rootContext = injectContextMenuRootContext()\nconst hasInteractedOutside = ref(false)\n</script>\n\n<template>\n <MenuContent\n v-bind=\"forwarded\"\n side=\"right\"\n :side-offset=\"2\"\n align=\"start\"\n update-position-strategy=\"always\"\n :style=\"{\n '--reka-context-menu-content-transform-origin':\n 'var(--reka-popper-transform-origin)',\n '--reka-context-menu-content-available-width':\n 'var(--reka-popper-available-width)',\n '--reka-context-menu-content-available-height':\n 'var(--reka-popper-available-height)',\n '--reka-context-menu-trigger-width': 'var(--reka-popper-anchor-width)',\n '--reka-context-menu-trigger-height':\n 'var(--reka-popper-anchor-height)',\n }\"\n @close-auto-focus=\"\n (event) => {\n if (!event.defaultPrevented && hasInteractedOutside) {\n event.preventDefault();\n }\n hasInteractedOutside = false;\n }\n \"\n @interact-outside=\"\n (event) => {\n const originalEvent = event.detail.originalEvent as PointerEvent\n // Prevent closing when right click (button=2) with the trigger element\n if (originalEvent.button === 2 && event.target === rootContext.triggerElement.value) {\n event.preventDefault()\n }\n if (!event.defaultPrevented && !rootContext.modal.value)\n hasInteractedOutside = true;\n }\n \"\n >\n <slot />\n </MenuContent>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,SAAA,GAAY,oBAAqB,CAAA,KAAA,EAAO,KAAK,CAAA;AAEnD,IAAiB,gBAAA,EAAA;AACjB,IAAA,MAAM,cAAc,4BAA6B,EAAA;AACjD,IAAM,MAAA,oBAAA,GAAuB,IAAI,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
const vue = require('vue');
|
|
4
4
|
const core = require('@vueuse/core');
|
|
5
|
-
const date = require('@internationalized/date');
|
|
6
5
|
const date_comparators = require('../date/comparators.cjs');
|
|
7
6
|
const shared_useLocale = require('../shared/useLocale.cjs');
|
|
8
7
|
const shared_useDirection = require('../shared/useDirection.cjs');
|
|
@@ -109,13 +108,14 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
109
108
|
}
|
|
110
109
|
});
|
|
111
110
|
vue.watch(modelValue, (_modelValue) => {
|
|
112
|
-
if (!shared_nullish.isNullish(_modelValue) &&
|
|
111
|
+
if (!shared_nullish.isNullish(_modelValue) && placeholder.value.compare(_modelValue) !== 0) {
|
|
113
112
|
placeholder.value = _modelValue.copy();
|
|
113
|
+
}
|
|
114
114
|
});
|
|
115
115
|
vue.watch([modelValue, locale], ([_modelValue]) => {
|
|
116
116
|
if (!shared_nullish.isNullish(_modelValue)) {
|
|
117
117
|
segmentValues.value = { ...date_parser.syncSegmentValues({ value: _modelValue, formatter }) };
|
|
118
|
-
} else if (Object.values(segmentValues.value).every((value) => value
|
|
118
|
+
} else if (Object.values(segmentValues.value).every((value) => value !== null) && shared_nullish.isNullish(_modelValue)) {
|
|
119
119
|
segmentValues.value = { ...initialSegments };
|
|
120
120
|
}
|
|
121
121
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateFieldRoot.cjs","sources":["../../src/DateField/DateFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { type DateValue, isEqualDay } from '@internationalized/date'\n\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { type Formatter, createContext, isNullish, useDateFormatter, useDirection, useKbd, useLocale } from '@/shared'\nimport {\n type Granularity,\n type HourCycle,\n type SegmentPart,\n type SegmentValueObj,\n getDefaultDate,\n} from '@/shared/date'\nimport { type Matcher, hasTime, isBefore } from '@/date'\nimport { createContent, getSegmentElements, initializeSegmentValues, isSegmentNavigationKey, syncSegmentValues } from '@/shared/date'\nimport type { Direction, FormFieldProps } from '@/shared/types'\n\ntype DateFieldRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | undefined>\n placeholder: Ref<DateValue>\n isDateUnavailable?: Matcher\n isInvalid: Ref<boolean>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n formatter: Formatter\n hourCycle: HourCycle\n segmentValues: Ref<SegmentValueObj>\n segmentContents: Ref<{ part: SegmentPart, value: string }[]>\n elements: Ref<Set<HTMLElement>>\n focusNext: () => void\n setFocusedElement: (el: HTMLElement) => void\n}\n\nexport interface DateFieldRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value for the calendar */\n defaultValue?: DateValue\n /** The default placeholder date */\n defaultPlaceholder?: DateValue\n /** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */\n placeholder?: DateValue\n /** The controlled checked state of the calendar. Can be bound as `v-model`. */\n modelValue?: DateValue | null\n /** The hour cycle used for formatting times. Defaults to the local preference */\n hourCycle?: HourCycle\n /** The granularity to use for formatting times. Defaults to day if a CalendarDate is provided, otherwise defaults to minute. The field will render segments for each part of the date up to and including the specified granularity */\n granularity?: Granularity\n /** Whether or not to hide the time zone segment of the field */\n hideTimeZone?: boolean\n /** The maximum date that can be selected */\n maxValue?: DateValue\n /** The minimum date that can be selected */\n minValue?: DateValue\n /** The locale to use for formatting dates */\n locale?: string\n /** Whether or not the date field is disabled */\n disabled?: boolean\n /** Whether or not the date field is readonly */\n readonly?: boolean\n /** A function that returns whether or not a date is unavailable */\n isDateUnavailable?: Matcher\n /** Id of the element */\n id?: string\n /** The reading direction of the date field when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n}\n\nexport type DateFieldRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: DateValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: DateValue]\n}\n\nexport const [injectDateFieldRootContext, provideDateFieldRootContext]\n = createContext<DateFieldRootContext>('DateFieldRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { VisuallyHidden } from '@/VisuallyHidden'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DateFieldRootProps>(), {\n defaultValue: undefined,\n disabled: false,\n readonly: false,\n placeholder: undefined,\n isDateUnavailable: undefined,\n})\nconst emits = defineEmits<DateFieldRootEmits>()\ndefineSlots<{\n default: (props: {\n /** The current date of the field */\n modelValue: DateValue | undefined\n /** The date field segment contents */\n segments: { part: SegmentPart, value: string }[]\n /** Value if the input is invalid */\n isInvalid: boolean\n }) => any\n}>()\n\nconst { disabled, readonly, isDateUnavailable: propsIsDateUnavailable, granularity, defaultValue, dir: propDir, locale: propLocale } = toRefs(props)\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst formatter = useDateFormatter(locale.value)\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst segmentElements = ref<Set<HTMLElement>>(new Set())\n\nonMounted(() => {\n getSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n})\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<DateValue>\n\nconst defaultDate = getDefaultDate({\n defaultPlaceholder: props.placeholder,\n granularity: granularity.value,\n defaultValue: modelValue.value,\n locale: props.locale,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<DateValue>\n\nconst inferredGranularity = computed(() => {\n if (props.granularity)\n return !hasTime(placeholder.value) ? 'day' : props.granularity\n\n return hasTime(placeholder.value) ? 'minute' : 'day'\n})\n\nconst isInvalid = computed(() => {\n if (!modelValue.value)\n return false\n\n if (propsIsDateUnavailable.value?.(modelValue.value))\n return true\n\n if (props.minValue && isBefore(modelValue.value, props.minValue))\n return true\n\n if (props.maxValue && isBefore(props.maxValue, modelValue.value))\n return true\n\n return false\n})\n\nconst initialSegments = initializeSegmentValues(inferredGranularity.value)\n\nconst segmentValues = ref<SegmentValueObj>(modelValue.value ? { ...syncSegmentValues({ value: modelValue.value, formatter }) } : { ...initialSegments })\n\nconst allSegmentContent = computed(() => createContent({\n granularity: inferredGranularity.value,\n dateRef: placeholder.value,\n formatter,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n segmentValues: segmentValues.value,\n locale,\n}))\n\nconst segmentContents = computed(() => allSegmentContent.value.arr)\n\nconst editableSegmentContents = computed(() => segmentContents.value.filter(({ part }) => part !== 'literal'))\n\nwatch(locale, (value) => {\n if (formatter.getLocale() !== value) {\n formatter.setLocale(value)\n // Locale changed, so we need to clear the segment elements and re-get them (different order)\n // Get the focusable elements again on the next tick\n nextTick(() => {\n segmentElements.value.clear()\n getSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n })\n }\n})\n\nwatch(modelValue, (_modelValue) => {\n if (!isNullish(_modelValue) && (!isEqualDay(placeholder.value, _modelValue) || placeholder.value.compare(_modelValue) !== 0))\n placeholder.value = _modelValue.copy()\n})\n\nwatch([modelValue, locale], ([_modelValue]) => {\n if (!isNullish(_modelValue)) {\n segmentValues.value = { ...syncSegmentValues({ value: _modelValue, formatter }) }\n }\n else if (Object.values(segmentValues.value).every(value => value === null) || isNullish(_modelValue)) {\n segmentValues.value = { ...initialSegments }\n }\n})\n\nconst currentFocusedElement = ref<HTMLElement | null>(null)\n\nconst currentSegmentIndex = computed(() =>\n Array.from(segmentElements.value).findIndex(el =>\n el.getAttribute('data-reka-date-field-segment')\n === currentFocusedElement.value?.getAttribute('data-reka-date-field-segment')))\n\nconst nextFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const nextCondition = sign < 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (nextCondition)\n return null\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value + sign]\n return segmentToFocus\n})\n\nconst prevFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const prevCondition = sign > 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (prevCondition)\n return null\n\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value - sign]\n return segmentToFocus\n})\n\nconst kbd = useKbd()\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (!isSegmentNavigationKey(e.key))\n return\n if (e.key === kbd.ARROW_LEFT)\n prevFocusableSegment.value?.focus()\n if (e.key === kbd.ARROW_RIGHT)\n nextFocusableSegment.value?.focus()\n}\n\nfunction setFocusedElement(el: HTMLElement) {\n currentFocusedElement.value = el\n}\n\nprovideDateFieldRootContext({\n isDateUnavailable: propsIsDateUnavailable.value,\n locale,\n modelValue,\n placeholder,\n disabled,\n formatter,\n hourCycle: props.hourCycle,\n readonly,\n segmentValues,\n isInvalid,\n segmentContents: editableSegmentContents,\n elements: segmentElements,\n setFocusedElement,\n focusNext() {\n nextFocusableSegment.value?.focus()\n },\n})\n\ndefineExpose({\n /** Helper to set the focused element inside the DateField */\n setFocusedElement,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :aria-disabled=\"disabled ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n @keydown.left.right=\"handleKeydown\"\n >\n <slot\n :model-value=\"modelValue\"\n :segments=\"segmentContents\"\n :is-invalid=\"isInvalid\"\n />\n\n <VisuallyHidden\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"modelValue ? modelValue.toString() : ''\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(segmentElements)?.[0]?.focus()\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useLocale","useDirection","useDateFormatter","usePrimitiveElement","ref","onMounted","getSegmentElements","useVModel","getDefaultDate","computed","hasTime","isBefore","initializeSegmentValues","syncSegmentValues","createContent","watch","nextTick","isNullish","isEqualDay","useKbd","isSegmentNavigationKey"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateFieldRoot.cjs","sources":["../../src/DateField/DateFieldRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DateValue } from '@internationalized/date'\n\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { type Formatter, createContext, isNullish, useDateFormatter, useDirection, useKbd, useLocale } from '@/shared'\nimport {\n type Granularity,\n type HourCycle,\n type SegmentPart,\n type SegmentValueObj,\n getDefaultDate,\n} from '@/shared/date'\nimport { type Matcher, hasTime, isBefore } from '@/date'\nimport { createContent, getSegmentElements, initializeSegmentValues, isSegmentNavigationKey, syncSegmentValues } from '@/shared/date'\nimport type { Direction, FormFieldProps } from '@/shared/types'\n\ntype DateFieldRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | undefined>\n placeholder: Ref<DateValue>\n isDateUnavailable?: Matcher\n isInvalid: Ref<boolean>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n formatter: Formatter\n hourCycle: HourCycle\n segmentValues: Ref<SegmentValueObj>\n segmentContents: Ref<{ part: SegmentPart, value: string }[]>\n elements: Ref<Set<HTMLElement>>\n focusNext: () => void\n setFocusedElement: (el: HTMLElement) => void\n}\n\nexport interface DateFieldRootProps extends PrimitiveProps, FormFieldProps {\n /** The default value for the calendar */\n defaultValue?: DateValue\n /** The default placeholder date */\n defaultPlaceholder?: DateValue\n /** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */\n placeholder?: DateValue\n /** The controlled checked state of the calendar. Can be bound as `v-model`. */\n modelValue?: DateValue | null\n /** The hour cycle used for formatting times. Defaults to the local preference */\n hourCycle?: HourCycle\n /** The granularity to use for formatting times. Defaults to day if a CalendarDate is provided, otherwise defaults to minute. The field will render segments for each part of the date up to and including the specified granularity */\n granularity?: Granularity\n /** Whether or not to hide the time zone segment of the field */\n hideTimeZone?: boolean\n /** The maximum date that can be selected */\n maxValue?: DateValue\n /** The minimum date that can be selected */\n minValue?: DateValue\n /** The locale to use for formatting dates */\n locale?: string\n /** Whether or not the date field is disabled */\n disabled?: boolean\n /** Whether or not the date field is readonly */\n readonly?: boolean\n /** A function that returns whether or not a date is unavailable */\n isDateUnavailable?: Matcher\n /** Id of the element */\n id?: string\n /** The reading direction of the date field when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n}\n\nexport type DateFieldRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: DateValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: DateValue]\n}\n\nexport const [injectDateFieldRootContext, provideDateFieldRootContext]\n = createContext<DateFieldRootContext>('DateFieldRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, ref, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { VisuallyHidden } from '@/VisuallyHidden'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<DateFieldRootProps>(), {\n defaultValue: undefined,\n disabled: false,\n readonly: false,\n placeholder: undefined,\n isDateUnavailable: undefined,\n})\nconst emits = defineEmits<DateFieldRootEmits>()\ndefineSlots<{\n default: (props: {\n /** The current date of the field */\n modelValue: DateValue | undefined\n /** The date field segment contents */\n segments: { part: SegmentPart, value: string }[]\n /** Value if the input is invalid */\n isInvalid: boolean\n }) => any\n}>()\n\nconst { disabled, readonly, isDateUnavailable: propsIsDateUnavailable, granularity, defaultValue, dir: propDir, locale: propLocale } = toRefs(props)\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst formatter = useDateFormatter(locale.value)\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst segmentElements = ref<Set<HTMLElement>>(new Set())\n\nonMounted(() => {\n getSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n})\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<DateValue>\n\nconst defaultDate = getDefaultDate({\n defaultPlaceholder: props.placeholder,\n granularity: granularity.value,\n defaultValue: modelValue.value,\n locale: props.locale,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<DateValue>\n\nconst inferredGranularity = computed(() => {\n if (props.granularity)\n return !hasTime(placeholder.value) ? 'day' : props.granularity\n\n return hasTime(placeholder.value) ? 'minute' : 'day'\n})\n\nconst isInvalid = computed(() => {\n if (!modelValue.value)\n return false\n\n if (propsIsDateUnavailable.value?.(modelValue.value))\n return true\n\n if (props.minValue && isBefore(modelValue.value, props.minValue))\n return true\n\n if (props.maxValue && isBefore(props.maxValue, modelValue.value))\n return true\n\n return false\n})\n\nconst initialSegments = initializeSegmentValues(inferredGranularity.value)\n\nconst segmentValues = ref<SegmentValueObj>(modelValue.value ? { ...syncSegmentValues({ value: modelValue.value, formatter }) } : { ...initialSegments })\n\nconst allSegmentContent = computed(() => createContent({\n granularity: inferredGranularity.value,\n dateRef: placeholder.value,\n formatter,\n hideTimeZone: props.hideTimeZone,\n hourCycle: props.hourCycle,\n segmentValues: segmentValues.value,\n locale,\n}))\n\nconst segmentContents = computed(() => allSegmentContent.value.arr)\n\nconst editableSegmentContents = computed(() => segmentContents.value.filter(({ part }) => part !== 'literal'))\n\nwatch(locale, (value) => {\n if (formatter.getLocale() !== value) {\n formatter.setLocale(value)\n // Locale changed, so we need to clear the segment elements and re-get them (different order)\n // Get the focusable elements again on the next tick\n nextTick(() => {\n segmentElements.value.clear()\n getSegmentElements(parentElement.value).forEach(item => segmentElements.value.add(item as HTMLElement))\n })\n }\n})\n\nwatch(modelValue, (_modelValue) => {\n if (!isNullish(_modelValue) && placeholder.value.compare(_modelValue) !== 0) {\n placeholder.value = _modelValue.copy()\n }\n})\n\nwatch([modelValue, locale], ([_modelValue]) => {\n if (!isNullish(_modelValue)) {\n segmentValues.value = { ...syncSegmentValues({ value: _modelValue, formatter }) }\n }\n // If segment has null value, means that user modified it, thus do not reset the segmentValues\n else if (Object.values(segmentValues.value).every(value => value !== null) && isNullish(_modelValue)) {\n segmentValues.value = { ...initialSegments }\n }\n})\n\nconst currentFocusedElement = ref<HTMLElement | null>(null)\n\nconst currentSegmentIndex = computed(() =>\n Array.from(segmentElements.value).findIndex(el =>\n el.getAttribute('data-reka-date-field-segment')\n === currentFocusedElement.value?.getAttribute('data-reka-date-field-segment')))\n\nconst nextFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const nextCondition = sign < 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (nextCondition)\n return null\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value + sign]\n return segmentToFocus\n})\n\nconst prevFocusableSegment = computed(() => {\n const sign = dir.value === 'rtl' ? -1 : 1\n const prevCondition = sign > 0 ? currentSegmentIndex.value < 0 : currentSegmentIndex.value > segmentElements.value.size - 1\n if (prevCondition)\n return null\n\n const segmentToFocus = Array.from(segmentElements.value)[currentSegmentIndex.value - sign]\n return segmentToFocus\n})\n\nconst kbd = useKbd()\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (!isSegmentNavigationKey(e.key))\n return\n if (e.key === kbd.ARROW_LEFT)\n prevFocusableSegment.value?.focus()\n if (e.key === kbd.ARROW_RIGHT)\n nextFocusableSegment.value?.focus()\n}\n\nfunction setFocusedElement(el: HTMLElement) {\n currentFocusedElement.value = el\n}\n\nprovideDateFieldRootContext({\n isDateUnavailable: propsIsDateUnavailable.value,\n locale,\n modelValue,\n placeholder,\n disabled,\n formatter,\n hourCycle: props.hourCycle,\n readonly,\n segmentValues,\n isInvalid,\n segmentContents: editableSegmentContents,\n elements: segmentElements,\n setFocusedElement,\n focusNext() {\n nextFocusableSegment.value?.focus()\n },\n})\n\ndefineExpose({\n /** Helper to set the focused element inside the DateField */\n setFocusedElement,\n})\n</script>\n\n<template>\n <Primitive\n v-bind=\"$attrs\"\n ref=\"primitiveElement\"\n role=\"group\"\n :aria-disabled=\"disabled ? true : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n @keydown.left.right=\"handleKeydown\"\n >\n <slot\n :model-value=\"modelValue\"\n :segments=\"segmentContents\"\n :is-invalid=\"isInvalid\"\n />\n\n <VisuallyHidden\n :id=\"id\"\n as=\"input\"\n feature=\"focusable\"\n tabindex=\"-1\"\n :value=\"modelValue ? modelValue.toString() : ''\"\n :name=\"name\"\n :disabled=\"disabled\"\n :required=\"required\"\n @focus=\"Array.from(segmentElements)?.[0]?.focus()\"\n />\n </Primitive>\n</template>\n"],"names":["createContext","toRefs","useLocale","useDirection","useDateFormatter","usePrimitiveElement","ref","onMounted","getSegmentElements","useVModel","getDefaultDate","computed","hasTime","isBefore","initializeSegmentValues","syncSegmentValues","createContent","watch","nextTick","isNullish","useKbd","isSegmentNavigationKey"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { defineComponent, toRefs, ref, onMounted, computed, watch, nextTick, openBlock, createBlock, unref, mergeProps, withKeys, withCtx, renderSlot, createVNode } from 'vue';
|
|
2
2
|
import { useVModel } from '@vueuse/core';
|
|
3
|
-
import { isEqualDay } from '@internationalized/date';
|
|
4
3
|
import { n as getDefaultDate, h as hasTime, b as isBefore } from '../date/comparators.js';
|
|
5
4
|
import { u as useLocale } from '../shared/useLocale.js';
|
|
6
5
|
import { u as useDirection } from '../shared/useDirection.js';
|
|
@@ -107,13 +106,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
107
106
|
}
|
|
108
107
|
});
|
|
109
108
|
watch(modelValue, (_modelValue) => {
|
|
110
|
-
if (!isNullish(_modelValue) &&
|
|
109
|
+
if (!isNullish(_modelValue) && placeholder.value.compare(_modelValue) !== 0) {
|
|
111
110
|
placeholder.value = _modelValue.copy();
|
|
111
|
+
}
|
|
112
112
|
});
|
|
113
113
|
watch([modelValue, locale], ([_modelValue]) => {
|
|
114
114
|
if (!isNullish(_modelValue)) {
|
|
115
115
|
segmentValues.value = { ...syncSegmentValues({ value: _modelValue, formatter }) };
|
|
116
|
-
} else if (Object.values(segmentValues.value).every((value) => value
|
|
116
|
+
} else if (Object.values(segmentValues.value).every((value) => value !== null) && isNullish(_modelValue)) {
|
|
117
117
|
segmentValues.value = { ...initialSegments };
|
|
118
118
|
}
|
|
119
119
|
});
|