@astryxdesign/core 0.1.8 → 0.1.9-canary.02ef052
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 +100 -0
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +6 -2
- package/dist/AppShell/AppShellMobileContext.d.ts +8 -0
- package/dist/AppShell/AppShellMobileContext.d.ts.map +1 -1
- package/dist/Avatar/Avatar.d.ts +58 -3
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +240 -53
- package/dist/Avatar/AvatarStatusDot.d.ts +35 -5
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Avatar/AvatarStatusDot.js +144 -19
- package/dist/AvatarGroup/AvatarGroup.d.ts +7 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +58 -6
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -0
- package/dist/Banner/Banner.d.ts +9 -1
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +33 -4
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +31 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +215 -6
- package/dist/Breadcrumbs/index.d.ts +6 -0
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +10 -1
- package/dist/Button/Button.d.ts +8 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +33 -4
- package/dist/ButtonGroup/ButtonGroup.d.ts +9 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +30 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +80 -11
- package/dist/Calendar/dayCellUtils.d.ts +4 -4
- package/dist/Calendar/dayCellUtils.js +3 -3
- package/dist/Calendar/styles.d.ts +30 -31
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +30 -31
- package/dist/Card/Card.d.ts +8 -2
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +28 -2
- package/dist/Carousel/Carousel.d.ts +4 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +46 -16
- package/dist/Chat/ChatComposer.d.ts +8 -0
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +46 -7
- package/dist/Chat/ChatComposerDrawer.d.ts +2 -0
- package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
- package/dist/Chat/ChatComposerDrawer.js +11 -1
- package/dist/Chat/ChatComposerInput.d.ts +20 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +36 -4
- package/dist/Chat/ChatContext.d.ts +33 -0
- package/dist/Chat/ChatContext.d.ts.map +1 -1
- package/dist/Chat/ChatContext.js +16 -2
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +4 -2
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +4 -4
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +4 -4
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +7 -1
- package/dist/Chat/ChatToolCalls.d.ts +5 -1
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +27 -11
- package/dist/Chat/index.d.ts +2 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/index.js +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts +2 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +22 -8
- package/dist/Chat/useSpeechRecognition.d.ts +0 -1
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +1 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +2 -2
- package/dist/CheckboxInput/CheckboxInput.js +5 -5
- package/dist/CheckboxList/CheckboxListItem.d.ts +20 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +11 -1
- package/dist/Citation/Citation.d.ts +22 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +20 -6
- package/dist/ClickableCard/ClickableCard.d.ts +9 -2
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +5 -2
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +22 -9
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +3 -1
- package/dist/CommandPalette/CommandPalette.d.ts +2 -2
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +45 -4
- package/dist/CommandPalette/CommandPaletteGroup.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteGroup.js +9 -2
- package/dist/CommandPalette/CommandPaletteInput.d.ts +7 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +6 -1
- package/dist/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +14 -5
- package/dist/ContextMenu/index.d.ts +1 -0
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +3 -1
- package/dist/DateInput/DateInput.d.ts +56 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +59 -21
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +23 -20
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +33 -19
- package/dist/Dialog/Dialog.d.ts +3 -0
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +57 -6
- package/dist/Dialog/DialogContext.d.ts +7 -0
- package/dist/Dialog/DialogContext.d.ts.map +1 -1
- package/dist/Dialog/DialogContext.js +2 -2
- package/dist/Dialog/DialogHeader.d.ts +5 -2
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +6 -1
- package/dist/Divider/Divider.js +1 -1
- package/dist/DropdownMenu/DropdownMenu.d.ts +6 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +22 -5
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +1 -2
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +5 -3
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +5 -2
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -2
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -2
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +4 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +427 -0
- package/dist/DropdownMenu/index.d.ts +10 -0
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +13 -0
- package/dist/DropdownMenu/menuItemHover.d.ts +23 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
- package/dist/DropdownMenu/menuItemHover.js +33 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts +8 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemRoles.js +10 -1
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +21 -6
- package/dist/Field/Field.d.ts +3 -1
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +6 -4
- package/dist/Field/FieldLabel.d.ts +1 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +43 -16
- package/dist/Field/inputStyles.stylex.d.ts +1 -0
- package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
- package/dist/Field/inputStyles.stylex.js +1 -0
- package/dist/FieldStatus/FieldStatus.d.ts +18 -0
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +60 -6
- package/dist/FileInput/FileInput.d.ts +10 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +54 -35
- package/dist/HoverCard/HoverCard.d.ts +9 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +2 -0
- package/dist/HoverCard/useHoverCard.d.ts +8 -0
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +17 -6
- package/dist/Icon/Icon.d.ts +22 -3
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +19 -3
- package/dist/Item/Item.d.ts +6 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +22 -1
- package/dist/Layer/useLayer.d.ts +6 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +2 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +19 -13
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +7 -0
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +6 -1
- package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
- package/dist/MobileNav/MobileNavToggle.js +4 -0
- package/dist/MultiSelector/MultiSelector.d.ts +9 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +104 -50
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +16 -0
- package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +10 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +22 -17
- package/dist/Outline/Outline.d.ts +0 -1
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +0 -1
- package/dist/OverflowList/OverflowList.d.ts +20 -3
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +29 -4
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +11 -3
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +3 -2
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +3 -9
- package/dist/PowerSearch/PowerSearch.d.ts +9 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +2 -0
- package/dist/PowerSearch/PowerSearchEditPopover.js +1 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/RadioList/RadioList.d.ts +2 -2
- package/dist/RadioList/RadioListItem.js +4 -4
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +2 -1
- package/dist/SelectableCard/SelectableCard.d.ts +9 -2
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +16 -13
- package/dist/Selector/Selector.d.ts +8 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +65 -19
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +16 -0
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +5 -5
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +13 -10
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +21 -8
- package/dist/SideNav/SideNavItem.d.ts +1 -1
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +12 -10
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +106 -36
- package/dist/Stack/stack.stylex.d.ts +9 -9
- package/dist/Switch/Switch.d.ts +8 -1
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +160 -91
- package/dist/TabList/Tab.js +2 -2
- package/dist/TabList/TabMenu.js +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +33 -6
- package/dist/Table/TableCell.js +3 -3
- package/dist/Table/TableHeaderCell.js +3 -3
- package/dist/Table/index.d.ts +2 -0
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +15 -11
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +36 -26
- package/dist/Table/plugins/rowStatus/index.d.ts +3 -0
- package/dist/Table/plugins/rowStatus/index.d.ts.map +1 -0
- package/dist/Table/plugins/rowStatus/index.js +3 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +60 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +145 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts +13 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +7 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +16 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +105 -12
- package/dist/Table/plugins/tree/useTableTreeState.d.ts +6 -0
- package/dist/Table/plugins/tree/useTableTreeState.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeState.js +22 -1
- package/dist/Table/types.d.ts +32 -0
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -3
- package/dist/TextArea/TextArea.d.ts +10 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +18 -19
- package/dist/TextInput/TextInput.d.ts +10 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +20 -17
- package/dist/Thumbnail/Thumbnail.d.ts +26 -5
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +97 -54
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +9 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +1 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.js +14 -0
- package/dist/TimeInput/TimeInput.d.ts +10 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +32 -21
- package/dist/Timestamp/Timestamp.d.ts +3 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +8 -6
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +2 -5
- package/dist/ToggleButton/ToggleButtonGroup.d.ts +0 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
- package/dist/Token/Token.d.ts +30 -3
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +17 -2
- package/dist/Token/index.d.ts +1 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.d.ts +10 -3
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +20 -6
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +17 -1
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +18 -8
- package/dist/TopNav/TopNavMegaMenu.js +10 -4
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +9 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +8 -1
- package/dist/TopNav/TopNavMenu.d.ts +2 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +68 -6
- package/dist/TreeList/TreeList.d.ts +12 -3
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +3 -0
- package/dist/TreeList/TreeListBranches.d.ts +5 -0
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +18 -10
- package/dist/TreeList/TreeListItem.d.ts +8 -2
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +59 -21
- package/dist/TreeList/TreeListTypes.d.ts +25 -1
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/TreeList/index.d.ts +2 -2
- package/dist/TreeList/index.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +20 -11
- package/dist/Typeahead/Typeahead.d.ts +9 -2
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +3 -1
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +20 -10
- package/dist/astryx.css +61 -39
- package/dist/astryx.umd.js +53 -53
- package/dist/astryx.umd.js.map +4 -4
- package/dist/authoring/doc.d.ts.map +1 -1
- package/dist/docs-types.d.ts +8 -0
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/hooks/computeOverflow.d.ts +47 -0
- package/dist/hooks/computeOverflow.d.ts.map +1 -0
- package/dist/hooks/computeOverflow.js +213 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/isRtlElement.d.ts +18 -0
- package/dist/hooks/isRtlElement.d.ts.map +1 -0
- package/dist/hooks/isRtlElement.js +27 -0
- package/dist/hooks/useDevWarning.d.ts +18 -0
- package/dist/hooks/useDevWarning.d.ts.map +1 -0
- package/dist/hooks/useDevWarning.js +49 -0
- package/dist/hooks/useGridFocus.d.ts +6 -1
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +12 -9
- package/dist/hooks/useInputStatusIcon.d.ts +38 -0
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
- package/dist/hooks/useInputStatusIcon.js +158 -0
- package/dist/hooks/useListFocus.d.ts +39 -1
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +54 -9
- package/dist/hooks/useOverflow.d.ts +19 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +36 -25
- package/dist/i18n/InternationalizationContext.d.ts +1 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.js +3 -0
- package/dist/i18n/InternationalizationProvider.d.ts +8 -1
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.js +5 -1
- package/dist/i18n/getLocaleDirection.d.ts +18 -0
- package/dist/i18n/getLocaleDirection.d.ts.map +1 -0
- package/dist/i18n/getLocaleDirection.js +29 -0
- package/dist/i18n/index.d.ts +6 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +7 -1
- package/dist/i18n/resolve.d.ts.map +1 -1
- package/dist/i18n/resolve.js +7 -18
- package/dist/i18n/useDirection.d.ts +2 -0
- package/dist/i18n/useDirection.d.ts.map +1 -0
- package/dist/i18n/useDirection.js +27 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +2 -7
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +13 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +51 -0
- package/dist/theme/hct.d.ts +0 -1
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.js +2 -1
- package/dist/utils/devWarning.d.ts +42 -0
- package/dist/utils/devWarning.d.ts.map +1 -0
- package/dist/utils/devWarning.js +88 -0
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -2
- package/dist/utils/plainDate.d.ts +30 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +65 -3
- package/dist/utils/rtlStyles.d.ts +24 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -0
- package/dist/utils/rtlStyles.js +27 -0
- package/dist/utils/types.d.ts +13 -0
- package/dist/utils/types.d.ts.map +1 -1
- package/locales/en.json +104 -0
- package/locales/fr-FR.json +14 -0
- package/locales/pseudo.json +78 -0
- package/package.json +6 -1
- package/src/AppShell/AppShell.tsx +6 -0
- package/src/AppShell/AppShellMobileContext.tsx +8 -0
- package/src/AppShell/useAppShellMobile.doc.mjs +8 -0
- package/src/Avatar/Avatar.doc.mjs +64 -5
- package/src/Avatar/Avatar.test.tsx +374 -1
- package/src/Avatar/Avatar.tsx +367 -69
- package/src/Avatar/AvatarStatusDot.doc.mjs +23 -12
- package/src/Avatar/AvatarStatusDot.test.tsx +284 -0
- package/src/Avatar/AvatarStatusDot.tsx +180 -21
- package/src/AvatarGroup/AvatarGroup.doc.mjs +2 -0
- package/src/AvatarGroup/AvatarGroup.test.tsx +141 -1
- package/src/AvatarGroup/AvatarGroup.tsx +58 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -0
- package/src/Banner/Banner.doc.mjs +9 -0
- package/src/Banner/Banner.test.tsx +30 -0
- package/src/Banner/Banner.tsx +53 -9
- package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +26 -0
- package/src/Breadcrumbs/BreadcrumbItem.tsx +333 -14
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +2 -0
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +335 -2
- package/src/Breadcrumbs/index.ts +31 -0
- package/src/Button/Button.doc.mjs +9 -4
- package/src/Button/Button.test.tsx +49 -0
- package/src/Button/Button.tsx +27 -3
- package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -0
- package/src/ButtonGroup/ButtonGroup.test.tsx +37 -0
- package/src/ButtonGroup/ButtonGroup.tsx +32 -0
- package/src/Calendar/Calendar.doc.mjs +12 -1
- package/src/Calendar/Calendar.test.tsx +362 -19
- package/src/Calendar/Calendar.tsx +111 -32
- package/src/Calendar/dayCellUtils.test.ts +23 -18
- package/src/Calendar/dayCellUtils.ts +3 -3
- package/src/Calendar/styles.ts +33 -39
- package/src/Card/Card.doc.mjs +9 -0
- package/src/Card/Card.test.tsx +21 -3
- package/src/Card/Card.tsx +35 -2
- package/src/Carousel/Carousel.doc.mjs +1 -0
- package/src/Carousel/Carousel.test.tsx +53 -0
- package/src/Carousel/Carousel.tsx +59 -10
- package/src/Chat/ChatComposer.doc.mjs +12 -3
- package/src/Chat/ChatComposer.test.tsx +115 -0
- package/src/Chat/ChatComposer.tsx +73 -9
- package/src/Chat/ChatComposerDrawer.test.tsx +61 -0
- package/src/Chat/ChatComposerDrawer.tsx +11 -1
- package/src/Chat/ChatComposerInput.doc.mjs +7 -0
- package/src/Chat/ChatComposerInput.test.tsx +103 -0
- package/src/Chat/ChatComposerInput.tsx +51 -5
- package/src/Chat/ChatContext.tsx +37 -10
- package/src/Chat/ChatDictationButton.tsx +11 -2
- package/src/Chat/ChatLayout.tsx +7 -5
- package/src/Chat/ChatLayoutScrollButton.tsx +7 -2
- package/src/Chat/ChatMessageMetadata.tsx +1 -2
- package/src/Chat/ChatSendButton.tsx +11 -1
- package/src/Chat/ChatToolCalls.test.tsx +64 -0
- package/src/Chat/ChatToolCalls.tsx +33 -5
- package/src/Chat/index.ts +5 -1
- package/src/Chat/useChatStreamScroll.test.tsx +49 -0
- package/src/Chat/useChatStreamScroll.ts +27 -10
- package/src/Chat/useSpeechRecognition.ts +1 -1
- package/src/Chat/useTriggerMenu.tsx +4 -2
- package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +32 -1
- package/src/CheckboxInput/CheckboxInput.tsx +5 -5
- package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
- package/src/CheckboxList/CheckboxList.test.tsx +81 -3
- package/src/CheckboxList/CheckboxListItem.doc.mjs +33 -5
- package/src/CheckboxList/CheckboxListItem.tsx +41 -5
- package/src/Citation/Citation.doc.mjs +4 -3
- package/src/Citation/Citation.test.tsx +97 -0
- package/src/Citation/Citation.tsx +43 -11
- package/src/ClickableCard/ClickableCard.doc.mjs +2 -0
- package/src/ClickableCard/ClickableCard.test.tsx +34 -0
- package/src/ClickableCard/ClickableCard.tsx +13 -3
- package/src/CodeBlock/CodeBlock.test.tsx +56 -0
- package/src/CodeBlock/CodeBlock.tsx +45 -10
- package/src/Collapsible/Collapsible.doc.mjs +1 -0
- package/src/Collapsible/Collapsible.test.tsx +7 -0
- package/src/Collapsible/Collapsible.tsx +16 -6
- package/src/CommandPalette/CommandPalette.doc.mjs +1 -0
- package/src/CommandPalette/CommandPalette.test.tsx +95 -1
- package/src/CommandPalette/CommandPalette.tsx +44 -3
- package/src/CommandPalette/CommandPaletteGroup.test.tsx +71 -0
- package/src/CommandPalette/CommandPaletteGroup.tsx +12 -1
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +26 -9
- package/src/CommandPalette/CommandPaletteInput.test.tsx +34 -0
- package/src/CommandPalette/CommandPaletteInput.tsx +11 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/ContextMenu/ContextMenu.test.tsx +235 -0
- package/src/ContextMenu/ContextMenu.tsx +13 -11
- package/src/ContextMenu/index.ts +5 -0
- package/src/DateInput/DateInput.doc.mjs +41 -0
- package/src/DateInput/DateInput.test.tsx +338 -0
- package/src/DateInput/DateInput.tsx +119 -32
- package/src/DateInput/index.ts +1 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
- package/src/DateRangeInput/DateRangeInput.tsx +42 -30
- package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
- package/src/DateTimeInput/DateTimeInput.test.tsx +147 -0
- package/src/DateTimeInput/DateTimeInput.tsx +58 -41
- package/src/Dialog/Dialog.doc.mjs +2 -2
- package/src/Dialog/Dialog.test.tsx +77 -4
- package/src/Dialog/Dialog.tsx +89 -5
- package/src/Dialog/DialogContext.ts +9 -2
- package/src/Dialog/DialogHeader.doc.mjs +2 -2
- package/src/Dialog/DialogHeader.tsx +9 -2
- package/src/Divider/Divider.tsx +2 -2
- package/src/DropdownMenu/DropdownMenu.test.tsx +229 -0
- package/src/DropdownMenu/DropdownMenu.tsx +31 -12
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +9 -4
- package/src/DropdownMenu/DropdownMenuItem.tsx +9 -3
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +1 -2
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +8 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +635 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +553 -0
- package/src/DropdownMenu/index.ts +16 -0
- package/src/DropdownMenu/menuItemHover.ts +39 -0
- package/src/DropdownMenu/menuItemRoles.ts +9 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +29 -15
- package/src/Field/Field.test.tsx +57 -12
- package/src/Field/Field.tsx +20 -14
- package/src/Field/FieldLabel.tsx +9 -1
- package/src/Field/inputStyles.stylex.ts +2 -0
- package/src/FieldStatus/FieldStatus.doc.mjs +17 -5
- package/src/FieldStatus/FieldStatus.test.tsx +150 -40
- package/src/FieldStatus/FieldStatus.tsx +69 -5
- package/src/FileInput/FileInput.doc.mjs +23 -2
- package/src/FileInput/FileInput.test.tsx +135 -12
- package/src/FileInput/FileInput.tsx +65 -51
- package/src/HoverCard/HoverCard.doc.mjs +13 -0
- package/src/HoverCard/HoverCard.test.tsx +21 -2
- package/src/HoverCard/HoverCard.tsx +11 -0
- package/src/HoverCard/useHoverCard.doc.mjs +2 -0
- package/src/HoverCard/useHoverCard.tsx +39 -5
- package/src/Icon/Icon.doc.mjs +16 -2
- package/src/Icon/Icon.test.tsx +89 -0
- package/src/Icon/Icon.tsx +58 -5
- package/src/IconButton/IconButton.doc.mjs +8 -0
- package/src/IconButton/IconButton.test.tsx +15 -18
- package/src/Item/Item.test.tsx +40 -18
- package/src/Item/Item.tsx +38 -2
- package/src/Layer/useLayer.tsx +8 -0
- package/src/Lightbox/Lightbox.tsx +15 -7
- package/src/List/List.test.tsx +9 -8
- package/src/Markdown/Markdown.test.tsx +21 -0
- package/src/Markdown/Markdown.tsx +4 -0
- package/src/MobileNav/MobileNav.tsx +12 -1
- package/src/MobileNav/MobileNavToggle.test.tsx +116 -0
- package/src/MobileNav/MobileNavToggle.tsx +9 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +24 -2
- package/src/MultiSelector/MultiSelector.test.tsx +498 -3
- package/src/MultiSelector/MultiSelector.tsx +149 -65
- package/src/MultiSelector/hooks.ts +17 -0
- package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
- package/src/NumberInput/NumberInput.doc.mjs +21 -0
- package/src/NumberInput/NumberInput.test.tsx +82 -7
- package/src/NumberInput/NumberInput.tsx +36 -28
- package/src/Outline/Outline.tsx +0 -1
- package/src/OverflowList/OverflowList.doc.mjs +39 -6
- package/src/OverflowList/OverflowList.test.tsx +111 -0
- package/src/OverflowList/OverflowList.tsx +48 -8
- package/src/Pagination/Pagination.tsx +11 -3
- package/src/Popover/Popover.tsx +7 -4
- package/src/Popover/usePopover.tsx +9 -13
- package/src/PowerSearch/PowerSearch.doc.mjs +29 -0
- package/src/PowerSearch/PowerSearch.test.tsx +43 -0
- package/src/PowerSearch/PowerSearch.tsx +10 -1
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +67 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +1 -1
- package/src/PowerSearch/usePowerSearchSource.ts +1 -2
- package/src/RadioList/RadioList.doc.mjs +6 -0
- package/src/RadioList/RadioList.tsx +2 -2
- package/src/RadioList/RadioListItem.tsx +4 -4
- package/src/SegmentedControl/SegmentedControlItem.tsx +2 -0
- package/src/SelectableCard/SelectableCard.doc.mjs +2 -0
- package/src/SelectableCard/SelectableCard.test.tsx +46 -4
- package/src/SelectableCard/SelectableCard.tsx +29 -16
- package/src/Selector/Selector.doc.mjs +15 -0
- package/src/Selector/Selector.test.tsx +417 -0
- package/src/Selector/Selector.tsx +86 -21
- package/src/Selector/hooks.ts +17 -0
- package/src/SideNav/SideNav.test.tsx +119 -3
- package/src/SideNav/SideNav.tsx +1 -8
- package/src/SideNav/SideNavCollapseButton.tsx +15 -8
- package/src/SideNav/SideNavHeading.tsx +24 -8
- package/src/SideNav/SideNavItem.tsx +10 -4
- package/src/Slider/Slider.doc.mjs +6 -0
- package/src/Slider/Slider.test.tsx +314 -13
- package/src/Slider/Slider.tsx +117 -28
- package/src/Switch/Switch.doc.mjs +142 -42
- package/src/Switch/Switch.test.tsx +54 -1
- package/src/Switch/Switch.tsx +90 -33
- package/src/TabList/Tab.tsx +2 -2
- package/src/TabList/TabMenu.tsx +2 -2
- package/src/Table/BaseTable.tsx +37 -7
- package/src/Table/Table.doc.mjs +11 -0
- package/src/Table/Table.test.tsx +85 -0
- package/src/Table/TableCell.tsx +3 -3
- package/src/Table/TableHeaderCell.tsx +3 -3
- package/src/Table/index.ts +5 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +15 -8
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -17
- package/src/Table/plugins/rowStatus/index.ts +7 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +138 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +189 -0
- package/src/Table/plugins/selection/useTableSelection.test.tsx +77 -3
- package/src/Table/plugins/selection/useTableSelection.tsx +22 -1
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -1
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +135 -3
- package/src/Table/plugins/tree/useTableTreeData.tsx +139 -8
- package/src/Table/plugins/tree/useTableTreeState.test.tsx +104 -0
- package/src/Table/plugins/tree/useTableTreeState.tsx +46 -2
- package/src/Table/types.ts +33 -0
- package/src/Table/useBaseTablePlugins.ts +10 -6
- package/src/Table/useTableRowStatus.doc.mjs +30 -0
- package/src/Table/useTableSelection.doc.mjs +65 -14
- package/src/Table/useTableTreeData.doc.mjs +29 -0
- package/src/Table/useTableTreeState.doc.mjs +2 -2
- package/src/TextArea/TextArea.doc.mjs +21 -0
- package/src/TextArea/TextArea.test.tsx +32 -1
- package/src/TextArea/TextArea.tsx +27 -26
- package/src/TextInput/TextInput.doc.mjs +21 -0
- package/src/TextInput/TextInput.test.tsx +150 -0
- package/src/TextInput/TextInput.tsx +28 -25
- package/src/Thumbnail/Thumbnail.doc.mjs +19 -10
- package/src/Thumbnail/Thumbnail.test.tsx +98 -7
- package/src/Thumbnail/Thumbnail.tsx +142 -42
- package/src/Thumbnail/thumbnail.markers.stylex.ts +12 -0
- package/src/TimeInput/TimeInput.doc.mjs +21 -0
- package/src/TimeInput/TimeInput.test.tsx +99 -1
- package/src/TimeInput/TimeInput.tsx +43 -31
- package/src/Timestamp/Timestamp.doc.mjs +4 -4
- package/src/Timestamp/Timestamp.test.tsx +32 -0
- package/src/Timestamp/Timestamp.tsx +28 -8
- package/src/Toast/useToast.tsx +7 -8
- package/src/ToggleButton/ToggleButtonGroup.tsx +1 -1
- package/src/Token/Token.test.tsx +21 -15
- package/src/Token/Token.tsx +31 -14
- package/src/Token/index.ts +1 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +38 -2
- package/src/Tokenizer/Tokenizer.test.tsx +206 -2
- package/src/Tokenizer/Tokenizer.tsx +30 -6
- package/src/Tooltip/Tooltip.test.tsx +46 -0
- package/src/Tooltip/useTooltip.tsx +20 -0
- package/src/TopNav/TopNav.test.tsx +125 -1
- package/src/TopNav/TopNavHeading.tsx +24 -8
- package/src/TopNav/TopNavMegaMenu.test.tsx +149 -1
- package/src/TopNav/TopNavMegaMenu.tsx +10 -4
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +3 -3
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +19 -2
- package/src/TopNav/TopNavMenu.test.tsx +118 -4
- package/src/TopNav/TopNavMenu.tsx +83 -5
- package/src/TreeList/TreeList.doc.mjs +28 -0
- package/src/TreeList/TreeList.test.tsx +272 -0
- package/src/TreeList/TreeList.tsx +23 -2
- package/src/TreeList/TreeListBranches.tsx +24 -8
- package/src/TreeList/TreeListItem.tsx +84 -22
- package/src/TreeList/TreeListTypes.ts +27 -1
- package/src/TreeList/index.ts +2 -2
- package/src/Typeahead/BaseTypeahead.tsx +30 -15
- package/src/Typeahead/Typeahead.doc.mjs +13 -0
- package/src/Typeahead/Typeahead.test.tsx +50 -0
- package/src/Typeahead/Typeahead.tsx +11 -1
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/__tests__/inputWidthContract.test.tsx +62 -0
- package/src/authoring/doc.ts +1 -3
- package/src/doc-mjs.d.ts +19 -0
- package/src/docs-types.ts +5 -0
- package/src/hooks/computeOverflow.test.ts +422 -0
- package/src/hooks/computeOverflow.ts +290 -0
- package/src/hooks/index.ts +8 -0
- package/src/hooks/isRtlElement.ts +27 -0
- package/src/hooks/useDevWarning.test.tsx +45 -0
- package/src/hooks/useDevWarning.ts +54 -0
- package/src/hooks/useGridFocus.doc.mjs +3 -3
- package/src/hooks/useGridFocus.test.tsx +41 -0
- package/src/hooks/useGridFocus.ts +21 -10
- package/src/hooks/useInputStatusIcon.test.tsx +162 -0
- package/src/hooks/useInputStatusIcon.tsx +224 -0
- package/src/hooks/useListFocus.doc.mjs +25 -3
- package/src/hooks/useListFocus.test.tsx +153 -1
- package/src/hooks/useListFocus.ts +102 -9
- package/src/hooks/useOverflow.test.ts +96 -4
- package/src/hooks/useOverflow.ts +74 -33
- package/src/i18n/InternationalizationContext.ts +4 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +99 -2
- package/src/i18n/InternationalizationProvider.tsx +12 -2
- package/src/i18n/__tests__/getLocaleDirection.test.ts +40 -0
- package/src/i18n/__tests__/useDirection.test.tsx +66 -0
- package/src/i18n/getLocaleDirection.ts +29 -0
- package/src/i18n/index.ts +6 -0
- package/src/i18n/resolve.ts +9 -21
- package/src/i18n/useDirection.ts +29 -0
- package/src/reset.css +0 -26
- package/src/reset.test.ts +60 -0
- package/src/theme/Theme.tsx +11 -14
- package/src/theme/derivedVarRegistry.test.ts +1 -0
- package/src/theme/derivedVarRegistry.ts +6 -0
- package/src/theme/generateThemeRules.test.ts +107 -0
- package/src/theme/generateThemeRules.ts +56 -0
- package/src/theme/hct.ts +1 -1
- package/src/theme/syntax/defineSyntaxTheme.ts +5 -6
- package/src/utils/devWarning.test.ts +56 -0
- package/src/utils/devWarning.ts +102 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/plainDate.test.ts +46 -6
- package/src/utils/plainDate.ts +69 -3
- package/src/utils/rtlStyles.ts +27 -0
- package/src/utils/types.ts +14 -0
|
@@ -9,10 +9,15 @@
|
|
|
9
9
|
* SYNC: When Switch.tsx changes, update tests to match new behavior
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import {describe, it, expect, vi, beforeEach} from 'vitest';
|
|
12
|
+
import {describe, it, expect, vi, beforeEach, afterEach} from 'vitest';
|
|
13
13
|
import {render, screen, fireEvent, waitFor} from '@testing-library/react';
|
|
14
14
|
import userEvent from '@testing-library/user-event';
|
|
15
15
|
import {Switch} from './Switch';
|
|
16
|
+
import {__resetLiveRegionsForTest} from '../hooks/useAnnounce';
|
|
17
|
+
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
__resetLiveRegionsForTest();
|
|
20
|
+
});
|
|
16
21
|
|
|
17
22
|
// Mock showPopover/hidePopover (not implemented in jsdom) so the tooltip layer
|
|
18
23
|
// reflects its open state via a `popover-open` attribute the tests can assert.
|
|
@@ -63,6 +68,28 @@ describe('Switch', () => {
|
|
|
63
68
|
expect(screen.getByRole('switch')).toBeChecked();
|
|
64
69
|
});
|
|
65
70
|
|
|
71
|
+
it('renders with custom size prop (sm / md)', () => {
|
|
72
|
+
const {rerender} = render(
|
|
73
|
+
<Switch
|
|
74
|
+
label="Small switch"
|
|
75
|
+
value={false}
|
|
76
|
+
size="sm"
|
|
77
|
+
onChange={() => {}}
|
|
78
|
+
/>,
|
|
79
|
+
);
|
|
80
|
+
expect(screen.getByRole('switch')).toBeInTheDocument();
|
|
81
|
+
|
|
82
|
+
rerender(
|
|
83
|
+
<Switch
|
|
84
|
+
label="Medium switch"
|
|
85
|
+
value={false}
|
|
86
|
+
size="md"
|
|
87
|
+
onChange={() => {}}
|
|
88
|
+
/>,
|
|
89
|
+
);
|
|
90
|
+
expect(screen.getByRole('switch')).toBeInTheDocument();
|
|
91
|
+
});
|
|
92
|
+
|
|
66
93
|
it('calls onChange with new checked state when clicked', async () => {
|
|
67
94
|
const user = userEvent.setup();
|
|
68
95
|
const handleChange = vi.fn();
|
|
@@ -324,6 +351,32 @@ describe('Switch', () => {
|
|
|
324
351
|
expect(describedBy).toBeTruthy();
|
|
325
352
|
});
|
|
326
353
|
|
|
354
|
+
// Regression: the status is conditionally mounted, so it must be announced
|
|
355
|
+
// through the persistent useAnnounce live region — a live region born
|
|
356
|
+
// together with its content is not reliably announced.
|
|
357
|
+
it('announces a status message that appears after mount', async () => {
|
|
358
|
+
const {rerender} = render(
|
|
359
|
+
<Switch label="Enable notifications" value={false} onChange={() => {}} />,
|
|
360
|
+
);
|
|
361
|
+
expect(
|
|
362
|
+
document.querySelector('[data-astryx-live-region="assertive"]'),
|
|
363
|
+
).toBeNull();
|
|
364
|
+
|
|
365
|
+
rerender(
|
|
366
|
+
<Switch
|
|
367
|
+
label="Enable notifications"
|
|
368
|
+
value={false}
|
|
369
|
+
onChange={() => {}}
|
|
370
|
+
status={{type: 'error', message: 'Failed to save setting'}}
|
|
371
|
+
/>,
|
|
372
|
+
);
|
|
373
|
+
await waitFor(() => {
|
|
374
|
+
expect(
|
|
375
|
+
document.querySelector('[data-astryx-live-region="assertive"]'),
|
|
376
|
+
).toHaveTextContent('Failed to save setting');
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
|
|
327
380
|
it('calls onFocus and onBlur callbacks', async () => {
|
|
328
381
|
const user = userEvent.setup();
|
|
329
382
|
const handleFocus = vi.fn();
|
package/src/Switch/Switch.tsx
CHANGED
|
@@ -47,17 +47,75 @@ import type {SizeValue} from '../utils/types';
|
|
|
47
47
|
import {themeProps} from '../utils/themeProps';
|
|
48
48
|
import {VisuallyHidden} from '../VisuallyHidden';
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
const wrapperSizeStyles = stylex.create({
|
|
51
|
+
sm: {
|
|
52
|
+
width: 32,
|
|
53
|
+
height: 20,
|
|
54
|
+
},
|
|
55
|
+
md: {
|
|
56
|
+
width: 40,
|
|
57
|
+
height: 24,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const inputSizeStyles = stylex.create({
|
|
62
|
+
sm: {
|
|
63
|
+
width: 32,
|
|
64
|
+
height: 20,
|
|
65
|
+
},
|
|
66
|
+
md: {
|
|
67
|
+
width: 40,
|
|
68
|
+
height: 24,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const trackSizeStyles = stylex.create({
|
|
73
|
+
sm: {
|
|
74
|
+
width: 32,
|
|
75
|
+
height: 20,
|
|
76
|
+
padding: 2,
|
|
77
|
+
},
|
|
78
|
+
md: {
|
|
79
|
+
width: 40,
|
|
80
|
+
height: 24,
|
|
81
|
+
padding: 4,
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const thumbOffSizeStyles = stylex.create({
|
|
86
|
+
sm: {
|
|
87
|
+
width: 14,
|
|
88
|
+
height: 14,
|
|
89
|
+
transform: 'translateX(0)',
|
|
90
|
+
},
|
|
91
|
+
md: {
|
|
92
|
+
width: 16,
|
|
93
|
+
height: 16,
|
|
94
|
+
transform: 'translateX(0)',
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
const thumbOnSizeStyles = stylex.create({
|
|
99
|
+
sm: {
|
|
100
|
+
width: 16,
|
|
101
|
+
height: 16,
|
|
102
|
+
transform: 'translateX(12px)',
|
|
103
|
+
},
|
|
104
|
+
md: {
|
|
105
|
+
width: 20,
|
|
106
|
+
height: 20,
|
|
107
|
+
transform: 'translateX(14px)',
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
const labelWrapperSizeStyles = stylex.create({
|
|
112
|
+
sm: {
|
|
113
|
+
minHeight: 20,
|
|
114
|
+
},
|
|
115
|
+
md: {
|
|
116
|
+
minHeight: 24,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
61
119
|
|
|
62
120
|
const styles = stylex.create({
|
|
63
121
|
container: {
|
|
@@ -77,8 +135,6 @@ const styles = stylex.create({
|
|
|
77
135
|
display: 'flex',
|
|
78
136
|
alignItems: 'center',
|
|
79
137
|
flexShrink: 0,
|
|
80
|
-
width: SWITCH_WIDTH,
|
|
81
|
-
height: SWITCH_HEIGHT,
|
|
82
138
|
isolation: 'isolate',
|
|
83
139
|
},
|
|
84
140
|
input: {
|
|
@@ -88,8 +144,6 @@ const styles = stylex.create({
|
|
|
88
144
|
opacity: 0,
|
|
89
145
|
cursor: 'pointer',
|
|
90
146
|
zIndex: 1,
|
|
91
|
-
width: SWITCH_WIDTH,
|
|
92
|
-
height: SWITCH_HEIGHT,
|
|
93
147
|
},
|
|
94
148
|
inputDisabled: {
|
|
95
149
|
cursor: 'not-allowed',
|
|
@@ -100,9 +154,6 @@ const styles = stylex.create({
|
|
|
100
154
|
track: {
|
|
101
155
|
display: 'flex',
|
|
102
156
|
alignItems: 'center',
|
|
103
|
-
width: SWITCH_WIDTH,
|
|
104
|
-
height: SWITCH_HEIGHT,
|
|
105
|
-
padding: TRACK_PADDING,
|
|
106
157
|
borderRadius: radiusVars['--radius-full'],
|
|
107
158
|
transitionProperty: 'background-color',
|
|
108
159
|
transitionDuration: {
|
|
@@ -159,22 +210,11 @@ const styles = stylex.create({
|
|
|
159
210
|
},
|
|
160
211
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
161
212
|
},
|
|
162
|
-
thumbOff: {
|
|
163
|
-
width: THUMB_SIZE_OFF,
|
|
164
|
-
height: THUMB_SIZE_OFF,
|
|
165
|
-
transform: 'translateX(0)',
|
|
166
|
-
},
|
|
167
|
-
thumbOn: {
|
|
168
|
-
width: THUMB_SIZE_ON,
|
|
169
|
-
height: THUMB_SIZE_ON,
|
|
170
|
-
transform: `translateX(${THUMB_TRAVEL_ON}px)`,
|
|
171
|
-
},
|
|
172
213
|
labelWrapper: {
|
|
173
214
|
display: 'flex',
|
|
174
215
|
flexDirection: 'column',
|
|
175
216
|
gap: spacingVars['--spacing-0-5'],
|
|
176
217
|
justifyContent: 'center',
|
|
177
|
-
minHeight: SWITCH_HEIGHT,
|
|
178
218
|
},
|
|
179
219
|
description: {
|
|
180
220
|
fontFamily: typographyVars['--font-family-body'],
|
|
@@ -313,6 +353,13 @@ export interface SwitchProps extends Omit<BaseProps, 'onChange'> {
|
|
|
313
353
|
* When set with a message, displays a colored message box below the switch.
|
|
314
354
|
*/
|
|
315
355
|
status?: InputStatus;
|
|
356
|
+
/**
|
|
357
|
+
* Size variant controlling track and thumb dimensions.
|
|
358
|
+
* - 'sm': 34x20px (matches sm checkbox/radio vertical rhythm)
|
|
359
|
+
* - 'md': 40x24px (default, matches md checkbox/radio vertical rhythm)
|
|
360
|
+
* @default 'md'
|
|
361
|
+
*/
|
|
362
|
+
size?: 'sm' | 'md';
|
|
316
363
|
}
|
|
317
364
|
|
|
318
365
|
// Dynamic field width (number -> px, string used as-is).
|
|
@@ -358,6 +405,7 @@ export function Switch({
|
|
|
358
405
|
labelPosition = 'end',
|
|
359
406
|
labelSpacing = 'hug',
|
|
360
407
|
status,
|
|
408
|
+
size = 'md',
|
|
361
409
|
width,
|
|
362
410
|
xstyle,
|
|
363
411
|
className,
|
|
@@ -410,7 +458,7 @@ export function Switch({
|
|
|
410
458
|
describedByParts.length > 0 ? describedByParts.join(' ') : undefined;
|
|
411
459
|
|
|
412
460
|
const switchElement = (
|
|
413
|
-
<div {...stylex.props(styles.switchWrapper)}>
|
|
461
|
+
<div {...stylex.props(styles.switchWrapper, wrapperSizeStyles[size])}>
|
|
414
462
|
<input
|
|
415
463
|
ref={mergeRefs(ref, disabledMessageTooltip.positionRef)}
|
|
416
464
|
id={id}
|
|
@@ -447,6 +495,7 @@ export function Switch({
|
|
|
447
495
|
aria-busy={isBusy || undefined}
|
|
448
496
|
{...stylex.props(
|
|
449
497
|
styles.input,
|
|
498
|
+
inputSizeStyles[size],
|
|
450
499
|
isDisabled && styles.inputDisabled,
|
|
451
500
|
isBusy && styles.inputBusy,
|
|
452
501
|
)}
|
|
@@ -457,9 +506,11 @@ export function Switch({
|
|
|
457
506
|
themeProps('switch', {
|
|
458
507
|
checked: isOn ? 'checked' : null,
|
|
459
508
|
disabled: isDisabled ? 'disabled' : null,
|
|
509
|
+
size,
|
|
460
510
|
}),
|
|
461
511
|
stylex.props(
|
|
462
512
|
styles.track,
|
|
513
|
+
trackSizeStyles[size],
|
|
463
514
|
isOn ? styles.trackOn : styles.trackOff,
|
|
464
515
|
!isDisabled && styles.trackFocus,
|
|
465
516
|
isDisabled && styles.trackDisabled,
|
|
@@ -468,8 +519,14 @@ export function Switch({
|
|
|
468
519
|
)}>
|
|
469
520
|
<div
|
|
470
521
|
{...mergeProps(
|
|
471
|
-
themeProps('switch-thumb', {
|
|
472
|
-
|
|
522
|
+
themeProps('switch-thumb', {
|
|
523
|
+
checked: isOn ? 'checked' : null,
|
|
524
|
+
size,
|
|
525
|
+
}),
|
|
526
|
+
stylex.props(
|
|
527
|
+
styles.thumb,
|
|
528
|
+
isOn ? thumbOnSizeStyles[size] : thumbOffSizeStyles[size],
|
|
529
|
+
),
|
|
473
530
|
)}>
|
|
474
531
|
{isBusy && <Spinner size="sm" />}
|
|
475
532
|
</div>
|
|
@@ -479,7 +536,7 @@ export function Switch({
|
|
|
479
536
|
);
|
|
480
537
|
|
|
481
538
|
const labelElement = (
|
|
482
|
-
<div {...stylex.props(styles.labelWrapper)}>
|
|
539
|
+
<div {...stylex.props(styles.labelWrapper, labelWrapperSizeStyles[size])}>
|
|
483
540
|
<FieldLabel
|
|
484
541
|
label={label}
|
|
485
542
|
inputID={id}
|
package/src/TabList/Tab.tsx
CHANGED
|
@@ -143,8 +143,8 @@ const styles = stylex.create({
|
|
|
143
143
|
// with a bottom divider — that ancestor sets `--_tab-indicator-bottom`
|
|
144
144
|
// to drop the indicator onto the rail beneath the reserved gap.
|
|
145
145
|
bottom: 'var(--_tab-indicator-bottom, -1px)',
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
insetInlineStart: spacingVars['--spacing-3'],
|
|
147
|
+
insetInlineEnd: spacingVars['--spacing-3'],
|
|
148
148
|
height: '2px',
|
|
149
149
|
borderRadius: radiusVars['--radius-full'],
|
|
150
150
|
pointerEvents: 'none',
|
package/src/TabList/TabMenu.tsx
CHANGED
|
@@ -126,8 +126,8 @@ const styles = stylex.create({
|
|
|
126
126
|
// drops onto the divider rail when an ancestor (TabList `hasDivider` or a
|
|
127
127
|
// Toolbar with a bottom divider) sets `--_tab-indicator-bottom`.
|
|
128
128
|
bottom: 'var(--_tab-indicator-bottom, -1px)',
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
insetInlineStart: spacingVars['--spacing-3'],
|
|
130
|
+
insetInlineEnd: spacingVars['--spacing-3'],
|
|
131
131
|
height: '2px',
|
|
132
132
|
borderRadius: radiusVars['--radius-full'],
|
|
133
133
|
pointerEvents: 'none',
|
package/src/Table/BaseTable.tsx
CHANGED
|
@@ -42,6 +42,7 @@ import {TableHeaderCell} from './TableHeaderCell';
|
|
|
42
42
|
import {TableHeader} from './TableHeader';
|
|
43
43
|
import {TableBody} from './TableBody';
|
|
44
44
|
import {mergeProps} from '../utils';
|
|
45
|
+
import {devError} from '../utils/devWarning';
|
|
45
46
|
import {EmptyState} from '../EmptyState';
|
|
46
47
|
import {Text} from '../Text';
|
|
47
48
|
import {themeProps} from '../utils/themeProps';
|
|
@@ -92,10 +93,7 @@ function applyPlugins<TPlugin, TProps, TArgs extends unknown[]>(
|
|
|
92
93
|
try {
|
|
93
94
|
return transform(acc, ...args);
|
|
94
95
|
} catch (error) {
|
|
95
|
-
|
|
96
|
-
`[Table] Plugin at index ${index} threw in transform:`,
|
|
97
|
-
error,
|
|
98
|
-
);
|
|
96
|
+
devError('Table', `Plugin at index ${index} threw in transform:`, error);
|
|
99
97
|
return acc;
|
|
100
98
|
}
|
|
101
99
|
}, initial);
|
|
@@ -136,6 +134,12 @@ interface TableRowProps<T extends Record<string, unknown>> {
|
|
|
136
134
|
textOverflow: 'wrap' | 'truncate';
|
|
137
135
|
RowComponent: React.ComponentType<TableRowComponentProps>;
|
|
138
136
|
CellComponent: React.ComponentType<TableCellComponentProps>;
|
|
137
|
+
/**
|
|
138
|
+
* 1-based ARIA row index for this row's position in the full dataset.
|
|
139
|
+
* `undefined` when the table hasn't opted into ARIA row indexing, in which
|
|
140
|
+
* case no `aria-rowindex` is emitted (native table semantics).
|
|
141
|
+
*/
|
|
142
|
+
ariaRowIndex?: number;
|
|
139
143
|
}
|
|
140
144
|
|
|
141
145
|
/**
|
|
@@ -152,6 +156,7 @@ function TableRowInner<T extends Record<string, unknown>>({
|
|
|
152
156
|
textOverflow,
|
|
153
157
|
RowComponent,
|
|
154
158
|
CellComponent,
|
|
159
|
+
ariaRowIndex,
|
|
155
160
|
}: TableRowProps<T>): ReactElement {
|
|
156
161
|
// Build cells first
|
|
157
162
|
const cells = columns.map((col, columnIndex) => {
|
|
@@ -213,12 +218,14 @@ function TableRowInner<T extends Record<string, unknown>>({
|
|
|
213
218
|
);
|
|
214
219
|
});
|
|
215
220
|
|
|
216
|
-
// Apply plugin transforms for row (with pre-rendered children)
|
|
221
|
+
// Apply plugin transforms for row (with pre-rendered children).
|
|
222
|
+
// Seed `aria-rowindex` (when the table opts into ARIA row indexing) as a
|
|
223
|
+
// base htmlProp so plugins compose over it and can still override.
|
|
217
224
|
const rowRenderProps = applyPlugins(
|
|
218
225
|
plugins,
|
|
219
226
|
p => p.transformBodyRow,
|
|
220
227
|
{
|
|
221
|
-
htmlProps: {},
|
|
228
|
+
htmlProps: ariaRowIndex == null ? {} : {'aria-rowindex': ariaRowIndex},
|
|
222
229
|
xstyle: [],
|
|
223
230
|
children: <>{cells}</>,
|
|
224
231
|
} satisfies BodyRowRenderProps,
|
|
@@ -258,6 +265,9 @@ function areRowPropsEqual<T extends Record<string, unknown>>(
|
|
|
258
265
|
if (prevProps.rowIndex !== nextProps.rowIndex) {
|
|
259
266
|
return false;
|
|
260
267
|
}
|
|
268
|
+
if (prevProps.ariaRowIndex !== nextProps.ariaRowIndex) {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
261
271
|
|
|
262
272
|
if (prevProps.columns !== nextProps.columns) {
|
|
263
273
|
return false;
|
|
@@ -325,6 +335,8 @@ function BaseTableInner<T extends Record<string, unknown>>({
|
|
|
325
335
|
textOverflow = 'wrap',
|
|
326
336
|
scrollWrapper: ScrollWrapper,
|
|
327
337
|
emptyState,
|
|
338
|
+
rowIndexStart,
|
|
339
|
+
rowCount,
|
|
328
340
|
xstyle,
|
|
329
341
|
className,
|
|
330
342
|
style,
|
|
@@ -335,6 +347,18 @@ function BaseTableInner<T extends Record<string, unknown>>({
|
|
|
335
347
|
// Use stable empty array when no plugins provided
|
|
336
348
|
const plugins = pluginsProp ?? (EMPTY_PLUGINS as TablePlugin<T>[]);
|
|
337
349
|
|
|
350
|
+
// ARIA row indexing. The row ordinal is an accessibility concern that is
|
|
351
|
+
// independent of any visible index column: when the consumer opts in (by
|
|
352
|
+
// passing rowIndexStart or rowCount), body rows carry `aria-rowindex`
|
|
353
|
+
// reflecting their position in the full dataset, and the <table> carries
|
|
354
|
+
// `aria-rowcount`. `aria-rowindex` is 1-based and counts data rows from
|
|
355
|
+
// `rowIndexStart` (default 1); a windowed/paginated view passes the offset
|
|
356
|
+
// of its first visible row. `aria-rowcount` is `rowCount` when known, or
|
|
357
|
+
// `-1` (ARIA's "unknown count") for a windowed view with an unknown total.
|
|
358
|
+
const ariaRowIndexingEnabled = rowIndexStart != null || rowCount != null;
|
|
359
|
+
const firstRowAriaIndex = rowIndexStart ?? 1;
|
|
360
|
+
const ariaRowCount = ariaRowIndexingEnabled ? (rowCount ?? -1) : undefined;
|
|
361
|
+
|
|
338
362
|
const RowComponent = TableRow as React.ComponentType<TableRowComponentProps>;
|
|
339
363
|
const CellComponent =
|
|
340
364
|
TableCell as React.ComponentType<TableCellComponentProps>;
|
|
@@ -488,6 +512,7 @@ function BaseTableInner<T extends Record<string, unknown>>({
|
|
|
488
512
|
let tableElement: ReactNode = (
|
|
489
513
|
<table
|
|
490
514
|
ref={ref}
|
|
515
|
+
{...(ariaRowCount != null ? {'aria-rowcount': ariaRowCount} : null)}
|
|
491
516
|
{...tableRenderProps.htmlProps}
|
|
492
517
|
{...mergeProps(
|
|
493
518
|
themeProps('base-table'),
|
|
@@ -532,6 +557,11 @@ function BaseTableInner<T extends Record<string, unknown>>({
|
|
|
532
557
|
textOverflow={textOverflow}
|
|
533
558
|
RowComponent={RowComponent}
|
|
534
559
|
CellComponent={CellComponent}
|
|
560
|
+
ariaRowIndex={
|
|
561
|
+
ariaRowIndexingEnabled
|
|
562
|
+
? firstRowAriaIndex + rowIndex
|
|
563
|
+
: undefined
|
|
564
|
+
}
|
|
535
565
|
/>
|
|
536
566
|
);
|
|
537
567
|
})
|
|
@@ -593,7 +623,7 @@ function BaseTableInner<T extends Record<string, unknown>>({
|
|
|
593
623
|
try {
|
|
594
624
|
tableElement = plugin.transformTableContext(tableElement);
|
|
595
625
|
} catch (error) {
|
|
596
|
-
|
|
626
|
+
devError('Table', 'Plugin threw in transformTableContext:', error);
|
|
597
627
|
}
|
|
598
628
|
}
|
|
599
629
|
}
|
package/src/Table/Table.doc.mjs
CHANGED
|
@@ -93,6 +93,17 @@ export const docs = {
|
|
|
93
93
|
type: 'Record<string, TablePlugin<T>>',
|
|
94
94
|
description: 'Named plugins that extend table behavior via the transform pipeline. Converted to an ordered array internally.',
|
|
95
95
|
},
|
|
96
|
+
{
|
|
97
|
+
name: 'rowIndexStart',
|
|
98
|
+
type: 'number',
|
|
99
|
+
description: 'ARIA row index (1-based) for the first rendered body row. The row ordinal is an accessibility concern independent of any visible index column, so setting this (or rowCount) makes the table emit aria-rowindex on body rows and aria-rowcount on the table. For a paginated/windowed view, pass the offset of the first visible row (e.g. (page - 1) * pageSize + 1) so aria-rowindex reflects position in the full dataset. Data-driven mode only.',
|
|
100
|
+
default: '1',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'rowCount',
|
|
104
|
+
type: 'number',
|
|
105
|
+
description: 'Total number of body rows across all pages/windows, used for aria-rowcount so assistive tech can announce "row X of Y" against the full dataset. When omitted but rowIndexStart is set (windowed view with an unknown total), aria-rowcount is set to -1 per the ARIA unknown-count convention. Data-driven mode only.',
|
|
106
|
+
},
|
|
96
107
|
{
|
|
97
108
|
name: 'children',
|
|
98
109
|
type: 'ReactNode',
|
package/src/Table/Table.test.tsx
CHANGED
|
@@ -1451,3 +1451,88 @@ describe('emptyState', () => {
|
|
|
1451
1451
|
});
|
|
1452
1452
|
});
|
|
1453
1453
|
});
|
|
1454
|
+
|
|
1455
|
+
describe('ARIA row indexing (#3939)', () => {
|
|
1456
|
+
const bodyRows = (container: HTMLElement): HTMLTableRowElement[] =>
|
|
1457
|
+
Array.from(container.querySelectorAll('tbody tr'));
|
|
1458
|
+
|
|
1459
|
+
it('emits no aria-rowindex/aria-rowcount by default', () => {
|
|
1460
|
+
const {container} = render(<Table data={users} columns={columns} />);
|
|
1461
|
+
expect(screen.getByRole('table')).not.toHaveAttribute('aria-rowcount');
|
|
1462
|
+
for (const row of bodyRows(container)) {
|
|
1463
|
+
expect(row).not.toHaveAttribute('aria-rowindex');
|
|
1464
|
+
}
|
|
1465
|
+
});
|
|
1466
|
+
|
|
1467
|
+
it('numbers rows from 1 when rowCount is provided', () => {
|
|
1468
|
+
const {container} = render(
|
|
1469
|
+
<Table data={users} columns={columns} rowCount={users.length} />,
|
|
1470
|
+
);
|
|
1471
|
+
expect(screen.getByRole('table')).toHaveAttribute(
|
|
1472
|
+
'aria-rowcount',
|
|
1473
|
+
String(users.length),
|
|
1474
|
+
);
|
|
1475
|
+
const indices = bodyRows(container).map(r =>
|
|
1476
|
+
r.getAttribute('aria-rowindex'),
|
|
1477
|
+
);
|
|
1478
|
+
expect(indices).toEqual(['1', '2', '3']);
|
|
1479
|
+
});
|
|
1480
|
+
|
|
1481
|
+
it('offsets aria-rowindex by rowIndexStart for a paginated view', () => {
|
|
1482
|
+
// Page 3 of a 10-per-page dataset: first visible row is dataset row 21.
|
|
1483
|
+
const {container} = render(
|
|
1484
|
+
<Table
|
|
1485
|
+
data={users}
|
|
1486
|
+
columns={columns}
|
|
1487
|
+
rowIndexStart={21}
|
|
1488
|
+
rowCount={100}
|
|
1489
|
+
/>,
|
|
1490
|
+
);
|
|
1491
|
+
expect(screen.getByRole('table')).toHaveAttribute('aria-rowcount', '100');
|
|
1492
|
+
const indices = bodyRows(container).map(r =>
|
|
1493
|
+
r.getAttribute('aria-rowindex'),
|
|
1494
|
+
);
|
|
1495
|
+
expect(indices).toEqual(['21', '22', '23']);
|
|
1496
|
+
});
|
|
1497
|
+
|
|
1498
|
+
it('sets aria-rowcount to -1 (unknown) when only rowIndexStart is given', () => {
|
|
1499
|
+
// Windowed/cursor pagination: offset known, total unknown.
|
|
1500
|
+
const {container} = render(
|
|
1501
|
+
<Table data={users} columns={columns} rowIndexStart={5} />,
|
|
1502
|
+
);
|
|
1503
|
+
expect(screen.getByRole('table')).toHaveAttribute('aria-rowcount', '-1');
|
|
1504
|
+
const indices = bodyRows(container).map(r =>
|
|
1505
|
+
r.getAttribute('aria-rowindex'),
|
|
1506
|
+
);
|
|
1507
|
+
expect(indices).toEqual(['5', '6', '7']);
|
|
1508
|
+
});
|
|
1509
|
+
|
|
1510
|
+
it('does not assign an ARIA row index to the header row', () => {
|
|
1511
|
+
render(<Table data={users} columns={columns} rowCount={users.length} />);
|
|
1512
|
+
const header = screen.getAllByRole('row')[0];
|
|
1513
|
+
expect(header).not.toHaveAttribute('aria-rowindex');
|
|
1514
|
+
});
|
|
1515
|
+
|
|
1516
|
+
it('lets a plugin override the seeded aria-rowindex', () => {
|
|
1517
|
+
const plugin: TablePlugin<User> = {
|
|
1518
|
+
transformBodyRow(props, _item, index) {
|
|
1519
|
+
return {
|
|
1520
|
+
...props,
|
|
1521
|
+
htmlProps: {...props.htmlProps, 'aria-rowindex': 100 + index},
|
|
1522
|
+
};
|
|
1523
|
+
},
|
|
1524
|
+
};
|
|
1525
|
+
const {container} = render(
|
|
1526
|
+
<Table
|
|
1527
|
+
data={users}
|
|
1528
|
+
columns={columns}
|
|
1529
|
+
rowCount={users.length}
|
|
1530
|
+
plugins={{custom: plugin}}
|
|
1531
|
+
/>,
|
|
1532
|
+
);
|
|
1533
|
+
const indices = bodyRows(container).map(r =>
|
|
1534
|
+
r.getAttribute('aria-rowindex'),
|
|
1535
|
+
);
|
|
1536
|
+
expect(indices).toEqual(['100', '101', '102']);
|
|
1537
|
+
});
|
|
1538
|
+
});
|
package/src/Table/TableCell.tsx
CHANGED
|
@@ -161,12 +161,12 @@ const dividerRowStyles = stylex.create({
|
|
|
161
161
|
|
|
162
162
|
const dividerColumnStyles = stylex.create({
|
|
163
163
|
cell: {
|
|
164
|
-
|
|
164
|
+
borderInlineEndWidth: {
|
|
165
165
|
default: borderVars['--border-width'],
|
|
166
166
|
':last-child': '0',
|
|
167
167
|
},
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
borderInlineEndStyle: 'solid',
|
|
169
|
+
borderInlineEndColor: colorVars['--color-border'],
|
|
170
170
|
},
|
|
171
171
|
});
|
|
172
172
|
|
|
@@ -91,12 +91,12 @@ const headerDividerStyles = stylex.create({
|
|
|
91
91
|
|
|
92
92
|
const dividerColumnStyles = stylex.create({
|
|
93
93
|
cell: {
|
|
94
|
-
|
|
94
|
+
borderInlineEndWidth: {
|
|
95
95
|
default: borderVars['--border-width'],
|
|
96
96
|
':last-child': '0',
|
|
97
97
|
},
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
borderInlineEndStyle: 'solid',
|
|
99
|
+
borderInlineEndColor: colorVars['--color-border'],
|
|
100
100
|
},
|
|
101
101
|
});
|
|
102
102
|
|
package/src/Table/index.ts
CHANGED
|
@@ -28,6 +28,7 @@ export {useTableColumnResize} from './plugins/columnResize';
|
|
|
28
28
|
export {useTableStickyColumns} from './plugins/stickyColumns';
|
|
29
29
|
export {useTableGroupedRows} from './plugins/groupedRows';
|
|
30
30
|
export {useTableRowIndex} from './plugins/rowIndex';
|
|
31
|
+
export {useTableRowStatus} from './plugins/rowStatus';
|
|
31
32
|
export {
|
|
32
33
|
useTableRowExpansion,
|
|
33
34
|
useTableRowExpansionState,
|
|
@@ -110,6 +111,10 @@ export type {
|
|
|
110
111
|
UseTableGroupedRowsConfig,
|
|
111
112
|
UseTableGroupedRowsResult,
|
|
112
113
|
} from './plugins/groupedRows';
|
|
114
|
+
export type {
|
|
115
|
+
UseTableRowStatusConfig,
|
|
116
|
+
TableRowStatus,
|
|
117
|
+
} from './plugins/rowStatus';
|
|
113
118
|
export type {
|
|
114
119
|
TableTreeRowMeta,
|
|
115
120
|
UseTableTreeDataConfig,
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
fontWeightVars,
|
|
21
21
|
} from '../../../theme/tokens.stylex';
|
|
22
22
|
import {Icon} from '../../../Icon';
|
|
23
|
+
import {rtlStyles} from '../../../utils';
|
|
23
24
|
import type {TablePlugin} from '../../types';
|
|
24
25
|
import {useTranslator} from '../../../i18n';
|
|
25
26
|
|
|
@@ -325,16 +326,22 @@ export function useTableGroupedRows<T extends Record<string, unknown>>(
|
|
|
325
326
|
}}
|
|
326
327
|
aria-label={
|
|
327
328
|
collapsed
|
|
328
|
-
? t('@astryx.tableGroupedRows.expandGroup', {
|
|
329
|
-
|
|
329
|
+
? t('@astryx.tableGroupedRows.expandGroup', {
|
|
330
|
+
groupKey: header.groupKey,
|
|
331
|
+
})
|
|
332
|
+
: t('@astryx.tableGroupedRows.collapseGroup', {
|
|
333
|
+
groupKey: header.groupKey,
|
|
334
|
+
})
|
|
330
335
|
}
|
|
331
336
|
aria-expanded={!collapsed}>
|
|
332
|
-
<span
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
337
|
+
<span {...stylex.props(rtlStyles.mirror)}>
|
|
338
|
+
<span
|
|
339
|
+
{...stylex.props(
|
|
340
|
+
styles.chevronIcon,
|
|
341
|
+
!collapsed && styles.chevronExpanded,
|
|
342
|
+
)}>
|
|
343
|
+
<Icon icon="chevronRight" size="xsm" />
|
|
344
|
+
</span>
|
|
338
345
|
</span>
|
|
339
346
|
</button>
|
|
340
347
|
{content}
|