reka-ui 2.7.0 → 2.8.2
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/dist/Avatar/AvatarImage.cjs +4 -2
- package/dist/Avatar/AvatarImage.cjs.map +1 -1
- package/dist/Avatar/AvatarImage.js +4 -2
- package/dist/Avatar/AvatarImage.js.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.cjs +4 -1
- package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
- package/dist/Calendar/CalendarCellTrigger.js +4 -1
- package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
- package/dist/Calendar/CalendarRoot.cjs +12 -7
- package/dist/Calendar/CalendarRoot.cjs.map +1 -1
- package/dist/Calendar/CalendarRoot.js +13 -8
- package/dist/Calendar/CalendarRoot.js.map +1 -1
- package/dist/Calendar/useCalendar.cjs +32 -2
- package/dist/Calendar/useCalendar.cjs.map +1 -1
- package/dist/Calendar/useCalendar.js +33 -3
- package/dist/Calendar/useCalendar.js.map +1 -1
- package/dist/Collection/Collection.cjs +6 -2
- package/dist/Collection/Collection.cjs.map +1 -1
- package/dist/Collection/Collection.js +6 -2
- package/dist/Collection/Collection.js.map +1 -1
- package/dist/Combobox/ComboboxContent.cjs +4 -0
- package/dist/Combobox/ComboboxContent.cjs.map +1 -1
- package/dist/Combobox/ComboboxContent.js +4 -0
- package/dist/Combobox/ComboboxContent.js.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.cjs +47 -33
- package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
- package/dist/Combobox/ComboboxContentImpl.js +48 -34
- package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.cjs +4 -0
- package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuContent.js +4 -0
- package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
- package/dist/ContextMenu/ContextMenuRadioGroup.cjs +1 -1
- package/dist/ContextMenu/ContextMenuRadioGroup.js +1 -1
- package/dist/ContextMenu/ContextMenuRadioItem.cjs +1 -1
- package/dist/ContextMenu/ContextMenuRadioItem.js +1 -1
- package/dist/ContextMenu/ContextMenuSubContent.cjs +4 -0
- package/dist/ContextMenu/ContextMenuSubContent.cjs.map +1 -1
- package/dist/ContextMenu/ContextMenuSubContent.js +4 -0
- package/dist/ContextMenu/ContextMenuSubContent.js.map +1 -1
- package/dist/DatePicker/DatePickerContent.cjs +4 -0
- package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
- package/dist/DatePicker/DatePickerContent.js +4 -0
- package/dist/DatePicker/DatePickerContent.js.map +1 -1
- package/dist/DatePicker/DatePickerRoot.cjs +10 -8
- package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
- package/dist/DatePicker/DatePickerRoot.js +10 -8
- package/dist/DatePicker/DatePickerRoot.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.cjs +4 -0
- package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerContent.js +4 -0
- package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.cjs +10 -8
- package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
- package/dist/DateRangePicker/DateRangePickerRoot.js +11 -9
- package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.cjs +4 -0
- package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContent.js +4 -0
- package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.cjs +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +1 -1
- package/dist/DropdownMenu/DropdownMenuSubContent.cjs +4 -0
- package/dist/DropdownMenu/DropdownMenuSubContent.cjs.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubContent.js +4 -0
- package/dist/DropdownMenu/DropdownMenuSubContent.js.map +1 -1
- package/dist/Editable/EditableInput.cjs +1 -1
- package/dist/Editable/EditableInput.cjs.map +1 -1
- package/dist/Editable/EditableInput.js +1 -1
- package/dist/Editable/EditableInput.js.map +1 -1
- package/dist/FocusScope/FocusScope.cjs +1 -1
- package/dist/FocusScope/FocusScope.cjs.map +1 -1
- package/dist/FocusScope/FocusScope.js +2 -2
- package/dist/FocusScope/FocusScope.js.map +1 -1
- package/dist/FocusScope/stack.cjs +0 -9
- package/dist/FocusScope/stack.cjs.map +1 -1
- package/dist/FocusScope/stack.js +1 -4
- package/dist/FocusScope/stack.js.map +1 -1
- package/dist/HoverCard/HoverCardContent.cjs +4 -0
- package/dist/HoverCard/HoverCardContent.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContent.js +4 -0
- package/dist/HoverCard/HoverCardContent.js.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.cjs +4 -0
- package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
- package/dist/HoverCard/HoverCardContentImpl.js +4 -0
- package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
- package/dist/Listbox/ListboxRoot.cjs.map +1 -1
- package/dist/Listbox/ListboxRoot.js.map +1 -1
- package/dist/Menu/MenuContent.cjs +4 -0
- package/dist/Menu/MenuContent.cjs.map +1 -1
- package/dist/Menu/MenuContent.js +4 -0
- package/dist/Menu/MenuContent.js.map +1 -1
- package/dist/Menu/MenuContentImpl.cjs +4 -0
- package/dist/Menu/MenuContentImpl.cjs.map +1 -1
- package/dist/Menu/MenuContentImpl.js +4 -0
- package/dist/Menu/MenuContentImpl.js.map +1 -1
- package/dist/Menu/MenuRadioGroup.cjs +1 -1
- package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
- package/dist/Menu/MenuRadioGroup.js +1 -1
- package/dist/Menu/MenuRadioGroup.js.map +1 -1
- package/dist/Menu/MenuRadioItem.cjs +1 -1
- package/dist/Menu/MenuRadioItem.cjs.map +1 -1
- package/dist/Menu/MenuRadioItem.js +1 -1
- package/dist/Menu/MenuRadioItem.js.map +1 -1
- package/dist/Menu/MenuRootContentModal.cjs +4 -0
- package/dist/Menu/MenuRootContentModal.cjs.map +1 -1
- package/dist/Menu/MenuRootContentModal.js +4 -0
- package/dist/Menu/MenuRootContentModal.js.map +1 -1
- package/dist/Menu/MenuRootContentNonModal.cjs +4 -0
- package/dist/Menu/MenuRootContentNonModal.cjs.map +1 -1
- package/dist/Menu/MenuRootContentNonModal.js +4 -0
- package/dist/Menu/MenuRootContentNonModal.js.map +1 -1
- package/dist/Menu/MenuSubContent.cjs +4 -0
- package/dist/Menu/MenuSubContent.cjs.map +1 -1
- package/dist/Menu/MenuSubContent.js +4 -0
- package/dist/Menu/MenuSubContent.js.map +1 -1
- package/dist/Menubar/MenubarContent.cjs +4 -0
- package/dist/Menubar/MenubarContent.cjs.map +1 -1
- package/dist/Menubar/MenubarContent.js +4 -0
- package/dist/Menubar/MenubarContent.js.map +1 -1
- package/dist/Menubar/MenubarRadioGroup.cjs +1 -1
- package/dist/Menubar/MenubarRadioGroup.js +1 -1
- package/dist/Menubar/MenubarRadioItem.cjs +1 -1
- package/dist/Menubar/MenubarRadioItem.js +1 -1
- package/dist/Menubar/MenubarSubContent.cjs +4 -0
- package/dist/Menubar/MenubarSubContent.cjs.map +1 -1
- package/dist/Menubar/MenubarSubContent.js +4 -0
- package/dist/Menubar/MenubarSubContent.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.cjs +1 -1
- package/dist/NavigationMenu/NavigationMenuContent.js +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
- package/dist/NavigationMenu/NavigationMenuContentImpl.js +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.cjs +1 -1
- package/dist/NavigationMenu/NavigationMenuItem.js +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.cjs +7 -5
- package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
- package/dist/NavigationMenu/NavigationMenuRoot.js +8 -6
- package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.cjs +1 -1
- package/dist/NavigationMenu/NavigationMenuTrigger.js +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.cjs +1 -1
- package/dist/NavigationMenu/NavigationMenuViewport.js +1 -1
- package/dist/NumberField/NumberFieldRoot.cjs +6 -1
- package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
- package/dist/NumberField/NumberFieldRoot.js +6 -1
- package/dist/NumberField/NumberFieldRoot.js.map +1 -1
- package/dist/PinInput/PinInputInput.cjs +15 -11
- package/dist/PinInput/PinInputInput.cjs.map +1 -1
- package/dist/PinInput/PinInputInput.js +15 -11
- package/dist/PinInput/PinInputInput.js.map +1 -1
- package/dist/Popover/PopoverContent.cjs +4 -0
- package/dist/Popover/PopoverContent.cjs.map +1 -1
- package/dist/Popover/PopoverContent.js +4 -0
- package/dist/Popover/PopoverContent.js.map +1 -1
- package/dist/Popover/PopoverContentImpl.cjs +4 -0
- package/dist/Popover/PopoverContentImpl.cjs.map +1 -1
- package/dist/Popover/PopoverContentImpl.js +4 -0
- package/dist/Popover/PopoverContentImpl.js.map +1 -1
- package/dist/Popover/PopoverContentModal.cjs +4 -0
- package/dist/Popover/PopoverContentModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentModal.js +4 -0
- package/dist/Popover/PopoverContentModal.js.map +1 -1
- package/dist/Popover/PopoverContentNonModal.cjs +4 -0
- package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
- package/dist/Popover/PopoverContentNonModal.js +4 -0
- package/dist/Popover/PopoverContentNonModal.js.map +1 -1
- package/dist/Popper/PopperContent.cjs +10 -2
- package/dist/Popper/PopperContent.cjs.map +1 -1
- package/dist/Popper/PopperContent.js +10 -2
- package/dist/Popper/PopperContent.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +8 -2
- package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js +8 -2
- package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs +2 -1
- package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js +2 -1
- package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.cjs +30 -16
- package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
- package/dist/RangeCalendar/RangeCalendarRoot.js +31 -17
- package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.cjs +41 -8
- package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
- package/dist/RangeCalendar/useRangeCalendar.js +41 -8
- package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.cjs +9 -2
- package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbar.js +9 -2
- package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
- package/dist/ScrollArea/ScrollAreaScrollbarGlimpse.cjs +132 -0
- package/dist/ScrollArea/ScrollAreaScrollbarGlimpse.cjs.map +1 -0
- package/dist/ScrollArea/ScrollAreaScrollbarGlimpse.js +126 -0
- package/dist/ScrollArea/ScrollAreaScrollbarGlimpse.js.map +1 -0
- package/dist/Select/SelectContent.cjs +4 -0
- package/dist/Select/SelectContent.cjs.map +1 -1
- package/dist/Select/SelectContent.js +4 -0
- package/dist/Select/SelectContent.js.map +1 -1
- package/dist/Select/SelectContentImpl.cjs +4 -0
- package/dist/Select/SelectContentImpl.cjs.map +1 -1
- package/dist/Select/SelectContentImpl.js +4 -0
- package/dist/Select/SelectContentImpl.js.map +1 -1
- package/dist/Select/SelectPopperPosition.cjs +4 -0
- package/dist/Select/SelectPopperPosition.cjs.map +1 -1
- package/dist/Select/SelectPopperPosition.js +4 -0
- package/dist/Select/SelectPopperPosition.js.map +1 -1
- package/dist/Tabs/TabsContent.cjs +4 -0
- package/dist/Tabs/TabsContent.cjs.map +1 -1
- package/dist/Tabs/TabsContent.js +5 -1
- package/dist/Tabs/TabsContent.js.map +1 -1
- package/dist/Tabs/TabsRoot.cjs +11 -1
- package/dist/Tabs/TabsRoot.cjs.map +1 -1
- package/dist/Tabs/TabsRoot.js +12 -2
- package/dist/Tabs/TabsRoot.js.map +1 -1
- package/dist/Tabs/TabsTrigger.cjs +1 -1
- package/dist/Tabs/TabsTrigger.cjs.map +1 -1
- package/dist/Tabs/TabsTrigger.js +1 -1
- package/dist/Tabs/TabsTrigger.js.map +1 -1
- package/dist/TimeField/TimeFieldInput.cjs +3 -1
- package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
- package/dist/TimeField/TimeFieldInput.js +3 -1
- package/dist/TimeField/TimeFieldInput.js.map +1 -1
- package/dist/TimeField/TimeFieldRoot.cjs +24 -2
- package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
- package/dist/TimeField/TimeFieldRoot.js +24 -2
- package/dist/TimeField/TimeFieldRoot.js.map +1 -1
- package/dist/date/calendar.cjs +29 -9
- package/dist/date/calendar.cjs.map +1 -1
- package/dist/date/calendar.js +25 -11
- package/dist/date/calendar.js.map +1 -1
- package/dist/date/comparators.cjs +14 -2
- package/dist/date/comparators.cjs.map +1 -1
- package/dist/date/comparators.js +14 -2
- package/dist/date/comparators.js.map +1 -1
- package/dist/date/parser.cjs +1 -0
- package/dist/date/parser.cjs.map +1 -1
- package/dist/date/parser.js +1 -0
- package/dist/date/parser.js.map +1 -1
- package/dist/date/useDateField.cjs +41 -20
- package/dist/date/useDateField.cjs.map +1 -1
- package/dist/date/useDateField.js +41 -20
- package/dist/date/useDateField.js.map +1 -1
- package/dist/date.cjs +1 -0
- package/dist/date.d.cts +2 -2
- package/dist/date.d.ts +2 -2
- package/dist/date.js +2 -2
- package/dist/index.cjs +3 -1
- package/dist/index.d.cts +1148 -1106
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +670 -628
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index2.d.cts +9 -2
- package/dist/index2.d.cts.map +1 -1
- package/dist/index2.d.ts +9 -2
- package/dist/index2.d.ts.map +1 -1
- package/dist/shared/useDateFormatter.cjs +1 -1
- package/dist/shared/useDateFormatter.cjs.map +1 -1
- package/dist/shared/useDateFormatter.js +1 -1
- package/dist/shared/useDateFormatter.js.map +1 -1
- package/dist/shared/useForwardExpose.cjs +1 -1
- package/dist/shared/useForwardExpose.cjs.map +1 -1
- package/dist/shared/useForwardExpose.js +1 -1
- package/dist/shared/useForwardExpose.js.map +1 -1
- package/dist/shared/useGraceArea.cjs +1 -1
- package/dist/shared/useGraceArea.cjs.map +1 -1
- package/dist/shared/useGraceArea.js +1 -1
- package/dist/shared/useGraceArea.js.map +1 -1
- package/package.json +20 -16
- package/src/Avatar/AvatarImage.vue +2 -1
- package/src/Calendar/CalendarCellTrigger.vue +8 -1
- package/src/Calendar/CalendarRoot.vue +19 -7
- package/src/Calendar/useCalendar.ts +43 -3
- package/src/Collection/Collection.ts +3 -2
- package/src/Combobox/ComboboxContentImpl.vue +40 -32
- package/src/Combobox/ComboboxRoot.vue +1 -1
- package/src/DatePicker/DatePickerRoot.vue +10 -10
- package/src/DatePicker/index.ts +4 -4
- package/src/DateRangePicker/DateRangePickerRoot.vue +11 -11
- package/src/DateRangePicker/index.ts +4 -4
- package/src/Editable/EditableInput.vue +1 -1
- package/src/FocusScope/FocusScope.vue +2 -2
- package/src/Listbox/ListboxFilter.vue +1 -1
- package/src/Listbox/ListboxRoot.vue +2 -1
- package/src/Menu/MenuRadioGroup.vue +5 -4
- package/src/Menu/MenuRadioItem.vue +2 -1
- package/src/NavigationMenu/NavigationMenuRoot.vue +10 -6
- package/src/NumberField/NumberFieldRoot.vue +6 -1
- package/src/PinInput/PinInputInput.vue +25 -18
- package/src/Popper/PopperContent.vue +15 -5
- package/src/RadioGroup/RadioGroupRoot.vue +1 -1
- package/src/RangeCalendar/RangeCalendarCellTrigger.vue +13 -3
- package/src/RangeCalendar/RangeCalendarGrid.vue +1 -0
- package/src/RangeCalendar/RangeCalendarRoot.vue +46 -30
- package/src/RangeCalendar/useRangeCalendar.ts +43 -15
- package/src/Rating/RatingItem.vue +52 -0
- package/src/Rating/RatingItemIndicator.vue +60 -0
- package/src/Rating/RatingRoot.vue +113 -0
- package/src/Rating/index.ts +3 -0
- package/src/ScrollArea/ScrollAreaRoot.vue +2 -1
- package/src/ScrollArea/ScrollAreaScrollbar.vue +9 -0
- package/src/ScrollArea/ScrollAreaScrollbarGlimpse.vue +145 -0
- package/src/ScrollArea/index.ts +4 -0
- package/src/ScrollArea/types.ts +1 -1
- package/src/Tabs/TabsContent.vue +6 -1
- package/src/Tabs/TabsRoot.vue +14 -1
- package/src/Tabs/TabsTrigger.vue +1 -1
- package/src/TimeField/TimeFieldInput.vue +6 -1
- package/src/TimeField/TimeFieldRoot.vue +25 -2
- package/src/Tree/TreeRoot.vue +2 -2
- package/src/date/calendar.ts +42 -18
- package/src/date/comparators.ts +15 -2
- package/src/index.ts +1 -0
- package/src/shared/date/parser.ts +10 -0
- package/src/shared/date/useDateField.ts +72 -21
- package/src/shared/index.ts +1 -1
- package/src/shared/useDateFormatter.ts +2 -2
- package/src/shared/useForwardExpose.ts +1 -1
- package/src/shared/useGraceArea.ts +1 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import type { CalendarDateTime,
|
|
1
|
+
import type { CalendarDateTime, DateFields, DateValue, TimeFields } from '@internationalized/date'
|
|
2
2
|
import type { Ref } from 'vue'
|
|
3
3
|
import type { AnyExceptLiteral, DateStep, HourCycle, SegmentPart, SegmentValueObj } from './types'
|
|
4
4
|
import type { Formatter } from '@/shared'
|
|
5
|
+
import {
|
|
6
|
+
DateFormatter,
|
|
7
|
+
} from '@internationalized/date'
|
|
5
8
|
import { computed } from 'vue'
|
|
6
9
|
import { getDaysInMonth, toDate } from '@/date'
|
|
7
|
-
import { useKbd } from '@/shared'
|
|
10
|
+
import { snapValueToStep, useKbd } from '@/shared'
|
|
8
11
|
import { isAcceptableSegmentKey, isNumberString, isSegmentNavigationKey } from './segment'
|
|
9
12
|
|
|
10
13
|
type MinuteSecondIncrementProps = {
|
|
@@ -19,7 +22,6 @@ type DateTimeValueIncrementation = {
|
|
|
19
22
|
part: keyof Omit<DateFields, 'era'> | keyof TimeFields
|
|
20
23
|
dateRef: DateValue
|
|
21
24
|
prevValue: number | null
|
|
22
|
-
hourCycle?: HourCycle
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
type SegmentAttrProps = {
|
|
@@ -282,6 +284,7 @@ export type UseDateFieldProps = {
|
|
|
282
284
|
placeholder: Ref<DateValue>
|
|
283
285
|
hourCycle: HourCycle
|
|
284
286
|
step: Ref<DateStep>
|
|
287
|
+
stepSnapping?: Ref<boolean>
|
|
285
288
|
formatter: Formatter
|
|
286
289
|
segmentValues: Ref<SegmentValueObj>
|
|
287
290
|
disabled: Ref<boolean>
|
|
@@ -320,7 +323,7 @@ export function useDateField(props: UseDateFieldProps) {
|
|
|
320
323
|
|
|
321
324
|
return Number.parseInt(str.slice(0, -1))
|
|
322
325
|
}
|
|
323
|
-
function dateTimeValueIncrementation({ e, part, dateRef, prevValue
|
|
326
|
+
function dateTimeValueIncrementation({ e, part, dateRef, prevValue }: DateTimeValueIncrementation): number {
|
|
324
327
|
const step = props.step.value[part] ?? 1
|
|
325
328
|
const sign = e.key === kbd.ARROW_UP ? step : -step
|
|
326
329
|
|
|
@@ -328,7 +331,9 @@ export function useDateField(props: UseDateFieldProps) {
|
|
|
328
331
|
return dateRef[part as keyof Omit<DateFields, 'era'>]
|
|
329
332
|
|
|
330
333
|
if (part === 'hour' && 'hour' in dateRef) {
|
|
331
|
-
|
|
334
|
+
// Don't pass hourCycle to cycle - internal representation is always 24-hour
|
|
335
|
+
// The hourCycle prop only affects display, not internal cycling
|
|
336
|
+
const cycleArgs: [keyof DateFields | keyof TimeFields, number] = [part, sign]
|
|
332
337
|
return dateRef.set({ [part as keyof DateValue]: prevValue }).cycle(...cycleArgs)[part]
|
|
333
338
|
}
|
|
334
339
|
|
|
@@ -507,8 +512,7 @@ export function useDateField(props: UseDateFieldProps) {
|
|
|
507
512
|
return { value: total, moveToNext }
|
|
508
513
|
}
|
|
509
514
|
|
|
510
|
-
function updateHour(num: number, prev: number | null) {
|
|
511
|
-
const max = 24
|
|
515
|
+
function updateHour(max: number, num: number, prev: number | null) {
|
|
512
516
|
let moveToNext = false
|
|
513
517
|
const maxStart = Math.floor(max / 10)
|
|
514
518
|
|
|
@@ -714,6 +718,11 @@ export function useDateField(props: UseDateFieldProps) {
|
|
|
714
718
|
}
|
|
715
719
|
}
|
|
716
720
|
|
|
721
|
+
function uses12HourFormat(locale: string): boolean {
|
|
722
|
+
const hourCycle = new DateFormatter(locale, { hour: 'numeric' }).resolvedOptions().hourCycle
|
|
723
|
+
return hourCycle === 'h11' || hourCycle === 'h12'
|
|
724
|
+
}
|
|
725
|
+
|
|
717
726
|
function handleHourSegmentKeydown(e: KeyboardEvent) {
|
|
718
727
|
const dateRef = props.placeholder.value
|
|
719
728
|
if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key) || !('hour' in dateRef) || !('hour' in props.segmentValues.value))
|
|
@@ -721,16 +730,14 @@ export function useDateField(props: UseDateFieldProps) {
|
|
|
721
730
|
|
|
722
731
|
const prevValue = props.segmentValues.value.hour
|
|
723
732
|
|
|
724
|
-
const hourCycle = props.hourCycle
|
|
725
|
-
|
|
726
733
|
if (e.key === kbd.ARROW_UP || e.key === kbd.ARROW_DOWN) {
|
|
727
|
-
|
|
734
|
+
const newHour = dateTimeValueIncrementation({ e, part: 'hour', dateRef: props.placeholder.value, prevValue })
|
|
735
|
+
props.segmentValues.value.hour = newHour
|
|
728
736
|
|
|
729
|
-
if ('dayPeriod' in props.segmentValues.value) {
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
props.segmentValues.value.dayPeriod = 'PM'
|
|
737
|
+
if ('dayPeriod' in props.segmentValues.value && newHour !== null) {
|
|
738
|
+
// Determine AM/PM based on internal 24-hour value
|
|
739
|
+
// Hour 0-11 = AM, Hour 12-23 = PM
|
|
740
|
+
props.segmentValues.value.dayPeriod = newHour >= 12 ? 'PM' : 'AM'
|
|
734
741
|
}
|
|
735
742
|
|
|
736
743
|
return
|
|
@@ -738,14 +745,31 @@ export function useDateField(props: UseDateFieldProps) {
|
|
|
738
745
|
|
|
739
746
|
if (isNumberString(e.key)) {
|
|
740
747
|
const num = Number.parseInt(e.key)
|
|
741
|
-
const
|
|
748
|
+
const is12Hour = props.hourCycle !== undefined
|
|
749
|
+
? props.hourCycle === 12
|
|
750
|
+
: uses12HourFormat(props.formatter.getLocale())
|
|
751
|
+
const max = is12Hour ? 12 : 24
|
|
752
|
+
|
|
753
|
+
let displayPrev = prevValue
|
|
754
|
+
if (is12Hour && prevValue !== null) {
|
|
755
|
+
displayPrev = prevValue === 0 ? 12 : (prevValue > 12 ? prevValue - 12 : prevValue)
|
|
756
|
+
}
|
|
742
757
|
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
758
|
+
const { value, moveToNext } = updateHour(max, num, displayPrev)
|
|
759
|
+
|
|
760
|
+
// Convert display hour back to internal 24-hour format
|
|
761
|
+
let internalValue = value
|
|
762
|
+
if (is12Hour && value !== null) {
|
|
763
|
+
const period = props.segmentValues.value.dayPeriod || 'AM'
|
|
764
|
+
if (value === 12) {
|
|
765
|
+
internalValue = period === 'AM' ? 0 : 12
|
|
766
|
+
}
|
|
767
|
+
else {
|
|
768
|
+
internalValue = period === 'PM' ? value + 12 : value
|
|
769
|
+
}
|
|
770
|
+
}
|
|
747
771
|
|
|
748
|
-
props.segmentValues.value.hour =
|
|
772
|
+
props.segmentValues.value.hour = internalValue
|
|
749
773
|
|
|
750
774
|
if (moveToNext)
|
|
751
775
|
props.focusNext()
|
|
@@ -881,9 +905,36 @@ export function useDateField(props: UseDateFieldProps) {
|
|
|
881
905
|
}
|
|
882
906
|
}
|
|
883
907
|
|
|
908
|
+
function handleSegmentFocusOut() {
|
|
909
|
+
if (!props.stepSnapping?.value)
|
|
910
|
+
return
|
|
911
|
+
|
|
912
|
+
if (props.part === 'hour' && 'hour' in props.segmentValues.value && props.segmentValues.value.hour !== null && props.step.value.hour && props.step.value.hour > 1) {
|
|
913
|
+
props.segmentValues.value.hour = snapValueToStep(props.segmentValues.value.hour, 0, 23, props.step.value.hour)
|
|
914
|
+
if ('dayPeriod' in props.segmentValues.value) {
|
|
915
|
+
if (props.segmentValues.value.hour < 12)
|
|
916
|
+
props.segmentValues.value.dayPeriod = 'AM'
|
|
917
|
+
else if (props.segmentValues.value.hour)
|
|
918
|
+
props.segmentValues.value.dayPeriod = 'PM'
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
else if (props.part === 'minute' && 'minute' in props.segmentValues.value && props.segmentValues.value.minute !== null && props.step.value.minute && props.step.value.minute > 1) {
|
|
922
|
+
props.segmentValues.value.minute = snapValueToStep(props.segmentValues.value.minute, 0, 59, props.step.value.minute)
|
|
923
|
+
}
|
|
924
|
+
else if (props.part === 'second' && 'second' in props.segmentValues.value && props.segmentValues.value.second !== null && props.step.value.second && props.step.value.second > 1) {
|
|
925
|
+
props.segmentValues.value.second = snapValueToStep(props.segmentValues.value.second, 0, 59, props.step.value.second)
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
if (Object.values(props.segmentValues.value).every(item => item !== null)) {
|
|
929
|
+
const dateRef = props.placeholder.value.set({ ...props.segmentValues.value as Record<AnyExceptLiteral, number> })
|
|
930
|
+
props.modelValue.value = dateRef.copy()
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
|
|
884
934
|
return {
|
|
885
935
|
handleSegmentClick,
|
|
886
936
|
handleSegmentKeydown,
|
|
937
|
+
handleSegmentFocusOut,
|
|
887
938
|
attributes,
|
|
888
939
|
}
|
|
889
940
|
}
|
package/src/shared/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from './arrays'
|
|
|
2
2
|
export * from './browser'
|
|
3
3
|
export * from './clamp'
|
|
4
4
|
export { createContext } from './createContext'
|
|
5
|
-
export { type DateRange, type DateStep, type DateValue, type SegmentPart } from './date'
|
|
5
|
+
export { type DateRange, type DateStep, type DateValue, type SegmentPart, type TimeValue } from './date'
|
|
6
6
|
export { getActiveElement } from './getActiveElement'
|
|
7
7
|
export { handleAndDispatchCustomEvent } from './handleAndDispatchCustomEvent'
|
|
8
8
|
export { isValidVNodeElement } from './isValidVNodeElement'
|
|
@@ -105,8 +105,8 @@ export function useDateFormatter(initialLocale: string, opts: DateFormatterOptio
|
|
|
105
105
|
minute: 'numeric',
|
|
106
106
|
}).formatToParts(date)
|
|
107
107
|
const value = parts.find(p => p.type === 'dayPeriod')?.value
|
|
108
|
-
// Day period can be "AM"/"PM" or "a.m."/"p.m." in some locales
|
|
109
|
-
if (value === 'PM' || value === 'p.m.')
|
|
108
|
+
// Day period can be "AM"/"PM" or "am"/"pm" or "a.m."/"p.m." in some locales
|
|
109
|
+
if (value === 'PM' || value === 'pm' || value === 'p.m.')
|
|
110
110
|
return 'PM'
|
|
111
111
|
|
|
112
112
|
return 'AM'
|
|
@@ -61,7 +61,7 @@ export function useForwardExpose<T extends ComponentPublicInstance>() {
|
|
|
61
61
|
|
|
62
62
|
// ref not is Element
|
|
63
63
|
// and `useForwardExpose.test.ts > useForwardRef > should forward plain DOM element ref - 2` Passing in `$el`
|
|
64
|
-
if (!(ref instanceof Element) && !Object.
|
|
64
|
+
if (!(ref instanceof Element) && !Object.prototype.hasOwnProperty.call(ref, '$el')) {
|
|
65
65
|
// Retrieves the `exposed` data that has not been unwrapped by `vue` from `$.exposed`.
|
|
66
66
|
const childExposed = ref.$.exposed
|
|
67
67
|
const merged = Object.assign({}, ret)
|
|
@@ -25,7 +25,7 @@ export function useGraceArea(triggerElement: Ref<HTMLElement | undefined>, conta
|
|
|
25
25
|
const currentTarget = event.currentTarget as HTMLElement
|
|
26
26
|
const exitPoint = { x: event.clientX, y: event.clientY }
|
|
27
27
|
const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect())
|
|
28
|
-
const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide)
|
|
28
|
+
const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide, 1)
|
|
29
29
|
const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect())
|
|
30
30
|
const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints])
|
|
31
31
|
pointerGraceArea.value = graceArea
|