@astryxdesign/core 0.7.8 → 0.7.9-canary.0200dfe
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/AppShell/observeMainOverflow.d.ts.map +1 -1
- package/dist/AppShell/observeMainOverflow.js +9 -6
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +37 -3
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +40 -8
- package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
- package/dist/BottomSheet/bottomSheetStack.js +4 -3
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +61 -21
- package/dist/Calendar/Calendar.d.ts +14 -2
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +63 -74
- package/dist/Calendar/getInitialFocusDate.d.ts +4 -1
- package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -1
- package/dist/Calendar/getInitialFocusDate.js +7 -5
- package/dist/Calendar/hooks/useCalendarDays.d.ts +19 -2
- package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarDays.js +57 -64
- package/dist/Calendar/hooks/useCalendarNavigation.d.ts +28 -3
- package/dist/Calendar/hooks/useCalendarNavigation.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarNavigation.js +33 -22
- package/dist/Calendar/styles.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts +2 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +74 -18
- package/dist/CheckboxInput/CheckboxRowPressContext.d.ts +2 -0
- package/dist/CheckboxInput/CheckboxRowPressContext.d.ts.map +1 -0
- package/dist/CheckboxInput/CheckboxRowPressContext.js +20 -0
- package/dist/CheckboxList/CheckboxListItem.d.ts +2 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +40 -14
- package/dist/ClickableCard/ClickableCard.d.ts +1 -1
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +5 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +2 -0
- package/dist/DateInput/DateInput.d.ts +37 -6
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +97 -124
- package/dist/DateInput/MonthScroller.d.ts +5 -2
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +26 -29
- package/dist/DateInput/MonthYearWheels.d.ts +10 -1
- package/dist/DateInput/MonthYearWheels.d.ts.map +1 -1
- package/dist/DateInput/MonthYearWheels.js +54 -42
- package/dist/DateInput/PickerWheel.d.ts.map +1 -1
- package/dist/DateInput/PickerWheel.js +7 -1
- package/dist/DateInput/TouchDateField.d.ts +1 -1
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +26 -21
- package/dist/DateInput/monthGeometry.d.ts +42 -8
- package/dist/DateInput/monthGeometry.d.ts.map +1 -1
- package/dist/DateInput/monthGeometry.js +81 -7
- package/dist/DateInput/useCalendarPresentation.d.ts +10 -0
- package/dist/DateInput/useCalendarPresentation.d.ts.map +1 -0
- package/dist/DateInput/useCalendarPresentation.js +32 -0
- package/dist/DateInput/useTypedDate.d.ts +92 -0
- package/dist/DateInput/useTypedDate.d.ts.map +1 -0
- package/dist/DateInput/useTypedDate.js +269 -0
- package/dist/DateInput/wheelStrip.js +2 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts +17 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +15 -8
- package/dist/DateTimeInput/DateTimeInput.d.ts +26 -3
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +92 -88
- package/dist/DateTimeInput/TouchDateTimeField.d.ts +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +26 -20
- package/dist/Dialog/Dialog.d.ts +2 -1
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +14 -3
- package/dist/Drawer/useDrawerDialogPresence.d.ts +2 -1
- package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
- package/dist/Drawer/useDrawerDialogPresence.js +11 -2
- package/dist/DropdownMenu/DropdownMenu.d.ts +9 -1
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +11 -8
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +3 -2
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +3 -2
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +3 -2
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +3 -2
- package/dist/Field/inputDisabledFocus.d.ts +4 -4
- package/dist/Field/inputStyles.stylex.d.ts +1 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +16 -2
- package/dist/HoverCard/useHoverCard.d.ts +3 -1
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/Icon/Icon.d.ts +1 -1
- package/dist/InfoTip/InfoTip.d.ts +1 -0
- package/dist/InfoTip/InfoTip.d.ts.map +1 -1
- package/dist/InfoTip/InfoTip.js +6 -18
- package/dist/InputGroup/InputGroup.d.ts +4 -3
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +2 -2
- package/dist/InputGroup/InputGroupText.d.ts +2 -1
- package/dist/InputGroup/InputGroupText.d.ts.map +1 -1
- package/dist/InputGroup/InputGroupText.js +2 -1
- package/dist/InputGroup/groupStyles.d.ts +1 -1
- package/dist/InputGroup/groupStyles.d.ts.map +1 -1
- package/dist/InputGroup/groupStyles.js +1 -1
- package/dist/Item/Item.d.ts +20 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +97 -29
- package/dist/Item/ItemListRowContext.d.ts +2 -0
- package/dist/Item/ItemListRowContext.d.ts.map +1 -0
- package/dist/Item/ItemListRowContext.js +16 -0
- package/dist/Layer/holdEntranceInput.d.ts +24 -0
- package/dist/Layer/holdEntranceInput.d.ts.map +1 -0
- package/dist/Layer/holdEntranceInput.js +65 -0
- package/dist/Layer/inputHold.d.ts +49 -0
- package/dist/Layer/inputHold.d.ts.map +1 -0
- package/dist/Layer/inputHold.js +636 -0
- package/dist/Layer/outsidePress.d.ts +4 -0
- package/dist/Layer/outsidePress.d.ts.map +1 -1
- package/dist/Layer/outsidePress.js +18 -1
- package/dist/Layer/preserveAnimations.d.ts +1 -5
- package/dist/Layer/preserveAnimations.d.ts.map +1 -1
- package/dist/Layer/preserveAnimations.js +12 -214
- package/dist/Layer/useBackdropPress.d.ts +8 -0
- package/dist/Layer/useBackdropPress.d.ts.map +1 -1
- package/dist/Layer/useBackdropPress.js +31 -2
- package/dist/Layer/useLayer.d.ts +3 -1
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +64 -4
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +4 -0
- package/dist/Layout/LayoutContent.d.ts +3 -1
- package/dist/Layout/LayoutContent.d.ts.map +1 -1
- package/dist/Layout/LayoutContent.js +12 -4
- package/dist/Layout/LayoutPanel.d.ts +13 -10
- package/dist/Layout/LayoutPanel.d.ts.map +1 -1
- package/dist/Layout/LayoutPanel.js +81 -11
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +4 -0
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +1 -0
- package/dist/List/ListItem.d.ts +5 -4
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +45 -9
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +56 -39
- package/dist/MetadataList/MetadataList.js +1 -1
- package/dist/MobileNav/MobileNav.d.ts +11 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +39 -1
- package/dist/MoreMenu/MoreMenu.d.ts +5 -3
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +6 -9
- package/dist/NumberInput/NumberInput.d.ts +4 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +244 -11
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +7 -2
- package/dist/Popover/usePopover.d.ts +1 -0
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +12 -5
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchBottomSheet.js +4 -2
- package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchToken.js +3 -1
- package/dist/PowerSearch/formatFilterValue.d.ts +9 -3
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +14 -11
- package/dist/PowerSearch/formatTokenValue.d.ts +6 -2
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatTokenValue.js +6 -3
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +16 -3
- package/dist/Resizable/ResizeHandle.d.ts +5 -5
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +44 -5
- package/dist/Resizable/resizablePane.d.ts +58 -0
- package/dist/Resizable/resizablePane.d.ts.map +1 -0
- package/dist/Resizable/resizablePane.js +137 -0
- package/dist/Resizable/useResizable.d.ts +7 -0
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +13 -0
- package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
- package/dist/SelectableCard/SelectableCard.d.ts +1 -1
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +5 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +51 -10
- package/dist/SideNav/SideNav.d.ts +9 -3
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +45 -10
- package/dist/Slider/sliderTouchController.js +2 -2
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +14 -71
- package/dist/Spinner/index.d.ts +1 -1
- package/dist/Spinner/index.d.ts.map +1 -1
- package/dist/Spinner/spinnerRotor.d.ts +28 -0
- package/dist/Spinner/spinnerRotor.d.ts.map +1 -0
- package/dist/Spinner/spinnerRotor.js +98 -0
- package/dist/Stack/StackItem.d.ts +8 -4
- package/dist/Stack/StackItem.d.ts.map +1 -1
- package/dist/Stack/StackItem.js +17 -4
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +13 -10
- package/dist/Switch/useSwitchTouch.js +4 -4
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +5 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +14 -8
- package/dist/Timestamp/formatInstant.d.ts +10 -1
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +13 -27
- package/dist/Timestamp/tooltipEntries.d.ts +5 -3
- package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
- package/dist/Timestamp/tooltipEntries.js +6 -4
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +9 -0
- package/dist/Token/TokenLink.d.ts +1 -1
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +4 -1
- package/dist/Tokenizer/Tokenizer.d.ts +14 -10
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +189 -89
- package/dist/Tooltip/useTooltip.d.ts +3 -1
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +164 -59
- package/dist/TreeList/TreeListItem.d.ts +2 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +27 -3
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +2 -1
- package/dist/animator/createAnimator.js +2 -2
- package/dist/astryx.css +362 -325
- package/dist/gestures/GestureHost.d.ts +2 -2
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +21 -6
- package/dist/gestures/PanGestureRecognizer.d.ts +11 -1
- package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/PanGestureRecognizer.js +15 -1
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +6 -1
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/nativeScroll.d.ts +3 -6
- package/dist/gestures/nativeScroll.d.ts.map +1 -1
- package/dist/gestures/nativeScroll.js +7 -52
- package/dist/gestures/wheelSegmenter.d.ts +68 -1
- package/dist/gestures/wheelSegmenter.d.ts.map +1 -1
- package/dist/gestures/wheelSegmenter.js +199 -10
- package/dist/hooks/StackItemScrollRegion.d.ts +31 -0
- package/dist/hooks/StackItemScrollRegion.d.ts.map +1 -0
- package/dist/hooks/StackItemScrollRegion.js +40 -0
- package/dist/hooks/computeOverflow.d.ts +2 -0
- package/dist/hooks/computeOverflow.d.ts.map +1 -1
- package/dist/hooks/computeOverflow.js +1 -1
- package/dist/hooks/menuPressGesture.d.ts +133 -21
- package/dist/hooks/menuPressGesture.d.ts.map +1 -1
- package/dist/hooks/menuPressGesture.js +155 -30
- package/dist/hooks/menuPressValues.d.ts +16 -0
- package/dist/hooks/menuPressValues.d.ts.map +1 -0
- package/dist/hooks/menuPressValues.js +18 -0
- package/dist/hooks/useClickableContainer.d.ts +36 -7
- package/dist/hooks/useClickableContainer.d.ts.map +1 -1
- package/dist/hooks/useClickableContainer.js +63 -14
- package/dist/hooks/useFocusTrap.d.ts +10 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +225 -132
- package/dist/hooks/useKeyboardHighlight.d.ts +17 -0
- package/dist/hooks/useKeyboardHighlight.d.ts.map +1 -0
- package/dist/hooks/useKeyboardHighlight.js +38 -0
- package/dist/hooks/useMediaQuery.d.ts +2 -1
- package/dist/hooks/useMediaQuery.d.ts.map +1 -1
- package/dist/hooks/useMediaQuery.js +37 -12
- package/dist/hooks/useMenuPress.d.ts +34 -1
- package/dist/hooks/useMenuPress.d.ts.map +1 -1
- package/dist/hooks/useMenuPress.js +93 -5
- package/dist/hooks/useOverflow.d.ts +10 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +214 -23
- package/dist/hooks/usePressFeedback.d.ts +6 -6
- package/dist/hooks/usePressFeedback.js +6 -6
- package/dist/hooks/useScrollRegionProps.d.ts +35 -0
- package/dist/hooks/useScrollRegionProps.d.ts.map +1 -0
- package/dist/hooks/useScrollRegionProps.js +51 -0
- package/dist/i18n/InternationalizationContext.d.ts +6 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.d.ts +23 -3
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.js +8 -3
- package/dist/i18n/generated-english/DateInput/DateInput.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/DateInput/DateInput.generated.js +0 -1
- package/dist/i18n/generated-english/DateInput/useTypedDate.generated.d.ts +8 -0
- package/dist/i18n/generated-english/DateInput/useTypedDate.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/DateInput/useTypedDate.generated.js +16 -0
- package/dist/i18n/generated-english/DateTimeInput/DateTimeInput.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/DateTimeInput/DateTimeInput.generated.js +0 -1
- package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.d.ts +8 -0
- package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.js +12 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +5 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +5 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -0
- package/dist/i18n/useCalendarSystem.d.ts +19 -0
- package/dist/i18n/useCalendarSystem.d.ts.map +1 -0
- package/dist/i18n/useCalendarSystem.js +61 -0
- package/dist/internal/calendar-system.d.ts +18 -0
- package/dist/internal/calendar-system.d.ts.map +1 -0
- package/dist/internal/calendar-system.js +19 -0
- package/dist/internal/spinner-rotor.d.ts +16 -0
- package/dist/internal/spinner-rotor.d.ts.map +1 -0
- package/dist/internal/spinner-rotor.js +16 -0
- package/dist/internal/touch.d.ts +20 -2
- package/dist/internal/touch.d.ts.map +1 -1
- package/dist/internal/touch.js +29 -3
- package/dist/motion/animator.d.ts +5 -5
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +7 -6
- package/dist/motion/carryAnimations.d.ts +58 -0
- package/dist/motion/carryAnimations.d.ts.map +1 -0
- package/dist/motion/carryAnimations.js +305 -0
- package/dist/motion/transientCopy.d.ts +4 -2
- package/dist/motion/transientCopy.d.ts.map +1 -1
- package/dist/motion/transientCopy.js +34 -5
- package/dist/motion/uikit/gestures.d.ts +41 -0
- package/dist/motion/uikit/gestures.d.ts.map +1 -1
- package/dist/motion/uikit/gestures.js +25 -0
- package/dist/motion/uikit/index.d.ts +1 -1
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +1 -1
- package/dist/motion/uikit/timing.d.ts +14 -10
- package/dist/motion/uikit/timing.d.ts.map +1 -1
- package/dist/motion/uikit/timing.js +7 -5
- package/dist/privateAttributes/menuPressLit.stylex.d.ts +52 -0
- package/dist/privateAttributes/menuPressLit.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/menuPressLit.stylex.js +99 -0
- package/dist/privateAttributes/press.stylex.d.ts +142 -0
- package/dist/privateAttributes/press.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/press.stylex.js +101 -0
- package/dist/theme/themeMotion.d.ts +3 -2
- package/dist/theme/themeMotion.d.ts.map +1 -1
- package/dist/theme/themeMotion.js +3 -2
- package/dist/theme/tokens.stylex.d.ts +2 -2
- package/dist/theme/tokens.stylex.js +1 -1
- package/dist/utils/calendarDateParser.d.ts +110 -0
- package/dist/utils/calendarDateParser.d.ts.map +1 -0
- package/dist/utils/calendarDateParser.js +1225 -0
- package/dist/utils/calendarSystem.d.ts +176 -0
- package/dist/utils/calendarSystem.d.ts.map +1 -0
- package/dist/utils/calendarSystem.js +569 -0
- package/dist/utils/coarsePointer.d.ts +5 -0
- package/dist/utils/coarsePointer.d.ts.map +1 -1
- package/dist/utils/coarsePointer.js +22 -13
- package/dist/utils/flatTree.d.ts +6 -3
- package/dist/utils/flatTree.d.ts.map +1 -1
- package/dist/utils/flatTree.js +13 -3
- package/dist/utils/focusReturn.d.ts +34 -13
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +64 -17
- package/dist/utils/hitArea.d.ts +8 -1
- package/dist/utils/hitArea.d.ts.map +1 -1
- package/dist/utils/hitArea.js +99 -9
- package/dist/utils/inputPresentation.d.ts +9 -1
- package/dist/utils/inputPresentation.d.ts.map +1 -1
- package/dist/utils/inputPresentation.js +15 -1
- package/dist/utils/inputStream.d.ts +14 -1
- package/dist/utils/inputStream.d.ts.map +1 -1
- package/dist/utils/inputStream.js +40 -9
- package/dist/utils/interactionOverlay.stylex.d.ts +5 -9
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +29 -31
- package/dist/utils/plainDate.d.ts +38 -7
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +92 -18
- package/dist/utils/pressFeedback.d.ts +10 -2
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +40 -15
- package/dist/utils/pressGesture.d.ts +12 -6
- package/dist/utils/pressGesture.d.ts.map +1 -1
- package/dist/utils/pressGesture.js +26 -8
- package/dist/utils/scrollView.d.ts +25 -0
- package/dist/utils/scrollView.d.ts.map +1 -0
- package/dist/utils/scrollView.js +108 -0
- package/dist/utils/selectionLock.d.ts.map +1 -1
- package/dist/utils/selectionLock.js +1 -10
- package/dist/utils/touchHitArea.d.ts +30 -0
- package/dist/utils/touchHitArea.d.ts.map +1 -0
- package/dist/utils/touchHitArea.js +167 -0
- package/dist/utils/touchHitArea.stylex.d.ts +38 -0
- package/dist/utils/touchHitArea.stylex.d.ts.map +1 -0
- package/dist/utils/touchHitArea.stylex.js +48 -0
- package/dist/utils/triggerFocus.d.ts +5 -0
- package/dist/utils/triggerFocus.d.ts.map +1 -1
- package/dist/utils/triggerFocus.js +9 -2
- package/locales/en.json +21 -1
- package/locales/pseudo.json +15 -0
- package/package.json +15 -4
- package/src/AppShell/observeMainOverflow.ts +9 -6
- package/src/BottomSheet/BottomSheet.tsx +45 -3
- package/src/BottomSheet/BottomSheetPanel.tsx +64 -7
- package/src/BottomSheet/bottomSheetStack.ts +4 -3
- package/src/BottomSheet/useSheetGestures.ts +83 -20
- package/src/Calendar/Calendar.doc.mjs +76 -6
- package/src/Calendar/Calendar.tsx +123 -104
- package/src/Calendar/getInitialFocusDate.ts +22 -8
- package/src/Calendar/hooks/useCalendarDays.ts +89 -63
- package/src/Calendar/hooks/useCalendarNavigation.ts +68 -26
- package/src/CheckboxInput/CheckboxInput.doc.mjs +5 -4
- package/src/CheckboxInput/CheckboxInput.tsx +105 -20
- package/src/CheckboxInput/CheckboxRowPressContext.ts +22 -0
- package/src/CheckboxList/CheckboxList.doc.mjs +9 -0
- package/src/CheckboxList/CheckboxListItem.doc.mjs +3 -3
- package/src/CheckboxList/CheckboxListItem.tsx +35 -14
- package/src/ClickableCard/ClickableCard.tsx +8 -1
- package/src/ContextMenu/ContextMenu.tsx +2 -0
- package/src/DateInput/DateInput.doc.mjs +45 -12
- package/src/DateInput/DateInput.tsx +165 -179
- package/src/DateInput/MonthScroller.tsx +39 -37
- package/src/DateInput/MonthYearWheels.tsx +68 -47
- package/src/DateInput/PickerWheel.tsx +7 -2
- package/src/DateInput/TouchDateField.tsx +45 -17
- package/src/DateInput/monthGeometry.ts +110 -8
- package/src/DateInput/useCalendarPresentation.ts +64 -0
- package/src/DateInput/useTypedDate.ts +469 -0
- package/src/DateInput/wheelStrip.ts +2 -2
- package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -0
- package/src/DateRangeInput/DateRangeInput.tsx +43 -9
- package/src/DateTimeInput/DateTimeInput.doc.mjs +42 -9
- package/src/DateTimeInput/DateTimeInput.tsx +138 -148
- package/src/DateTimeInput/TouchDateTimeField.tsx +31 -16
- package/src/Dialog/Dialog.doc.mjs +1 -1
- package/src/Dialog/Dialog.tsx +14 -2
- package/src/Drawer/Drawer.doc.mjs +1 -1
- package/src/Drawer/useDrawerDialogPresence.ts +9 -2
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -2
- package/src/DropdownMenu/DropdownMenu.tsx +31 -7
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +5 -1
- package/src/DropdownMenu/DropdownMenuItem.tsx +8 -4
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +5 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +5 -1
- package/src/FileInput/FileInput.tsx +16 -2
- package/src/HoverCard/useHoverCard.tsx +3 -1
- package/src/Icon/useIcon.doc.mjs +94 -0
- package/src/InfoTip/InfoTip.doc.mjs +26 -2
- package/src/InfoTip/InfoTip.tsx +6 -27
- package/src/InputGroup/InputGroup.doc.mjs +4 -3
- package/src/InputGroup/InputGroup.tsx +4 -3
- package/src/InputGroup/InputGroupText.doc.mjs +45 -3
- package/src/InputGroup/InputGroupText.tsx +2 -1
- package/src/InputGroup/groupStyles.ts +3 -1
- package/src/Item/Item.tsx +139 -35
- package/src/Item/ItemListRowContext.tsx +18 -0
- package/src/Layer/holdEntranceInput.ts +84 -0
- package/src/Layer/inputHold.ts +734 -0
- package/src/Layer/outsidePress.ts +18 -1
- package/src/Layer/preserveAnimations.ts +12 -275
- package/src/Layer/useBackdropPress.ts +41 -1
- package/src/Layer/useLayer.tsx +77 -4
- package/src/Layer/useTouchTrigger.ts +4 -0
- package/src/Layout/LayoutContent.doc.mjs +6 -3
- package/src/Layout/LayoutContent.tsx +10 -4
- package/src/Layout/LayoutPanel.doc.mjs +14 -11
- package/src/Layout/LayoutPanel.tsx +113 -16
- package/src/Lightbox/Lightbox.tsx +4 -0
- package/src/List/List.doc.mjs +10 -1
- package/src/List/List.tsx +5 -0
- package/src/List/ListItem.tsx +63 -8
- package/src/Markdown/parser.ts +65 -42
- package/src/MetadataList/MetadataList.tsx +1 -1
- package/src/MobileNav/MobileNav.doc.mjs +3 -3
- package/src/MobileNav/MobileNav.tsx +39 -1
- package/src/MoreMenu/MoreMenu.doc.mjs +2 -4
- package/src/MoreMenu/MoreMenu.tsx +5 -3
- package/src/MultiSelector/MultiSelector.tsx +7 -17
- package/src/NumberInput/NumberInput.doc.mjs +1 -1
- package/src/NumberInput/NumberInput.tsx +259 -11
- package/src/OverflowList/OverflowList.tsx +15 -9
- package/src/Popover/usePopover.tsx +1 -0
- package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
- package/src/PowerSearch/PowerSearch.tsx +20 -3
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +4 -1
- package/src/PowerSearch/PowerSearchToken.tsx +3 -0
- package/src/PowerSearch/formatFilterValue.ts +21 -11
- package/src/PowerSearch/formatTokenValue.ts +7 -1
- package/src/RadioList/RadioListItem.doc.mjs +3 -2
- package/src/RadioList/RadioListItem.tsx +16 -6
- package/src/Resizable/Resizable.doc.mjs +40 -12
- package/src/Resizable/ResizeHandle.tsx +68 -6
- package/src/Resizable/resizablePane.ts +179 -0
- package/src/Resizable/useResizable.ts +15 -0
- package/src/SegmentedControl/useSegmentedSelectionMotion.ts +3 -3
- package/src/SelectableCard/SelectableCard.tsx +8 -1
- package/src/Selector/Selector.tsx +83 -8
- package/src/SideNav/SideNav.doc.mjs +2 -2
- package/src/SideNav/SideNav.tsx +87 -12
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Spinner/Spinner.tsx +7 -89
- package/src/Spinner/index.ts +1 -5
- package/src/Spinner/spinnerRotor.ts +113 -0
- package/src/Stack/Stack.doc.mjs +1 -1
- package/src/Stack/StackItem.tsx +27 -13
- package/src/Switch/Switch.tsx +7 -6
- package/src/Switch/useSwitchTouch.ts +4 -4
- package/src/TabList/Tab.tsx +5 -1
- package/src/Table/plugins/sortable/useTableSortable.tsx +1 -1
- package/src/Timestamp/Timestamp.doc.mjs +3 -3
- package/src/Timestamp/Timestamp.tsx +13 -8
- package/src/Timestamp/formatInstant.ts +49 -28
- package/src/Timestamp/tooltipEntries.ts +7 -3
- package/src/Token/Token.tsx +18 -1
- package/src/Token/TokenLink.tsx +7 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
- package/src/Tokenizer/Tokenizer.tsx +252 -115
- package/src/Tooltip/useTooltip.tsx +180 -80
- package/src/TreeList/TreeListItem.tsx +36 -2
- package/src/Typeahead/BaseTypeahead.tsx +2 -0
- package/src/animator/createAnimator.ts +3 -3
- package/src/gestures/GestureHost.ts +21 -5
- package/src/gestures/PanGestureRecognizer.ts +19 -2
- package/src/gestures/README.md +14 -5
- package/src/gestures/ScreenEdgePanGestureRecognizer.ts +6 -1
- package/src/gestures/nativeScroll.ts +12 -68
- package/src/gestures/wheelSegmenter.ts +243 -10
- package/src/hooks/StackItemScrollRegion.tsx +57 -0
- package/src/hooks/computeOverflow.ts +1 -1
- package/src/hooks/menuPressGesture.ts +244 -38
- package/src/hooks/menuPressValues.ts +18 -0
- package/src/hooks/useClickableContainer.doc.mjs +8 -2
- package/src/hooks/useClickableContainer.ts +93 -15
- package/src/hooks/useFocusTrap.ts +268 -151
- package/src/hooks/useKeyboardHighlight.ts +71 -0
- package/src/hooks/useMediaQuery.ts +41 -12
- package/src/hooks/useMenuPress.ts +118 -11
- package/src/hooks/useOverflow.ts +321 -75
- package/src/hooks/usePressFeedback.doc.mjs +3 -3
- package/src/hooks/usePressFeedback.ts +6 -6
- package/src/hooks/useScrollRegionProps.ts +76 -0
- package/src/i18n/InternationalizationContext.ts +6 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +29 -1
- package/src/i18n/InternationalizationProvider.tsx +35 -3
- package/src/i18n/generated-english/DateInput/DateInput.generated.ts +0 -1
- package/src/i18n/generated-english/DateInput/useTypedDate.generated.ts +17 -0
- package/src/i18n/generated-english/DateTimeInput/DateTimeInput.generated.ts +0 -1
- package/src/i18n/generated-english/hooks/useScrollRegionProps.generated.ts +13 -0
- package/src/i18n/generated-locales/en.generated.ts +7 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +7 -0
- package/src/i18n/index.ts +2 -0
- package/src/i18n/useCalendarSystem.ts +95 -0
- package/src/internal/calendar-system.ts +26 -0
- package/src/internal/spinner-rotor.ts +20 -0
- package/src/internal/touch.ts +43 -2
- package/src/motion/MEASUREMENTS.md +11 -0
- package/src/motion/README.md +3 -3
- package/src/motion/animator.ts +7 -7
- package/src/motion/carryAnimations.ts +389 -0
- package/src/motion/transientCopy.ts +45 -5
- package/src/motion/uikit/gestures.ts +22 -0
- package/src/motion/uikit/index.ts +1 -0
- package/src/motion/uikit/timing.ts +7 -5
- package/src/privateAttributes/menuPressLit.stylex.ts +104 -0
- package/src/privateAttributes/press.stylex.ts +261 -0
- package/src/theme/themeMotion.ts +3 -2
- package/src/theme/tokens.stylex.ts +1 -1
- package/src/utils/calendarDateParser.ts +1385 -0
- package/src/utils/calendarSystem.ts +832 -0
- package/src/utils/coarsePointer.ts +27 -14
- package/src/utils/flatTree.ts +15 -3
- package/src/utils/focusReturn.ts +78 -18
- package/src/utils/hitArea.ts +138 -9
- package/src/utils/inputPresentation.ts +21 -1
- package/src/utils/inputStream.ts +47 -10
- package/src/utils/interactionOverlay.stylex.ts +19 -22
- package/src/utils/plainDate.ts +130 -19
- package/src/utils/pressFeedback.ts +46 -14
- package/src/utils/pressGesture.ts +35 -9
- package/src/utils/scrollView.ts +135 -0
- package/src/utils/selectionLock.ts +5 -10
- package/src/utils/touchHitArea.stylex.ts +56 -0
- package/src/utils/touchHitArea.ts +177 -0
- package/src/utils/triggerFocus.ts +17 -4
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file DateRangeInput.tsx
|
|
7
|
-
* @input Uses React, Field, Calendar (range mode),
|
|
7
|
+
* @input Uses React, Field, Calendar (range mode), the resolved calendar,
|
|
8
|
+
* VisuallyHidden, usePopover
|
|
8
9
|
* @output Exports DateRangeInput component, DateRangeInputProps
|
|
9
10
|
* @position Core implementation; consumed by index.ts, tested by DateRangeInput.test.tsx
|
|
10
11
|
*
|
|
@@ -18,7 +19,9 @@
|
|
|
18
19
|
import { useId, useCallback, useMemo, useOptimistic, useRef, useTransition } from 'react';
|
|
19
20
|
import * as stylex from '@stylexjs/stylex';
|
|
20
21
|
import { inputDisabledFocusStyles } from "../Field/inputDisabledFocus.js";
|
|
21
|
-
import { plainDateFromISO, plainDateToday,
|
|
22
|
+
import { plainDateFromISO, plainDateToday, plainDateDiffDays, DATE_FORMAT_SHORT, DATE_FORMAT_SHORT_WITH_YEAR } from "../utils/plainDate.js";
|
|
23
|
+
import { calendarMonthOf, calendarYearMonthOf, formatCalendarDate } from "../utils/calendarSystem.js";
|
|
24
|
+
import { useCalendarSystem } from "../i18n/useCalendarSystem.js";
|
|
22
25
|
import "../theme/tokens.stylex.js";
|
|
23
26
|
import { colorVars, sizeVars, radiusVars, spacingVars, typographyVars, typeScaleVars, borderVars } from "../theme/tokens.stylex.js";
|
|
24
27
|
import { Field, InputClearButton, inputWrapperStyles, inputStatusBorderStyles, inputStatusHoverShadowStyles, inputStatusFocusWithinStyles } from "../Field/index.js";
|
|
@@ -90,7 +93,7 @@ const styles = {
|
|
|
90
93
|
},
|
|
91
94
|
presetButtonActive: {
|
|
92
95
|
kWkggS: "xgcxg3y",
|
|
93
|
-
kMwMTN: "
|
|
96
|
+
kMwMTN: "xjse4m1",
|
|
94
97
|
$$css: true
|
|
95
98
|
},
|
|
96
99
|
presetButtonDisabled: {
|
|
@@ -117,16 +120,17 @@ const sizeStyles = {
|
|
|
117
120
|
$$css: true
|
|
118
121
|
}
|
|
119
122
|
};
|
|
120
|
-
function formatRangeDisplay(range, locale) {
|
|
123
|
+
function formatRangeDisplay(range, locale, calendar) {
|
|
121
124
|
if (!range) {
|
|
122
125
|
return '';
|
|
123
126
|
}
|
|
124
127
|
const start = plainDateFromISO(range.start);
|
|
125
128
|
const end = plainDateFromISO(range.end);
|
|
126
|
-
const
|
|
127
|
-
const
|
|
129
|
+
const yearOf = pd => calendarYearMonthOf(calendar, calendarMonthOf(calendar, pd)).year;
|
|
130
|
+
const currentYear = yearOf(plainDateToday());
|
|
131
|
+
const sameYear = yearOf(start) === yearOf(end) && yearOf(start) === currentYear;
|
|
128
132
|
const fmt = sameYear ? DATE_FORMAT_SHORT : DATE_FORMAT_SHORT_WITH_YEAR;
|
|
129
|
-
return `${
|
|
133
|
+
return `${formatCalendarDate(calendar, start, fmt, locale)} – ${formatCalendarDate(calendar, end, fmt, locale)}`;
|
|
130
134
|
}
|
|
131
135
|
function isRangeEqual(a, b) {
|
|
132
136
|
if (a === b) {
|
|
@@ -202,6 +206,7 @@ export function DateRangeInput({
|
|
|
202
206
|
labelTooltip,
|
|
203
207
|
numberOfMonths = 2,
|
|
204
208
|
weekStartsOn,
|
|
209
|
+
calendar: calendarProp,
|
|
205
210
|
width,
|
|
206
211
|
containerXstyle,
|
|
207
212
|
containerClassName,
|
|
@@ -230,6 +235,7 @@ export function DateRangeInput({
|
|
|
230
235
|
} = rest;
|
|
231
236
|
const t = useComponentTranslator();
|
|
232
237
|
const locale = useLocale();
|
|
238
|
+
const calendar = useCalendarSystem(calendarProp, 'DateRangeInput');
|
|
233
239
|
const isEffectivelyRequired = useResolvedRequired({
|
|
234
240
|
isRequired,
|
|
235
241
|
isOptional
|
|
@@ -275,7 +281,7 @@ export function DateRangeInput({
|
|
|
275
281
|
// A button cannot carry aria-required. Mirror the input-family pattern
|
|
276
282
|
// by describing it with localized, visually hidden required text.
|
|
277
283
|
isEffectivelyRequired ? requiredID : null, showsDisabledMessage ? disabledMessageTooltip.describedBy : null, ariaDescribedByProp].filter(Boolean).join(' ') || undefined;
|
|
278
|
-
const displayValue = useMemo(() => formatRangeDisplay(optimisticValue, locale), [optimisticValue, locale]);
|
|
284
|
+
const displayValue = useMemo(() => formatRangeDisplay(optimisticValue, locale, calendar), [optimisticValue, locale, calendar]);
|
|
279
285
|
const popover = usePopover({
|
|
280
286
|
dialogLabel: t('@astryx.dateRangeInput.dialogLabel'),
|
|
281
287
|
closeButtonLabel: t('@astryx.dateInput.closeCalendar')
|
|
@@ -473,6 +479,7 @@ export function DateRangeInput({
|
|
|
473
479
|
}, preset.label);
|
|
474
480
|
})
|
|
475
481
|
}), popover.isOpen && /*#__PURE__*/_jsx(Calendar, {
|
|
482
|
+
calendar: calendar,
|
|
476
483
|
mode: "range",
|
|
477
484
|
value: optimisticValue,
|
|
478
485
|
onChange: handleRangeSelect,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type InputStatus } from '../Field/index.js';
|
|
2
2
|
import { type DayOfWeek, type DayOfWeekName } from '../Calendar/index.js';
|
|
3
|
+
import type { CalendarSystem } from '../utils/calendarSystem.js';
|
|
3
4
|
import { type FieldInputBaseProps } from '../Field/fieldParts.js';
|
|
4
5
|
import type { SizeValue } from '../utils/types.js';
|
|
5
6
|
import { type PickerPresentation } from '../utils/inputPresentation.js';
|
|
@@ -150,10 +151,25 @@ export interface DateTimeInputProps extends Omit<FieldInputBaseProps<HTMLInputEl
|
|
|
150
151
|
*/
|
|
151
152
|
hasClear?: boolean;
|
|
152
153
|
/**
|
|
153
|
-
* Placeholder text shown in the date portion when no date is selected.
|
|
154
|
+
* Placeholder text shown in the date portion when no date is selected. A
|
|
155
|
+
* caller placeholder replaces the calendar format hint.
|
|
154
156
|
* @default "Select a date"
|
|
155
157
|
*/
|
|
156
158
|
placeholder?: string;
|
|
159
|
+
/**
|
|
160
|
+
* The calendar the date field reads and writes typed dates in, such as
|
|
161
|
+
* `'persian'`, `'hebrew'`, or `'buddhist'`. `value`, `onChange`, `min`, and
|
|
162
|
+
* `max` stay Gregorian ISO datetimes in every calendar. People type a date
|
|
163
|
+
* the way the locale writes it in this calendar, and the committed date
|
|
164
|
+
* text uses it. Years are years of this calendar, so set `min` and `max` to
|
|
165
|
+
* catch a year typed in the wrong calendar. Calendars other than `gregory`,
|
|
166
|
+
* `iso8601`, `buddhist`, `roc`, and `japanese` need `Temporal`, native or a
|
|
167
|
+
* polyfill the application loads; without it the field uses the Gregorian
|
|
168
|
+
* calendar.
|
|
169
|
+
*
|
|
170
|
+
* @default the InternationalizationProvider's calendar, else `'gregory'`
|
|
171
|
+
*/
|
|
172
|
+
calendar?: CalendarSystem;
|
|
157
173
|
/**
|
|
158
174
|
* Placeholder text shown in the time portion when no time is selected.
|
|
159
175
|
* On touch, this appears in the closed time segment before a time is chosen.
|
|
@@ -219,6 +235,10 @@ export interface DateTimeInputProps extends Omit<FieldInputBaseProps<HTMLInputEl
|
|
|
219
235
|
* JavaScript. `hourFormat` formats the closed value; the OS picker follows the
|
|
220
236
|
* user's locale.
|
|
221
237
|
*
|
|
238
|
+
* In a calendar other than `gregory` or `iso8601`, `'touch'` and `'always'`
|
|
239
|
+
* use Astryx's popovers on a fine pointer and the bottom sheet on a coarse
|
|
240
|
+
* pointer.
|
|
241
|
+
*
|
|
222
242
|
* @default 'touch'
|
|
223
243
|
* @deprecated Use `presentation` (`spec:AST-043` FR3):
|
|
224
244
|
* `'touch'` → `'adaptive-native'`, `'always'` → `'native'`,
|
|
@@ -234,13 +254,16 @@ export interface DateTimeInputProps extends Omit<FieldInputBaseProps<HTMLInputEl
|
|
|
234
254
|
* - `'popover'`: Astryx's typed fields + popovers on every pointer
|
|
235
255
|
* - `'bottom-sheet'`: Astryx's bottom-sheet date/time wheels on every pointer
|
|
236
256
|
* - `'native'`: browser/OS date and time pickers on every pointer, with no
|
|
237
|
-
* Astryx fallback (FR2)
|
|
257
|
+
* Astryx fallback (FR2), except in a calendar other than `gregory` or
|
|
258
|
+
* `iso8601`, where it is `'adaptive-bottom-sheet'` and warns in
|
|
259
|
+
* development
|
|
238
260
|
* - `'adaptive-bottom-sheet'`: popovers on a fine pointer, bottom sheet on
|
|
239
261
|
* a coarse pointer
|
|
240
262
|
* - `'adaptive-native'` (default): popovers on a fine pointer, browser/OS
|
|
241
263
|
* pickers on a coarse pointer, keeping the released per-segment Astryx
|
|
242
264
|
* fallbacks (seconds, non-default `timeIncrement`, `timeOptionInterval`)
|
|
243
|
-
* where a native control cannot express the value (FR2)
|
|
265
|
+
* where a native control cannot express the value (FR2), and the bottom
|
|
266
|
+
* sheet in a calendar other than `gregory` or `iso8601`
|
|
244
267
|
*
|
|
245
268
|
* @default 'adaptive-native'
|
|
246
269
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/DateTimeInput.tsx"],"names":[],"mappings":"AA6CA,OAAO,EAGL,KAAK,WAAW,EAKjB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/DateTimeInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -31,15 +31,16 @@ import { Spinner } from "../Spinner/index.js";
|
|
|
31
31
|
import { Calendar } from "../Calendar/index.js";
|
|
32
32
|
import { useCalendarConstraints } from "../Calendar/hooks/index.js";
|
|
33
33
|
import { usePopover } from "../Popover/index.js";
|
|
34
|
-
import { isFocusInsideOwnedLayer, isPressInsideOwnedLayer, useOutsidePress } from "../Layer/outsidePress.js";
|
|
34
|
+
import { isFocusInsideOwnedLayer, isPressInsideOwnedLayer, noteOutsideDismissal, useOutsidePress } from "../Layer/outsidePress.js";
|
|
35
35
|
import { useTooltip } from "../Tooltip/index.js";
|
|
36
36
|
import { useInputContainer } from "../hooks/useInputContainer.js";
|
|
37
37
|
import { useBusyAnnouncement } from "../hooks/useBusyAnnouncement.js";
|
|
38
38
|
import { useInputStatusIcon } from "../hooks/useInputStatusIcon.js";
|
|
39
|
-
import {
|
|
39
|
+
import { parseISOTime, formatISOTime, isTimeInRange, adjustTime, isImeKeyEvent, mergeProps, isFocusDetached } from "../utils/index.js";
|
|
40
40
|
import { chainEventHandlers } from "../utils/chainEventHandlers.js";
|
|
41
41
|
import { joinAriaIDs } from "../utils/inputAria.js";
|
|
42
|
-
import {
|
|
42
|
+
import { isRenderable } from "../utils/isRenderable.js";
|
|
43
|
+
import { useTypedDateField } from "../DateInput/useTypedDate.js";
|
|
43
44
|
import { useFieldInputStyling } from "../Field/fieldParts.js";
|
|
44
45
|
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
45
46
|
import { useMediaQuery } from "../hooks/useMediaQuery.js";
|
|
@@ -54,7 +55,8 @@ import { useHighlightedOptionScroll } from "../hooks/useHighlightedOptionScroll.
|
|
|
54
55
|
import { NativeDateSegment } from "./NativeDateSegment.js";
|
|
55
56
|
import { NativeTimeSegment } from "./NativeTimeSegment.js";
|
|
56
57
|
import { TouchDateTimeField } from "./TouchDateTimeField.js";
|
|
57
|
-
import {
|
|
58
|
+
import { resolvePickerPresentation } from "../utils/inputPresentation.js";
|
|
59
|
+
import { useCalendarPresentation } from "../DateInput/useCalendarPresentation.js";
|
|
58
60
|
import { useDevWarning } from "../hooks/useDevWarning.js";
|
|
59
61
|
import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComponentTranslator.js";
|
|
60
62
|
import english from "../i18n/generated-english/DateTimeInput/DateTimeInput.generated.js";
|
|
@@ -246,6 +248,7 @@ function PointerDateTimeField({
|
|
|
246
248
|
timeOptionInterval,
|
|
247
249
|
hasClear = false,
|
|
248
250
|
placeholder: placeholderFromProps,
|
|
251
|
+
calendar,
|
|
249
252
|
timePlaceholder: timePlaceholderFromProps,
|
|
250
253
|
timeLabel,
|
|
251
254
|
size: sizeProp,
|
|
@@ -278,6 +281,7 @@ function PointerDateTimeField({
|
|
|
278
281
|
'aria-labelledby': ariaLabelledByProp,
|
|
279
282
|
onBlur: onBlurProp,
|
|
280
283
|
onClick: onClickProp,
|
|
284
|
+
onFocus: onFocusProp,
|
|
281
285
|
onKeyDown: onKeyDownProp,
|
|
282
286
|
...controlProps
|
|
283
287
|
} = rest;
|
|
@@ -310,12 +314,12 @@ function PointerDateTimeField({
|
|
|
310
314
|
const timeInputId = useId();
|
|
311
315
|
const descriptionID = useId();
|
|
312
316
|
const statusMessageID = useId();
|
|
317
|
+
const calendarDescriptionID = useId();
|
|
313
318
|
const dateInputRef = useRef(null);
|
|
314
319
|
const mergedDateInputRef = useMergedRefs(ref, dateInputRef);
|
|
315
320
|
const timeInputRef = useRef(null);
|
|
316
321
|
const timeContainerRef = useRef(null);
|
|
317
322
|
const calendarRef = useRef(null);
|
|
318
|
-
const lastFiredDateRef = useRef(undefined);
|
|
319
323
|
const [, startTransition] = useTransition();
|
|
320
324
|
const [optimisticValue, setOptimisticValue] = useOptimistic(value);
|
|
321
325
|
const isPendingChange = optimisticValue !== value;
|
|
@@ -345,19 +349,6 @@ function PointerDateTimeField({
|
|
|
345
349
|
isEnabled: showsDisabledMessage
|
|
346
350
|
});
|
|
347
351
|
|
|
348
|
-
// DateTimeInput fixes its status presentation to the detached message box,
|
|
349
|
-
// so the shared helper suppresses the on-field icon (the message box carries
|
|
350
|
-
// its own leading glyph). Routed through the helper for consistency with the
|
|
351
|
-
// rest of the bordered input family.
|
|
352
|
-
const {
|
|
353
|
-
statusIcon,
|
|
354
|
-
describedBy: statusTooltipDescribedBy
|
|
355
|
-
} = useInputStatusIcon({
|
|
356
|
-
status,
|
|
357
|
-
statusVariant: 'detached'
|
|
358
|
-
});
|
|
359
|
-
const ariaDescribedBy = [description ? descriptionID : null, status?.message ? statusMessageID : null, statusTooltipDescribedBy, showsDisabledMessage ? disabledMessageTooltip.describedBy : null, ariaDescribedByProp].filter(Boolean).join(' ') || undefined;
|
|
360
|
-
|
|
361
352
|
// Split min/max and current value
|
|
362
353
|
const minParts = useMemo(() => splitDateTime(min), [min]);
|
|
363
354
|
const maxParts = useMemo(() => splitDateTime(max), [max]);
|
|
@@ -388,21 +379,6 @@ function PointerDateTimeField({
|
|
|
388
379
|
return valueParts.date === maxParts.date ? maxParts.time : undefined;
|
|
389
380
|
}, [maxParts.date, maxParts.time, valueParts.date]);
|
|
390
381
|
|
|
391
|
-
// --- Date input state ---
|
|
392
|
-
const [datePendingInput, setDatePendingInput] = useState(null);
|
|
393
|
-
const prevDateRef = useRef(valueParts.date);
|
|
394
|
-
if (valueParts.date !== prevDateRef.current) {
|
|
395
|
-
prevDateRef.current = valueParts.date;
|
|
396
|
-
if (valueParts.date !== lastFiredDateRef.current) {
|
|
397
|
-
lastFiredDateRef.current = undefined;
|
|
398
|
-
if (datePendingInput !== null) {
|
|
399
|
-
setDatePendingInput(null);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
const dateDisplayValue = datePendingInput !== null ? datePendingInput : valueParts.date && /^\d{4}-\d{2}-\d{2}$/.test(valueParts.date) ? plainDateFormat(plainDateFromISO(valueParts.date), DATE_FORMAT_LONG, locale) : '';
|
|
404
|
-
const isDateInputValid = datePendingInput === null || !datePendingInput.trim() ? true : parseDateInput(datePendingInput, locale) !== null;
|
|
405
|
-
|
|
406
382
|
// --- Time input state ---
|
|
407
383
|
const [timePendingInput, setTimePendingInput] = useState(null);
|
|
408
384
|
const [isTimeFocused, setIsTimeFocused] = useState(false);
|
|
@@ -544,10 +520,59 @@ function PointerDateTimeField({
|
|
|
544
520
|
fireChange(combined);
|
|
545
521
|
}
|
|
546
522
|
if (source === 'calendar') {
|
|
547
|
-
setDatePendingInput(null);
|
|
548
523
|
popover.hide();
|
|
549
524
|
}
|
|
550
525
|
}, [valueParts.time, nativeTimeDraft, hasSeconds, minParts, maxParts, fireChange, popover]);
|
|
526
|
+
const handleTypedDateChange = useCallback(date => handleDateChange(date, 'input'), [handleDateChange]);
|
|
527
|
+
const clearTypedDate = useCallback(() => {
|
|
528
|
+
if (value !== undefined) {
|
|
529
|
+
fireChange(undefined);
|
|
530
|
+
}
|
|
531
|
+
}, [value, fireChange]);
|
|
532
|
+
const navigateToTypedDate = useCallback(date => {
|
|
533
|
+
calendarRef.current?.navigateTo(date);
|
|
534
|
+
}, []);
|
|
535
|
+
const {
|
|
536
|
+
typedDate,
|
|
537
|
+
displayValue: dateDisplayValue,
|
|
538
|
+
formatHint: dateFormatHint,
|
|
539
|
+
isPending: isDatePending,
|
|
540
|
+
isInvalid: isDateInvalid,
|
|
541
|
+
fieldStatus,
|
|
542
|
+
alertMessage: dateAlertMessage,
|
|
543
|
+
handleChange: handleTypedDateInput,
|
|
544
|
+
commit: commitDatePendingInput,
|
|
545
|
+
handleFocus: handleDateFocus,
|
|
546
|
+
handleBlur: handleDateBlur,
|
|
547
|
+
reset: resetTypedDate
|
|
548
|
+
} = useTypedDateField({
|
|
549
|
+
source: 'DateTimeInput',
|
|
550
|
+
calendar,
|
|
551
|
+
format: 'date_long',
|
|
552
|
+
min: calendarMin,
|
|
553
|
+
max: calendarMax,
|
|
554
|
+
isDateDisabled,
|
|
555
|
+
value: splitDateTime(value).date,
|
|
556
|
+
shownValue: valueParts.date,
|
|
557
|
+
onChange: handleTypedDateChange,
|
|
558
|
+
onClear: clearTypedDate,
|
|
559
|
+
onTypedDate: navigateToTypedDate,
|
|
560
|
+
isDisabled: isEffectivelyDisabled,
|
|
561
|
+
status,
|
|
562
|
+
isStatusAnnounced: true,
|
|
563
|
+
hasPlaceholder: placeholderFromProps != null
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
// The detached message box carries its own glyph, so the helper shows no
|
|
567
|
+
// on-field icon.
|
|
568
|
+
const {
|
|
569
|
+
statusIcon,
|
|
570
|
+
describedBy: statusTooltipDescribedBy
|
|
571
|
+
} = useInputStatusIcon({
|
|
572
|
+
status: fieldStatus,
|
|
573
|
+
statusVariant: 'detached'
|
|
574
|
+
});
|
|
575
|
+
const ariaDescribedBy = [description ? descriptionID : null, !usesNativePicker && typedDate.calendarDescription != null ? calendarDescriptionID : null, fieldStatus?.message ? statusMessageID : null, statusTooltipDescribedBy, showsDisabledMessage ? disabledMessageTooltip.describedBy : null, ariaDescribedByProp].filter(Boolean).join(' ') || undefined;
|
|
551
576
|
const handleNativeDateChange = useCallback(newDate => {
|
|
552
577
|
if (newDate === undefined) {
|
|
553
578
|
fireChange(undefined);
|
|
@@ -576,44 +601,8 @@ function PointerDateTimeField({
|
|
|
576
601
|
setNativeTimeDraft(newTime);
|
|
577
602
|
}, [fireChange, optimisticValue, valueParts.date]);
|
|
578
603
|
const handleDateInputChange = useCallback(e => {
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
if (isEffectivelyDisabled) {
|
|
582
|
-
return;
|
|
583
|
-
}
|
|
584
|
-
const text = e.target.value;
|
|
585
|
-
setDatePendingInput(text);
|
|
586
|
-
const parsed = parseDateInput(text, locale);
|
|
587
|
-
if (parsed && plainDateToISO(parsed) !== valueParts.date && !isDateDisabled(parsed)) {
|
|
588
|
-
const parsedISO = plainDateToISO(parsed);
|
|
589
|
-
lastFiredDateRef.current = parsedISO;
|
|
590
|
-
handleDateChange(parsedISO, 'input');
|
|
591
|
-
calendarRef.current?.navigateTo(parsedISO);
|
|
592
|
-
}
|
|
593
|
-
}, [valueParts.date, isDateDisabled, handleDateChange, isEffectivelyDisabled, locale]);
|
|
594
|
-
const commitDatePendingInput = useCallback(() => {
|
|
595
|
-
if (datePendingInput === null) {
|
|
596
|
-
return;
|
|
597
|
-
}
|
|
598
|
-
if (!datePendingInput.trim()) {
|
|
599
|
-
if (value !== undefined) {
|
|
600
|
-
fireChange(undefined);
|
|
601
|
-
}
|
|
602
|
-
setDatePendingInput(null);
|
|
603
|
-
return;
|
|
604
|
-
}
|
|
605
|
-
const parsed = parseDateInput(datePendingInput, locale);
|
|
606
|
-
if (parsed && !isDateDisabled(parsed)) {
|
|
607
|
-
const parsedISO = plainDateToISO(parsed);
|
|
608
|
-
if (parsedISO !== valueParts.date) {
|
|
609
|
-
handleDateChange(parsedISO, 'input');
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
setDatePendingInput(null);
|
|
613
|
-
}, [datePendingInput, value, valueParts.date, fireChange, isDateDisabled, handleDateChange, locale]);
|
|
614
|
-
const handleDateBlur = useCallback(() => {
|
|
615
|
-
commitDatePendingInput();
|
|
616
|
-
}, [commitDatePendingInput]);
|
|
604
|
+
handleTypedDateInput(e.target.value);
|
|
605
|
+
}, [handleTypedDateInput]);
|
|
617
606
|
const handleDateKeyDown = useCallback(e => {
|
|
618
607
|
// Guard the composing keydown (fires before compositionend): an IME uses
|
|
619
608
|
// Enter to commit the candidate and Escape to cancel it, so without this
|
|
@@ -634,14 +623,14 @@ function PointerDateTimeField({
|
|
|
634
623
|
skipAutoFocus: true
|
|
635
624
|
});
|
|
636
625
|
}
|
|
637
|
-
} else if (e.key === 'Enter' && (
|
|
626
|
+
} else if (e.key === 'Enter' && (isDatePending || isEffectivelyDisabled)) {
|
|
638
627
|
// Typed text holds Enter back, or a form would submit the value from
|
|
639
628
|
// before the commit. A disabled or busy field must not submit its
|
|
640
629
|
// form either. Otherwise Enter keeps its default, as in any text field.
|
|
641
630
|
e.preventDefault();
|
|
642
631
|
commitDatePendingInput();
|
|
643
632
|
}
|
|
644
|
-
}, [popover, commitDatePendingInput, isEffectivelyDisabled,
|
|
633
|
+
}, [popover, commitDatePendingInput, isEffectivelyDisabled, isDatePending]);
|
|
645
634
|
|
|
646
635
|
// --- Time-option popover (#2727) ---
|
|
647
636
|
const timeListboxId = useId();
|
|
@@ -875,6 +864,7 @@ function PointerDateTimeField({
|
|
|
875
864
|
// elsewhere, or a programmatic focus — would strand the listbox open. Focus landing inside the
|
|
876
865
|
// field or the popup itself is not a leave. Mirrors BaseTypeahead.
|
|
877
866
|
if (timePopover.isOpen && !isFocusInsideOwnedLayer(e.relatedTarget, timeContainerRef.current, timePopover.id)) {
|
|
867
|
+
noteOutsideDismissal(e.currentTarget.ownerDocument);
|
|
878
868
|
timePopover.hide();
|
|
879
869
|
}
|
|
880
870
|
if (timePendingInput === null) {
|
|
@@ -1035,10 +1025,10 @@ function PointerDateTimeField({
|
|
|
1035
1025
|
isOptional: isOptional,
|
|
1036
1026
|
isRequired: isRequired,
|
|
1037
1027
|
isDisabled: isDisabled,
|
|
1038
|
-
status:
|
|
1039
|
-
type:
|
|
1040
|
-
message:
|
|
1041
|
-
messageID:
|
|
1028
|
+
status: fieldStatus ? {
|
|
1029
|
+
type: fieldStatus.type,
|
|
1030
|
+
message: fieldStatus.message,
|
|
1031
|
+
messageID: fieldStatus.message ? statusMessageID : undefined
|
|
1042
1032
|
} : undefined,
|
|
1043
1033
|
labelTooltip: labelTooltip,
|
|
1044
1034
|
statusVariant: "detached",
|
|
@@ -1047,15 +1037,15 @@ function PointerDateTimeField({
|
|
|
1047
1037
|
ref: disabledMessageTooltip.ref,
|
|
1048
1038
|
...mergeProps(themeProps('date-time-input', {
|
|
1049
1039
|
size,
|
|
1050
|
-
status:
|
|
1040
|
+
status: fieldStatus?.type ?? null,
|
|
1051
1041
|
disabled: isDisabled ? 'disabled' : null
|
|
1052
1042
|
}), stylex.props(styles.row, usesNativePicker && styles.nativeRow, controlXstyle), controlClassName, controlStyle),
|
|
1053
1043
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
1054
1044
|
ref: usesNativePicker ? undefined : popover.triggerRef,
|
|
1055
1045
|
...mergeProps(themeProps('date-time-input-date-segment', {
|
|
1056
1046
|
size,
|
|
1057
|
-
status:
|
|
1058
|
-
}), stylex.props(inputWrapperStyles.base, sizeStyles[size], styles.dateWrapper, isEffectivelyDisabled && inputWrapperStyles.disabled, isEffectivelyDisabled && inputDisabledFocusStyles.withinRing,
|
|
1047
|
+
status: fieldStatus?.type ?? null
|
|
1048
|
+
}), stylex.props(inputWrapperStyles.base, sizeStyles[size], styles.dateWrapper, isEffectivelyDisabled && inputWrapperStyles.disabled, isEffectivelyDisabled && inputDisabledFocusStyles.withinRing, fieldStatus && inputStatusBorderStyles[fieldStatus.type], fieldStatus && !isEffectivelyDisabled && inputStatusHoverShadowStyles[fieldStatus.type], fieldStatus && inputStatusFocusWithinStyles[fieldStatus.type])),
|
|
1059
1049
|
children: [usesNativePicker ? /*#__PURE__*/_jsx(NativeDateSegment, {
|
|
1060
1050
|
id: dateInputId,
|
|
1061
1051
|
inputRef: mergedDateInputRef,
|
|
@@ -1075,6 +1065,7 @@ function PointerDateTimeField({
|
|
|
1075
1065
|
...controlProps,
|
|
1076
1066
|
'aria-labelledby': controlLabelledBy,
|
|
1077
1067
|
onBlur: onBlurProp,
|
|
1068
|
+
onFocus: onFocusProp,
|
|
1078
1069
|
onClick: isEffectivelyDisabled ? undefined : onClickProp,
|
|
1079
1070
|
onKeyDown: onKeyDownProp
|
|
1080
1071
|
}
|
|
@@ -1112,15 +1103,16 @@ function PointerDateTimeField({
|
|
|
1112
1103
|
value: dateDisplayValue,
|
|
1113
1104
|
onChange: handleDateInputChange,
|
|
1114
1105
|
onBlur: chainEventHandlers(handleDateBlur, onBlurProp),
|
|
1106
|
+
onFocus: chainEventHandlers(handleDateFocus, onFocusProp),
|
|
1115
1107
|
onClick: isEffectivelyDisabled ? undefined : chainEventHandlers(handleDateInputClick, onClickProp),
|
|
1116
1108
|
onKeyDown: chainEventHandlers(handleDateKeyDown, onKeyDownProp),
|
|
1117
1109
|
"aria-labelledby": controlLabelledBy,
|
|
1118
|
-
placeholder: placeholder,
|
|
1110
|
+
placeholder: dateFormatHint ?? placeholder,
|
|
1119
1111
|
"aria-disabled": isEffectivelyDisabled ? 'true' : undefined,
|
|
1120
1112
|
readOnly: isEffectivelyDisabled || undefined,
|
|
1121
1113
|
"aria-describedby": ariaDescribedBy,
|
|
1122
1114
|
"aria-required": isEffectivelyRequired ? 'true' : undefined,
|
|
1123
|
-
"aria-invalid":
|
|
1115
|
+
"aria-invalid": fieldStatus?.type === 'error' || isDateInvalid ? 'true' : undefined,
|
|
1124
1116
|
"aria-busy": isBusy || undefined,
|
|
1125
1117
|
"aria-expanded": popover.isOpen,
|
|
1126
1118
|
"aria-haspopup": "dialog",
|
|
@@ -1140,12 +1132,15 @@ function PointerDateTimeField({
|
|
|
1140
1132
|
3: {
|
|
1141
1133
|
className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 xf9zqsd xw6l6zx xjbqb8w x1a2a7pz xeyghm5 xt0e3qv xv1l7n4"
|
|
1142
1134
|
}
|
|
1143
|
-
}[!!isEffectivelyDisabled << 1 |
|
|
1135
|
+
}[!!isEffectivelyDisabled << 1 | !!isDateInvalid << 0]
|
|
1144
1136
|
}), /*#__PURE__*/_jsx(VisuallyHidden, {
|
|
1145
1137
|
as: "div",
|
|
1146
1138
|
role: "alert",
|
|
1147
1139
|
"aria-live": "assertive",
|
|
1148
|
-
children:
|
|
1140
|
+
children: dateAlertMessage
|
|
1141
|
+
}), isRenderable(typedDate.calendarDescription) && /*#__PURE__*/_jsx(VisuallyHidden, {
|
|
1142
|
+
id: calendarDescriptionID,
|
|
1143
|
+
children: typedDate.calendarDescription
|
|
1149
1144
|
})]
|
|
1150
1145
|
}), hasClear && value !== undefined && !isEffectivelyDisabled && /*#__PURE__*/_jsx(InputClearButton, {
|
|
1151
1146
|
label: t('@astryx.dateInput.clear', {
|
|
@@ -1259,9 +1254,13 @@ function PointerDateTimeField({
|
|
|
1259
1254
|
// opens on the current value.
|
|
1260
1255
|
!popover.isOpen ? null : /*#__PURE__*/_jsx(Calendar, {
|
|
1261
1256
|
handleRef: calendarRef,
|
|
1257
|
+
calendar: typedDate.calendar,
|
|
1262
1258
|
mode: "single",
|
|
1263
1259
|
value: valueParts.date ?? null,
|
|
1264
|
-
onChange: d =>
|
|
1260
|
+
onChange: d => {
|
|
1261
|
+
handleDateChange(d, 'calendar');
|
|
1262
|
+
resetTypedDate();
|
|
1263
|
+
},
|
|
1265
1264
|
min: calendarMin,
|
|
1266
1265
|
max: calendarMax,
|
|
1267
1266
|
dateConstraints: dateConstraints,
|
|
@@ -1322,7 +1321,10 @@ PointerDateTimeField.displayName = 'PointerDateTimeField';
|
|
|
1322
1321
|
export function DateTimeInput(props) {
|
|
1323
1322
|
const isTouch = useMediaQuery(TOUCH_POINTER_QUERY);
|
|
1324
1323
|
useDevWarning('DateTimeInput', '`nativePicker` is deprecated; use `presentation` instead (`touch` → `adaptive-native`, `always` → `native`, `never` → `adaptive-bottom-sheet`). `presentation` wins when both are set.', props.nativePicker !== undefined);
|
|
1325
|
-
const
|
|
1324
|
+
const {
|
|
1325
|
+
calendar,
|
|
1326
|
+
presentation: effective
|
|
1327
|
+
} = useCalendarPresentation('DateTimeInput', props.calendar, props.presentation, props.nativePicker);
|
|
1326
1328
|
const locale = useLocale();
|
|
1327
1329
|
const {
|
|
1328
1330
|
presentation: _presentation,
|
|
@@ -1333,6 +1335,7 @@ export function DateTimeInput(props) {
|
|
|
1333
1335
|
// field's resting text, preset times, and the sheet wheels agree.
|
|
1334
1336
|
const rest = {
|
|
1335
1337
|
...surfaceProps,
|
|
1338
|
+
calendar,
|
|
1336
1339
|
hourFormat: resolveHourFormat(locale, props.hourFormat)
|
|
1337
1340
|
};
|
|
1338
1341
|
if (effective === 'native') {
|
|
@@ -1349,9 +1352,10 @@ export function DateTimeInput(props) {
|
|
|
1349
1352
|
nativeMode: "adaptive"
|
|
1350
1353
|
});
|
|
1351
1354
|
case 'sheet':
|
|
1355
|
+
// Month indexes depend on the calendar. A new calendar remounts the sheet.
|
|
1352
1356
|
return /*#__PURE__*/_jsx(TouchDateTimeField, {
|
|
1353
1357
|
...rest
|
|
1354
|
-
});
|
|
1358
|
+
}, calendar);
|
|
1355
1359
|
case 'desktop':
|
|
1356
1360
|
return /*#__PURE__*/_jsx(PointerDateTimeField, {
|
|
1357
1361
|
...rest
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DateTimeInputProps } from './DateTimeInput.js';
|
|
2
|
-
export declare function TouchDateTimeField({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, value, onChange, changeAction, isLoading, min, max, dateConstraints, hasSeconds, hourFormat, timeIncrement: _timeIncrement, timeOptionInterval: _timeOptionInterval, hasClear, placeholder: placeholderFromProps, timePlaceholder: timePlaceholderFromProps, timeLabel, size: sizeProp, status, labelTooltip, numberOfMonths: _numberOfMonths, weekStartsOn: weekStartsOnProp, width, containerXstyle, containerClassName, containerStyle, controlXstyle, controlClassName, controlStyle, ref, ...restProps }: DateTimeInputProps): import("react").JSX.Element;
|
|
2
|
+
export declare function TouchDateTimeField({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, value, onChange, changeAction, isLoading, min, max, dateConstraints, hasSeconds, hourFormat, timeIncrement: _timeIncrement, timeOptionInterval: _timeOptionInterval, hasClear, placeholder: placeholderFromProps, timePlaceholder: timePlaceholderFromProps, timeLabel, size: sizeProp, status, labelTooltip, numberOfMonths: _numberOfMonths, weekStartsOn: weekStartsOnProp, calendar: calendarProp, width, containerXstyle, containerClassName, containerStyle, controlXstyle, controlClassName, controlStyle, ref, ...restProps }: DateTimeInputProps): import("react").JSX.Element;
|
|
3
3
|
export declare namespace TouchDateTimeField {
|
|
4
4
|
var displayName: string;
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchDateTimeField.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/TouchDateTimeField.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TouchDateTimeField.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/TouchDateTimeField.tsx"],"names":[],"mappings":"AAyHA,OAAO,KAAK,EAAC,kBAAkB,EAAoB,MAAM,iBAAiB,CAAC;AA6S3E,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,GAAG,EACH,GAAG,EACH,eAAe,EACf,UAAkB,EAClB,UAAkB,EAElB,aAAa,EAAE,cAAc,EAC7B,kBAAkB,EAAE,mBAAmB,EACvC,QAAgB,EAChB,WAAW,EAAE,oBAAoB,EACjC,eAAe,EAAE,wBAAwB,EACzC,SAAS,EACT,IAAI,EAAE,QAAQ,EACd,MAAM,EACN,YAAY,EAEZ,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,gBAAoB,EAClC,QAAQ,EAAE,YAAY,EACtB,KAAK,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,GAAG,EACH,GAAG,SAAS,EACb,EAAE,kBAAkB,+BA88BpB;yBAt/Be,kBAAkB"}
|