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.
Files changed (129) hide show
  1. package/README.md +1 -1
  2. package/dist/Calendar/CalendarCellTrigger.cjs +23 -5
  3. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  4. package/dist/Calendar/CalendarCellTrigger.js +24 -6
  5. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  6. package/dist/Calendar/CalendarNext.cjs +2 -2
  7. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  8. package/dist/Calendar/CalendarNext.js +2 -2
  9. package/dist/Calendar/CalendarNext.js.map +1 -1
  10. package/dist/Calendar/CalendarPrev.cjs +2 -2
  11. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  12. package/dist/Calendar/CalendarPrev.js +2 -2
  13. package/dist/Calendar/CalendarPrev.js.map +1 -1
  14. package/dist/ContextMenu/ContextMenuContent.cjs +1 -0
  15. package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
  16. package/dist/ContextMenu/ContextMenuContent.js +1 -0
  17. package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
  18. package/dist/DateField/DateFieldRoot.cjs +3 -3
  19. package/dist/DateField/DateFieldRoot.cjs.map +1 -1
  20. package/dist/DateField/DateFieldRoot.js +3 -3
  21. package/dist/DateField/DateFieldRoot.js.map +1 -1
  22. package/dist/DatePicker/DatePickerCellTrigger.cjs +2 -2
  23. package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
  24. package/dist/DatePicker/DatePickerCellTrigger.js +2 -2
  25. package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
  26. package/dist/DatePicker/DatePickerField.cjs +6 -7
  27. package/dist/DatePicker/DatePickerField.cjs.map +1 -1
  28. package/dist/DatePicker/DatePickerField.js +2 -3
  29. package/dist/DatePicker/DatePickerField.js.map +1 -1
  30. package/dist/DatePicker/DatePickerNext.cjs +2 -2
  31. package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
  32. package/dist/DatePicker/DatePickerNext.js +2 -2
  33. package/dist/DatePicker/DatePickerNext.js.map +1 -1
  34. package/dist/DatePicker/DatePickerPrev.cjs +2 -2
  35. package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
  36. package/dist/DatePicker/DatePickerPrev.js +2 -2
  37. package/dist/DatePicker/DatePickerPrev.js.map +1 -1
  38. package/dist/DatePicker/DatePickerRoot.cjs +13 -9
  39. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  40. package/dist/DatePicker/DatePickerRoot.js +9 -5
  41. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  42. package/dist/DateRangeField/DateRangeFieldRoot.cjs +3 -4
  43. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  44. package/dist/DateRangeField/DateRangeFieldRoot.js +3 -4
  45. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  46. package/dist/DateRangePicker/DateRangePickerCellTrigger.cjs +2 -2
  47. package/dist/DateRangePicker/DateRangePickerCellTrigger.cjs.map +1 -1
  48. package/dist/DateRangePicker/DateRangePickerCellTrigger.js +2 -2
  49. package/dist/DateRangePicker/DateRangePickerCellTrigger.js.map +1 -1
  50. package/dist/DateRangePicker/DateRangePickerNext.cjs +2 -2
  51. package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
  52. package/dist/DateRangePicker/DateRangePickerNext.js +2 -2
  53. package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
  54. package/dist/DateRangePicker/DateRangePickerPrev.cjs +2 -2
  55. package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
  56. package/dist/DateRangePicker/DateRangePickerPrev.js +2 -2
  57. package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
  58. package/dist/DateRangePicker/DateRangePickerRoot.cjs +5 -0
  59. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  60. package/dist/DateRangePicker/DateRangePickerRoot.js +6 -1
  61. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  62. package/dist/Dialog/utils.cjs +1 -1
  63. package/dist/Dialog/utils.cjs.map +1 -1
  64. package/dist/Dialog/utils.js +1 -1
  65. package/dist/Dialog/utils.js.map +1 -1
  66. package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
  67. package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
  68. package/dist/Editable/EditableRoot.cjs +1 -0
  69. package/dist/Editable/EditableRoot.cjs.map +1 -1
  70. package/dist/Editable/EditableRoot.js +1 -0
  71. package/dist/Editable/EditableRoot.js.map +1 -1
  72. package/dist/Menu/MenuContentImpl.cjs +2 -1
  73. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  74. package/dist/Menu/MenuContentImpl.js +2 -1
  75. package/dist/Menu/MenuContentImpl.js.map +1 -1
  76. package/dist/NavigationMenu/NavigationMenuIndicator.cjs +1 -2
  77. package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
  78. package/dist/NavigationMenu/NavigationMenuIndicator.js +1 -2
  79. package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
  80. package/dist/PinInput/PinInputInput.cjs +1 -1
  81. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  82. package/dist/PinInput/PinInputInput.js +1 -1
  83. package/dist/PinInput/PinInputInput.js.map +1 -1
  84. package/dist/Presence/usePresence.cjs +2 -1
  85. package/dist/Presence/usePresence.cjs.map +1 -1
  86. package/dist/Presence/usePresence.js +2 -1
  87. package/dist/Presence/usePresence.js.map +1 -1
  88. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +30 -7
  89. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  90. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +31 -8
  91. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  92. package/dist/RangeCalendar/RangeCalendarNext.cjs +2 -2
  93. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  94. package/dist/RangeCalendar/RangeCalendarNext.js +2 -2
  95. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  96. package/dist/RangeCalendar/RangeCalendarPrev.cjs +2 -2
  97. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  98. package/dist/RangeCalendar/RangeCalendarPrev.js +2 -2
  99. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  100. package/dist/RangeCalendar/RangeCalendarRoot.cjs +10 -9
  101. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  102. package/dist/RangeCalendar/RangeCalendarRoot.js +10 -9
  103. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  104. package/dist/RovingFocus/RovingFocusItem.cjs +2 -1
  105. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  106. package/dist/RovingFocus/RovingFocusItem.js +2 -1
  107. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  108. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  109. package/dist/Select/SelectContentImpl.js.map +1 -1
  110. package/dist/constant/components.cjs +10 -9
  111. package/dist/constant/components.cjs.map +1 -1
  112. package/dist/constant/components.js +10 -9
  113. package/dist/constant/components.js.map +1 -1
  114. package/dist/index.cjs +7 -7
  115. package/dist/index.d.ts +375 -324
  116. package/dist/index.js +3 -3
  117. package/dist/nuxt/index.d.cts +1 -1
  118. package/dist/nuxt/index.d.mts +1 -1
  119. package/dist/shared/useBodyScrollLock.cjs +1 -1
  120. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  121. package/dist/shared/useBodyScrollLock.js +1 -1
  122. package/dist/shared/useBodyScrollLock.js.map +1 -1
  123. package/dist/shared/useFilter.cjs.map +1 -1
  124. package/dist/shared/useFilter.js.map +1 -1
  125. package/dist/shared/useForwardExpose.cjs +2 -2
  126. package/dist/shared/useForwardExpose.cjs.map +1 -1
  127. package/dist/shared/useForwardExpose.js +2 -2
  128. package/dist/shared/useForwardExpose.js.map +1 -1
  129. 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 all welcomed! We need help building the core components, docs, tests, stories! Join our discord and we will get you up and running!
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-month]):not([data-outside-visible-months])";
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": isOutsideView.value || isDisabled.value || isUnavailable.value ? true : undefined,
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 || isOutsideView.value ? "" : undefined,
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", { dayValue: dayValue.value }, () => [
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-month]):not([data-outside-visible-months])";
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": isOutsideView.value || isDisabled.value || isUnavailable.value ? true : undefined,
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 || isOutsideView.value ? "" : undefined,
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", { dayValue: dayValue.value }, () => [
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":"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"}
@@ -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>Next page</slot>\n </Primitive>\n</template>\n"],"names":["computed","injectCalendarRootContext"],"mappings":";;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,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;;;;;;;;;;;;;;;;;;;;;;;;;"}
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>Next page</slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,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;;;;;;;;;;;;;;;;;;;;;;;;;"}
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>Prev page</slot>\n </Primitive>\n</template>\n"],"names":["computed","injectCalendarRootContext"],"mappings":";;;;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,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;;;;;;;;;;;;;;;;;;;;;;;;;"}
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>Prev page</slot>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;AAeA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,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;;;;;;;;;;;;;;;;;;;;;;;;;"}
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) && (!date.isEqualDay(placeholder.value, _modelValue) || placeholder.value.compare(_modelValue) !== 0))
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 === null) || shared_nullish.isNullish(_modelValue)) {
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) && (!isEqualDay(placeholder.value, _modelValue) || placeholder.value.compare(_modelValue) !== 0))
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 === null) || isNullish(_modelValue)) {
116
+ } else if (Object.values(segmentValues.value).every((value) => value !== null) && isNullish(_modelValue)) {
117
117
  segmentValues.value = { ...initialSegments };
118
118
  }
119
119
  });