@astryxdesign/core 0.5.0 → 0.5.1-canary.046f6ea
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 +222 -0
- 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/AspectRatio/AspectRatio.d.ts +6 -6
- package/dist/Avatar/Avatar.d.ts +25 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +43 -9
- 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 +5 -2
- 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 +11 -7
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +26 -2
- package/dist/Banner/Banner.d.ts +10 -1
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +11 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +8 -7
- package/dist/Calendar/Calendar.d.ts +4 -2
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +15 -21
- package/dist/Calendar/hooks/useCalendarDays.js +4 -6
- package/dist/Calendar/hooks/useCalendarNavigation.js +4 -6
- package/dist/Calendar/styles.d.ts +5 -20
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -17
- 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 +108 -7
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +7 -1
- 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/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -7
- package/dist/ComplexSelector/ComplexSelector.d.ts +10 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +14 -7
- package/dist/DateInput/DateInput.d.ts +43 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +22 -5
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +5 -3
- package/dist/DateInput/MonthYearWheels.d.ts.map +1 -1
- package/dist/DateInput/MonthYearWheels.js +6 -4
- 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 +52 -25
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +1 -0
- 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/DateRangeInput/DateRangeInput.js +3 -5
- package/dist/DateTimeInput/DateTimeInput.d.ts +23 -24
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +35 -10
- package/dist/DateTimeInput/TouchDateTimeField.d.ts +6 -0
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -0
- package/dist/DateTimeInput/TouchDateTimeField.js +1021 -0
- package/dist/Dialog/Dialog.d.ts +16 -2
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +28 -7
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +4 -13
- 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/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +0 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +104 -3
- package/dist/HoverCard/useHoverCard.d.ts +14 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +7 -1
- package/dist/Icon/Icon.d.ts +4 -2
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.d.ts +3 -2
- package/dist/Icon/defaultIcons.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.js +7 -0
- package/dist/Icon/globalIconRegistry.d.ts +13 -0
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +34 -6
- package/dist/Icon/index.d.ts +1 -1
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/useIcon.d.ts +5 -2
- package/dist/Icon/useIcon.d.ts.map +1 -1
- package/dist/Icon/useIcon.js +3 -0
- 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 +2 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +2 -26
- 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/useLayer.d.ts +23 -13
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +146 -24
- 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/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +5 -3
- 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/MultiSelector/MultiSelector.d.ts +18 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +58 -11
- 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/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NavItem/navItemStyles.stylex.d.ts +0 -8
- package/dist/NavItem/navItemStyles.stylex.d.ts.map +1 -1
- package/dist/NavItem/navItemStyles.stylex.js +0 -2
- package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +7 -4
- package/dist/NumberInput/NumberInput.d.ts +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +95 -126
- 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 +2 -3
- package/dist/OverflowList/OverflowList.d.ts +41 -1
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +43 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +8 -14
- package/dist/Popover/usePopover.d.ts +15 -41
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +26 -7
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +91 -18
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +4 -2
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Resizable/useResizable.d.ts +19 -1
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +104 -38
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +9 -0
- package/dist/Selector/Selector.d.ts +18 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +92 -21
- 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 +6 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +57 -27
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +5 -4
- package/dist/SideNav/SideNavItem.d.ts +29 -4
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +75 -20
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +34 -2
- package/dist/Spinner/Spinner.d.ts +3 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +199 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Stepper/Step.d.ts.map +1 -1
- package/dist/Stepper/Step.js +7 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +5 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +6 -1
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- 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 +34 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +25 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +3 -4
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +0 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +13 -8
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +10 -18
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +10 -5
- package/dist/Toast/Toast.d.ts +17 -2
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +77 -11
- package/dist/Toast/ToastViewport.d.ts +1 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +76 -21
- package/dist/Toast/index.d.ts +1 -1
- package/dist/Toast/index.d.ts.map +1 -1
- package/dist/Toast/types.d.ts +38 -0
- package/dist/Toast/types.d.ts.map +1 -1
- package/dist/Toast/useToastGesture.d.ts +26 -0
- package/dist/Toast/useToastGesture.d.ts.map +1 -0
- package/dist/Toast/useToastGesture.js +223 -0
- package/dist/Token/Token.d.ts +1 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +23 -12
- package/dist/Token/TokenLink.d.ts +1 -1
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +5 -2
- package/dist/Tokenizer/Tokenizer.d.ts +12 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +31 -21
- package/dist/TopNav/TopNavHeading.js +2 -2
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +3 -3
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +30 -9
- package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +3 -3
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +21 -6
- 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/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +2 -2
- package/dist/Typeahead/BaseTypeahead.d.ts +33 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +51 -8
- package/dist/Typeahead/Typeahead.d.ts +8 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +2 -0
- 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 +87 -22
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -25
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +14 -4
- package/dist/i18n/InternationalizationContext.d.ts +2 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.js +3 -1
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.js +3 -1
- package/dist/i18n/resolve.d.ts +1 -1
- package/dist/i18n/resolve.d.ts.map +1 -1
- package/dist/i18n/resolve.js +37 -38
- package/dist/i18n/useTranslator.d.ts.map +1 -1
- package/dist/i18n/useTranslator.js +2 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +46 -10
- package/dist/theme/defineTheme.d.ts +9 -3
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +5 -0
- 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/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +6 -7
- package/dist/utils/dateParser.d.ts +5 -8
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +10 -11
- package/dist/utils/focusOutline.stylex.d.ts +25 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.js +15 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +26 -0
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -0
- package/dist/utils/interactionOverlay.stylex.js +42 -0
- 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/plainDate.d.ts +11 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +20 -4
- package/locales/af-ZA.json +7 -7
- package/locales/ar-SA.json +7 -7
- package/locales/ca-ES.json +6 -6
- package/locales/cs-CZ.json +7 -7
- package/locales/da-DK.json +7 -7
- package/locales/de-DE.json +7 -7
- package/locales/el-GR.json +7 -7
- package/locales/en.json +178 -6
- package/locales/es-ES.json +6 -6
- package/locales/fi-FI.json +7 -7
- package/locales/fr-FR.json +7 -7
- package/locales/he-IL.json +7 -7
- package/locales/hu-HU.json +7 -7
- package/locales/it-IT.json +7 -7
- package/locales/ja-JP.json +7 -7
- package/locales/ko-KR.json +7 -7
- package/locales/nl-NL.json +7 -7
- package/locales/no-NO.json +7 -7
- package/locales/pl-PL.json +7 -7
- package/locales/pseudo.json +130 -1
- package/locales/pt-BR.json +7 -7
- package/locales/pt-PT.json +7 -7
- package/locales/ro-RO.json +7 -7
- package/locales/ru-RU.json +7 -7
- package/locales/sr-SP.json +7 -7
- package/locales/sv-SE.json +7 -7
- package/locales/tr-TR.json +7 -7
- package/locales/uk-UA.json +7 -7
- package/locales/vi-VN.json +7 -7
- package/locales/zh-CN.json +7 -7
- package/locales/zh-TW.json +7 -7
- package/package.json +4 -5
- 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/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +6 -6
- package/src/Avatar/Avatar.doc.mjs +12 -2
- package/src/Avatar/Avatar.test.tsx +80 -0
- package/src/Avatar/Avatar.tsx +64 -14
- 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 +12 -4
- package/src/AvatarGroup/AvatarGroupContext.ts +5 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +12 -12
- package/src/Badge/Badge.doc.mjs +3 -2
- package/src/Badge/Badge.test.tsx +32 -3
- package/src/Badge/Badge.tsx +42 -1
- package/src/Banner/Banner.doc.mjs +9 -0
- package/src/Banner/Banner.test.tsx +76 -11
- package/src/Banner/Banner.tsx +21 -2
- package/src/Button/Button.doc.mjs +2 -1
- package/src/Button/Button.test.tsx +19 -4
- package/src/Button/Button.tsx +9 -29
- package/src/ButtonGroup/ButtonGroup.doc.mjs +2 -2
- package/src/ButtonGroup/ButtonGroup.test.tsx +13 -0
- package/src/Calendar/Calendar.doc.mjs +4 -4
- package/src/Calendar/Calendar.test.tsx +112 -0
- package/src/Calendar/Calendar.tsx +18 -16
- package/src/Calendar/hooks/useCalendarDays.ts +4 -4
- package/src/Calendar/hooks/useCalendarNavigation.ts +4 -4
- package/src/Calendar/styles.ts +48 -42
- 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.doc.mjs +3 -0
- package/src/Carousel/Carousel.test.tsx +360 -0
- package/src/Carousel/Carousel.tsx +116 -15
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -1
- package/src/CheckboxInput/CheckboxInput.test.tsx +15 -0
- package/src/CheckboxInput/CheckboxInput.tsx +5 -0
- package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
- package/src/CodeBlock/CodeBlock.doc.mjs +10 -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/CommandPaletteItem.tsx +2 -12
- package/src/ComplexSelector/ComplexSelector.doc.mjs +9 -2
- package/src/ComplexSelector/ComplexSelector.test.tsx +183 -0
- package/src/ComplexSelector/ComplexSelector.tsx +22 -12
- package/src/DateInput/DateInput.doc.mjs +17 -1
- package/src/DateInput/DateInput.test.tsx +9 -4
- package/src/DateInput/DateInput.tsx +54 -3
- package/src/DateInput/DateInputTouch.test.tsx +146 -32
- package/src/DateInput/MonthScroller.tsx +5 -1
- package/src/DateInput/MonthYearWheels.tsx +7 -4
- package/src/DateInput/NativeDateField.test.tsx +635 -0
- package/src/DateInput/NativeDateField.tsx +641 -0
- package/src/DateInput/TouchDateField.tsx +83 -33
- package/src/DateInput/Wheel.tsx +1 -0
- package/src/DateInput/index.ts +1 -0
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +3 -3
- package/src/DateRangeInput/DateRangeInput.test.tsx +46 -0
- package/src/DateRangeInput/DateRangeInput.tsx +8 -13
- package/src/DateTimeInput/DateTimeInput.doc.mjs +39 -22
- package/src/DateTimeInput/DateTimeInput.test.tsx +76 -0
- package/src/DateTimeInput/DateTimeInput.tsx +54 -20
- package/src/DateTimeInput/DateTimeInputTouch.test.tsx +980 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +1437 -0
- package/src/Dialog/Dialog.test.tsx +185 -18
- package/src/Dialog/Dialog.tsx +35 -11
- package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
- package/src/DropdownMenu/DropdownMenu.tsx +4 -13
- package/src/Field/Field.doc.mjs +1 -1
- 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/FieldStatus/FieldStatus.doc.mjs +1 -1
- package/src/FileInput/FileInput.doc.mjs +1 -1
- package/src/Heading/Heading.tsx +0 -1
- package/src/HoverCard/HoverCard.doc.mjs +8 -2
- package/src/HoverCard/HoverCard.test.tsx +154 -4
- package/src/HoverCard/HoverCard.tsx +137 -3
- package/src/HoverCard/useHoverCard.tsx +23 -3
- package/src/Icon/Icon.test.tsx +55 -1
- package/src/Icon/Icon.tsx +5 -3
- package/src/Icon/defaultIcons.tsx +11 -2
- package/src/Icon/globalIconRegistry.test.tsx +16 -3
- package/src/Icon/globalIconRegistry.tsx +37 -6
- package/src/Icon/index.ts +1 -0
- package/src/Icon/useIcon.ts +9 -2
- package/src/Indicator/CheckboxIndicator.tsx +14 -8
- package/src/Indicator/Indicator.doc.mjs +3 -1
- package/src/InputGroup/InputGroup.doc.mjs +1 -1
- package/src/Item/Item.tsx +2 -7
- package/src/Kbd/Kbd.test.tsx +0 -17
- package/src/Kbd/Kbd.tsx +2 -26
- package/src/Layer/gestureCounter.ts +57 -0
- package/src/Layer/useLayer.test.tsx +368 -16
- package/src/Layer/useLayer.tsx +208 -35
- package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
- package/src/List/List.test.tsx +38 -0
- package/src/List/List.tsx +8 -1
- package/src/Markdown/Markdown.test.tsx +37 -0
- package/src/Markdown/Markdown.tsx +16 -5
- package/src/Markdown/parser.test.ts +33 -0
- package/src/Markdown/parser.ts +9 -3
- package/src/MetadataList/MetadataList.test.tsx +75 -2
- package/src/MetadataList/MetadataListItem.tsx +5 -2
- package/src/MultiSelector/MultiSelector.doc.mjs +23 -2
- package/src/MultiSelector/MultiSelector.test.tsx +205 -0
- package/src/MultiSelector/MultiSelector.tsx +103 -16
- package/src/MultiSelector/hooks.ts +9 -2
- 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/NavItem/navItemStyles.stylex.ts +0 -8
- package/src/NavMenu/NavHeadingMenu.test.tsx +30 -0
- package/src/NavMenu/NavHeadingMenu.tsx +7 -4
- package/src/NumberInput/NumberInput.doc.mjs +27 -8
- package/src/NumberInput/NumberInput.test.tsx +563 -8
- package/src/NumberInput/NumberInput.tsx +77 -131
- 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 +2 -4
- package/src/OverflowList/OverflowList.doc.mjs +102 -21
- package/src/OverflowList/OverflowList.test.tsx +550 -4
- package/src/OverflowList/OverflowList.tsx +100 -2
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/Popover/Popover.doc.mjs +2 -2
- package/src/Popover/Popover.test.tsx +38 -0
- package/src/Popover/Popover.tsx +28 -66
- package/src/Popover/usePopover.tsx +44 -5
- package/src/PowerSearch/PowerSearch.doc.mjs +1 -1
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +87 -0
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +64 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +109 -10
- package/src/PowerSearch/formatFilterValue.test.ts +16 -1
- package/src/PowerSearch/formatFilterValue.ts +2 -0
- 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/RadioList/RadioList.doc.mjs +1 -1
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/useResizable.doc.mjs +21 -2
- package/src/Resizable/useResizable.test.ts +421 -0
- package/src/Resizable/useResizable.ts +133 -48
- package/src/SelectableCard/SelectableCard.doc.mjs +3 -0
- package/src/SelectableCard/SelectableCard.tsx +16 -0
- package/src/Selector/Selector.doc.mjs +15 -1
- package/src/Selector/Selector.source-build.test.mjs +65 -0
- package/src/Selector/Selector.test.tsx +301 -0
- package/src/Selector/Selector.tsx +145 -32
- package/src/Selector/hooks.ts +17 -2
- package/src/SideNav/SideNav.doc.mjs +2 -2
- package/src/SideNav/SideNav.test.tsx +1069 -6
- package/src/SideNav/SideNav.tsx +109 -38
- package/src/SideNav/SideNavHeading.tsx +5 -2
- package/src/SideNav/SideNavItem.doc.mjs +24 -3
- package/src/SideNav/SideNavItem.tsx +134 -44
- package/src/Slider/Slider.doc.mjs +2 -2
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +52 -1
- package/src/Spinner/Spinner.doc.mjs +17 -5
- package/src/Spinner/Spinner.test.tsx +164 -0
- package/src/Spinner/Spinner.tsx +252 -22
- 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 +1 -1
- package/src/Stepper/Step.tsx +7 -14
- package/src/Switch/Switch.doc.mjs +3 -1
- package/src/Switch/Switch.test.tsx +10 -0
- package/src/Switch/Switch.tsx +3 -0
- package/src/Table/BaseTable.tsx +6 -1
- package/src/Table/Table.doc.mjs +5 -3
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +2 -2
- package/src/Table/TableFooter.doc.mjs +1 -1
- package/src/Table/TableHeader.doc.mjs +1 -1
- 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.tsx +50 -4
- package/src/Table/plugins/selection/useTableSelection.test.tsx +62 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +25 -2
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
- package/src/Table/useTableGroupedRows.doc.mjs +3 -3
- package/src/Table/useTablePagination.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +1 -1
- package/src/Text/Text.test.tsx +44 -0
- package/src/Text/Text.tsx +0 -1
- package/src/TextArea/TextArea.doc.mjs +13 -3
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +34 -22
- package/src/TextInput/TextInput.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.doc.mjs +1 -1
- package/src/Timestamp/Timestamp.test.tsx +89 -0
- package/src/Timestamp/Timestamp.tsx +8 -8
- package/src/Timestamp/formatInstant.ts +5 -0
- package/src/Toast/Toast.doc.mjs +213 -44
- package/src/Toast/Toast.tsx +118 -23
- package/src/Toast/ToastViewport.test.tsx +1434 -8
- package/src/Toast/ToastViewport.tsx +85 -14
- package/src/Toast/index.ts +2 -0
- package/src/Toast/types.ts +43 -5
- package/src/Toast/useToastGesture.ts +361 -0
- package/src/Token/Token.test.tsx +95 -0
- package/src/Token/Token.tsx +19 -17
- package/src/Token/TokenLink.tsx +12 -3
- package/src/Tokenizer/Tokenizer.doc.mjs +17 -4
- package/src/Tokenizer/Tokenizer.test.tsx +161 -0
- package/src/Tokenizer/Tokenizer.tsx +49 -24
- package/src/TopNav/TopNavHeading.tsx +2 -2
- package/src/TopNav/TopNavItem.tsx +3 -7
- package/src/TopNav/TopNavMegaMenu.test.tsx +104 -0
- package/src/TopNav/TopNavMegaMenu.tsx +47 -4
- package/src/TopNav/TopNavMegaMenuItem.tsx +10 -9
- package/src/TopNav/TopNavMenu.test.tsx +133 -1
- package/src/TopNav/TopNavMenu.tsx +38 -5
- package/src/TreeList/TreeList.test.tsx +49 -0
- package/src/TreeList/TreeList.tsx +7 -2
- package/src/TreeList/TreeListItem.tsx +2 -7
- package/src/Typeahead/BaseTypeahead.doc.mjs +13 -0
- package/src/Typeahead/BaseTypeahead.tsx +96 -6
- package/src/Typeahead/Typeahead.doc.mjs +7 -1
- package/src/Typeahead/Typeahead.test.tsx +154 -0
- package/src/Typeahead/Typeahead.tsx +9 -0
- package/src/Typeahead/TypeaheadItem.test.tsx +43 -0
- package/src/Typeahead/TypeaheadItem.tsx +8 -1
- package/src/hooks/useAnnounce.doc.mjs +96 -0
- package/src/hooks/useDevWarning.doc.mjs +96 -0
- package/src/hooks/useHotkeys.test.ts +0 -18
- package/src/hooks/useHotkeys.ts +3 -25
- 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/useOverflow.doc.mjs +58 -17
- package/src/hooks/useOverflow.ts +16 -4
- package/src/hooks/useTypeahead.doc.mjs +153 -0
- package/src/i18n/InternationalizationContext.ts +3 -0
- package/src/i18n/InternationalizationProvider.tsx +8 -1
- package/src/i18n/__tests__/resolve.test.ts +23 -1
- package/src/i18n/resolve.ts +46 -49
- package/src/i18n/useTranslator.ts +2 -7
- package/src/index.ts +2 -0
- package/src/raw-import.d.ts +14 -0
- 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/defineTheme.ts +12 -3
- package/src/theme/derivedVarRegistry.test.ts +87 -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/theme/useTheme.test.tsx +10 -0
- package/src/theme/useTheme.ts +16 -10
- package/src/utils/dateParser.test.ts +34 -2
- package/src/utils/dateParser.ts +11 -14
- package/src/utils/focusOutline.stylex.ts +50 -0
- package/src/utils/interactionOverlay.stylex.ts +74 -0
- package/src/utils/isApplePlatform.test.ts +61 -0
- package/src/utils/isApplePlatform.ts +37 -0
- package/src/utils/plainDate.test.ts +46 -0
- package/src/utils/plainDate.ts +18 -3
|
@@ -41,6 +41,7 @@ import {fileURLToPath} from 'node:url';
|
|
|
41
41
|
import {useState} from 'react';
|
|
42
42
|
import type {ISODateString} from '../utils';
|
|
43
43
|
import {InputGroup} from '../InputGroup';
|
|
44
|
+
import {InternationalizationProvider} from '../i18n';
|
|
44
45
|
import {stableClassName} from '../naming';
|
|
45
46
|
import {DateInput} from './DateInput';
|
|
46
47
|
import {
|
|
@@ -219,6 +220,11 @@ function Controlled({
|
|
|
219
220
|
return (
|
|
220
221
|
<DateInput
|
|
221
222
|
label="Event date"
|
|
223
|
+
// This suite is about Astryx's own touch surface, which is now opt-out:
|
|
224
|
+
// `nativePicker` defaults to 'touch', so a coarse pointer gets the
|
|
225
|
+
// platform's picker unless a field says otherwise. Tests that assert on
|
|
226
|
+
// the surface selection itself pass their own value over this.
|
|
227
|
+
nativePicker="never"
|
|
222
228
|
{...DEFAULT_RANGE}
|
|
223
229
|
{...props}
|
|
224
230
|
value={value}
|
|
@@ -276,6 +282,16 @@ function weekdayRow(): HTMLElement {
|
|
|
276
282
|
// ---------------------------------------------------------------------------
|
|
277
283
|
|
|
278
284
|
describe('DateInput — surface selection', () => {
|
|
285
|
+
it('hands a touch device to the platform picker by default', () => {
|
|
286
|
+
// `nativePicker` defaults to 'touch': the OS draws the picker unless a
|
|
287
|
+
// field opts out. Everything else in this file passes 'never', so this is
|
|
288
|
+
// the one place the default itself is asserted.
|
|
289
|
+
stubMedia({pointer: 'coarse', width: 393});
|
|
290
|
+
render(<DateInput label="Event date" onChange={() => {}} />);
|
|
291
|
+
const input = document.querySelector('input');
|
|
292
|
+
expect(input).toHaveAttribute('type', 'date');
|
|
293
|
+
});
|
|
294
|
+
|
|
279
295
|
it('switches on the pointer alone, so a tablet gets the picker too', () => {
|
|
280
296
|
// `pointer` is the PRIMARY device, which is what makes it the whole test:
|
|
281
297
|
// a touchscreen laptop reports `fine` (its trackpad) and keeps the
|
|
@@ -320,7 +336,12 @@ describe('DateInput — surface selection', () => {
|
|
|
320
336
|
setViewport('desktop');
|
|
321
337
|
const onChange = vi.fn();
|
|
322
338
|
render(
|
|
323
|
-
<DateInput
|
|
339
|
+
<DateInput
|
|
340
|
+
nativePicker="never"
|
|
341
|
+
label="Event date"
|
|
342
|
+
onChange={onChange}
|
|
343
|
+
min={undefined}
|
|
344
|
+
/>,
|
|
324
345
|
);
|
|
325
346
|
fireEvent.change(field(), {target: {value: '2026-03-25'}});
|
|
326
347
|
expect(onChange).toHaveBeenCalledWith('2026-03-25');
|
|
@@ -337,6 +358,41 @@ describe('DateInput — surface selection', () => {
|
|
|
337
358
|
expect(input).toHaveAttribute('inputmode', 'none');
|
|
338
359
|
});
|
|
339
360
|
|
|
361
|
+
it('updates the field and open picker when the provider locale changes', () => {
|
|
362
|
+
const renderDateInput = (locale: 'en-US' | 'es-ES') => (
|
|
363
|
+
<InternationalizationProvider locale={locale}>
|
|
364
|
+
<Controlled initial="2026-03-21" />
|
|
365
|
+
</InternationalizationProvider>
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
withLayout(() => {
|
|
369
|
+
const {rerender} = render(renderDateInput('en-US'));
|
|
370
|
+
expect(field()).toHaveValue('March 21, 2026');
|
|
371
|
+
|
|
372
|
+
fireEvent.click(field());
|
|
373
|
+
expect(
|
|
374
|
+
document.querySelector('[data-title="month-year"]'),
|
|
375
|
+
).toHaveTextContent('March 2026');
|
|
376
|
+
expect(pane('March 2026')).toBeInTheDocument();
|
|
377
|
+
|
|
378
|
+
rerender(renderDateInput('es-ES'));
|
|
379
|
+
expect(field()).toHaveValue('21 de marzo de 2026');
|
|
380
|
+
expect(
|
|
381
|
+
document.querySelector('[data-title="month-year"]'),
|
|
382
|
+
).toHaveTextContent('marzo de 2026');
|
|
383
|
+
expect(pane('marzo de 2026')).toBeInTheDocument();
|
|
384
|
+
|
|
385
|
+
const nextButton = document.querySelector<HTMLButtonElement>(
|
|
386
|
+
'[data-arrows="months"] button:last-child',
|
|
387
|
+
);
|
|
388
|
+
expect(nextButton).not.toBeNull();
|
|
389
|
+
fireEvent.click(nextButton!);
|
|
390
|
+
expect(
|
|
391
|
+
document.querySelector('[data-title="month-year"]'),
|
|
392
|
+
).toHaveTextContent('abril de 2026');
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
|
|
340
396
|
it('forwards ref to the input on both surfaces', () => {
|
|
341
397
|
const desktopRef = {current: null as HTMLInputElement | null};
|
|
342
398
|
setViewport('desktop');
|
|
@@ -360,12 +416,17 @@ describe('DateInput — surface selection', () => {
|
|
|
360
416
|
describe('DateInput — field parity', () => {
|
|
361
417
|
it('shows a placeholder until a date is chosen, then the formatted value', () => {
|
|
362
418
|
const {rerender} = render(
|
|
363
|
-
<DateInput label="Ship date" onChange={() => {}} />,
|
|
419
|
+
<DateInput nativePicker="never" label="Ship date" onChange={() => {}} />,
|
|
364
420
|
);
|
|
365
421
|
expect(field()).toHaveValue('');
|
|
366
422
|
expect(field()).toHaveAttribute('placeholder', 'Select a date');
|
|
367
423
|
rerender(
|
|
368
|
-
<DateInput
|
|
424
|
+
<DateInput
|
|
425
|
+
nativePicker="never"
|
|
426
|
+
label="Ship date"
|
|
427
|
+
value="2026-03-21"
|
|
428
|
+
onChange={() => {}}
|
|
429
|
+
/>,
|
|
369
430
|
);
|
|
370
431
|
expect(field()).toHaveValue('March 21, 2026');
|
|
371
432
|
});
|
|
@@ -373,6 +434,7 @@ describe('DateInput — field parity', () => {
|
|
|
373
434
|
it('honors a named format', () => {
|
|
374
435
|
render(
|
|
375
436
|
<DateInput
|
|
437
|
+
nativePicker="never"
|
|
376
438
|
label="Ship date"
|
|
377
439
|
value="2026-03-21"
|
|
378
440
|
format="system_date"
|
|
@@ -385,6 +447,7 @@ describe('DateInput — field parity', () => {
|
|
|
385
447
|
it('honors a function format', () => {
|
|
386
448
|
render(
|
|
387
449
|
<DateInput
|
|
450
|
+
nativePicker="never"
|
|
388
451
|
label="Ship date"
|
|
389
452
|
value="2026-03-21"
|
|
390
453
|
format={iso => `ISO:${iso}`}
|
|
@@ -397,6 +460,7 @@ describe('DateInput — field parity', () => {
|
|
|
397
460
|
it('honors a custom placeholder', () => {
|
|
398
461
|
render(
|
|
399
462
|
<DateInput
|
|
463
|
+
nativePicker="never"
|
|
400
464
|
label="Ship date"
|
|
401
465
|
placeholder="Pick a day"
|
|
402
466
|
onChange={() => {}}
|
|
@@ -409,6 +473,7 @@ describe('DateInput — field parity', () => {
|
|
|
409
473
|
const onChange = vi.fn();
|
|
410
474
|
render(
|
|
411
475
|
<DateInput
|
|
476
|
+
nativePicker="never"
|
|
412
477
|
label="Ship date"
|
|
413
478
|
value="2026-03-21"
|
|
414
479
|
hasClear
|
|
@@ -432,6 +497,7 @@ describe('DateInput — field parity', () => {
|
|
|
432
497
|
try {
|
|
433
498
|
render(
|
|
434
499
|
<DateInput
|
|
500
|
+
nativePicker="never"
|
|
435
501
|
label="Ship date"
|
|
436
502
|
value="2026-03-21"
|
|
437
503
|
hasClear
|
|
@@ -457,7 +523,13 @@ describe('DateInput — field parity', () => {
|
|
|
457
523
|
|
|
458
524
|
it('does not open the picker until the field is tapped', () => {
|
|
459
525
|
withLayout(() => {
|
|
460
|
-
render(
|
|
526
|
+
render(
|
|
527
|
+
<DateInput
|
|
528
|
+
nativePicker="never"
|
|
529
|
+
label="Ship date"
|
|
530
|
+
onChange={() => {}}
|
|
531
|
+
/>,
|
|
532
|
+
);
|
|
461
533
|
expect(field()).toHaveAttribute('aria-expanded', 'false');
|
|
462
534
|
expect(screen.queryByRole('grid')).not.toBeInTheDocument();
|
|
463
535
|
fireEvent.click(field());
|
|
@@ -475,7 +547,14 @@ describe('DateInput — field parity', () => {
|
|
|
475
547
|
});
|
|
476
548
|
|
|
477
549
|
it('is not openable while disabled', () => {
|
|
478
|
-
render(
|
|
550
|
+
render(
|
|
551
|
+
<DateInput
|
|
552
|
+
nativePicker="never"
|
|
553
|
+
label="Ship date"
|
|
554
|
+
isDisabled
|
|
555
|
+
onChange={() => {}}
|
|
556
|
+
/>,
|
|
557
|
+
);
|
|
479
558
|
expect(field()).toBeDisabled();
|
|
480
559
|
fireEvent.click(field());
|
|
481
560
|
expect(screen.queryByRole('grid')).not.toBeInTheDocument();
|
|
@@ -484,6 +563,7 @@ describe('DateInput — field parity', () => {
|
|
|
484
563
|
it('stays focusable and explains itself when disabled with a reason', () => {
|
|
485
564
|
render(
|
|
486
565
|
<DateInput
|
|
566
|
+
nativePicker="never"
|
|
487
567
|
label="Ship date"
|
|
488
568
|
isDisabled
|
|
489
569
|
disabledMessage="You need the Editor role"
|
|
@@ -500,6 +580,7 @@ describe('DateInput — field parity', () => {
|
|
|
500
580
|
it('renders label, description and status through Field', () => {
|
|
501
581
|
render(
|
|
502
582
|
<DateInput
|
|
583
|
+
nativePicker="never"
|
|
503
584
|
label="Ship date"
|
|
504
585
|
description="When it leaves the warehouse"
|
|
505
586
|
status={{type: 'error', message: 'Pick a date'}}
|
|
@@ -516,12 +597,21 @@ describe('DateInput — field parity', () => {
|
|
|
516
597
|
});
|
|
517
598
|
|
|
518
599
|
it('marks required for assistive technology', () => {
|
|
519
|
-
render(
|
|
600
|
+
render(
|
|
601
|
+
<DateInput
|
|
602
|
+
nativePicker="never"
|
|
603
|
+
label="Ship date"
|
|
604
|
+
isRequired
|
|
605
|
+
onChange={() => {}}
|
|
606
|
+
/>,
|
|
607
|
+
);
|
|
520
608
|
expect(field()).toHaveAttribute('aria-required', 'true');
|
|
521
609
|
});
|
|
522
610
|
|
|
523
611
|
it('associates the label natively, so the field is named without ARIA', () => {
|
|
524
|
-
render(
|
|
612
|
+
render(
|
|
613
|
+
<DateInput nativePicker="never" label="Ship date" onChange={() => {}} />,
|
|
614
|
+
);
|
|
525
615
|
expect(screen.getByLabelText('Ship date')).toBe(field());
|
|
526
616
|
});
|
|
527
617
|
|
|
@@ -536,6 +626,7 @@ describe('DateInput — field parity', () => {
|
|
|
536
626
|
withLayout(() => {
|
|
537
627
|
render(
|
|
538
628
|
<DateInput
|
|
629
|
+
nativePicker="never"
|
|
539
630
|
label="Ship date"
|
|
540
631
|
value="2026-03-10"
|
|
541
632
|
min="2026-03-01"
|
|
@@ -558,7 +649,7 @@ describe('DateInput — field parity', () => {
|
|
|
558
649
|
it('drops the Field wrapper inside an InputGroup', () => {
|
|
559
650
|
render(
|
|
560
651
|
<InputGroup label="Range">
|
|
561
|
-
<DateInput label="Start" onChange={() => {}} />
|
|
652
|
+
<DateInput nativePicker="never" label="Start" onChange={() => {}} />
|
|
562
653
|
</InputGroup>,
|
|
563
654
|
);
|
|
564
655
|
// Named by the group label plus its own, the way core's inputs are.
|
|
@@ -643,7 +734,13 @@ describe('DateInput — calendar surface', () => {
|
|
|
643
734
|
it('Save closes even with no date chosen, committing nothing', () => {
|
|
644
735
|
const onChange = vi.fn();
|
|
645
736
|
withLayout(() => {
|
|
646
|
-
render(
|
|
737
|
+
render(
|
|
738
|
+
<DateInput
|
|
739
|
+
nativePicker="never"
|
|
740
|
+
label="Ship date"
|
|
741
|
+
onChange={onChange}
|
|
742
|
+
/>,
|
|
743
|
+
);
|
|
647
744
|
fireEvent.click(field());
|
|
648
745
|
fireEvent.click(screen.getByRole('button', {name: 'Save'}));
|
|
649
746
|
});
|
|
@@ -1519,12 +1616,22 @@ describe('DateInput — month/year wheels', () => {
|
|
|
1519
1616
|
expect(title()).toHaveTextContent('May 2027');
|
|
1520
1617
|
});
|
|
1521
1618
|
|
|
1522
|
-
it('offers Reset only on the calendar,
|
|
1619
|
+
it('offers Reset only on the calendar, in the header corner', () => {
|
|
1523
1620
|
renderAndOpen();
|
|
1524
|
-
|
|
1621
|
+
const reset = screen.getByRole('button', {name: 'Reset'});
|
|
1622
|
+
// The trailing-most thing in the header, past the arrows — not the
|
|
1623
|
+
// footer, which is Save's alone.
|
|
1624
|
+
const header = reset.closest('[data-action="reset"]')!.parentElement!;
|
|
1625
|
+
expect(header.querySelector('[data-title="month-year"]')).not.toBeNull();
|
|
1626
|
+
expect(header.lastElementChild).toHaveAttribute('data-action', 'reset');
|
|
1627
|
+
|
|
1525
1628
|
openWheels();
|
|
1526
1629
|
// The wheels choose a month; there is no date there to clear.
|
|
1527
1630
|
expect(screen.queryByRole('button', {name: 'Reset'})).toBeNull();
|
|
1631
|
+
// Hidden, not unmounted, so the header cannot change height mid-swap.
|
|
1632
|
+
expect(
|
|
1633
|
+
document.querySelector('dialog[open] [data-action="reset"]'),
|
|
1634
|
+
).toHaveAttribute('inert');
|
|
1528
1635
|
});
|
|
1529
1636
|
|
|
1530
1637
|
it('Save closes the whole picker; Done only leaves the wheels', () => {
|
|
@@ -2390,18 +2497,27 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2390
2497
|
expect(footer).not.toContain('paddingInline');
|
|
2391
2498
|
});
|
|
2392
2499
|
|
|
2393
|
-
it('
|
|
2394
|
-
|
|
2395
|
-
//
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2500
|
+
it('sizes the closed field the same on both surfaces', () => {
|
|
2501
|
+
// `DateInput` picks a surface from the pointer and `nativePicker`, so a
|
|
2502
|
+
// field that sizes itself differently on one of them changes height for
|
|
2503
|
+
// a reason the call site never asked about.
|
|
2504
|
+
//
|
|
2505
|
+
// Compared with formatting normalized away: the two files write the same
|
|
2506
|
+
// declarations differently, one entry per line against one per size.
|
|
2507
|
+
const sizeMap = (file: string) => {
|
|
2508
|
+
const source = read(file);
|
|
2509
|
+
const start = source.indexOf('const sizeStyles = stylex.create(');
|
|
2510
|
+
expect(start).toBeGreaterThan(-1);
|
|
2511
|
+
return source
|
|
2512
|
+
.slice(start, source.indexOf('});', start))
|
|
2513
|
+
.replace(/\/\/.*$/gm, '')
|
|
2514
|
+
.replace(/\/\*[\s\S]*?\*\//g, '')
|
|
2515
|
+
.replace(/\s+/g, '')
|
|
2516
|
+
.replace(/,(?=[}\]])/g, '');
|
|
2517
|
+
};
|
|
2518
|
+
expect(sizeMap('TouchDateField.tsx')).toEqual(
|
|
2519
|
+
sizeMap('NativeDateField.tsx'),
|
|
2399
2520
|
);
|
|
2400
|
-
expect(
|
|
2401
|
-
sizeMap.match(
|
|
2402
|
-
/minBlockSize: \{default: null, '@media \(pointer: coarse\)': TOUCH_TARGET\}/g,
|
|
2403
|
-
),
|
|
2404
|
-
).toHaveLength(3);
|
|
2405
2521
|
});
|
|
2406
2522
|
|
|
2407
2523
|
it('floors the month arrows too — Button tops out at 36px', () => {
|
|
@@ -2523,16 +2639,14 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2523
2639
|
});
|
|
2524
2640
|
|
|
2525
2641
|
/**
|
|
2526
|
-
*
|
|
2642
|
+
* The footer action spans the sheet. A full-width primary is the shape a
|
|
2527
2643
|
* phone form ends with, and it puts the target under the thumb wherever
|
|
2528
2644
|
* the hand is.
|
|
2529
2645
|
*/
|
|
2530
|
-
it('spans the footer with its
|
|
2646
|
+
it('spans the footer with its action', () => {
|
|
2531
2647
|
const source = read('TouchDateField.tsx');
|
|
2532
|
-
//
|
|
2533
|
-
|
|
2534
|
-
// label length.
|
|
2535
|
-
expect(source.match(/width="100%"/g)).toHaveLength(3);
|
|
2648
|
+
// One per surface: Save on the calendar, Done on the wheels.
|
|
2649
|
+
expect(source.match(/width="100%"/g)).toHaveLength(2);
|
|
2536
2650
|
});
|
|
2537
2651
|
|
|
2538
2652
|
/**
|
|
@@ -2581,7 +2695,7 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2581
2695
|
expect(
|
|
2582
2696
|
styles.match(/transitionTimingFunction: easeVars\['--ease-standard'\]/g),
|
|
2583
2697
|
).toHaveLength(1);
|
|
2584
|
-
expect(styles.match(/transitionTimingFunction: 'linear'/g)).toHaveLength(
|
|
2698
|
+
expect(styles.match(/transitionTimingFunction: 'linear'/g)).toHaveLength(4);
|
|
2585
2699
|
});
|
|
2586
2700
|
|
|
2587
2701
|
/**
|
|
@@ -2599,9 +2713,9 @@ describe('DateInput — scroll CSS (definition-level)', () => {
|
|
|
2599
2713
|
const styles = source.slice(
|
|
2600
2714
|
source.indexOf('const styles = stylex.create('),
|
|
2601
2715
|
);
|
|
2602
|
-
// The arrows, the weekday row, the layer beneath, the layer
|
|
2603
|
-
// the chevron.
|
|
2604
|
-
expect(styles.match(/transitionDuration: SWAP_DURATION/g)).toHaveLength(
|
|
2716
|
+
// The arrows, Reset, the weekday row, the layer beneath, the layer
|
|
2717
|
+
// above, and the chevron.
|
|
2718
|
+
expect(styles.match(/transitionDuration: SWAP_DURATION/g)).toHaveLength(6);
|
|
2605
2719
|
// And no leftover hand-rolled timing beside them.
|
|
2606
2720
|
expect(styles).not.toContain('PANEL_FADE_MS');
|
|
2607
2721
|
expect(source).toContain(
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
*
|
|
26
26
|
* SYNC: When modified, update:
|
|
27
27
|
* - /packages/core/src/DateInput/TouchDateField.tsx
|
|
28
|
+
* - /packages/core/src/DateTimeInput/TouchDateTimeField.tsx
|
|
28
29
|
* - /packages/core/src/DateInput/DateInput.doc.mjs
|
|
29
30
|
* - /packages/core/src/DateInput/DateInputTouch.test.tsx
|
|
30
31
|
*/
|
|
@@ -39,7 +40,7 @@ import {
|
|
|
39
40
|
} from 'react';
|
|
40
41
|
import * as stylex from '@stylexjs/stylex';
|
|
41
42
|
import {useCalendarDays} from '../Calendar';
|
|
42
|
-
import {useDirection} from '../i18n';
|
|
43
|
+
import {useDirection, useLocale} from '../i18n';
|
|
43
44
|
import {
|
|
44
45
|
colorVars,
|
|
45
46
|
radiusVars,
|
|
@@ -763,6 +764,7 @@ function MonthPane({
|
|
|
763
764
|
onDayKeyDown,
|
|
764
765
|
onDayFocus,
|
|
765
766
|
}: MonthPaneProps) {
|
|
767
|
+
const locale = useLocale();
|
|
766
768
|
const {year, month} = fromMonthIndex(monthIndex);
|
|
767
769
|
const {weeks} = useCalendarDays({
|
|
768
770
|
year,
|
|
@@ -776,6 +778,7 @@ function MonthPane({
|
|
|
776
778
|
const monthLabel = plainDateFormat(
|
|
777
779
|
{year, month, day: 1},
|
|
778
780
|
DATE_FORMAT_MONTH_YEAR,
|
|
781
|
+
locale,
|
|
779
782
|
);
|
|
780
783
|
|
|
781
784
|
// Exactly one day per pane is tab-reachable, so Tab moves through the
|
|
@@ -836,6 +839,7 @@ function MonthPane({
|
|
|
836
839
|
aria-label={plainDateFormat(
|
|
837
840
|
day.date,
|
|
838
841
|
DATE_FORMAT_WITH_WEEKDAY,
|
|
842
|
+
locale,
|
|
839
843
|
)}
|
|
840
844
|
aria-disabled={isDisabled || undefined}
|
|
841
845
|
aria-current={isToday ? 'date' : undefined}
|
|
@@ -17,12 +17,14 @@
|
|
|
17
17
|
*
|
|
18
18
|
* SYNC: When modified, update:
|
|
19
19
|
* - /packages/core/src/DateInput/TouchDateField.tsx
|
|
20
|
+
* - /packages/core/src/DateTimeInput/TouchDateTimeField.tsx
|
|
20
21
|
* - /packages/core/src/DateInput/DateInput.doc.mjs
|
|
21
22
|
* - /packages/core/src/DateInput/DateInputTouch.test.tsx
|
|
22
23
|
*/
|
|
23
24
|
|
|
24
25
|
import {useMemo} from 'react';
|
|
25
26
|
import * as stylex from '@stylexjs/stylex';
|
|
27
|
+
import {useLocale} from '../i18n';
|
|
26
28
|
import {DATE_FORMAT_MONTH_ONLY, plainDateFormat} from '../utils';
|
|
27
29
|
import {spacingVars} from '../theme/tokens.stylex';
|
|
28
30
|
import {dateInputTouchGeometry} from './tokens.stylex';
|
|
@@ -66,6 +68,7 @@ export function MonthYearWheels({
|
|
|
66
68
|
yearLabel,
|
|
67
69
|
isActive = true,
|
|
68
70
|
}: MonthYearWheelsProps) {
|
|
71
|
+
const locale = useLocale();
|
|
69
72
|
const {year, month} = fromMonthIndex(monthIndex);
|
|
70
73
|
|
|
71
74
|
// Day 15 of a fixed year: no timezone can push it into an adjacent month
|
|
@@ -73,18 +76,18 @@ export function MonthYearWheels({
|
|
|
73
76
|
//
|
|
74
77
|
// `plainDateFormat` rather than a raw `Intl.DateTimeFormat`, which the
|
|
75
78
|
// shared lint rule forbids and which would duplicate the format vocabulary
|
|
76
|
-
// besides.
|
|
77
|
-
//
|
|
78
|
-
// is why this list is constant for the life of the component.
|
|
79
|
+
// besides. Recompute when the provider locale changes so the wheel labels
|
|
80
|
+
// stay in sync with the field and calendar.
|
|
79
81
|
const monthNames = useMemo(
|
|
80
82
|
() =>
|
|
81
83
|
Array.from({length: 12}, (_, index) =>
|
|
82
84
|
plainDateFormat(
|
|
83
85
|
{year: 2021, month: index + 1, day: 15},
|
|
84
86
|
DATE_FORMAT_MONTH_ONLY,
|
|
87
|
+
locale,
|
|
85
88
|
),
|
|
86
89
|
),
|
|
87
|
-
[],
|
|
90
|
+
[locale],
|
|
88
91
|
);
|
|
89
92
|
|
|
90
93
|
// Months outside the range stay on the wheel rather than vanishing: a list
|