@astryxdesign/core 0.1.4 → 0.1.5-canary.76e6697
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 +141 -0
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +20 -18
- package/dist/AlertDialog/useImperativeAlertDialog.d.ts +0 -2
- package/dist/AlertDialog/useImperativeAlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/useImperativeAlertDialog.js +3 -5
- package/dist/AppShell/AppShell.d.ts +1 -1
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +55 -53
- package/dist/AspectRatio/AspectRatio.d.ts +48 -10
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +33 -12
- package/dist/AspectRatio/index.d.ts +1 -1
- package/dist/AspectRatio/index.d.ts.map +1 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +28 -26
- package/dist/Avatar/AvatarStatusDot.js +6 -6
- package/dist/AvatarGroup/AvatarGroup.js +6 -6
- package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -7
- package/dist/Badge/Badge.js +3 -3
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +32 -25
- package/dist/Blockquote/Blockquote.js +7 -7
- package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
- package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
- package/dist/Button/Button.js +19 -19
- package/dist/ButtonGroup/ButtonGroup.js +7 -7
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +68 -48
- package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
- package/dist/Calendar/styles.d.ts +2 -2
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +2 -2
- package/dist/Card/Card.d.ts +4 -2
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +18 -10
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +24 -21
- package/dist/Center/Center.js +3 -3
- package/dist/Chat/ChatComposer.js +23 -23
- package/dist/Chat/ChatComposerDrawer.js +14 -14
- package/dist/Chat/ChatComposerInput.d.ts +1 -1
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +27 -15
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +13 -11
- package/dist/Chat/ChatLayout.js +17 -17
- package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +12 -10
- package/dist/Chat/ChatMessage.js +12 -12
- package/dist/Chat/ChatMessageBubble.js +7 -7
- package/dist/Chat/ChatMessageList.js +14 -14
- package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatMessageMetadata.js +14 -12
- package/dist/Chat/ChatPastedTextToken.js +13 -13
- package/dist/Chat/ChatSendButton.js +3 -3
- package/dist/Chat/ChatSystemMessage.d.ts +1 -1
- package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
- package/dist/Chat/ChatSystemMessage.js +17 -17
- package/dist/Chat/ChatTokenizedText.d.ts +1 -1
- package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
- package/dist/Chat/ChatTokenizedText.js +24 -15
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +81 -74
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +15 -15
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +25 -23
- package/dist/CheckboxList/CheckboxList.js +9 -9
- package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +8 -6
- package/dist/Citation/Citation.js +10 -10
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +32 -9
- package/dist/Code/Code.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts +10 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +88 -52
- package/dist/Collapsible/Collapsible.d.ts +9 -3
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +109 -22
- package/dist/Collapsible/CollapsibleGroup.d.ts +37 -7
- package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroup.js +64 -12
- package/dist/Collapsible/CollapsibleGroupContext.d.ts +24 -0
- package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroupContext.js +26 -3
- package/dist/Collapsible/index.d.ts +1 -0
- package/dist/Collapsible/index.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.d.ts +4 -1
- package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.js +20 -6
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +36 -34
- package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
- package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
- package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
- package/dist/CommandPalette/CommandPaletteInput.js +13 -13
- package/dist/CommandPalette/CommandPaletteItem.js +3 -3
- package/dist/CommandPalette/CommandPaletteList.js +3 -3
- package/dist/ContextMenu/ContextMenu.d.ts +7 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +76 -43
- package/dist/DateInput/DateInput.js +18 -18
- package/dist/DateRangeInput/DateRangeInput.js +21 -21
- package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +30 -26
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +9 -9
- package/dist/Dialog/DialogHeader.js +16 -16
- package/dist/Dialog/useImperativeDialog.js +3 -3
- package/dist/Divider/Divider.js +7 -7
- package/dist/DropdownMenu/DropdownMenu.js +10 -10
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +2 -17
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
- package/dist/DropdownMenu/renderDropdownItems.js +10 -10
- package/dist/EmptyState/EmptyState.js +9 -9
- package/dist/Field/Field.js +17 -17
- package/dist/Field/FieldLabel.js +15 -15
- package/dist/Field/InputClearButton.js +5 -5
- package/dist/FieldStatus/FieldStatus.js +3 -3
- package/dist/FileInput/FileInput.js +29 -29
- package/dist/FormLayout/FormLayout.js +5 -5
- package/dist/Grid/Grid.d.ts +4 -3
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +29 -12
- package/dist/Grid/GridSpan.js +3 -3
- package/dist/HStack/HStack.js +3 -3
- package/dist/Heading/Heading.js +10 -10
- package/dist/HoverCard/HoverCard.js +9 -9
- package/dist/HoverCard/useHoverCard.d.ts +5 -1
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +3 -3
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +16 -12
- package/dist/Icon/defaultIcons.js +116 -116
- package/dist/IconButton/IconButton.js +3 -3
- package/dist/InputGroup/InputGroup.js +11 -11
- package/dist/InputGroup/InputGroupText.js +3 -3
- package/dist/Item/Item.js +18 -18
- package/dist/Kbd/Kbd.js +5 -5
- package/dist/Layer/LayerProvider.js +7 -7
- package/dist/Layer/useLayer.d.ts +29 -2
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +44 -31
- package/dist/Layout/Layout.js +21 -21
- package/dist/Layout/LayoutContent.js +3 -3
- package/dist/Layout/LayoutFooter.js +5 -5
- package/dist/Layout/LayoutHeader.js +5 -5
- package/dist/Layout/LayoutPanel.js +3 -3
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +55 -31
- package/dist/Lightbox/useLightbox.d.ts +0 -1
- package/dist/Lightbox/useLightbox.d.ts.map +1 -1
- package/dist/Lightbox/useLightbox.js +3 -4
- package/dist/Link/Link.d.ts +0 -2
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +15 -17
- package/dist/Link/LinkProvider.js +3 -3
- package/dist/Link/useLinkify.js +3 -3
- package/dist/List/List.js +11 -11
- package/dist/List/ListItem.js +11 -11
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +102 -102
- package/dist/MetadataList/MetadataList.js +10 -10
- package/dist/MetadataList/MetadataListItem.js +15 -15
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +26 -23
- package/dist/MobileNav/MobileNavToggle.js +5 -5
- package/dist/MoreMenu/MoreMenu.js +3 -3
- package/dist/MultiSelector/MultiSelector.js +56 -56
- package/dist/NavIcon/NavIcon.js +3 -3
- package/dist/NavMenu/NavHeadingMenu.js +5 -5
- package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +48 -32
- package/dist/Outline/Outline.js +15 -15
- package/dist/OverflowList/OverflowList.js +8 -8
- package/dist/Overlay/Overlay.js +3 -3
- package/dist/Overlay/OverlayScrim.js +5 -5
- package/dist/Overlay/useOverlay.d.ts +0 -3
- package/dist/Overlay/useOverlay.d.ts.map +1 -1
- package/dist/Overlay/useOverlay.js +3 -6
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +125 -72
- package/dist/Popover/Popover.js +16 -16
- package/dist/Popover/usePopover.js +7 -7
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +110 -92
- package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
- package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
- package/dist/PowerSearch/PowerSearchToken.js +5 -5
- package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +25 -18
- package/dist/RadioList/RadioList.js +7 -7
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +24 -21
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +28 -10
- package/dist/Section/Section.js +5 -5
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +32 -10
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +18 -12
- package/dist/SelectableCard/SelectableCard.js +5 -5
- package/dist/Selector/Selector.js +46 -46
- package/dist/Selector/SelectorOption.js +3 -3
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +38 -34
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +8 -6
- package/dist/SideNav/SideNavHeading.js +87 -87
- package/dist/SideNav/SideNavItem.js +42 -42
- package/dist/SideNav/SideNavSection.d.ts +1 -1
- package/dist/SideNav/SideNavSection.d.ts.map +1 -1
- package/dist/SideNav/SideNavSection.js +18 -16
- package/dist/Skeleton/Skeleton.js +3 -3
- package/dist/Slider/Slider.js +23 -23
- package/dist/Spinner/Spinner.js +9 -9
- package/dist/StatusDot/StatusDot.js +5 -5
- package/dist/Switch/Switch.d.ts +8 -4
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +34 -29
- package/dist/TabList/Tab.js +18 -18
- package/dist/TabList/TabList.js +5 -5
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +57 -30
- package/dist/TabList/tab.markers.stylex.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +50 -39
- package/dist/Table/Table.js +7 -7
- package/dist/Table/TableBody.d.ts +1 -1
- package/dist/Table/TableBody.d.ts.map +1 -1
- package/dist/Table/TableBody.js +9 -5
- package/dist/Table/TableCell.js +3 -3
- package/dist/Table/TableFooter.d.ts +1 -1
- package/dist/Table/TableFooter.d.ts.map +1 -1
- package/dist/Table/TableFooter.js +9 -5
- package/dist/Table/TableHeader.d.ts +1 -1
- package/dist/Table/TableHeader.d.ts.map +1 -1
- package/dist/Table/TableHeader.js +9 -5
- package/dist/Table/TableHeaderCell.js +3 -3
- package/dist/Table/TableRow.js +5 -5
- 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/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +14 -11
- package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
- package/dist/Table/plugins/groupedRows/index.d.ts +3 -0
- package/dist/Table/plugins/groupedRows/index.d.ts.map +1 -0
- package/dist/Table/plugins/groupedRows/index.js +3 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +78 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +250 -0
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +5 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +23 -23
- package/dist/Table/plugins/selection/useTableSelection.js +18 -18
- package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelectionState.js +11 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
- package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortableState.js +8 -4
- package/dist/Table/tableContextMenu.js +9 -9
- package/dist/Text/Text.js +10 -10
- package/dist/TextArea/TextArea.js +14 -14
- package/dist/TextInput/TextInput.js +15 -15
- package/dist/Thumbnail/Thumbnail.d.ts +3 -2
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +30 -29
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +26 -21
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +37 -26
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +25 -17
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +23 -11
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +44 -4
- package/dist/ToggleButton/ToggleButton.js +12 -12
- package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
- package/dist/Token/Token.js +21 -21
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +36 -34
- package/dist/Toolbar/Toolbar.js +18 -18
- package/dist/Tooltip/Tooltip.js +11 -11
- package/dist/Tooltip/useTooltip.d.ts +5 -1
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +3 -3
- package/dist/TopNav/TopNav.js +32 -32
- package/dist/TopNav/TopNavHeading.js +67 -67
- package/dist/TopNav/TopNavItem.js +5 -5
- package/dist/TopNav/TopNavMegaMenu.js +30 -30
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +25 -14
- package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
- package/dist/TopNav/TopNavMenu.js +32 -32
- package/dist/TreeList/TreeList.js +8 -8
- package/dist/TreeList/TreeListBranches.js +11 -11
- package/dist/TreeList/TreeListItem.js +30 -30
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +23 -20
- package/dist/Typeahead/Typeahead.js +12 -12
- package/dist/Typeahead/TypeaheadItem.js +10 -10
- package/dist/VStack/VStack.js +3 -3
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +0 -3
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +0 -3
- package/dist/astryx.css +7 -0
- package/dist/astryx.umd.js +63 -63
- package/dist/astryx.umd.js.map +4 -4
- package/dist/docs-types.d.ts +8 -2
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/hooks/focusableSelector.d.ts +1 -1
- package/dist/hooks/focusableSelector.d.ts.map +1 -1
- package/dist/hooks/focusableSelector.js +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFocusTrap.d.ts +3 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +38 -1
- package/dist/hooks/useHotkeys.d.ts +51 -0
- package/dist/hooks/useHotkeys.d.ts.map +1 -0
- package/dist/hooks/useHotkeys.js +160 -0
- package/dist/hooks/useInteractiveRole.d.ts +6 -2
- package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
- package/dist/hooks/useInteractiveRole.js +6 -2
- package/dist/hooks/useKeyboardHint.js +9 -9
- package/dist/hooks/useStreamingText.d.ts +3 -1
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +14 -5
- package/dist/theme/MediaTheme.js +3 -3
- package/dist/theme/Theme.js +7 -7
- package/dist/theme/defineTheme.d.ts +1 -1
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +10 -3
- package/dist/theme/hct.d.ts +0 -15
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +9 -9
- package/dist/theme/syntax/SyntaxTheme.js +5 -5
- package/dist/theme/tokens.d.ts +10 -2
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +220 -4
- package/dist/theme/useTheme.d.ts +3 -2
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +73 -6
- package/dist/utils/color.d.ts +42 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/color.js +150 -0
- package/dist/utils/composeEventHandlers.d.ts +30 -0
- package/dist/utils/composeEventHandlers.d.ts.map +1 -0
- package/dist/utils/composeEventHandlers.js +40 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +8 -5
- package/package.json +4 -4
- package/src/AlertDialog/AlertDialog.doc.mjs +4 -0
- package/src/AlertDialog/AlertDialog.tsx +2 -0
- package/src/AlertDialog/useImperativeAlertDialog.tsx +0 -2
- package/src/AppShell/AppShell.tsx +2 -0
- package/src/AspectRatio/AspectRatio.doc.mjs +28 -1
- package/src/AspectRatio/AspectRatio.test.tsx +142 -1
- package/src/AspectRatio/AspectRatio.tsx +70 -10
- package/src/AspectRatio/index.ts +5 -1
- package/src/Avatar/Avatar.doc.mjs +11 -0
- package/src/Avatar/Avatar.test.tsx +32 -1
- package/src/Avatar/Avatar.tsx +14 -22
- package/src/Avatar/AvatarStatusDot.tsx +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +1 -0
- package/src/AvatarGroup/AvatarGroup.tsx +2 -2
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -2
- package/src/Banner/Banner.doc.mjs +8 -0
- package/src/Banner/Banner.test.tsx +38 -0
- package/src/Banner/Banner.tsx +8 -1
- package/src/Calendar/Calendar.doc.mjs +1 -1
- package/src/Calendar/Calendar.test.tsx +122 -17
- package/src/Calendar/Calendar.tsx +26 -5
- package/src/Calendar/dayCellUtils.ts +3 -1
- package/src/Calendar/styles.ts +12 -2
- package/src/Card/Card.doc.mjs +1 -1
- package/src/Card/Card.tsx +16 -6
- package/src/Carousel/Carousel.doc.mjs +12 -12
- package/src/Carousel/Carousel.test.tsx +13 -0
- package/src/Carousel/Carousel.tsx +4 -2
- package/src/Chat/Chat.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.test.tsx +27 -1
- package/src/Chat/ChatComposerInput.tsx +20 -15
- package/src/Chat/ChatDictationButton.test.tsx +43 -0
- package/src/Chat/ChatDictationButton.tsx +4 -4
- package/src/Chat/ChatLayoutScrollButton.test.tsx +33 -0
- package/src/Chat/ChatLayoutScrollButton.tsx +3 -1
- package/src/Chat/ChatMessageMetadata.test.tsx +32 -0
- package/src/Chat/ChatMessageMetadata.tsx +4 -6
- package/src/Chat/ChatSystemMessage.test.tsx +26 -11
- package/src/Chat/ChatSystemMessage.tsx +7 -7
- package/src/Chat/ChatTokenizedText.test.tsx +29 -16
- package/src/Chat/ChatTokenizedText.tsx +15 -8
- package/src/Chat/ChatToolCalls.test.tsx +55 -0
- package/src/Chat/ChatToolCalls.tsx +10 -12
- package/src/Chat/index.ts +1 -4
- package/src/Chat/useTriggerMenu.tsx +1 -4
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +71 -4
- package/src/CheckboxInput/CheckboxInput.tsx +2 -0
- package/src/CheckboxList/CheckboxList.test.tsx +19 -0
- package/src/CheckboxList/CheckboxListItem.tsx +11 -2
- package/src/Citation/Citation.doc.mjs +5 -0
- package/src/ClickableCard/ClickableCard.tsx +45 -2
- package/src/CodeBlock/CodeBlock.doc.mjs +7 -2
- package/src/CodeBlock/CodeBlock.test.tsx +122 -3
- package/src/CodeBlock/CodeBlock.tsx +62 -4
- package/src/Collapsible/Collapsible.doc.mjs +8 -4
- package/src/Collapsible/Collapsible.test.tsx +403 -0
- package/src/Collapsible/Collapsible.tsx +85 -10
- package/src/Collapsible/CollapsibleGroup.doc.mjs +27 -3
- package/src/Collapsible/CollapsibleGroup.test.tsx +314 -0
- package/src/Collapsible/CollapsibleGroup.tsx +97 -9
- package/src/Collapsible/CollapsibleGroupContext.tsx +34 -2
- package/src/Collapsible/index.ts +1 -0
- package/src/Collapsible/useCollapsible.ts +20 -6
- package/src/CommandPalette/CommandPalette.doc.mjs +5 -0
- package/src/CommandPalette/CommandPalette.tsx +5 -3
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +5 -0
- package/src/CommandPalette/CommandPaletteGroup.doc.mjs +10 -0
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +6 -0
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +6 -0
- package/src/CommandPalette/CommandPaletteList.doc.mjs +9 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +15 -0
- package/src/ContextMenu/ContextMenu.test.tsx +87 -0
- package/src/ContextMenu/ContextMenu.tsx +87 -28
- package/src/ContextMenu/ContextMenuItem.doc.mjs +6 -0
- package/src/DateInput/DateInput.test.tsx +11 -20
- package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -6
- package/src/DateRangeInput/DateRangeInput.test.tsx +31 -44
- package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -2
- package/src/DateTimeInput/DateTimeInput.test.tsx +118 -16
- package/src/DateTimeInput/DateTimeInput.tsx +8 -2
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.mjs +4 -0
- package/src/Dialog/DialogHeader.doc.mjs +45 -0
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenu.test.tsx +22 -2
- package/src/DropdownMenu/DropdownMenuItem.tsx +5 -17
- package/src/EmptyState/EmptyState.doc.mjs +1 -1
- package/src/Field/Field.test.tsx +1 -4
- package/src/Field/FieldLabel.test.tsx +2 -2
- package/src/FieldStatus/FieldStatus.test.tsx +282 -0
- package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
- package/src/Grid/Grid.test.tsx +43 -18
- package/src/Grid/Grid.tsx +26 -9
- package/src/HoverCard/HoverCard.doc.mjs +6 -6
- package/src/HoverCard/useHoverCard.doc.mjs +5 -5
- package/src/HoverCard/useHoverCard.tsx +9 -2
- package/src/Icon/Icon.test.tsx +41 -29
- package/src/Icon/Icon.tsx +6 -2
- package/src/InputGroup/InputGroup.doc.mjs +1 -0
- package/src/InputGroup/InputGroup.tsx +2 -2
- package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +185 -0
- package/src/Item/Item.tsx +1 -1
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layer/useLayer.test.tsx +221 -2
- package/src/Layer/useLayer.tsx +69 -30
- package/src/Layout/Layout.test.tsx +285 -0
- package/src/Layout/LayoutContent.doc.mjs +12 -0
- package/src/Layout/LayoutPanel.doc.mjs +40 -0
- package/src/Layout/LayoutSlots.test.tsx +364 -0
- package/src/Lightbox/Lightbox.doc.mjs +5 -0
- package/src/Lightbox/Lightbox.test.tsx +123 -2
- package/src/Lightbox/Lightbox.tsx +29 -1
- package/src/Lightbox/useLightbox.tsx +0 -1
- package/src/Link/Link.tsx +0 -2
- package/src/Markdown/Markdown.tsx +9 -7
- package/src/Markdown/parser.perf.test.ts +34 -12
- package/src/MobileNav/MobileNav.test.tsx +56 -0
- package/src/MobileNav/MobileNav.tsx +13 -8
- package/src/NavMenu/NavMenu.doc.mjs +15 -0
- package/src/NumberInput/NumberInput.test.tsx +48 -3
- package/src/NumberInput/NumberInput.tsx +32 -15
- package/src/Outline/Outline.doc.mjs +2 -0
- package/src/Outline/parseOutlineFromMarkdown.test.ts +80 -0
- package/src/OverflowList/OverflowList.test.tsx +416 -0
- package/src/Overlay/Overlay.doc.mjs +6 -0
- package/src/Overlay/Overlay.test.tsx +356 -0
- package/src/Overlay/useOverlay.tsx +0 -3
- package/src/Pagination/Pagination.test.tsx +162 -0
- package/src/Pagination/Pagination.tsx +80 -26
- package/src/Popover/Popover.doc.mjs +6 -6
- package/src/Popover/Popover.test.tsx +65 -0
- package/src/Popover/usePopover.doc.mjs +1 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
- package/src/PowerSearch/PowerSearch.test.tsx +109 -1
- package/src/PowerSearch/PowerSearch.tsx +37 -16
- package/src/ProgressBar/ProgressBar.doc.mjs +2 -0
- package/src/ProgressBar/ProgressBar.test.tsx +30 -0
- package/src/ProgressBar/ProgressBar.tsx +12 -5
- package/src/RadioList/RadioList.test.tsx +19 -0
- package/src/RadioList/RadioListItem.tsx +9 -4
- package/src/Resizable/ResizeHandle.test.tsx +218 -0
- package/src/Resizable/ResizeHandle.tsx +22 -4
- package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControl.test.tsx +192 -0
- package/src/SegmentedControl/SegmentedControl.tsx +27 -5
- package/src/SegmentedControl/SegmentedControlItem.tsx +9 -4
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.test.tsx +27 -1
- package/src/SideNav/SideNav.doc.mjs +7 -1
- package/src/SideNav/SideNav.test.tsx +66 -0
- package/src/SideNav/SideNav.tsx +6 -2
- package/src/SideNav/SideNavCollapseButton.tsx +4 -3
- package/src/SideNav/SideNavSection.tsx +6 -4
- package/src/SizeContext/SizeContext.test.tsx +226 -0
- package/src/Switch/Switch.doc.mjs +7 -7
- package/src/Switch/Switch.test.tsx +102 -3
- package/src/Switch/Switch.tsx +20 -7
- package/src/TabList/TabList.test.tsx +185 -1
- package/src/TabList/TabMenu.tsx +45 -9
- package/src/Table/BaseTable.tsx +13 -2
- package/src/Table/Table.doc.mjs +6 -1
- package/src/Table/Table.test.tsx +87 -0
- package/src/Table/TableBody.tsx +15 -2
- package/src/Table/TableFooter.tsx +15 -2
- package/src/Table/TableHeader.tsx +15 -2
- package/src/Table/index.ts +5 -0
- package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +13 -0
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +3 -1
- package/src/Table/plugins/groupedRows/index.ts +7 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +231 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +349 -0
- package/src/Table/plugins/pagination/paginateData.ts +5 -1
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +13 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +1 -1
- package/src/Table/plugins/selection/useTableSelectionState.test.tsx +23 -0
- package/src/Table/plugins/selection/useTableSelectionState.tsx +11 -6
- package/src/Table/plugins/sortable/useTableSortableState.test.tsx +35 -1
- package/src/Table/plugins/sortable/useTableSortableState.tsx +8 -4
- package/src/Table/useTableGroupedRows.doc.mjs +71 -0
- package/src/TextArea/TextArea.test.tsx +3 -3
- package/src/TextInput/TextInput.test.tsx +3 -3
- package/src/Thumbnail/Thumbnail.test.tsx +36 -2
- package/src/Thumbnail/Thumbnail.tsx +4 -2
- package/src/TimeInput/TimeInput.test.tsx +37 -0
- package/src/TimeInput/TimeInput.tsx +11 -1
- package/src/Timestamp/Timestamp.doc.mjs +1 -1
- package/src/Timestamp/Timestamp.test.tsx +52 -0
- package/src/Timestamp/Timestamp.tsx +30 -16
- package/src/Toast/Toast.tsx +11 -3
- package/src/Toast/ToastViewport.test.tsx +64 -0
- package/src/Toast/ToastViewport.tsx +12 -0
- package/src/Toast/useToast.test.tsx +258 -0
- package/src/Toast/useToast.tsx +41 -0
- package/src/ToggleButton/ToggleButton.doc.mjs +1 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.test.tsx +54 -0
- package/src/Tokenizer/Tokenizer.tsx +5 -4
- package/src/Tooltip/Tooltip.doc.mjs +6 -6
- package/src/Tooltip/useTooltip.doc.mjs +5 -5
- package/src/Tooltip/useTooltip.tsx +12 -2
- package/src/TopNav/TopNav.doc.mjs +1 -1
- package/src/TopNav/TopNav.test.tsx +23 -7
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
- package/src/TreeList/TreeList.doc.mjs +2 -2
- package/src/Typeahead/BaseTypeahead.doc.mjs +19 -0
- package/src/Typeahead/BaseTypeahead.tsx +5 -2
- package/src/Typeahead/Typeahead.doc.mjs +1 -1
- package/src/Typeahead/Typeahead.test.tsx +45 -1
- package/src/VisuallyHidden/VisuallyHidden.tsx +0 -3
- package/src/__tests__/TestIcon.tsx +26 -0
- package/src/__tests__/fastRoleQueries.ts +66 -0
- package/src/docPropReferences.test.ts +178 -0
- package/src/docs-types.ts +9 -1
- package/src/hooks/focusableSelector.ts +1 -1
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useFocusTrap.doc.mjs +4 -2
- package/src/hooks/useFocusTrap.test.tsx +149 -1
- package/src/hooks/useFocusTrap.ts +50 -1
- package/src/hooks/useHotkeys.doc.mjs +52 -0
- package/src/hooks/useHotkeys.test.ts +245 -0
- package/src/hooks/useHotkeys.ts +203 -0
- package/src/hooks/useInteractiveRole.ts +12 -4
- package/src/hooks/useStreamingText.test.ts +54 -19
- package/src/hooks/useStreamingText.ts +16 -5
- package/src/hooks/useTreeFocus.test.tsx +1 -3
- package/src/reset.css +29 -0
- package/src/theme/SyntaxTheme.doc.mjs +4 -4
- package/src/theme/defineTheme.ts +4 -13
- package/src/theme/derivedVarRegistry.test.ts +2 -2
- package/src/theme/expandColorScale.test.ts +29 -0
- package/src/theme/expandColorScale.ts +11 -6
- package/src/theme/hct.ts +9 -17
- package/src/theme/themingTargets.test.ts +353 -0
- package/src/theme/tokens.test.ts +182 -9
- package/src/theme/tokens.ts +239 -4
- package/src/theme/useTheme.test.tsx +126 -2
- package/src/theme/useTheme.ts +87 -6
- package/src/utils/color.test.ts +133 -0
- package/src/utils/color.ts +148 -0
- package/src/utils/composeEventHandlers.test.ts +71 -0
- package/src/utils/composeEventHandlers.ts +44 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/mergeProps.test.ts +166 -0
- package/src/utils/sharedResizeObserver.test.ts +2 -2
- package/src/utils/timeParser.test.ts +13 -0
- package/src/utils/timeParser.ts +8 -5
- package/dist/Carousel/carousel.markers.stylex.d.ts +0 -7
- package/dist/Carousel/carousel.markers.stylex.d.ts.map +0 -1
- package/dist/Carousel/carousel.markers.stylex.js +0 -12
- package/src/Carousel/carousel.markers.stylex.ts +0 -10
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file useTableGroupedRows.tsx
|
|
7
|
+
* @input React, StyleX, Icon, Table types + the flat data array
|
|
8
|
+
* @output Exports useTableGroupedRows hook + config/result types
|
|
9
|
+
* @position Grouped-rows plugin; consumed by Table via plugins prop
|
|
10
|
+
*
|
|
11
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
12
|
+
* - /packages/core/src/Table/index.ts (exports)
|
|
13
|
+
*/
|
|
14
|
+
import { useCallback, useMemo } from 'react';
|
|
15
|
+
import * as stylex from '@stylexjs/stylex';
|
|
16
|
+
import "../../../theme/tokens.stylex.js";
|
|
17
|
+
import { spacingVars, colorVars, fontWeightVars } from "../../../theme/tokens.stylex.js";
|
|
18
|
+
import { Icon } from "../../../Icon/index.js";
|
|
19
|
+
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
20
|
+
// A synthetic group-header row injected into the flattened data. Real rows
|
|
21
|
+
// never carry this marker.
|
|
22
|
+
const GROUP_HEADER = Symbol('tableGroupHeader');
|
|
23
|
+
function isGroupHeader(item) {
|
|
24
|
+
return typeof item === 'object' && item !== null && item[GROUP_HEADER] === true;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Proxy handler: any field access beyond the marker fields resolves to `''`
|
|
28
|
+
// so user cell renderers (`item.name.toUpperCase()`) never throw on a header.
|
|
29
|
+
const HEADER_PROXY_HANDLER = {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/promise-function-async -- Proxy get trap, not a promise-returning fn
|
|
31
|
+
get(t, prop) {
|
|
32
|
+
if (prop === GROUP_HEADER || prop === 'groupKey' || prop === 'count') {
|
|
33
|
+
return t[prop];
|
|
34
|
+
}
|
|
35
|
+
return prop in t ? t[prop] : '';
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Build a synthetic header row wrapped in a Proxy so arbitrary field access
|
|
41
|
+
* from user cell renderers (e.g. `item.name.toUpperCase()`) resolves to `''`
|
|
42
|
+
* instead of throwing — BaseTable evaluates `col.renderCell(item)` on every
|
|
43
|
+
* row (including synthetic headers) before `transformBodyRow` can replace the
|
|
44
|
+
* row's cells. `transformBodyRow` then discards those cells and renders a
|
|
45
|
+
* single full-width header cell.
|
|
46
|
+
*/
|
|
47
|
+
function makeHeader(groupKey, count) {
|
|
48
|
+
const target = {
|
|
49
|
+
[GROUP_HEADER]: true,
|
|
50
|
+
groupKey,
|
|
51
|
+
count
|
|
52
|
+
};
|
|
53
|
+
return new Proxy(target, HEADER_PROXY_HANDLER);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Configuration for {@link useTableGroupedRows}. */
|
|
57
|
+
|
|
58
|
+
const styles = {
|
|
59
|
+
headerRow: {
|
|
60
|
+
kkrTdU: "x1ypdohk",
|
|
61
|
+
kfSwDN: "x87ps6o",
|
|
62
|
+
kWkggS: "xwmxj5m",
|
|
63
|
+
kt9PQ7: "xso031l",
|
|
64
|
+
kfdmCh: "x1q0q8m5",
|
|
65
|
+
kL6WhQ: "xw8gpjh",
|
|
66
|
+
$$css: true
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Groups a flat data array into collapsible section rows. Each distinct
|
|
72
|
+
* `groupBy` value becomes a full-width section-header row with a chevron
|
|
73
|
+
* toggle, the group label, and a member count; collapsing hides that group's
|
|
74
|
+
* data rows while keeping the header visible.
|
|
75
|
+
*
|
|
76
|
+
* Mirrors {@link useTableRowExpansionState}: the consumer owns the
|
|
77
|
+
* `collapsedGroups` set and this hook returns `{data, plugin, idKey}` —
|
|
78
|
+
* pass all three to `<Table>`.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```tsx
|
|
82
|
+
* const [collapsed, setCollapsed] = useState<Set<string>>(new Set());
|
|
83
|
+
* const grouped = useTableGroupedRows({
|
|
84
|
+
* data: rows,
|
|
85
|
+
* groupBy: r => r.team,
|
|
86
|
+
* collapsedGroups: collapsed,
|
|
87
|
+
* onToggleGroup: key =>
|
|
88
|
+
* setCollapsed(prev => {
|
|
89
|
+
* const next = new Set(prev);
|
|
90
|
+
* next.has(key) ? next.delete(key) : next.add(key);
|
|
91
|
+
* return next;
|
|
92
|
+
* }),
|
|
93
|
+
* getRowKey: r => r.id,
|
|
94
|
+
* });
|
|
95
|
+
* <Table
|
|
96
|
+
* data={grouped.data}
|
|
97
|
+
* columns={columns}
|
|
98
|
+
* idKey={grouped.idKey}
|
|
99
|
+
* plugins={{grouped: grouped.plugin}}
|
|
100
|
+
* />;
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export function useTableGroupedRows(config) {
|
|
104
|
+
const {
|
|
105
|
+
data,
|
|
106
|
+
groupBy,
|
|
107
|
+
collapsedGroups,
|
|
108
|
+
onToggleGroup,
|
|
109
|
+
renderGroupHeader,
|
|
110
|
+
getRowKey: getRowKeyProp,
|
|
111
|
+
groupOrder
|
|
112
|
+
} = config;
|
|
113
|
+
const flattened = useMemo(() => {
|
|
114
|
+
if (data.length === 0) {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Group preserving first-seen order.
|
|
119
|
+
const groups = new Map();
|
|
120
|
+
for (const item of data) {
|
|
121
|
+
const key = groupBy(item);
|
|
122
|
+
const bucket = groups.get(key);
|
|
123
|
+
if (bucket) {
|
|
124
|
+
bucket.push(item);
|
|
125
|
+
} else {
|
|
126
|
+
groups.set(key, [item]);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Determine iteration order.
|
|
131
|
+
let keys = [...groups.keys()];
|
|
132
|
+
if (groupOrder && groupOrder.length > 0) {
|
|
133
|
+
const ordered = groupOrder.filter(k => groups.has(k));
|
|
134
|
+
const rest = keys.filter(k => !groupOrder.includes(k));
|
|
135
|
+
keys = [...ordered, ...rest];
|
|
136
|
+
}
|
|
137
|
+
const out = [];
|
|
138
|
+
for (const key of keys) {
|
|
139
|
+
const rows = groups.get(key) ?? [];
|
|
140
|
+
out.push(makeHeader(key, rows.length));
|
|
141
|
+
if (!collapsedGroups.has(key)) {
|
|
142
|
+
out.push(...rows);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return out;
|
|
146
|
+
}, [data, groupBy, collapsedGroups, groupOrder]);
|
|
147
|
+
|
|
148
|
+
// Positional fallback index, built once per flattened array so key lookup
|
|
149
|
+
// stays O(1) instead of O(n) per row (which would make table keying O(n²)).
|
|
150
|
+
const positionByItem = useMemo(() => {
|
|
151
|
+
if (getRowKeyProp) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
const map = new Map();
|
|
155
|
+
for (let i = 0; i < flattened.length; i++) {
|
|
156
|
+
map.set(flattened[i], i);
|
|
157
|
+
}
|
|
158
|
+
return map;
|
|
159
|
+
}, [flattened, getRowKeyProp]);
|
|
160
|
+
const idKey = useCallback(item => {
|
|
161
|
+
if (isGroupHeader(item)) {
|
|
162
|
+
return `__group_${item.groupKey}`;
|
|
163
|
+
}
|
|
164
|
+
if (getRowKeyProp) {
|
|
165
|
+
return getRowKeyProp(item);
|
|
166
|
+
}
|
|
167
|
+
return String(positionByItem?.get(item) ?? -1);
|
|
168
|
+
}, [getRowKeyProp, positionByItem]);
|
|
169
|
+
const plugin = useMemo(() => ({
|
|
170
|
+
// Replace a header row's pre-rendered cells with one full-width cell.
|
|
171
|
+
transformBodyRow(props, item) {
|
|
172
|
+
if (!isGroupHeader(item)) {
|
|
173
|
+
return props;
|
|
174
|
+
}
|
|
175
|
+
const header = item;
|
|
176
|
+
const collapsed = collapsedGroups.has(header.groupKey);
|
|
177
|
+
const toggle = () => onToggleGroup(header.groupKey);
|
|
178
|
+
const content = renderGroupHeader ? renderGroupHeader(header.groupKey, header.count, collapsed) : /*#__PURE__*/_jsxDEV("span", {
|
|
179
|
+
...{
|
|
180
|
+
className: "x2mo6ok x1tgivj0"
|
|
181
|
+
},
|
|
182
|
+
children: [header.groupKey, ' ', /*#__PURE__*/_jsxDEV("span", {
|
|
183
|
+
...{
|
|
184
|
+
className: "x1sodnla xv1l7n4"
|
|
185
|
+
},
|
|
186
|
+
children: ["(", header.count, ")"]
|
|
187
|
+
}, void 0, true)]
|
|
188
|
+
}, void 0, true);
|
|
189
|
+
return {
|
|
190
|
+
...props,
|
|
191
|
+
htmlProps: {
|
|
192
|
+
...props.htmlProps,
|
|
193
|
+
// Convenience: clicking anywhere on the row toggles it. The chevron
|
|
194
|
+
// button below is the accessible, keyboard-operable control, so the
|
|
195
|
+
// row keeps its implicit `row` role (no role override here).
|
|
196
|
+
onClick: toggle,
|
|
197
|
+
'aria-expanded': !collapsed
|
|
198
|
+
},
|
|
199
|
+
styles: [...props.styles, styles.headerRow],
|
|
200
|
+
children:
|
|
201
|
+
/*#__PURE__*/
|
|
202
|
+
// colSpan larger than the column count is clamped by the browser
|
|
203
|
+
// to the actual number of columns, so the header always spans the
|
|
204
|
+
// full width without the plugin knowing the column count.
|
|
205
|
+
_jsxDEV("td", {
|
|
206
|
+
colSpan: 999,
|
|
207
|
+
...{
|
|
208
|
+
className: "xce4md1 x1vsv5vr x1t818jl"
|
|
209
|
+
},
|
|
210
|
+
children: /*#__PURE__*/_jsxDEV("span", {
|
|
211
|
+
...{
|
|
212
|
+
className: "x78zum5 x6s0dn4 xzye2dw"
|
|
213
|
+
},
|
|
214
|
+
children: [/*#__PURE__*/_jsxDEV("button", {
|
|
215
|
+
type: "button",
|
|
216
|
+
...{
|
|
217
|
+
className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x1717udv x1ghz6dp x1ypdohk xv9yike x1cqbx0l"
|
|
218
|
+
},
|
|
219
|
+
onClick: e => {
|
|
220
|
+
e.stopPropagation();
|
|
221
|
+
toggle();
|
|
222
|
+
},
|
|
223
|
+
"aria-label": collapsed ? `Expand group ${header.groupKey}` : `Collapse group ${header.groupKey}`,
|
|
224
|
+
"aria-expanded": !collapsed,
|
|
225
|
+
children: /*#__PURE__*/_jsxDEV("span", {
|
|
226
|
+
...{
|
|
227
|
+
0: {
|
|
228
|
+
className: "x3nfvp2 x11xpdln xx6bhzk"
|
|
229
|
+
},
|
|
230
|
+
1: {
|
|
231
|
+
className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
|
|
232
|
+
}
|
|
233
|
+
}[!!!collapsed << 0],
|
|
234
|
+
children: /*#__PURE__*/_jsxDEV(Icon, {
|
|
235
|
+
icon: "chevronRight",
|
|
236
|
+
size: "xsm"
|
|
237
|
+
}, void 0, false)
|
|
238
|
+
}, void 0, false)
|
|
239
|
+
}, void 0, false), content]
|
|
240
|
+
}, void 0, true)
|
|
241
|
+
}, void 0, false)
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
}), [collapsedGroups, onToggleGroup, renderGroupHeader]);
|
|
245
|
+
return {
|
|
246
|
+
plugin,
|
|
247
|
+
data: flattened,
|
|
248
|
+
idKey
|
|
249
|
+
};
|
|
250
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginateData.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/paginateData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"paginateData.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/paginateData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,CAAC,EAAE,CAaL"}
|
|
@@ -32,6 +32,10 @@ export function paginateData(data, page, pageSize) {
|
|
|
32
32
|
// pageSize would slice every page empty while the pagination chrome still
|
|
33
33
|
// renders page buttons.
|
|
34
34
|
const size = Number.isFinite(pageSize) ? Math.max(1, Math.floor(pageSize)) : 10;
|
|
35
|
-
|
|
35
|
+
// page needs the same coercion: a negative start index makes Array.slice
|
|
36
|
+
// count from the END of the data (page -1 returns the tail dressed up as a
|
|
37
|
+
// page), and a fractional page returns a slice straddling two pages.
|
|
38
|
+
const p = Number.isFinite(page) ? Math.max(1, Math.floor(page)) : 1;
|
|
39
|
+
const start = (p - 1) * size;
|
|
36
40
|
return data.slice(start, start + size);
|
|
37
41
|
}
|
|
@@ -20,7 +20,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
20
20
|
import "../../../theme/tokens.stylex.js";
|
|
21
21
|
import { spacingVars } from "../../../theme/tokens.stylex.js";
|
|
22
22
|
import { Pagination } from "../../../Pagination/index.js";
|
|
23
|
-
import {
|
|
23
|
+
import { jsxDEV as _jsxDEV, Fragment as _Fragment } from "react/jsx-dev-runtime";
|
|
24
24
|
// =============================================================================
|
|
25
25
|
// Styles
|
|
26
26
|
// =============================================================================
|
|
@@ -166,15 +166,15 @@ export function useTablePagination(config) {
|
|
|
166
166
|
if (isSinglePage) {
|
|
167
167
|
return children;
|
|
168
168
|
}
|
|
169
|
-
const makeWrapper = side => /*#__PURE__*/
|
|
169
|
+
const makeWrapper = side => /*#__PURE__*/_jsxDEV("div", {
|
|
170
170
|
...stylex.props(styles.wrapper, side === 'below' && styles.marginTop, side === 'above' && styles.marginBottom, a === 'center' && styles.alignCenter, a === 'end' && styles.alignEnd, a === 'start' && styles.alignStart),
|
|
171
|
-
children: /*#__PURE__*/
|
|
171
|
+
children: /*#__PURE__*/_jsxDEV(Pagination, {
|
|
172
172
|
...props
|
|
173
|
-
})
|
|
174
|
-
});
|
|
175
|
-
return /*#__PURE__*/
|
|
173
|
+
}, void 0, false)
|
|
174
|
+
}, void 0, false);
|
|
175
|
+
return /*#__PURE__*/_jsxDEV(_Fragment, {
|
|
176
176
|
children: [(pos === 'above' || pos === 'both') && makeWrapper('above'), children, (pos === 'below' || pos === 'both') && makeWrapper('below')]
|
|
177
|
-
});
|
|
177
|
+
}, void 0, true);
|
|
178
178
|
}
|
|
179
179
|
}), []);
|
|
180
180
|
}
|
|
@@ -72,7 +72,7 @@ export interface UseTableRowExpansionStateResult<T extends Record<string, unknow
|
|
|
72
72
|
* computing the expand-all state.
|
|
73
73
|
*
|
|
74
74
|
* @example
|
|
75
|
-
* ```
|
|
75
|
+
* ```
|
|
76
76
|
* const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
|
|
77
77
|
* const {data, expansionConfig} = useTableRowExpansionState({
|
|
78
78
|
* baseData: tree,
|
|
@@ -39,7 +39,7 @@ import { resolveContextActions } from "../../tableContextMenu.js";
|
|
|
39
39
|
* plugin needs — the flattened `data`, per-row depth, expand/collapse
|
|
40
40
|
* handlers, and the expand-all toggle state.
|
|
41
41
|
*/
|
|
42
|
-
import {
|
|
42
|
+
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
43
43
|
/**
|
|
44
44
|
* Manages row-expansion state and derives the config for
|
|
45
45
|
* {@link useTableRowExpansion}. This is the recommended entry point — it
|
|
@@ -47,7 +47,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
47
47
|
* computing the expand-all state.
|
|
48
48
|
*
|
|
49
49
|
* @example
|
|
50
|
-
* ```
|
|
50
|
+
* ```
|
|
51
51
|
* const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
|
|
52
52
|
* const {data, expansionConfig} = useTableRowExpansionState({
|
|
53
53
|
* baseData: tree,
|
|
@@ -196,7 +196,7 @@ function ExpansionChevron({
|
|
|
196
196
|
onToggle,
|
|
197
197
|
ariaLabel
|
|
198
198
|
}) {
|
|
199
|
-
return /*#__PURE__*/
|
|
199
|
+
return /*#__PURE__*/_jsxDEV("button", {
|
|
200
200
|
type: "button",
|
|
201
201
|
...{
|
|
202
202
|
className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
|
|
@@ -207,7 +207,7 @@ function ExpansionChevron({
|
|
|
207
207
|
},
|
|
208
208
|
"aria-label": ariaLabel,
|
|
209
209
|
"aria-expanded": isExpanded,
|
|
210
|
-
children: /*#__PURE__*/
|
|
210
|
+
children: /*#__PURE__*/_jsxDEV("span", {
|
|
211
211
|
...{
|
|
212
212
|
0: {
|
|
213
213
|
className: "x3nfvp2 x11xpdln xx6bhzk"
|
|
@@ -216,12 +216,12 @@ function ExpansionChevron({
|
|
|
216
216
|
className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
|
|
217
217
|
}
|
|
218
218
|
}[!!isExpanded << 0],
|
|
219
|
-
children: /*#__PURE__*/
|
|
219
|
+
children: /*#__PURE__*/_jsxDEV(Icon, {
|
|
220
220
|
icon: "chevronRight",
|
|
221
221
|
size: "xsm"
|
|
222
|
-
})
|
|
223
|
-
})
|
|
224
|
-
});
|
|
222
|
+
}, void 0, false)
|
|
223
|
+
}, void 0, false)
|
|
224
|
+
}, void 0, false);
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
// =============================================================================
|
|
@@ -261,11 +261,11 @@ export function useTableRowExpansion(config) {
|
|
|
261
261
|
return null;
|
|
262
262
|
}
|
|
263
263
|
const isExpanded = expandedKeys.has(key);
|
|
264
|
-
return /*#__PURE__*/
|
|
264
|
+
return /*#__PURE__*/_jsxDEV(ExpansionChevron, {
|
|
265
265
|
isExpanded: isExpanded,
|
|
266
266
|
onToggle: () => onToggle(key),
|
|
267
267
|
ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
|
|
268
|
-
});
|
|
268
|
+
}, void 0, false);
|
|
269
269
|
}
|
|
270
270
|
}), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth]);
|
|
271
271
|
return useMemo(() => ({
|
|
@@ -295,19 +295,19 @@ export function useTableRowExpansion(config) {
|
|
|
295
295
|
const key = getRowKey(item);
|
|
296
296
|
const isExpanded = expandedKeys.has(key);
|
|
297
297
|
const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
|
|
298
|
-
const chevron = expandable ? /*#__PURE__*/
|
|
298
|
+
const chevron = expandable ? /*#__PURE__*/_jsxDEV(ExpansionChevron, {
|
|
299
299
|
isExpanded: isExpanded,
|
|
300
300
|
onToggle: () => onToggle(key),
|
|
301
301
|
ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
|
|
302
|
-
}) : /*#__PURE__*/
|
|
302
|
+
}, void 0, false) : /*#__PURE__*/_jsxDEV("span", {
|
|
303
303
|
...{
|
|
304
304
|
className: "x1rg5ohu xvy4d1p xxk0z11 x2lah0s"
|
|
305
305
|
}
|
|
306
|
-
});
|
|
307
|
-
return /*#__PURE__*/
|
|
306
|
+
}, void 0, false);
|
|
307
|
+
return /*#__PURE__*/_jsxDEV("div", {
|
|
308
308
|
...stylex.props(expansionStyles.indentedCell, indent > 0 && expansionStyles.indent(indent)),
|
|
309
309
|
children: [chevron, originalContent]
|
|
310
|
-
});
|
|
310
|
+
}, void 0, true);
|
|
311
311
|
}
|
|
312
312
|
};
|
|
313
313
|
});
|
|
@@ -323,14 +323,14 @@ export function useTableRowExpansion(config) {
|
|
|
323
323
|
const allExpanded = isAllExpanded === true;
|
|
324
324
|
return {
|
|
325
325
|
...props,
|
|
326
|
-
content: /*#__PURE__*/
|
|
326
|
+
content: /*#__PURE__*/_jsxDEV("button", {
|
|
327
327
|
type: "button",
|
|
328
328
|
...{
|
|
329
329
|
className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
|
|
330
330
|
},
|
|
331
331
|
onClick: () => onToggleExpandAll(!allExpanded),
|
|
332
332
|
"aria-label": allExpanded ? 'Collapse all rows' : 'Expand all rows',
|
|
333
|
-
children: /*#__PURE__*/
|
|
333
|
+
children: /*#__PURE__*/_jsxDEV("span", {
|
|
334
334
|
...{
|
|
335
335
|
0: {
|
|
336
336
|
className: "x3nfvp2 x11xpdln xx6bhzk"
|
|
@@ -339,12 +339,12 @@ export function useTableRowExpansion(config) {
|
|
|
339
339
|
className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
|
|
340
340
|
}
|
|
341
341
|
}[!!allExpanded << 0],
|
|
342
|
-
children: /*#__PURE__*/
|
|
342
|
+
children: /*#__PURE__*/_jsxDEV(Icon, {
|
|
343
343
|
icon: "chevronRight",
|
|
344
344
|
size: "xsm"
|
|
345
|
-
})
|
|
346
|
-
})
|
|
347
|
-
})
|
|
345
|
+
}, void 0, false)
|
|
346
|
+
}, void 0, false)
|
|
347
|
+
}, void 0, false)
|
|
348
348
|
};
|
|
349
349
|
}
|
|
350
350
|
return {
|
|
@@ -367,11 +367,11 @@ export function useTableRowExpansion(config) {
|
|
|
367
367
|
id: 'row-expansion-toggle',
|
|
368
368
|
group: 'row-expansion',
|
|
369
369
|
label: isExpanded ? 'Collapse row' : 'Expand row',
|
|
370
|
-
icon: /*#__PURE__*/
|
|
370
|
+
icon: /*#__PURE__*/_jsxDEV(Icon, {
|
|
371
371
|
icon: isExpanded ? 'chevronDown' : 'chevronRight',
|
|
372
372
|
size: "xsm",
|
|
373
373
|
"aria-hidden": true
|
|
374
|
-
}),
|
|
374
|
+
}, void 0, false),
|
|
375
375
|
onSelect: () => onToggle(key)
|
|
376
376
|
}]
|
|
377
377
|
};
|
|
@@ -50,7 +50,7 @@ import { pixel } from "../../columnUtils.js";
|
|
|
50
50
|
* changes independently. Row styling is handled by per-row ref callbacks
|
|
51
51
|
* that subscribe to this store — the store itself holds no DOM references.
|
|
52
52
|
*/
|
|
53
|
-
import {
|
|
53
|
+
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
54
54
|
function createSelectionStore(configRef) {
|
|
55
55
|
const listeners = new Set();
|
|
56
56
|
return {
|
|
@@ -108,9 +108,9 @@ function SelectAllCheckbox() {
|
|
|
108
108
|
if (!store) {
|
|
109
109
|
return null;
|
|
110
110
|
}
|
|
111
|
-
return /*#__PURE__*/
|
|
111
|
+
return /*#__PURE__*/_jsxDEV(SelectAllCheckboxInner, {
|
|
112
112
|
store: store
|
|
113
|
-
});
|
|
113
|
+
}, void 0, false);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
@@ -142,7 +142,7 @@ function SelectAllCheckboxInner({
|
|
|
142
142
|
const state = useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
|
|
143
143
|
const allSelected = state === SELECT_ALL;
|
|
144
144
|
const indeterminate = state === SELECT_INDETERMINATE;
|
|
145
|
-
return /*#__PURE__*/
|
|
145
|
+
return /*#__PURE__*/_jsxDEV(CheckboxInput, {
|
|
146
146
|
label: "Select all rows",
|
|
147
147
|
isLabelHidden: true,
|
|
148
148
|
value: allSelected ? true : indeterminate ? 'indeterminate' : false,
|
|
@@ -150,7 +150,7 @@ function SelectAllCheckboxInner({
|
|
|
150
150
|
isAllSelected: !allSelected
|
|
151
151
|
}),
|
|
152
152
|
size: "sm"
|
|
153
|
-
});
|
|
153
|
+
}, void 0, false);
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
/**
|
|
@@ -164,10 +164,10 @@ function SelectionCellContent({
|
|
|
164
164
|
if (!store) {
|
|
165
165
|
return null;
|
|
166
166
|
}
|
|
167
|
-
return /*#__PURE__*/
|
|
167
|
+
return /*#__PURE__*/_jsxDEV(SelectionCellContentInner, {
|
|
168
168
|
store: store,
|
|
169
169
|
item: item
|
|
170
|
-
});
|
|
170
|
+
}, void 0, false);
|
|
171
171
|
}
|
|
172
172
|
function SelectionCellContentInner({
|
|
173
173
|
store,
|
|
@@ -180,7 +180,7 @@ function SelectionCellContentInner({
|
|
|
180
180
|
if (!selectable) {
|
|
181
181
|
return null;
|
|
182
182
|
}
|
|
183
|
-
return /*#__PURE__*/
|
|
183
|
+
return /*#__PURE__*/_jsxDEV(CheckboxInput, {
|
|
184
184
|
label: "Select row",
|
|
185
185
|
isLabelHidden: true,
|
|
186
186
|
value: isSelected,
|
|
@@ -190,7 +190,7 @@ function SelectionCellContentInner({
|
|
|
190
190
|
}),
|
|
191
191
|
isDisabled: !enabled,
|
|
192
192
|
size: "sm"
|
|
193
|
-
});
|
|
193
|
+
}, void 0, false);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
// =============================================================================
|
|
@@ -228,29 +228,29 @@ export function useTableSelection(config) {
|
|
|
228
228
|
// component so each row's checkbox re-renders independently.
|
|
229
229
|
const selectionColumn = useMemo(() => ({
|
|
230
230
|
key: SELECTION_COLUMN_KEY,
|
|
231
|
-
header: /*#__PURE__*/
|
|
231
|
+
header: /*#__PURE__*/_jsxDEV("div", {
|
|
232
232
|
...{
|
|
233
233
|
className: "x78zum5 x6s0dn4 xl56j7k"
|
|
234
234
|
},
|
|
235
|
-
children: /*#__PURE__*/
|
|
236
|
-
}),
|
|
235
|
+
children: /*#__PURE__*/_jsxDEV(SelectAllCheckbox, {}, void 0, false)
|
|
236
|
+
}, void 0, false),
|
|
237
237
|
width: SELECTION_COLUMN_WIDTH,
|
|
238
238
|
resizable: false,
|
|
239
|
-
renderCell: item => /*#__PURE__*/
|
|
239
|
+
renderCell: item => /*#__PURE__*/_jsxDEV("div", {
|
|
240
240
|
...{
|
|
241
241
|
className: "x78zum5 x6s0dn4 xl56j7k"
|
|
242
242
|
},
|
|
243
|
-
children: /*#__PURE__*/
|
|
243
|
+
children: /*#__PURE__*/_jsxDEV(SelectionCellContent, {
|
|
244
244
|
item: item
|
|
245
|
-
})
|
|
246
|
-
})
|
|
245
|
+
}, void 0, false)
|
|
246
|
+
}, void 0, false)
|
|
247
247
|
}), []);
|
|
248
248
|
return useMemo(() => ({
|
|
249
249
|
transformTableContext(children) {
|
|
250
|
-
return /*#__PURE__*/
|
|
250
|
+
return /*#__PURE__*/_jsxDEV(SelectionStoreContext, {
|
|
251
251
|
value: store,
|
|
252
252
|
children: children
|
|
253
|
-
});
|
|
253
|
+
}, void 0, false);
|
|
254
254
|
},
|
|
255
255
|
transformColumns(columns) {
|
|
256
256
|
return [selectionColumn, ...columns];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableSelectionState.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/selection/useTableSelectionState.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAMjE,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;OAGG;IACH,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;IAClD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC;;;OAGG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;;OAEG;IACH,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,iDAAiD;IACjD,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAC7C;AAQD,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACtC,4BAA4B,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useTableSelectionState.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/selection/useTableSelectionState.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAMjE,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;OAGG;IACH,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;IAClD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC;;;OAGG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;;OAEG;IACH,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,iDAAiD;IACjD,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAC7C;AAQD,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACtC,4BAA4B,CAAC,CAAC,CAAC,CAiIjC"}
|
|
@@ -60,7 +60,17 @@ export function useTableSelectionState(config) {
|
|
|
60
60
|
// All IDs that *would* be selected if select-all is checked
|
|
61
61
|
// (all actionable items + any frozen selected items)
|
|
62
62
|
const allSelectableIDs = useMemo(() => new Set([...selectedKeys, ...selectableIDs]), [selectedKeys, selectableIDs]);
|
|
63
|
-
const getAllSelected = useCallback(() =>
|
|
63
|
+
const getAllSelected = useCallback(() => {
|
|
64
|
+
// Require at least one actionable row: with zero visible selectable
|
|
65
|
+
// rows (e.g. a filter with no matches while a selection exists), the
|
|
66
|
+
// union-based size comparison would read any non-empty selection as
|
|
67
|
+
// "all selected" — a checked header checkbox over an empty table that
|
|
68
|
+
// deselect-all can't clear, since the invisible keys count as frozen.
|
|
69
|
+
if (selectableIDs.size === 0) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return allSelectableIDs.size === selectedKeys.size;
|
|
73
|
+
}, [allSelectableIDs, selectableIDs, selectedKeys]);
|
|
64
74
|
|
|
65
75
|
// Use refs to keep onSelectAll stable
|
|
66
76
|
const frozenSelectedIDsRef = useRef(frozenSelectedIDs);
|