@astryxdesign/core 0.4.7 → 0.5.0-canary.055e75f
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 +40 -15
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +51 -18
- 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 +3 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +14 -15
- 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 +6 -9
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +6 -6
- 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/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/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/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/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 -2
- 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/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/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/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +9 -4
- 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/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 +63 -11
- 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.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +3 -2
- 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/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +20 -17
- 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 +3 -3
- package/dist/Selector/Selector.d.ts +17 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +81 -14
- 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.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +20 -8
- 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 +19 -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 -2
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +9 -3
- 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.map +1 -1
- package/dist/Timestamp/Timestamp.js +5 -3
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +27 -8
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +2 -2
- package/dist/Tokenizer/Tokenizer.d.ts +3 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +2 -0
- 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.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +3 -3
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +4 -3
- package/dist/Typeahead/BaseTypeahead.d.ts +2 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +68 -29
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +3 -2
- package/dist/astryx.css +98 -7
- 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/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +24 -4
- 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/en.json +154 -10
- package/locales/pseudo.json +108 -0
- 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 +13 -11
- package/src/Banner/Banner.test.tsx +102 -15
- package/src/Banner/Banner.tsx +72 -25
- 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 +4 -3
- package/src/Calendar/Calendar.test.tsx +103 -0
- package/src/Calendar/Calendar.tsx +19 -16
- 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 +44 -19
- package/src/Card/Card.tsx +12 -32
- 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/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/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/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/FileInput/FileInput.tsx +3 -2
- package/src/Heading/Heading.test.tsx +23 -1
- package/src/Heading/Heading.tsx +6 -2
- 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/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 +62 -14
- 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/Lightbox/Lightbox.doc.mjs +12 -0
- package/src/Lightbox/Lightbox.tsx +124 -102
- package/src/Link/Link.doc.mjs +39 -0
- package/src/Markdown/Markdown.doc.mjs +5 -0
- package/src/Markdown/Markdown.tsx +9 -4
- 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/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 +277 -0
- package/src/MultiSelector/MultiSelector.tsx +142 -11
- 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.tsx +3 -2
- 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/usePopover.tsx +31 -28
- 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.tsx +3 -2
- package/src/Selector/Selector.doc.mjs +26 -1
- package/src/Selector/Selector.test.tsx +311 -1
- package/src/Selector/Selector.tsx +139 -16
- 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 +17 -8
- 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 +76 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +40 -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 +23 -1
- package/src/Text/Text.tsx +6 -2
- package/src/TextArea/TextArea.doc.mjs +8 -2
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +15 -8
- 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 +18 -0
- package/src/Timestamp/Timestamp.tsx +4 -2
- package/src/Toast/Toast.doc.mjs +6 -0
- package/src/Toast/ToastViewport.tsx +17 -1
- package/src/Token/TokenLink.tsx +2 -2
- package/src/Tokenizer/Tokenizer.doc.mjs +27 -0
- package/src/Tokenizer/Tokenizer.tsx +4 -0
- 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.tsx +3 -2
- package/src/TopNav/TopNavMenu.tsx +4 -3
- package/src/Typeahead/BaseTypeahead.doc.mjs +11 -0
- package/src/Typeahead/BaseTypeahead.tsx +85 -33
- package/src/Typeahead/Typeahead.doc.mjs +5 -0
- package/src/Typeahead/Typeahead.test.tsx +49 -0
- package/src/Typeahead/Typeahead.tsx +3 -2
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useContainerReveal.doc.mjs +2 -2
- 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/useMergedRefs.doc.mjs +79 -0
- package/src/hooks/useMergedRefs.test.tsx +62 -0
- package/src/hooks/useMergedRefs.ts +36 -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/derivedVarRegistry.test.ts +19 -3
- package/src/theme/derivedVarRegistry.ts +23 -4
- package/src/theme/generateThemeRules.test.ts +37 -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
|
@@ -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(
|