@astryxdesign/core 0.4.7 → 0.5.0-canary.009bcb3
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/CHANGELOG.md +161 -1
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +45 -20
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +3 -2
- package/dist/AspectRatio/AspectRatio.d.ts +24 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +23 -4
- package/dist/Avatar/Avatar.d.ts +25 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +58 -19
- package/dist/Avatar/index.d.ts +2 -2
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +9 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +8 -4
- package/dist/AvatarGroup/AvatarGroupContext.d.ts +2 -1
- package/dist/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +10 -6
- package/dist/Banner/Banner.d.ts +49 -15
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +62 -20
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +17 -4
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +3 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +11 -10
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -6
- package/dist/ButtonGroup/ButtonGroup.d.ts +5 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +26 -7
- package/dist/Calendar/Calendar.d.ts +7 -3
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +21 -23
- package/dist/Calendar/getInitialFocusDate.d.ts +46 -0
- package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -0
- package/dist/Calendar/getInitialFocusDate.js +62 -0
- package/dist/Calendar/styles.d.ts +5 -14
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -15
- package/dist/Card/Card.d.ts +12 -12
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +17 -9
- package/dist/Card/index.d.ts +35 -1
- package/dist/Card/index.d.ts.map +1 -1
- package/dist/Card/index.js +21 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +3 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +2 -3
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +3 -3
- package/dist/Chat/ChatMessageList.d.ts +22 -3
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +6 -3
- package/dist/Chat/ChatTokenizedText.d.ts +2 -0
- package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
- package/dist/Chat/ChatTokenizedText.js +11 -6
- package/dist/Chat/useChatComposerTokens.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +10 -3
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +15 -4
- package/dist/CodeBlock/highlightRanges.js +1 -1
- package/dist/CodeBlock/highlightStyles.js +13 -13
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +3 -2
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +3 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +1 -3
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +4 -3
- package/dist/DateInput/DateInput.d.ts +43 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +22 -2
- package/dist/DateInput/NativeDateField.d.ts +10 -0
- package/dist/DateInput/NativeDateField.d.ts.map +1 -0
- package/dist/DateInput/NativeDateField.js +494 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +82 -23
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateInput/nativeDateSegments.d.ts +22 -0
- package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
- package/dist/DateInput/nativeDateSegments.js +111 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts +4 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts +21 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +406 -12
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/Dialog.d.ts +21 -1
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +110 -58
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +4 -13
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +6 -5
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -1
- package/dist/Field/InputClearButton.d.ts +9 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +14 -3
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +3 -2
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +6 -3
- package/dist/HoverCard/HoverCard.d.ts +6 -0
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +104 -3
- package/dist/HoverCard/useHoverCard.d.ts +19 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +74 -26
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +6 -2
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +2 -19
- package/dist/Layer/LayerDepthContext.d.ts +52 -0
- package/dist/Layer/LayerDepthContext.d.ts.map +1 -0
- package/dist/Layer/LayerDepthContext.js +66 -0
- package/dist/Layer/gestureCounter.d.ts +8 -0
- package/dist/Layer/gestureCounter.d.ts.map +1 -0
- package/dist/Layer/gestureCounter.js +53 -0
- package/dist/Layer/index.d.ts +3 -0
- package/dist/Layer/index.d.ts.map +1 -1
- package/dist/Layer/index.js +4 -0
- package/dist/Layer/layerStack.d.ts +98 -0
- package/dist/Layer/layerStack.d.ts.map +1 -0
- package/dist/Layer/layerStack.js +306 -0
- package/dist/Layer/useLayer.d.ts +23 -13
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +128 -8
- package/dist/Layer/useLayerDismissal.d.ts +93 -0
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -0
- package/dist/Layer/useLayerDismissal.js +91 -0
- package/dist/Lightbox/Lightbox.d.ts +1 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +103 -81
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +15 -4
- package/dist/Markdown/Markdown.d.ts +1 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +20 -7
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/parser.d.ts +38 -1
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +182 -32
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
- package/dist/MetadataList/MetadataListItem.js +4 -1
- package/dist/MobileNav/MobileNav.d.ts +6 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +61 -36
- package/dist/MultiSelector/MultiSelector.d.ts +32 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +73 -15
- package/dist/MultiSelector/hooks.d.ts +7 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +3 -2
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +9 -5
- package/dist/NumberInput/NumberInput.d.ts +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +54 -104
- package/dist/NumberInput/numberInputCommit.d.ts +34 -0
- package/dist/NumberInput/numberInputCommit.d.ts.map +1 -0
- package/dist/NumberInput/numberInputCommit.js +71 -0
- package/dist/NumberInput/numberParser.d.ts +64 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -0
- package/dist/NumberInput/numberParser.js +350 -0
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +3 -2
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -2
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +3 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +1 -9
- package/dist/Popover/usePopover.d.ts +7 -41
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +40 -21
- package/dist/PowerSearch/PowerSearch.d.ts +8 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +19 -6
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +28 -6
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +110 -27
- package/dist/PowerSearch/types.d.ts +2 -0
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts +6 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.js +14 -5
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +3 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +3 -2
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +12 -3
- package/dist/Selector/Selector.d.ts +18 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +91 -18
- package/dist/Selector/hooks.d.ts +7 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +3 -2
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +4 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +37 -5
- package/dist/Spinner/Spinner.d.ts +3 -3
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +130 -78
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Stepper/Step.d.ts +140 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +1045 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +93 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +184 -0
- package/dist/Stepper/StepperContext.d.ts +41 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +34 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/Stepper/stepper.stylex.d.ts +15 -0
- package/dist/Stepper/stepper.stylex.d.ts.map +1 -0
- package/dist/Stepper/stepper.stylex.js +20 -0
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +8 -3
- package/dist/TabList/Tab.d.ts +15 -2
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +32 -7
- package/dist/TabList/TabList.d.ts +46 -7
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +353 -23
- package/dist/TabList/TabListContext.d.ts +11 -1
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +11 -2
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +3 -2
- package/dist/TabList/index.d.ts +2 -2
- package/dist/TabList/index.d.ts.map +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +10 -2
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- package/dist/Table/TableRow.d.ts +16 -5
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +16 -5
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +73 -4
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +26 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +54 -11
- package/dist/Table/plugins/pagination/useTablePagination.d.ts +3 -0
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +21 -4
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +10 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts +16 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +43 -5
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +3 -4
- package/dist/Table/types.d.ts +22 -4
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -0
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +6 -3
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +16 -10
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +3 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +3 -2
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +15 -21
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +22 -7
- package/dist/Toast/ToastViewport.d.ts +1 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +71 -18
- package/dist/Token/Token.d.ts +1 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +20 -9
- package/dist/Token/TokenLink.d.ts +1 -1
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +7 -4
- package/dist/Tokenizer/Tokenizer.d.ts +14 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +33 -21
- package/dist/Tooltip/Tooltip.d.ts +5 -0
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +5 -0
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +39 -24
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +5 -4
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +31 -11
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +22 -7
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +7 -2
- package/dist/Typeahead/BaseTypeahead.d.ts +35 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +119 -37
- package/dist/Typeahead/Typeahead.d.ts +8 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +5 -2
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +7 -2
- package/dist/astryx.css +113 -11
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFocusTrap.d.ts +7 -4
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +60 -95
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -18
- package/dist/hooks/useMergedRefs.d.ts +18 -0
- package/dist/hooks/useMergedRefs.d.ts.map +1 -0
- package/dist/hooks/useMergedRefs.js +25 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +46 -10
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +24 -4
- package/dist/theme/generateThemeRules.d.ts +21 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +26 -0
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.d.ts.map +1 -1
- package/dist/theme/syntax/tokens.js +5 -2
- package/dist/utils/groupItems.d.ts +5 -1
- package/dist/utils/groupItems.d.ts.map +1 -1
- package/dist/utils/groupItems.js +9 -9
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isApplePlatform.d.ts +18 -0
- package/dist/utils/isApplePlatform.d.ts.map +1 -0
- package/dist/utils/isApplePlatform.js +37 -0
- package/dist/utils/sharedResizeObserver.d.ts.map +1 -1
- package/dist/utils/sharedResizeObserver.js +10 -1
- package/dist/utils/timeParser.d.ts +1 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +26 -12
- package/locales/af-ZA.json +6 -6
- package/locales/ar-SA.json +6 -6
- package/locales/ca-ES.json +5 -5
- package/locales/cs-CZ.json +6 -6
- package/locales/da-DK.json +6 -6
- package/locales/de-DE.json +6 -6
- package/locales/el-GR.json +6 -6
- package/locales/en.json +163 -11
- package/locales/es-ES.json +5 -5
- package/locales/fi-FI.json +6 -6
- package/locales/fr-FR.json +6 -6
- package/locales/he-IL.json +6 -6
- package/locales/hu-HU.json +6 -6
- package/locales/it-IT.json +6 -6
- package/locales/ja-JP.json +6 -6
- package/locales/ko-KR.json +6 -6
- package/locales/nl-NL.json +6 -6
- package/locales/no-NO.json +6 -6
- package/locales/pl-PL.json +6 -6
- package/locales/pseudo.json +114 -0
- package/locales/pt-BR.json +6 -6
- package/locales/pt-PT.json +6 -6
- package/locales/ro-RO.json +6 -6
- package/locales/ru-RU.json +6 -6
- package/locales/sr-SP.json +6 -6
- package/locales/sv-SE.json +6 -6
- package/locales/tr-TR.json +6 -6
- package/locales/uk-UA.json +6 -6
- package/locales/vi-VN.json +6 -6
- package/locales/zh-CN.json +6 -6
- package/locales/zh-TW.json +6 -6
- package/package.json +8 -3
- package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
- package/src/AlertDialog/AlertDialog.test.tsx +211 -2
- package/src/AlertDialog/AlertDialog.tsx +62 -20
- package/src/AppShell/AppShell.tsx +3 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +6 -3
- package/src/AspectRatio/AspectRatio.test.tsx +57 -10
- package/src/AspectRatio/AspectRatio.tsx +40 -1
- package/src/Avatar/Avatar.doc.mjs +14 -3
- package/src/Avatar/Avatar.test.tsx +97 -0
- package/src/Avatar/Avatar.tsx +125 -52
- package/src/Avatar/index.ts +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +8 -2
- package/src/AvatarGroup/AvatarGroup.test.tsx +24 -0
- package/src/AvatarGroup/AvatarGroup.tsx +15 -6
- package/src/AvatarGroup/AvatarGroupContext.ts +5 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +10 -4
- package/src/Banner/Banner.doc.mjs +22 -11
- package/src/Banner/Banner.test.tsx +177 -25
- package/src/Banner/Banner.tsx +93 -27
- package/src/BottomSheet/BottomSheet.test.tsx +123 -0
- package/src/BottomSheet/BottomSheet.tsx +17 -4
- package/src/BottomSheet/BottomSheetSwitcher.tsx +3 -2
- package/src/Breadcrumbs/BreadcrumbItem.tsx +9 -5
- package/src/Button/Button.doc.mjs +24 -1
- package/src/Button/Button.test.tsx +32 -4
- package/src/Button/Button.tsx +12 -5
- package/src/ButtonGroup/ButtonGroup.doc.mjs +10 -1
- package/src/ButtonGroup/ButtonGroup.test.tsx +404 -1
- package/src/ButtonGroup/ButtonGroup.tsx +23 -5
- package/src/Calendar/Calendar.doc.mjs +7 -6
- package/src/Calendar/Calendar.test.tsx +143 -0
- package/src/Calendar/Calendar.tsx +30 -26
- package/src/Calendar/getInitialFocusDate.test.ts +94 -0
- package/src/Calendar/getInitialFocusDate.ts +93 -0
- package/src/Calendar/styles.ts +49 -31
- package/src/Card/Card.doc.mjs +10 -7
- package/src/Card/Card.test.tsx +113 -19
- package/src/Card/Card.tsx +67 -89
- package/src/Card/index.ts +36 -1
- package/src/Carousel/Carousel.tsx +3 -2
- package/src/Chat/ChatComposerInput.tsx +5 -1
- package/src/Chat/ChatLayout.tsx +3 -2
- package/src/Chat/ChatMessageList.doc.mjs +9 -1
- package/src/Chat/ChatMessageList.test.tsx +46 -0
- package/src/Chat/ChatMessageList.tsx +28 -4
- package/src/Chat/ChatTokenizedText.tsx +17 -10
- package/src/Chat/useChatComposerTokens.ts +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +2 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +15 -0
- package/src/CheckboxInput/CheckboxInput.tsx +8 -2
- package/src/ClickableCard/ClickableCard.tsx +3 -2
- package/src/CodeBlock/CodeBlock.doc.mjs +16 -4
- package/src/CodeBlock/CodeBlock.test.tsx +37 -0
- package/src/CodeBlock/CodeBlock.tsx +20 -4
- package/src/CodeBlock/highlightRanges.ts +1 -1
- package/src/CodeBlock/highlightStyles.ts +13 -13
- package/src/CommandPalette/CommandPaletteInput.tsx +3 -2
- package/src/CommandPalette/CommandPaletteItem.tsx +3 -2
- package/src/ComplexSelector/ComplexSelector.test.tsx +32 -0
- package/src/ComplexSelector/ComplexSelector.tsx +1 -3
- package/src/ContextMenu/ContextMenu.doc.mjs +5 -0
- package/src/ContextMenu/ContextMenu.tsx +4 -3
- package/src/DateInput/DateInput.doc.mjs +16 -0
- package/src/DateInput/DateInput.tsx +55 -2
- package/src/DateInput/DateInputTouch.test.tsx +146 -32
- package/src/DateInput/NativeDateField.test.tsx +635 -0
- package/src/DateInput/NativeDateField.tsx +641 -0
- package/src/DateInput/TouchDateField.tsx +108 -24
- package/src/DateInput/index.ts +1 -0
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +22 -0
- package/src/DateRangeInput/DateRangeInput.tsx +4 -2
- package/src/DateTimeInput/DateTimeInput.doc.mjs +18 -0
- package/src/DateTimeInput/DateTimeInput.test.tsx +1088 -0
- package/src/DateTimeInput/DateTimeInput.tsx +556 -24
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.mjs +8 -3
- package/src/Dialog/Dialog.test.tsx +429 -2
- package/src/Dialog/Dialog.tsx +133 -58
- package/src/DropdownMenu/DropdownMenu.doc.mjs +6 -0
- package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
- package/src/DropdownMenu/DropdownMenu.tsx +4 -13
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +8 -5
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +8 -11
- package/src/Field/Field.doc.mjs +13 -2
- package/src/Field/FieldLabel.test.tsx +29 -0
- package/src/Field/FieldLabel.tsx +7 -0
- package/src/Field/InputClearButton.test.tsx +15 -1
- package/src/Field/InputClearButton.tsx +28 -4
- package/src/FileInput/FileInput.tsx +3 -2
- package/src/Heading/Heading.test.tsx +23 -1
- package/src/Heading/Heading.tsx +6 -3
- package/src/HoverCard/HoverCard.doc.mjs +13 -2
- package/src/HoverCard/HoverCard.test.tsx +154 -4
- package/src/HoverCard/HoverCard.tsx +143 -3
- package/src/HoverCard/useHoverCard.tsx +104 -33
- package/src/Indicator/CheckboxIndicator.tsx +14 -8
- package/src/Indicator/Indicator.doc.mjs +2 -0
- package/src/Item/Item.tsx +5 -4
- package/src/Kbd/Kbd.tsx +2 -19
- package/src/Layer/LayerDepthContext.tsx +62 -0
- package/src/Layer/gestureCounter.ts +57 -0
- package/src/Layer/index.ts +9 -0
- package/src/Layer/layerDismissalFamilies.test.tsx +359 -0
- package/src/Layer/layerDismissalInvariants.test.tsx +417 -0
- package/src/Layer/layerStack.ts +362 -0
- package/src/Layer/useLayer.test.tsx +324 -15
- package/src/Layer/useLayer.tsx +164 -8
- package/src/Layer/useLayerDismissal.test.tsx +469 -0
- package/src/Layer/useLayerDismissal.ts +173 -0
- package/src/Layout/Layout.doc.mjs +2 -2
- package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
- package/src/Lightbox/Lightbox.doc.mjs +12 -0
- package/src/Lightbox/Lightbox.tsx +124 -102
- package/src/Link/Link.doc.mjs +39 -0
- package/src/List/List.test.tsx +38 -0
- package/src/List/List.tsx +8 -1
- package/src/Markdown/Markdown.doc.mjs +5 -0
- package/src/Markdown/Markdown.test.tsx +37 -0
- package/src/Markdown/Markdown.tsx +16 -5
- package/src/Markdown/incremental.test.ts +16 -2
- package/src/Markdown/index.ts +1 -0
- package/src/Markdown/parser.perf.test.ts +96 -1
- package/src/Markdown/parser.test.ts +178 -2
- package/src/Markdown/parser.ts +253 -32
- package/src/MetadataList/MetadataList.test.tsx +75 -2
- package/src/MetadataList/MetadataListItem.tsx +5 -2
- package/src/MobileNav/MobileNav.tsx +62 -36
- package/src/MoreMenu/MoreMenu.doc.mjs +7 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +49 -1
- package/src/MultiSelector/MultiSelector.test.tsx +311 -0
- package/src/MultiSelector/MultiSelector.tsx +151 -15
- package/src/MultiSelector/hooks.ts +9 -2
- package/src/MultiSelector/index.ts +1 -0
- package/src/NavIcon/NavIcon.doc.mjs +8 -2
- package/src/NavIcon/NavIcon.test.tsx +9 -0
- package/src/NavIcon/NavIcon.tsx +5 -1
- package/src/NavMenu/NavHeadingMenu.test.tsx +30 -0
- package/src/NavMenu/NavHeadingMenu.tsx +9 -5
- package/src/NumberInput/NumberInput.doc.mjs +31 -7
- package/src/NumberInput/NumberInput.test.tsx +436 -8
- package/src/NumberInput/NumberInput.tsx +62 -114
- package/src/NumberInput/numberInputCommit.test.ts +72 -0
- package/src/NumberInput/numberInputCommit.ts +103 -0
- package/src/NumberInput/numberParser.docblock.test.ts +234 -0
- package/src/NumberInput/numberParser.test.ts +222 -0
- package/src/NumberInput/numberParser.ts +403 -0
- package/src/Outline/Outline.tsx +3 -2
- package/src/OverflowList/OverflowList.tsx +3 -2
- package/src/Overlay/Overlay.tsx +3 -2
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/Popover/Popover.test.tsx +14 -0
- package/src/Popover/Popover.tsx +1 -9
- package/src/Popover/usePopover.tsx +57 -32
- package/src/PowerSearch/PowerSearch.doc.mjs +160 -28
- package/src/PowerSearch/PowerSearch.test.tsx +240 -1
- package/src/PowerSearch/PowerSearch.tsx +34 -5
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +288 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +29 -2
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +111 -1
- package/src/PowerSearch/PowerSearchValueEditor.tsx +124 -10
- package/src/PowerSearch/types.ts +2 -0
- package/src/PowerSearch/usePowerSearchSource.test.ts +82 -2
- package/src/PowerSearch/usePowerSearchSource.ts +13 -3
- package/src/ProgressBar/ProgressBar.doc.mjs +42 -6
- package/src/ProgressBar/ProgressBar.test.tsx +24 -0
- package/src/ProgressBar/ProgressBar.tsx +28 -8
- package/src/Resizable/ResizeHandle.tsx +3 -2
- package/src/SegmentedControl/SegmentedControl.tsx +3 -2
- package/src/SelectableCard/SelectableCard.doc.mjs +3 -0
- package/src/SelectableCard/SelectableCard.tsx +19 -2
- package/src/Selector/Selector.doc.mjs +26 -1
- package/src/Selector/Selector.test.tsx +346 -1
- package/src/Selector/Selector.tsx +148 -21
- package/src/Selector/hooks.ts +17 -2
- package/src/SideNav/SideNav.doc.mjs +6 -6
- package/src/SideNav/SideNav.tsx +4 -2
- package/src/SideNav/SideNavHeading.tsx +12 -12
- package/src/SideNav/SideNavItem.tsx +4 -2
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +55 -3
- package/src/Spinner/Spinner.test.tsx +147 -1
- package/src/Spinner/Spinner.tsx +120 -101
- package/src/StatusDot/StatusDot.doc.mjs +8 -2
- package/src/StatusDot/StatusDot.test.tsx +9 -0
- package/src/StatusDot/StatusDot.tsx +7 -1
- package/src/Stepper/Step.doc.mjs +98 -0
- package/src/Stepper/Step.tsx +1638 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +370 -0
- package/src/Stepper/Stepper.test.tsx +1024 -0
- package/src/Stepper/Stepper.tsx +258 -0
- package/src/Stepper/StepperContext.ts +71 -0
- package/src/Stepper/index.ts +18 -0
- package/src/Stepper/stepper.stylex.ts +19 -0
- package/src/Switch/Switch.doc.mjs +2 -0
- package/src/Switch/Switch.test.tsx +10 -0
- package/src/Switch/Switch.tsx +6 -2
- package/src/TabList/Tab.doc.mjs +13 -1
- package/src/TabList/Tab.tsx +67 -7
- package/src/TabList/TabList.doc.mjs +22 -6
- package/src/TabList/TabList.test.tsx +559 -0
- package/src/TabList/TabList.tsx +490 -22
- package/src/TabList/TabListContext.ts +13 -2
- package/src/TabList/TabMenu.tsx +3 -2
- package/src/TabList/index.ts +6 -2
- package/src/Table/BaseTable.tsx +12 -4
- package/src/Table/Table.doc.mjs +9 -2
- package/src/Table/Table.test.tsx +132 -14
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +40 -0
- package/src/Table/TableFooter.doc.mjs +40 -0
- package/src/Table/TableHeader.doc.mjs +40 -0
- package/src/Table/TableRow.tsx +16 -5
- package/src/Table/plugins/filtering/useTableFiltering.test.tsx +44 -6
- package/src/Table/plugins/filtering/useTableFiltering.tsx +100 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +112 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +100 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +67 -12
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +34 -4
- package/src/Table/plugins/pagination/useTablePagination.tsx +35 -3
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +9 -2
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +13 -7
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +12 -3
- package/src/Table/plugins/selection/useTableSelection.test.tsx +138 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +63 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
- package/src/Table/types.ts +22 -4
- package/src/Table/useBaseTablePlugins.ts +5 -0
- package/src/Table/useTableGroupedRows.doc.mjs +5 -4
- package/src/Table/useTablePagination.doc.mjs +7 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +31 -0
- package/src/Text/Text.test.tsx +67 -1
- package/src/Text/Text.tsx +6 -3
- package/src/TextArea/TextArea.doc.mjs +12 -2
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +37 -24
- package/src/TextInput/TextInput.doc.mjs +10 -0
- package/src/TextInput/TextInput.tsx +3 -2
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.tsx +2 -2
- package/src/Timestamp/Timestamp.test.tsx +58 -0
- package/src/Timestamp/Timestamp.tsx +12 -10
- package/src/Toast/Toast.doc.mjs +26 -12
- package/src/Toast/Toast.tsx +28 -4
- package/src/Toast/ToastViewport.test.tsx +536 -8
- package/src/Toast/ToastViewport.tsx +81 -12
- package/src/Token/Token.test.tsx +95 -0
- package/src/Token/Token.tsx +15 -10
- package/src/Token/TokenLink.tsx +14 -5
- package/src/Tokenizer/Tokenizer.doc.mjs +43 -3
- package/src/Tokenizer/Tokenizer.test.tsx +161 -0
- package/src/Tokenizer/Tokenizer.tsx +53 -24
- package/src/Toolbar/Toolbar.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.test.tsx +32 -0
- package/src/Tooltip/Tooltip.tsx +5 -0
- package/src/Tooltip/useTooltip.tsx +47 -24
- package/src/TopNav/TopNavHeading.tsx +5 -4
- package/src/TopNav/TopNavMegaMenu.test.tsx +104 -0
- package/src/TopNav/TopNavMegaMenu.tsx +47 -5
- package/src/TopNav/TopNavMenu.test.tsx +133 -1
- package/src/TopNav/TopNavMenu.tsx +38 -7
- package/src/TreeList/TreeList.test.tsx +49 -0
- package/src/TreeList/TreeList.tsx +7 -2
- package/src/Typeahead/BaseTypeahead.doc.mjs +24 -0
- package/src/Typeahead/BaseTypeahead.tsx +181 -39
- package/src/Typeahead/Typeahead.doc.mjs +11 -0
- package/src/Typeahead/Typeahead.test.tsx +203 -0
- package/src/Typeahead/Typeahead.tsx +12 -2
- package/src/Typeahead/TypeaheadItem.test.tsx +43 -0
- package/src/Typeahead/TypeaheadItem.tsx +8 -1
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useAnnounce.doc.mjs +96 -0
- package/src/hooks/useContainerReveal.doc.mjs +2 -2
- package/src/hooks/useDevWarning.doc.mjs +96 -0
- package/src/hooks/useFocusTrap.test.tsx +14 -0
- package/src/hooks/useFocusTrap.ts +62 -111
- package/src/hooks/useFocusTrapEscapeShim.test.tsx +165 -0
- package/src/hooks/useHotkeys.ts +3 -18
- package/src/hooks/useIndicatorFocusRing.doc.mjs +104 -0
- package/src/hooks/useInputStatusIcon.doc.mjs +142 -0
- package/src/hooks/useInteractiveRole.doc.mjs +119 -0
- package/src/hooks/useLongPress.doc.mjs +123 -0
- package/src/hooks/useMergedRefs.doc.mjs +79 -0
- package/src/hooks/useMergedRefs.test.tsx +62 -0
- package/src/hooks/useMergedRefs.ts +36 -0
- package/src/hooks/useTypeahead.doc.mjs +153 -0
- package/src/index.ts +1 -0
- package/src/raw-import.d.ts +14 -0
- package/src/theme/MediaTheme.doc.mjs +5 -5
- package/src/theme/Theme.test.tsx +104 -2
- package/src/theme/Theme.tsx +49 -14
- package/src/theme/defineTheme.test.ts +23 -0
- package/src/theme/derivedVarRegistry.test.ts +26 -3
- package/src/theme/derivedVarRegistry.ts +23 -4
- package/src/theme/generateThemeRules.test.ts +99 -1
- package/src/theme/generateThemeRules.ts +28 -0
- package/src/theme/syntax/tokens.ts +5 -2
- package/src/utils/groupItems.ts +12 -6
- package/src/utils/index.ts +1 -1
- package/src/utils/isApplePlatform.test.ts +61 -0
- package/src/utils/isApplePlatform.ts +37 -0
- package/src/utils/sharedResizeObserver.ts +10 -2
- package/src/utils/timeParser.test.ts +6 -1
- package/src/utils/timeParser.ts +35 -13
- package/src/__tests__/inputWidthContract.test.tsx +0 -69
|
@@ -62,6 +62,7 @@ import {useInputStatusIcon} from '../hooks/useInputStatusIcon';
|
|
|
62
62
|
import {useMediaQuery} from '../hooks/useMediaQuery';
|
|
63
63
|
import {useResolvedRequired} from '../hooks/useResolvedRequired';
|
|
64
64
|
import {usePopover} from '../Popover';
|
|
65
|
+
import {NativeDateField} from './NativeDateField';
|
|
65
66
|
import {TouchDateField} from './TouchDateField';
|
|
66
67
|
import {useTooltip} from '../Tooltip';
|
|
67
68
|
import {getInputARIA, isImeKeyEvent, parseDateInput} from '../utils';
|
|
@@ -150,6 +151,17 @@ export type DateInputSize = keyof typeof sizeStyles;
|
|
|
150
151
|
* types stay in compile-time lockstep: renaming or removing one of these
|
|
151
152
|
* members from `TimestampFormat` breaks this type at build time.
|
|
152
153
|
*/
|
|
154
|
+
/**
|
|
155
|
+
* When DateInput hands date picking to the browser/OS instead of its own
|
|
156
|
+
* surfaces.
|
|
157
|
+
*
|
|
158
|
+
* - `'touch'`: native on touch devices (coarse pointer), Astryx's calendar
|
|
159
|
+
* popover on mouse-driven ones
|
|
160
|
+
* - `'always'`: native wherever the browser supports `<input type="date">`
|
|
161
|
+
* - `'never'`: Astryx's own pickers everywhere
|
|
162
|
+
*/
|
|
163
|
+
export type DateInputNativePicker = 'touch' | 'always' | 'never';
|
|
164
|
+
|
|
153
165
|
export type DateInputFormat = Extract<
|
|
154
166
|
TimestampFormat,
|
|
155
167
|
'date' | 'date_long' | 'date_weekday' | 'system_date'
|
|
@@ -161,7 +173,7 @@ export type {
|
|
|
161
173
|
InputStatus as DateInputStatus,
|
|
162
174
|
InputStatusType as DateInputStatusType,
|
|
163
175
|
} from '../Field';
|
|
164
|
-
import {mergeProps,
|
|
176
|
+
import {mergeProps, isFocusDetached} from '../utils';
|
|
165
177
|
import type {BaseProps} from '../BaseProps';
|
|
166
178
|
import type {SizeValue} from '../utils/types';
|
|
167
179
|
import {themeProps} from '../utils/themeProps';
|
|
@@ -169,6 +181,7 @@ import {focusOutlineStyles} from '../utils/focusOutline.stylex';
|
|
|
169
181
|
import {stableClassName} from '../naming';
|
|
170
182
|
import {useTranslator, InternationalizationContext} from '../i18n';
|
|
171
183
|
|
|
184
|
+
import {useMergedRefs} from '../hooks/useMergedRefs';
|
|
172
185
|
export interface DateInputProps extends Omit<
|
|
173
186
|
BaseProps,
|
|
174
187
|
'onChange' | 'defaultValue'
|
|
@@ -360,6 +373,40 @@ export interface DateInputProps extends Omit<
|
|
|
360
373
|
* ```
|
|
361
374
|
*/
|
|
362
375
|
format?: DateInputFormat | ((value: ISODateString) => string);
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* When date picking is handed to the browser/OS instead of Astryx's own
|
|
379
|
+
* surfaces: the field becomes an `<input type="date">` and the platform
|
|
380
|
+
* draws the picker — the iOS wheel, the Android calendar dialog — with the
|
|
381
|
+
* OS's own hit areas, momentum scrolling, locale and accessibility
|
|
382
|
+
* settings.
|
|
383
|
+
*
|
|
384
|
+
* - `'touch'` (default): native on touch devices (coarse pointer), the text
|
|
385
|
+
* field and calendar popover on mouse-driven ones
|
|
386
|
+
* - `'always'`: native wherever the browser supports `<input type="date">`
|
|
387
|
+
* - `'never'`: Astryx's own pickers everywhere — the touch picker on a
|
|
388
|
+
* finger, the calendar popover on a mouse
|
|
389
|
+
*
|
|
390
|
+
* `format` and `placeholder` still apply in native mode: DateInput paints
|
|
391
|
+
* the closed field's text itself, over the control. `numberOfMonths` and
|
|
392
|
+
* `weekStartsOn` do not — they describe a calendar grid the native picker
|
|
393
|
+
* does not have — so a field that needs either should pass `'never'`.
|
|
394
|
+
*
|
|
395
|
+
* `min` and `max` are forwarded, but note that a native picker may not
|
|
396
|
+
* *show* them: on iOS they are constraint-validation flags rather than
|
|
397
|
+
* clamps, so an out-of-range date can be selected and is refused on commit
|
|
398
|
+
* (announced to assistive technology) rather than being greyed out in the
|
|
399
|
+
* picker. `dateConstraints` is enforced the same way, on commit, and is
|
|
400
|
+
* reason enough to prefer `'never'` on a field that uses it.
|
|
401
|
+
*
|
|
402
|
+
* @default 'touch'
|
|
403
|
+
* @example
|
|
404
|
+
* ```
|
|
405
|
+
* // Astryx's own touch picker instead of the platform's
|
|
406
|
+
* <DateInput label="Event date" value={date} onChange={setDate} nativePicker="never" />
|
|
407
|
+
* ```
|
|
408
|
+
*/
|
|
409
|
+
nativePicker?: DateInputNativePicker;
|
|
363
410
|
}
|
|
364
411
|
|
|
365
412
|
/**
|
|
@@ -739,7 +786,7 @@ function PointerDateField({
|
|
|
739
786
|
/>
|
|
740
787
|
</button>
|
|
741
788
|
<input
|
|
742
|
-
ref={
|
|
789
|
+
ref={useMergedRefs(ref, inputRef)}
|
|
743
790
|
id={id}
|
|
744
791
|
type="text"
|
|
745
792
|
role="combobox"
|
|
@@ -886,7 +933,13 @@ PointerDateField.displayName = 'PointerDateField';
|
|
|
886
933
|
*/
|
|
887
934
|
export function DateInput(props: DateInputProps) {
|
|
888
935
|
const isTouch = useMediaQuery(TOUCH_POINTER_QUERY);
|
|
936
|
+
const nativePicker = props.nativePicker ?? 'touch';
|
|
889
937
|
|
|
938
|
+
// The platform's picker, where the consumer asked for it — see the
|
|
939
|
+
// `nativePicker` prop for what that trades away.
|
|
940
|
+
if (nativePicker === 'always' || (nativePicker === 'touch' && isTouch)) {
|
|
941
|
+
return <NativeDateField {...props} />;
|
|
942
|
+
}
|
|
890
943
|
return isTouch ? (
|
|
891
944
|
<TouchDateField {...props} />
|
|
892
945
|
) : (
|
|
@@ -219,6 +219,11 @@ function Controlled({
|
|
|
219
219
|
return (
|
|
220
220
|
<DateInput
|
|
221
221
|
label="Event date"
|
|
222
|
+
// This suite is about Astryx's own touch surface, which is now opt-out:
|
|
223
|
+
// `nativePicker` defaults to 'touch', so a coarse pointer gets the
|
|
224
|
+
// platform's picker unless a field says otherwise. Tests that assert on
|
|
225
|
+
// the surface selection itself pass their own value over this.
|
|
226
|
+
nativePicker="never"
|
|
222
227
|
{...DEFAULT_RANGE}
|
|
223
228
|
{...props}
|
|
224
229
|
value={value}
|
|
@@ -276,6 +281,16 @@ function weekdayRow(): HTMLElement {
|
|
|
276
281
|
// ---------------------------------------------------------------------------
|
|
277
282
|
|
|
278
283
|
describe('DateInput — surface selection', () => {
|
|
284
|
+
it('hands a touch device to the platform picker by default', () => {
|
|
285
|
+
// `nativePicker` defaults to 'touch': the OS draws the picker unless a
|
|
286
|
+
// field opts out. Everything else in this file passes 'never', so this is
|
|
287
|
+
// the one place the default itself is asserted.
|
|
288
|
+
stubMedia({pointer: 'coarse', width: 393});
|
|
289
|
+
render(<DateInput label="Event date" onChange={() => {}} />);
|
|
290
|
+
const input = document.querySelector('input');
|
|
291
|
+
expect(input).toHaveAttribute('type', 'date');
|
|
292
|
+
});
|
|
293
|
+
|
|
279
294
|
it('switches on the pointer alone, so a tablet gets the picker too', () => {
|
|
280
295
|
// `pointer` is the PRIMARY device, which is what makes it the whole test:
|
|
281
296
|
// a touchscreen laptop reports `fine` (its trackpad) and keeps the
|
|
@@ -320,7 +335,12 @@ describe('DateInput — surface selection', () => {
|
|
|
320
335
|
setViewport('desktop');
|
|
321
336
|
const onChange = vi.fn();
|
|
322
337
|
render(
|
|
323
|
-
<DateInput
|
|
338
|
+
<DateInput
|
|
339
|
+
nativePicker="never"
|
|
340
|
+
label="Event date"
|
|
341
|
+
onChange={onChange}
|
|
342
|
+
min={undefined}
|
|
343
|
+
/>,
|
|
324
344
|
);
|
|
325
345
|
fireEvent.change(field(), {target: {value: '2026-03-25'}});
|
|
326
346
|
expect(onChange).toHaveBeenCalledWith('2026-03-25');
|
|
@@ -360,12 +380,17 @@ describe('DateInput — surface selection', () => {
|
|
|
360
380
|
describe('DateInput — field parity', () => {
|
|
361
381
|
it('shows a placeholder until a date is chosen, then the formatted value', () => {
|
|
362
382
|
const {rerender} = render(
|
|
363
|
-
<DateInput label="Ship date" onChange={() => {}} />,
|
|
383
|
+
<DateInput nativePicker="never" label="Ship date" onChange={() => {}} />,
|
|
364
384
|
);
|
|
365
385
|
expect(field()).toHaveValue('');
|
|
366
386
|
expect(field()).toHaveAttribute('placeholder', 'Select a date');
|
|
367
387
|
rerender(
|
|
368
|
-
<DateInput
|
|
388
|
+
<DateInput
|
|
389
|
+
nativePicker="never"
|
|
390
|
+
label="Ship date"
|
|
391
|
+
value="2026-03-21"
|
|
392
|
+
onChange={() => {}}
|
|
393
|
+
/>,
|
|
369
394
|
);
|
|
370
395
|
expect(field()).toHaveValue('March 21, 2026');
|
|
371
396
|
});
|
|
@@ -373,6 +398,7 @@ describe('DateInput — field parity', () => {
|
|
|
373
398
|
it('honors a named format', () => {
|
|
374
399
|
render(
|
|
375
400
|
<DateInput
|
|
401
|
+
nativePicker="never"
|
|
376
402
|
label="Ship date"
|
|
377
403
|
value="2026-03-21"
|
|
378
404
|
format="system_date"
|
|
@@ -385,6 +411,7 @@ describe('DateInput — field parity', () => {
|
|
|
385
411
|
it('honors a function format', () => {
|
|
386
412
|
render(
|
|
387
413
|
<DateInput
|
|
414
|
+
nativePicker="never"
|
|
388
415
|
label="Ship date"
|
|
389
416
|
value="2026-03-21"
|
|
390
417
|
format={iso => `ISO:${iso}`}
|
|
@@ -397,6 +424,7 @@ describe('DateInput — field parity', () => {
|
|
|
397
424
|
it('honors a custom placeholder', () => {
|
|
398
425
|
render(
|
|
399
426
|
<DateInput
|
|
427
|
+
nativePicker="never"
|
|
400
428
|
label="Ship date"
|
|
401
429
|
placeholder="Pick a day"
|
|
402
430
|
onChange={() => {}}
|
|
@@ -409,6 +437,7 @@ describe('DateInput — field parity', () => {
|
|
|
409
437
|
const onChange = vi.fn();
|
|
410
438
|
render(
|
|
411
439
|
<DateInput
|
|
440
|
+
nativePicker="never"
|
|
412
441
|
label="Ship date"
|
|
413
442
|
value="2026-03-21"
|
|
414
443
|
hasClear
|
|
@@ -419,9 +448,52 @@ describe('DateInput — field parity', () => {
|
|
|
419
448
|
expect(onChange).toHaveBeenCalledWith(undefined);
|
|
420
449
|
});
|
|
421
450
|
|
|
451
|
+
it('returns focus to the field without letting the page scroll', async () => {
|
|
452
|
+
// Clearing unmounts the clear button, and focusing another element in the
|
|
453
|
+
// same task as that unmount makes iOS Safari scroll the document to the
|
|
454
|
+
// top. Measured on the iOS 26 simulator against the live docsite, field at
|
|
455
|
+
// scrollY 2055: synchronous focus lands at 0, deferred focus stays at
|
|
456
|
+
// 2055. `preventScroll` alone does not fix it, so both halves are
|
|
457
|
+
// asserted: the focus is deferred past the unmount, and it is passed
|
|
458
|
+
// preventScroll. jsdom implements no scrolling, so the guard is asserted
|
|
459
|
+
// at the call.
|
|
460
|
+
vi.useFakeTimers();
|
|
461
|
+
try {
|
|
462
|
+
render(
|
|
463
|
+
<DateInput
|
|
464
|
+
nativePicker="never"
|
|
465
|
+
label="Ship date"
|
|
466
|
+
value="2026-03-21"
|
|
467
|
+
hasClear
|
|
468
|
+
onChange={() => {}}
|
|
469
|
+
/>,
|
|
470
|
+
);
|
|
471
|
+
const input = field();
|
|
472
|
+
const focus = vi.spyOn(input, 'focus');
|
|
473
|
+
|
|
474
|
+
fireEvent.click(screen.getByRole('button', {name: /Clear Ship date/}));
|
|
475
|
+
|
|
476
|
+
// Not synchronous — that is the whole point.
|
|
477
|
+
expect(focus).not.toHaveBeenCalled();
|
|
478
|
+
|
|
479
|
+
vi.runAllTimers();
|
|
480
|
+
|
|
481
|
+
expect(focus).toHaveBeenCalledWith({preventScroll: true});
|
|
482
|
+
focus.mockRestore();
|
|
483
|
+
} finally {
|
|
484
|
+
vi.useRealTimers();
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
|
|
422
488
|
it('does not open the picker until the field is tapped', () => {
|
|
423
489
|
withLayout(() => {
|
|
424
|
-
render(
|
|
490
|
+
render(
|
|
491
|
+
<DateInput
|
|
492
|
+
nativePicker="never"
|
|
493
|
+
label="Ship date"
|
|
494
|
+
onChange={() => {}}
|
|
495
|
+
/>,
|
|
496
|
+
);
|
|
425
497
|
expect(field()).toHaveAttribute('aria-expanded', 'false');
|
|
426
498
|
expect(screen.queryByRole('grid')).not.toBeInTheDocument();
|
|
427
499
|
fireEvent.click(field());
|
|
@@ -439,7 +511,14 @@ describe('DateInput — field parity', () => {
|
|
|
439
511
|
});
|
|
440
512
|
|
|
441
513
|
it('is not openable while disabled', () => {
|
|
442
|
-
render(
|
|
514
|
+
render(
|
|
515
|
+
<DateInput
|
|
516
|
+
nativePicker="never"
|
|
517
|
+
label="Ship date"
|
|
518
|
+
isDisabled
|
|
519
|
+
onChange={() => {}}
|
|
520
|
+
/>,
|
|
521
|
+
);
|
|
443
522
|
expect(field()).toBeDisabled();
|
|
444
523
|
fireEvent.click(field());
|
|
445
524
|
expect(screen.queryByRole('grid')).not.toBeInTheDocument();
|
|
@@ -448,6 +527,7 @@ describe('DateInput — field parity', () => {
|
|
|
448
527
|
it('stays focusable and explains itself when disabled with a reason', () => {
|
|
449
528
|
render(
|
|
450
529
|
<DateInput
|
|
530
|
+
nativePicker="never"
|
|
451
531
|
label="Ship date"
|
|
452
532
|
isDisabled
|
|
453
533
|
disabledMessage="You need the Editor role"
|
|
@@ -464,6 +544,7 @@ describe('DateInput — field parity', () => {
|
|
|
464
544
|
it('renders label, description and status through Field', () => {
|
|
465
545
|
render(
|
|
466
546
|
<DateInput
|
|
547
|
+
nativePicker="never"
|
|
467
548
|
label="Ship date"
|
|
468
549
|
description="When it leaves the warehouse"
|
|
469
550
|
status={{type: 'error', message: 'Pick a date'}}
|
|
@@ -480,12 +561,21 @@ describe('DateInput — field parity', () => {
|
|
|
480
561
|
});
|
|
481
562
|
|
|
482
563
|
it('marks required for assistive technology', () => {
|
|
483
|
-
render(
|
|
564
|
+
render(
|
|
565
|
+
<DateInput
|
|
566
|
+
nativePicker="never"
|
|
567
|
+
label="Ship date"
|
|
568
|
+
isRequired
|
|
569
|
+
onChange={() => {}}
|
|
570
|
+
/>,
|
|
571
|
+
);
|
|
484
572
|
expect(field()).toHaveAttribute('aria-required', 'true');
|
|
485
573
|
});
|
|
486
574
|
|
|
487
575
|
it('associates the label natively, so the field is named without ARIA', () => {
|
|
488
|
-
render(
|
|
576
|
+
render(
|
|
577
|
+
<DateInput nativePicker="never" label="Ship date" onChange={() => {}} />,
|
|
578
|
+
);
|
|
489
579
|
expect(screen.getByLabelText('Ship date')).toBe(field());
|
|
490
580
|
});
|
|
491
581
|
|
|
@@ -500,6 +590,7 @@ describe('DateInput — field parity', () => {
|
|
|
500
590
|
withLayout(() => {
|
|
501
591
|
render(
|
|
502
592
|
<DateInput
|
|
593
|
+
nativePicker="never"
|
|
503
594
|
label="Ship date"
|
|
504
595
|
value="2026-03-10"
|
|
505
596
|
min="2026-03-01"
|
|
@@ -522,7 +613,7 @@ describe('DateInput — field parity', () => {
|
|
|
522
613
|
it('drops the Field wrapper inside an InputGroup', () => {
|
|
523
614
|
render(
|
|
524
615
|
<InputGroup label="Range">
|
|
525
|
-
<DateInput label="Start" onChange={() => {}} />
|
|
616
|
+
<DateInput nativePicker="never" label="Start" onChange={() => {}} />
|
|
526
617
|
</InputGroup>,
|
|
527
618
|
);
|
|
528
619
|
// Named by the group label plus its own, the way core's inputs are.
|
|
@@ -607,7 +698,13 @@ describe('DateInput — calendar surface', () => {
|
|
|
607
698
|
it('Save closes even with no date chosen, committing nothing', () => {
|
|
608
699
|
const onChange = vi.fn();
|
|
609
700
|
withLayout(() => {
|
|
610
|
-
render(
|
|
701
|
+
render(
|
|
702
|
+
<DateInput
|
|
703
|
+
nativePicker="never"
|
|
704
|
+
label="Ship date"
|
|
705
|
+
onChange={onChange}
|
|
706
|
+
/>,
|
|
707
|
+
);
|
|
611
708
|
fireEvent.click(field());
|
|
612
709
|
fireEvent.click(screen.getByRole('button', {name: 'Save'}));
|
|
613
710
|
});
|
|
@@ -1483,12 +1580,22 @@ describe('DateInput — month/year wheels', () => {
|
|
|
1483
1580
|
expect(title()).toHaveTextContent('May 2027');
|
|
1484
1581
|
});
|
|
1485
1582
|
|
|
1486
|
-
it('offers Reset only on the calendar,
|
|
1583
|
+
it('offers Reset only on the calendar, in the header corner', () => {
|
|
1487
1584
|
renderAndOpen();
|
|
1488
|
-
|
|
1585
|
+
const reset = screen.getByRole('button', {name: 'Reset'});
|
|
1586
|
+
// The trailing-most thing in the header, past the arrows — not the
|
|
1587
|
+
// footer, which is Save's alone.
|
|
1588
|
+
const header = reset.closest('[data-action="reset"]')!.parentElement!;
|
|
1589
|
+
expect(header.querySelector('[data-title="month-year"]')).not.toBeNull();
|
|
1590
|
+
expect(header.lastElementChild).toHaveAttribute('data-action', 'reset');
|
|
1591
|
+
|
|
1489
1592
|
openWheels();
|
|
1490
1593
|
// The wheels choose a month; there is no date there to clear.
|
|
1491
1594
|
expect(screen.queryByRole('button', {name: 'Reset'})).toBeNull();
|
|
1595
|
+
// Hidden, not unmounted, so the header cannot change height mid-swap.
|
|
1596
|
+
expect(
|
|
1597
|
+
document.querySelector('dialog[open] [data-action="reset"]'),
|
|
1598
|
+
).toHaveAttribute('inert');
|
|
1492
1599
|
});
|
|
1493
1600
|
|
|
1494
1601
|
it('Save closes the whole picker; Done only leaves the wheels', () => {
|
|
@@ -2354,18 +2461,27 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2354
2461
|
expect(footer).not.toContain('paddingInline');
|
|
2355
2462
|
});
|
|
2356
2463
|
|
|
2357
|
-
it('
|
|
2358
|
-
|
|
2359
|
-
//
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2464
|
+
it('sizes the closed field the same on both surfaces', () => {
|
|
2465
|
+
// `DateInput` picks a surface from the pointer and `nativePicker`, so a
|
|
2466
|
+
// field that sizes itself differently on one of them changes height for
|
|
2467
|
+
// a reason the call site never asked about.
|
|
2468
|
+
//
|
|
2469
|
+
// Compared with formatting normalized away: the two files write the same
|
|
2470
|
+
// declarations differently, one entry per line against one per size.
|
|
2471
|
+
const sizeMap = (file: string) => {
|
|
2472
|
+
const source = read(file);
|
|
2473
|
+
const start = source.indexOf('const sizeStyles = stylex.create(');
|
|
2474
|
+
expect(start).toBeGreaterThan(-1);
|
|
2475
|
+
return source
|
|
2476
|
+
.slice(start, source.indexOf('});', start))
|
|
2477
|
+
.replace(/\/\/.*$/gm, '')
|
|
2478
|
+
.replace(/\/\*[\s\S]*?\*\//g, '')
|
|
2479
|
+
.replace(/\s+/g, '')
|
|
2480
|
+
.replace(/,(?=[}\]])/g, '');
|
|
2481
|
+
};
|
|
2482
|
+
expect(sizeMap('TouchDateField.tsx')).toEqual(
|
|
2483
|
+
sizeMap('NativeDateField.tsx'),
|
|
2363
2484
|
);
|
|
2364
|
-
expect(
|
|
2365
|
-
sizeMap.match(
|
|
2366
|
-
/minBlockSize: \{default: null, '@media \(pointer: coarse\)': TOUCH_TARGET\}/g,
|
|
2367
|
-
),
|
|
2368
|
-
).toHaveLength(3);
|
|
2369
2485
|
});
|
|
2370
2486
|
|
|
2371
2487
|
it('floors the month arrows too — Button tops out at 36px', () => {
|
|
@@ -2487,16 +2603,14 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2487
2603
|
});
|
|
2488
2604
|
|
|
2489
2605
|
/**
|
|
2490
|
-
*
|
|
2606
|
+
* The footer action spans the sheet. A full-width primary is the shape a
|
|
2491
2607
|
* phone form ends with, and it puts the target under the thumb wherever
|
|
2492
2608
|
* the hand is.
|
|
2493
2609
|
*/
|
|
2494
|
-
it('spans the footer with its
|
|
2610
|
+
it('spans the footer with its action', () => {
|
|
2495
2611
|
const source = read('TouchDateField.tsx');
|
|
2496
|
-
//
|
|
2497
|
-
|
|
2498
|
-
// label length.
|
|
2499
|
-
expect(source.match(/width="100%"/g)).toHaveLength(3);
|
|
2612
|
+
// One per surface: Save on the calendar, Done on the wheels.
|
|
2613
|
+
expect(source.match(/width="100%"/g)).toHaveLength(2);
|
|
2500
2614
|
});
|
|
2501
2615
|
|
|
2502
2616
|
/**
|
|
@@ -2545,7 +2659,7 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2545
2659
|
expect(
|
|
2546
2660
|
styles.match(/transitionTimingFunction: easeVars\['--ease-standard'\]/g),
|
|
2547
2661
|
).toHaveLength(1);
|
|
2548
|
-
expect(styles.match(/transitionTimingFunction: 'linear'/g)).toHaveLength(
|
|
2662
|
+
expect(styles.match(/transitionTimingFunction: 'linear'/g)).toHaveLength(4);
|
|
2549
2663
|
});
|
|
2550
2664
|
|
|
2551
2665
|
/**
|
|
@@ -2563,9 +2677,9 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2563
2677
|
const styles = source.slice(
|
|
2564
2678
|
source.indexOf('const styles = stylex.create('),
|
|
2565
2679
|
);
|
|
2566
|
-
// The arrows, the weekday row, the layer beneath, the layer
|
|
2567
|
-
// the chevron.
|
|
2568
|
-
expect(styles.match(/transitionDuration: SWAP_DURATION/g)).toHaveLength(
|
|
2680
|
+
// The arrows, Reset, the weekday row, the layer beneath, the layer
|
|
2681
|
+
// above, and the chevron.
|
|
2682
|
+
expect(styles.match(/transitionDuration: SWAP_DURATION/g)).toHaveLength(6);
|
|
2569
2683
|
// And no leftover hand-rolled timing beside them.
|
|
2570
2684
|
expect(styles).not.toContain('PANEL_FADE_MS');
|
|
2571
2685
|
expect(source).toContain(
|