@astryxdesign/core 0.1.1 → 0.1.2-canary.04e71b2
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 +105 -0
- package/README.md +131 -13
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +11 -5
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +4 -1
- package/dist/Banner/Banner.d.ts +7 -0
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +9 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +24 -5
- package/dist/Button/Button.d.ts +12 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +53 -17
- package/dist/Calendar/Calendar.d.ts +5 -4
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +82 -43
- package/dist/Calendar/hooks/index.d.ts +0 -2
- package/dist/Calendar/hooks/index.d.ts.map +1 -1
- package/dist/Calendar/hooks/index.js +1 -2
- package/dist/Calendar/index.d.ts +3 -3
- package/dist/Calendar/index.d.ts.map +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/Calendar/styles.d.ts +3 -9
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +3 -11
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +17 -3
- package/dist/Center/Center.d.ts +11 -1
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +9 -3
- package/dist/Chat/ChatMessageList.d.ts +14 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -0
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +4 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts +23 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +51 -9
- package/dist/CheckboxList/CheckboxList.d.ts +13 -1
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +39 -9
- package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +49 -37
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +5 -5
- package/dist/ContextMenu/ContextMenu.d.ts +4 -5
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +93 -11
- package/dist/DateInput/DateInput.d.ts +23 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +59 -8
- package/dist/DateRangeInput/DateRangeInput.d.ts +23 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +42 -9
- package/dist/DateTimeInput/DateTimeInput.d.ts +35 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +78 -15
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +12 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +1 -8
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +42 -14
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +7 -1
- package/dist/Field/Field.d.ts +19 -2
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +4 -0
- package/dist/Field/FieldLabel.d.ts +21 -2
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +41 -26
- package/dist/FileInput/FileInput.d.ts +22 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +56 -10
- package/dist/Grid/Grid.d.ts +11 -1
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +8 -0
- package/dist/HoverCard/HoverCard.d.ts +2 -2
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +18 -6
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +7 -3
- package/dist/InputGroup/InputGroup.d.ts +2 -2
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +14 -5
- package/dist/InputGroup/InputGroupContext.d.ts +4 -0
- package/dist/InputGroup/InputGroupContext.d.ts.map +1 -1
- package/dist/InputGroup/InputGroupContext.js +2 -2
- package/dist/InputGroup/index.d.ts +1 -0
- package/dist/InputGroup/index.d.ts.map +1 -1
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +34 -2
- package/dist/Layer/anchorName.d.ts +20 -0
- package/dist/Layer/anchorName.d.ts.map +1 -0
- package/dist/Layer/anchorName.js +36 -0
- package/dist/Layer/layerAnimations.stylex.d.ts +4 -0
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +8 -4
- package/dist/Layer/useLayer.d.ts +29 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +55 -11
- package/dist/Layout/Layout.d.ts +4 -11
- package/dist/Layout/Layout.d.ts.map +1 -1
- package/dist/Layout/Layout.js +10 -11
- package/dist/Layout/LayoutFooter.d.ts +2 -2
- package/dist/Layout/LayoutFooter.d.ts.map +1 -1
- package/dist/Layout/LayoutHeader.d.ts +2 -2
- package/dist/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/Layout/LayoutPanel.d.ts +2 -2
- package/dist/Layout/LayoutPanel.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.d.ts +51 -0
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +63 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +4 -2
- package/dist/Link/Link.d.ts +17 -2
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +20 -9
- package/dist/Link/LinkProvider.d.ts +1 -0
- package/dist/Link/LinkProvider.d.ts.map +1 -1
- package/dist/Link/LinkProvider.js +1 -0
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +18 -3
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +13 -0
- package/dist/MoreMenu/MoreMenu.d.ts +1 -7
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MoreMenu/MoreMenu.js +0 -2
- package/dist/MultiSelector/MultiSelector.d.ts +25 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +103 -22
- package/dist/MultiSelector/hooks.d.ts +12 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +14 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +34 -3
- package/dist/NumberInput/NumberInput.d.ts +23 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +62 -12
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +46 -28
- package/dist/Popover/usePopover.d.ts +25 -2
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +18 -6
- package/dist/PowerSearch/PowerSearch.d.ts +11 -1
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +6 -1
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +3 -5
- package/dist/RadioList/RadioList.d.ts +20 -2
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +105 -9
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +13 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts +13 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +78 -44
- package/dist/SegmentedControl/SegmentedControlContext.d.ts +7 -0
- package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +13 -2
- package/dist/Selector/Selector.d.ts +22 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +84 -23
- package/dist/Selector/hooks.d.ts +8 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +14 -1
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +8 -2
- package/dist/Slider/Slider.d.ts +21 -0
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +38 -11
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +38 -23
- package/dist/Stack/Stack.d.ts.map +1 -1
- package/dist/Stack/Stack.js +25 -1
- package/dist/Stack/StackItem.d.ts +12 -23
- package/dist/Stack/StackItem.d.ts.map +1 -1
- package/dist/Stack/StackItem.js +8 -1
- package/dist/Switch/Switch.d.ts +23 -2
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +41 -11
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +6 -0
- package/dist/TabList/TabList.d.ts +16 -4
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +86 -10
- package/dist/TabList/TabListContext.d.ts +5 -0
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +5 -0
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +6 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +38 -16
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +36 -7
- package/dist/Table/TableCell.d.ts +8 -1
- package/dist/Table/TableCell.d.ts.map +1 -1
- package/dist/Table/TableCell.js +10 -10
- package/dist/Table/TableHeaderCell.d.ts +8 -1
- package/dist/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/Table/TableHeaderCell.js +16 -16
- package/dist/Table/TableRow.d.ts +6 -1
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +15 -7
- package/dist/Table/index.d.ts +4 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +3 -2
- package/dist/Table/plugins/pagination/paginateData.d.ts +2 -1
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +8 -3
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +6 -1
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +59 -3
- package/dist/Table/plugins/stickyColumns/index.d.ts +3 -0
- package/dist/Table/plugins/stickyColumns/index.d.ts.map +1 -0
- package/dist/Table/plugins/stickyColumns/index.js +3 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts +25 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +369 -0
- package/dist/Table/tableContextMenu.d.ts +33 -0
- package/dist/Table/tableContextMenu.d.ts.map +1 -0
- package/dist/Table/tableContextMenu.js +133 -0
- package/dist/Table/types.d.ts +161 -5
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +1 -1
- package/dist/Text/text.stylex.d.ts +2 -2
- package/dist/Text/text.stylex.js +2 -2
- package/dist/TextArea/TextArea.d.ts +22 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +41 -9
- package/dist/TextInput/TextInput.d.ts +23 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +55 -10
- package/dist/TimeInput/TimeInput.d.ts +23 -1
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +53 -10
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +28 -3
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +14 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +132 -3
- package/dist/ToggleButton/ToggleButton.d.ts +7 -9
- package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +34 -57
- package/dist/Tokenizer/Tokenizer.d.ts +12 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +27 -5
- package/dist/Toolbar/Toolbar.d.ts +3 -3
- package/dist/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +51 -7
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +57 -9
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +72 -2
- package/dist/TreeList/TreeListItem.d.ts +11 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +51 -12
- package/dist/TreeList/treeListItem.markers.stylex.d.ts +16 -0
- package/dist/TreeList/treeListItem.markers.stylex.d.ts.map +1 -0
- package/dist/TreeList/treeListItem.markers.stylex.js +22 -0
- package/dist/Typeahead/BaseTypeahead.d.ts +9 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +67 -6
- package/dist/Typeahead/Typeahead.d.ts +24 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +29 -5
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +61 -0
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
- package/dist/VisuallyHidden/VisuallyHidden.js +65 -0
- package/dist/VisuallyHidden/index.d.ts +11 -0
- package/dist/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/VisuallyHidden/index.js +13 -0
- package/dist/astryx.css +40 -1
- package/dist/astryx.umd.js +147 -0
- package/dist/astryx.umd.js.map +7 -0
- package/dist/hooks/focusableSelector.d.ts +22 -0
- package/dist/hooks/focusableSelector.d.ts.map +1 -0
- package/dist/hooks/focusableSelector.js +24 -0
- package/dist/hooks/index.d.ts +12 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +7 -2
- package/dist/hooks/useAnnounce.d.ts +40 -0
- package/dist/hooks/useAnnounce.d.ts.map +1 -0
- package/dist/hooks/useAnnounce.js +142 -0
- package/dist/hooks/useClickableContainer.d.ts +16 -1
- package/dist/hooks/useClickableContainer.d.ts.map +1 -1
- package/dist/hooks/useClickableContainer.js +16 -4
- package/dist/hooks/useEntryAnimation.d.ts.map +1 -1
- package/dist/hooks/useEntryAnimation.js +4 -4
- package/dist/hooks/useFocusTrap.d.ts +18 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +87 -3
- package/dist/hooks/useGridFocus.d.ts +88 -1
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +261 -62
- package/dist/hooks/useKeyboardHint.d.ts +82 -0
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -0
- package/dist/hooks/useKeyboardHint.js +220 -0
- package/dist/hooks/useListFocus.d.ts +78 -7
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +305 -52
- package/dist/hooks/useLongPress.d.ts +21 -0
- package/dist/hooks/useLongPress.d.ts.map +1 -0
- package/dist/hooks/useLongPress.js +89 -0
- package/dist/hooks/useTreeFocus.d.ts +157 -0
- package/dist/hooks/useTreeFocus.d.ts.map +1 -0
- package/dist/hooks/useTreeFocus.js +337 -0
- package/dist/hooks/useTypeahead.d.ts +63 -0
- package/dist/hooks/useTypeahead.d.ts.map +1 -0
- package/dist/hooks/useTypeahead.js +117 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/generateThemeRules.js +1 -1
- package/dist/theme/syntax/SyntaxTheme.d.ts +1 -1
- package/dist/theme/syntax/SyntaxTheme.js +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.js +2 -2
- package/dist/theme/syntax/presets.d.ts +1 -1
- package/dist/theme/syntax/presets.d.ts.map +1 -1
- package/dist/theme/syntax/presets.js +1 -1
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.js +1 -1
- package/dist/theme/types.d.ts +1 -1
- package/dist/utils/dateTypes.d.ts +12 -0
- package/dist/utils/dateTypes.d.ts.map +1 -1
- package/dist/utils/dateTypes.js +41 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/inputAria.d.ts +29 -0
- package/dist/utils/inputAria.d.ts.map +1 -0
- package/dist/utils/inputAria.js +30 -0
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +5 -2
- package/package.json +15 -5
- package/src/Avatar/Avatar.test.tsx +37 -0
- package/src/Avatar/Avatar.tsx +10 -5
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +3 -0
- package/src/Banner/Banner.doc.mjs +8 -0
- package/src/Banner/Banner.test.tsx +16 -7
- package/src/Banner/Banner.tsx +9 -2
- package/src/Breadcrumbs/BreadcrumbItem.tsx +25 -7
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
- package/src/Button/Button.doc.mjs +6 -0
- package/src/Button/Button.test.tsx +105 -11
- package/src/Button/Button.tsx +76 -21
- package/src/Calendar/Calendar.doc.mjs +4 -4
- package/src/Calendar/Calendar.test.tsx +168 -30
- package/src/Calendar/Calendar.tsx +121 -66
- package/src/Calendar/hooks/index.ts +0 -6
- package/src/Calendar/index.ts +1 -3
- package/src/Calendar/styles.ts +4 -9
- package/src/Carousel/Carousel.doc.mjs +7 -1
- package/src/Carousel/Carousel.test.tsx +20 -0
- package/src/Carousel/Carousel.tsx +16 -1
- package/src/Center/Center.doc.mjs +12 -2
- package/src/Center/Center.tsx +28 -3
- package/src/Chat/ChatComposer.doc.mjs +3 -0
- package/src/Chat/ChatComposerDrawer.doc.mjs +12 -0
- package/src/Chat/ChatMessageList.doc.mjs +8 -0
- package/src/Chat/ChatMessageList.test.tsx +18 -0
- package/src/Chat/ChatMessageList.tsx +16 -0
- package/src/Chat/useTriggerMenu.tsx +3 -0
- package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +172 -27
- package/src/CheckboxInput/CheckboxInput.tsx +78 -6
- package/src/CheckboxList/CheckboxList.doc.mjs +9 -0
- package/src/CheckboxList/CheckboxList.test.tsx +169 -16
- package/src/CheckboxList/CheckboxList.tsx +56 -3
- package/src/CheckboxList/CheckboxListContext.tsx +7 -0
- package/src/Citation/Citation.doc.mjs +10 -0
- package/src/Citation/Citation.test.tsx +117 -0
- package/src/Citation/Citation.tsx +9 -1
- package/src/ClickableCard/ClickableCard.doc.mjs +15 -0
- package/src/CodeBlock/CodeBlock.test.tsx +115 -0
- package/src/CodeBlock/CodeBlock.tsx +61 -33
- package/src/CommandPalette/CommandPalette.test.tsx +47 -1
- package/src/CommandPalette/CommandPalette.tsx +9 -21
- package/src/ContextMenu/ContextMenu.doc.mjs +4 -4
- package/src/ContextMenu/ContextMenu.test.tsx +155 -1
- package/src/ContextMenu/ContextMenu.tsx +113 -16
- package/src/DateInput/DateInput.doc.mjs +281 -56
- package/src/DateInput/DateInput.test.tsx +188 -2
- package/src/DateInput/DateInput.tsx +89 -10
- package/src/DateRangeInput/DateRangeInput.doc.mjs +251 -46
- package/src/DateRangeInput/DateRangeInput.test.tsx +182 -20
- package/src/DateRangeInput/DateRangeInput.tsx +63 -5
- package/src/DateTimeInput/DateTimeInput.doc.mjs +368 -67
- package/src/DateTimeInput/DateTimeInput.test.tsx +279 -11
- package/src/DateTimeInput/DateTimeInput.tsx +125 -17
- package/src/Dialog/Dialog.doc.mjs +2 -2
- package/src/Dialog/Dialog.tsx +12 -0
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -8
- package/src/DropdownMenu/DropdownMenu.test.tsx +56 -42
- package/src/DropdownMenu/DropdownMenu.tsx +52 -18
- package/src/EmptyState/EmptyState.test.tsx +4 -2
- package/src/EmptyState/EmptyState.tsx +6 -2
- package/src/Field/Field.test.tsx +32 -0
- package/src/Field/Field.tsx +23 -5
- package/src/Field/FieldLabel.tsx +55 -17
- package/src/FileInput/FileInput.doc.mjs +17 -0
- package/src/FileInput/FileInput.test.tsx +283 -49
- package/src/FileInput/FileInput.tsx +76 -4
- package/src/Grid/Grid.doc.mjs +14 -4
- package/src/Grid/Grid.tsx +20 -0
- package/src/HoverCard/HoverCard.doc.mjs +3 -0
- package/src/HoverCard/HoverCard.test.tsx +189 -2
- package/src/HoverCard/HoverCard.tsx +20 -16
- package/src/HoverCard/useHoverCard.tsx +13 -10
- package/src/Icon/Icon.doc.mjs +8 -0
- package/src/InputGroup/InputGroup.doc.mjs +2 -2
- package/src/InputGroup/InputGroup.test.tsx +98 -60
- package/src/InputGroup/InputGroup.tsx +21 -4
- package/src/InputGroup/InputGroupContext.ts +9 -4
- package/src/InputGroup/index.ts +1 -0
- package/src/Kbd/Kbd.test.tsx +22 -4
- package/src/Kbd/Kbd.tsx +37 -12
- package/src/Layer/anchorName.test.ts +146 -0
- package/src/Layer/anchorName.ts +46 -0
- package/src/Layer/layerAnimations.stylex.ts +20 -4
- package/src/Layer/useLayer.doc.mjs +12 -2
- package/src/Layer/useLayer.tsx +100 -15
- package/src/Layout/Layout.doc.mjs +1 -1
- package/src/Layout/Layout.tsx +8 -16
- package/src/Layout/LayoutFooter.doc.mjs +4 -4
- package/src/Layout/LayoutFooter.tsx +3 -3
- package/src/Layout/LayoutHeader.doc.mjs +4 -4
- package/src/Layout/LayoutHeader.tsx +3 -3
- package/src/Layout/LayoutPanel.tsx +3 -3
- package/src/Layout/padding.stylex.ts +52 -0
- package/src/Lightbox/Lightbox.doc.mjs +9 -2
- package/src/Lightbox/Lightbox.test.tsx +53 -5
- package/src/Lightbox/Lightbox.tsx +9 -4
- package/src/Link/Link.doc.mjs +14 -0
- package/src/Link/Link.test.tsx +52 -2
- package/src/Link/Link.tsx +42 -7
- package/src/Link/LinkProvider.tsx +1 -0
- package/src/List/List.doc.mjs +7 -0
- package/src/Markdown/Markdown.doc.mjs +2 -0
- package/src/Markdown/Markdown.test.tsx +28 -26
- package/src/Markdown/Markdown.tsx +21 -6
- package/src/MetadataList/MetadataListItem.doc.mjs +4 -0
- package/src/MobileNav/MobileNav.doc.mjs +8 -8
- package/src/MobileNav/MobileNav.tsx +13 -0
- package/src/MobileNav/MobileNavReopen.test.tsx +118 -0
- package/src/MoreMenu/MoreMenu.doc.mjs +2 -17
- package/src/MoreMenu/MoreMenu.tsx +0 -9
- package/src/MultiSelector/MultiSelector.doc.mjs +25 -0
- package/src/MultiSelector/MultiSelector.test.tsx +375 -8
- package/src/MultiSelector/MultiSelector.tsx +145 -21
- package/src/MultiSelector/hooks.ts +27 -0
- package/src/NavMenu/NavHeadingMenu.test.tsx +77 -1
- package/src/NavMenu/NavHeadingMenu.tsx +50 -3
- package/src/NumberInput/NumberInput.doc.mjs +17 -0
- package/src/NumberInput/NumberInput.test.tsx +242 -40
- package/src/NumberInput/NumberInput.tsx +89 -11
- package/src/OverflowList/OverflowList.doc.mjs +17 -0
- package/src/Pagination/Pagination.doc.mjs +3 -3
- package/src/Pagination/Pagination.test.tsx +250 -14
- package/src/Pagination/Pagination.tsx +54 -29
- package/src/Popover/usePopover.doc.mjs +7 -3
- package/src/Popover/usePopover.tsx +49 -6
- package/src/PowerSearch/PowerSearch.doc.mjs +15 -0
- package/src/PowerSearch/PowerSearch.test.tsx +97 -1
- package/src/PowerSearch/PowerSearch.tsx +16 -3
- package/src/ProgressBar/ProgressBar.test.tsx +45 -27
- package/src/ProgressBar/ProgressBar.tsx +3 -4
- package/src/RadioList/RadioList.doc.mjs +9 -0
- package/src/RadioList/RadioList.test.tsx +252 -16
- package/src/RadioList/RadioList.tsx +166 -10
- package/src/RadioList/RadioListItem.tsx +14 -2
- package/src/Resizable/Resizable.doc.mjs +1 -1
- package/src/Section/Section.doc.mjs +11 -0
- package/src/SegmentedControl/SegmentedControl.doc.mjs +9 -0
- package/src/SegmentedControl/SegmentedControl.test.tsx +214 -42
- package/src/SegmentedControl/SegmentedControl.tsx +102 -54
- package/src/SegmentedControl/SegmentedControlContext.ts +7 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +14 -1
- package/src/SelectableCard/SelectableCard.doc.mjs +15 -0
- package/src/Selector/Selector.doc.mjs +25 -0
- package/src/Selector/Selector.test.tsx +322 -15
- package/src/Selector/Selector.tsx +126 -40
- package/src/Selector/hooks.ts +23 -0
- package/src/SideNav/SideNav.test.tsx +16 -0
- package/src/SideNav/SideNavItem.tsx +2 -4
- package/src/Skeleton/Skeleton.doc.mjs +11 -1
- package/src/Skeleton/Skeleton.test.tsx +25 -0
- package/src/Skeleton/Skeleton.tsx +11 -1
- package/src/Slider/Slider.doc.mjs +19 -0
- package/src/Slider/Slider.test.tsx +158 -18
- package/src/Slider/Slider.tsx +54 -6
- package/src/Spinner/Spinner.tsx +7 -1
- package/src/Stack/Stack.doc.mjs +77 -0
- package/src/Stack/Stack.test.tsx +55 -5
- package/src/Stack/Stack.tsx +73 -24
- package/src/Stack/StackItem.test.tsx +23 -0
- package/src/Stack/StackItem.tsx +20 -23
- package/src/Switch/Switch.doc.mjs +15 -0
- package/src/Switch/Switch.test.tsx +162 -27
- package/src/Switch/Switch.tsx +61 -21
- package/src/TabList/Tab.tsx +6 -0
- package/src/TabList/TabList.doc.mjs +12 -0
- package/src/TabList/TabList.test.tsx +208 -0
- package/src/TabList/TabList.tsx +102 -12
- package/src/TabList/TabListContext.ts +7 -3
- package/src/TabList/TabMenu.tsx +6 -3
- package/src/Table/BaseTable.tsx +72 -41
- package/src/Table/Table.doc.mjs +14 -0
- package/src/Table/Table.test.tsx +39 -30
- package/src/Table/Table.tsx +27 -1
- package/src/Table/TableCell.tsx +25 -23
- package/src/Table/TableHeaderCell.tsx +28 -29
- package/src/Table/TableRow.tsx +37 -7
- package/src/Table/index.ts +6 -2
- package/src/Table/plugins/pagination/paginateData.ts +10 -3
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +16 -0
- package/src/Table/plugins/pagination/useTablePagination.tsx +8 -1
- package/src/Table/plugins/sortable/useTableSortable.test.tsx +91 -2
- package/src/Table/plugins/sortable/useTableSortable.tsx +53 -1
- package/src/Table/plugins/stickyColumns/index.ts +4 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +163 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +407 -0
- package/src/Table/tableContextMenu.test.tsx +157 -0
- package/src/Table/tableContextMenu.tsx +142 -0
- package/src/Table/types.ts +175 -4
- package/src/Table/useBaseTablePlugins.ts +1 -0
- package/src/Table/useTableColumnResize.doc.mjs +96 -0
- package/src/Table/useTableStickyColumns.doc.mjs +59 -0
- package/src/Text/Heading.doc.mjs +15 -2
- package/src/Text/Text.doc.mjs +7 -1
- package/src/Text/text.stylex.ts +2 -2
- package/src/TextArea/TextArea.doc.mjs +17 -0
- package/src/TextArea/TextArea.test.tsx +167 -35
- package/src/TextArea/TextArea.tsx +62 -15
- package/src/TextInput/TextInput.doc.mjs +17 -0
- package/src/TextInput/TextInput.test.tsx +168 -34
- package/src/TextInput/TextInput.tsx +77 -9
- package/src/TimeInput/TimeInput.doc.mjs +335 -60
- package/src/TimeInput/TimeInput.test.tsx +144 -7
- package/src/TimeInput/TimeInput.tsx +74 -5
- package/src/Timestamp/Timestamp.doc.mjs +9 -0
- package/src/Timestamp/Timestamp.test.tsx +44 -18
- package/src/Timestamp/Timestamp.tsx +30 -10
- package/src/Toast/Toast.tsx +14 -0
- package/src/Toast/ToastViewport.test.tsx +204 -0
- package/src/Toast/ToastViewport.tsx +167 -21
- package/src/ToggleButton/ToggleButton.doc.mjs +9 -3
- package/src/ToggleButton/ToggleButton.test.tsx +39 -18
- package/src/ToggleButton/ToggleButton.tsx +46 -83
- package/src/Tokenizer/Tokenizer.doc.mjs +15 -0
- package/src/Tokenizer/Tokenizer.test.tsx +105 -1
- package/src/Tokenizer/Tokenizer.tsx +41 -2
- package/src/Toolbar/Toolbar.doc.mjs +65 -5
- package/src/Toolbar/Toolbar.test.tsx +109 -6
- package/src/Toolbar/Toolbar.tsx +59 -5
- package/src/Tooltip/Tooltip.test.tsx +81 -0
- package/src/Tooltip/useTooltip.tsx +57 -11
- package/src/TreeList/TreeList.test.tsx +295 -6
- package/src/TreeList/TreeList.tsx +73 -1
- package/src/TreeList/TreeListItem.tsx +51 -5
- package/src/TreeList/treeListItem.markers.stylex.ts +20 -0
- package/src/Typeahead/BaseTypeahead.tsx +86 -9
- package/src/Typeahead/Typeahead.doc.mjs +136 -30
- package/src/Typeahead/Typeahead.test.tsx +331 -1
- package/src/Typeahead/Typeahead.tsx +52 -1
- package/src/VisuallyHidden/VisuallyHidden.doc.mjs +80 -0
- package/src/VisuallyHidden/VisuallyHidden.test.tsx +76 -0
- package/src/VisuallyHidden/VisuallyHidden.tsx +113 -0
- package/src/VisuallyHidden/index.ts +15 -0
- package/src/hooks/focusableSelector.ts +25 -0
- package/src/hooks/index.ts +28 -2
- package/src/hooks/useAnnounce.test.tsx +101 -0
- package/src/hooks/useAnnounce.ts +168 -0
- package/src/hooks/useClickableContainer.ts +16 -4
- package/src/hooks/useEntryAnimation.ts +16 -4
- package/src/hooks/useFocusTrap.test.tsx +132 -0
- package/src/hooks/useFocusTrap.ts +98 -4
- package/src/hooks/useGridFocus.doc.mjs +40 -2
- package/src/hooks/useGridFocus.test.tsx +132 -0
- package/src/hooks/useGridFocus.ts +343 -67
- package/src/hooks/useImageMode.test.ts +133 -0
- package/src/hooks/useKeyboardHint.doc.mjs +101 -0
- package/src/hooks/useKeyboardHint.test.tsx +70 -0
- package/src/hooks/useKeyboardHint.tsx +332 -0
- package/src/hooks/useListFocus.doc.mjs +50 -10
- package/src/hooks/useListFocus.test.tsx +375 -0
- package/src/hooks/useListFocus.ts +395 -57
- package/src/hooks/useLongPress.test.tsx +134 -0
- package/src/hooks/useLongPress.ts +119 -0
- package/src/hooks/useTreeFocus.doc.mjs +140 -0
- package/src/hooks/useTreeFocus.test.tsx +214 -0
- package/src/hooks/useTreeFocus.ts +559 -0
- package/src/hooks/useTypeahead.test.tsx +109 -0
- package/src/hooks/useTypeahead.ts +183 -0
- package/src/index.ts +1 -0
- package/src/theme/derivedVarRegistry.test.ts +4 -0
- package/src/theme/generateThemeRules.test.ts +7 -8
- package/src/theme/generateThemeRules.ts +1 -1
- package/src/theme/syntax/SyntaxTheme.tsx +1 -1
- package/src/theme/syntax/defineSyntaxTheme.ts +20 -11
- package/src/theme/syntax/presets.ts +5 -2
- package/src/theme/syntax/tokens.ts +1 -1
- package/src/theme/types.ts +1 -1
- package/src/utils/dateTypes.test.ts +40 -0
- package/src/utils/dateTypes.ts +40 -0
- package/src/utils/index.ts +9 -0
- package/src/utils/inputAria.test.ts +39 -0
- package/src/utils/inputAria.ts +58 -0
- package/src/utils/timeParser.test.ts +10 -0
- package/src/utils/timeParser.ts +5 -2
- package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts +0 -57
- package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts.map +0 -1
- package/dist/Calendar/hooks/useCalendarRovingTabindex.js +0 -96
- package/src/Calendar/hooks/useCalendarRovingTabindex.ts +0 -118
package/dist/Table/index.d.ts
CHANGED
|
@@ -22,10 +22,12 @@ export { useTablePagination, paginateData } from './plugins/pagination';
|
|
|
22
22
|
export { useTableColumnSettings } from './plugins/columnSettings';
|
|
23
23
|
export { useTableColumnSettingsState } from './plugins/columnSettings';
|
|
24
24
|
export { useTableColumnResize } from './plugins/columnResize';
|
|
25
|
+
export { useTableStickyColumns } from './plugins/stickyColumns';
|
|
26
|
+
export { resolveContextActions } from './tableContextMenu';
|
|
25
27
|
export { useTableFiltering, useTableFilterState, toSearchFilters, } from './plugins/filtering';
|
|
26
28
|
export { useBaseTablePlugins } from './useBaseTablePlugins';
|
|
27
29
|
export { proportional, pixel, generateColumns, resolveColumnWidths, DEFAULT_MIN_COLUMN_WIDTH, } from './columnUtils';
|
|
28
|
-
export type { TableColumn, TableColumnAlign, TableVerticalAlign, ColumnWidth, ProportionalWidth, PixelWidth, TablePlugin, TableRenderProps, HeaderRowRenderProps, HeaderCellRenderProps, BodyRowRenderProps, BodyCellRenderProps, BaseTableProps, } from './types';
|
|
30
|
+
export type { TableColumn, TableColumnAlign, TableVerticalAlign, ColumnWidth, ProportionalWidth, PixelWidth, TablePlugin, TableContextAction, TableContextActions, TableRenderProps, HeaderRowRenderProps, HeaderCellRenderProps, BodyRowRenderProps, BodyCellRenderProps, ScrollWrapperRenderProps, BaseTableProps, } from './types';
|
|
29
31
|
export type { TableProps, TableDensity, TableDividers, TableTextOverflow, } from './Table';
|
|
30
32
|
export type { TableRowProps } from './TableRow';
|
|
31
33
|
export type { TableCellProps } from './TableCell';
|
|
@@ -42,5 +44,6 @@ export type { UseTablePaginationConfig } from './plugins/pagination';
|
|
|
42
44
|
export type { UseTableColumnSettingsConfig, ColumnSettingsOption, } from './plugins/columnSettings';
|
|
43
45
|
export type { UseTableColumnSettingsStateConfig, UseTableColumnSettingsStateReturn, } from './plugins/columnSettings';
|
|
44
46
|
export type { UseTableColumnResizeConfig } from './plugins/columnResize';
|
|
47
|
+
export type { UseTableStickyColumnsConfig } from './plugins/stickyColumns';
|
|
45
48
|
export type { UseTableFilteringConfig, TableFilterState, TableFilterVariant, TableFilterValue, TableFilterFieldRef, } from './plugins/filtering';
|
|
46
49
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Table/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Table/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAE,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,2BAA2B,EAAC,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,KAAK,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAChD,YAAY,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACpD,YAAY,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAChD,YAAY,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACpD,YAAY,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AACjE,YAAY,EACV,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAC,yBAAyB,EAAC,MAAM,SAAS,CAAC;AACvD,YAAY,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AACnE,YAAY,EACV,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,iCAAiC,EACjC,iCAAiC,GAClC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAC,0BAA0B,EAAC,MAAM,wBAAwB,CAAC;AACvE,YAAY,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AACzE,YAAY,EACV,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
|
package/dist/Table/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
'use client';
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* @file index.ts
|
|
7
5
|
* @input Imports from Table component files
|
|
@@ -10,6 +8,7 @@
|
|
|
10
8
|
*
|
|
11
9
|
* SYNC: When modified, update this header and /packages/core/src/Table/Table.doc.mjs
|
|
12
10
|
*/
|
|
11
|
+
|
|
13
12
|
export { Table } from "./Table.js";
|
|
14
13
|
export { TableRow } from "./TableRow.js";
|
|
15
14
|
export { TableCell } from "./TableCell.js";
|
|
@@ -26,6 +25,8 @@ export { useTablePagination, paginateData } from "./plugins/pagination/index.js"
|
|
|
26
25
|
export { useTableColumnSettings } from "./plugins/columnSettings/index.js";
|
|
27
26
|
export { useTableColumnSettingsState } from "./plugins/columnSettings/index.js";
|
|
28
27
|
export { useTableColumnResize } from "./plugins/columnResize/index.js";
|
|
28
|
+
export { useTableStickyColumns } from "./plugins/stickyColumns/index.js";
|
|
29
|
+
export { resolveContextActions } from "./tableContextMenu.js";
|
|
29
30
|
export { useTableFiltering, useTableFilterState, toSearchFilters } from "./plugins/filtering/index.js";
|
|
30
31
|
export { useBaseTablePlugins } from "./useBaseTablePlugins.js";
|
|
31
32
|
export { proportional, pixel, generateColumns, resolveColumnWidths, DEFAULT_MIN_COLUMN_WIDTH } from "./columnUtils.js";
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @param data - Full data array
|
|
14
14
|
* @param page - Current page number (1-based)
|
|
15
|
-
* @param pageSize - Number of items per page
|
|
15
|
+
* @param pageSize - Number of items per page; coerced to a positive integer,
|
|
16
|
+
* non-finite values fall back to 10
|
|
16
17
|
* @returns Slice of data for the current page
|
|
17
18
|
*
|
|
18
19
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginateData.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/paginateData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH
|
|
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,CASL"}
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @param data - Full data array
|
|
17
17
|
* @param page - Current page number (1-based)
|
|
18
|
-
* @param pageSize - Number of items per page
|
|
18
|
+
* @param pageSize - Number of items per page; coerced to a positive integer,
|
|
19
|
+
* non-finite values fall back to 10
|
|
19
20
|
* @returns Slice of data for the current page
|
|
20
21
|
*
|
|
21
22
|
* @example
|
|
@@ -27,6 +28,10 @@
|
|
|
27
28
|
* ```
|
|
28
29
|
*/
|
|
29
30
|
export function paginateData(data, page, pageSize) {
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
// Same coercion as Pagination and useTablePagination: a 0/NaN/negative
|
|
32
|
+
// pageSize would slice every page empty while the pagination chrome still
|
|
33
|
+
// renders page buttons.
|
|
34
|
+
const size = Number.isFinite(pageSize) ? Math.max(1, Math.floor(pageSize)) : 10;
|
|
35
|
+
const start = (page - 1) * size;
|
|
36
|
+
return data.slice(start, start + size);
|
|
32
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTablePagination.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/useTablePagination.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AA+B7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,wBAAwB;IAGvC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb,sEAAsE;IACtE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAIrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAIlB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAI3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1D;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/C;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAInC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useTablePagination.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/useTablePagination.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AA+B7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,wBAAwB;IAGvC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb,sEAAsE;IACtE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAIrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAIlB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAI3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1D;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/C;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAInC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,CAAC,CAAC,CAiGhB"}
|
|
@@ -104,7 +104,7 @@ export function useTablePagination(config) {
|
|
|
104
104
|
totalItems,
|
|
105
105
|
totalPages: totalPagesProp,
|
|
106
106
|
hasMore,
|
|
107
|
-
pageSize = 10,
|
|
107
|
+
pageSize: pageSizeConfig = 10,
|
|
108
108
|
onPageSizeChange,
|
|
109
109
|
pageSizeOptions,
|
|
110
110
|
variant = 'pages',
|
|
@@ -113,6 +113,11 @@ export function useTablePagination(config) {
|
|
|
113
113
|
align = 'center',
|
|
114
114
|
label = 'Table pagination'
|
|
115
115
|
} = config;
|
|
116
|
+
|
|
117
|
+
// Same guard as Pagination itself: 0/NaN/negative pageSize would produce an
|
|
118
|
+
// Infinity/NaN totalPages here, which bypasses Pagination's own coercion
|
|
119
|
+
// because it is passed down as the explicit totalPages prop.
|
|
120
|
+
const pageSize = Number.isFinite(pageSizeConfig) ? Math.max(1, Math.floor(pageSizeConfig)) : 10;
|
|
116
121
|
const computedTotalPages = totalPagesProp ?? (totalItems != null ? Math.ceil(totalItems / pageSize) : undefined);
|
|
117
122
|
|
|
118
123
|
// Build Pagination props
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableSortable.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortable.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTableSortable.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortable.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC9D,2EAA2E;IAC3E,OAAO,EAAE,QAAQ,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IACzD,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;AAM7B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IACtE,iEAAiE;IACjE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEvD;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAmND;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAChC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAyF1D"}
|
|
@@ -17,6 +17,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
17
17
|
import "../../../theme/tokens.stylex.js";
|
|
18
18
|
import { colorVars, spacingVars, radiusVars } from "../../../theme/tokens.stylex.js";
|
|
19
19
|
import { Icon } from "../../../Icon/index.js";
|
|
20
|
+
import { resolveContextActions } from "../../tableContextMenu.js";
|
|
20
21
|
|
|
21
22
|
// =============================================================================
|
|
22
23
|
// Sort Types
|
|
@@ -243,10 +244,64 @@ export function useTableSortable(config) {
|
|
|
243
244
|
if (sortKey == null) {
|
|
244
245
|
return props;
|
|
245
246
|
}
|
|
246
|
-
|
|
247
|
-
// Find sort entry for this column
|
|
248
247
|
const cfg = configRef.current;
|
|
249
248
|
const entry = cfg.sort.find(e => e.sortKey === sortKey);
|
|
249
|
+
|
|
250
|
+
// Context-menu actions are built lazily (only when the menu opens) via
|
|
251
|
+
// a getter, reading the current sort state at call time — so we don't
|
|
252
|
+
// build an action array for every header on every render, and the
|
|
253
|
+
// checked/clear state always reflects the latest sort.
|
|
254
|
+
const getSortActions = () => {
|
|
255
|
+
const c = configRef.current;
|
|
256
|
+
const dir = c.sort.find(e => e.sortKey === sortKey)?.direction ?? null;
|
|
257
|
+
const actions = [{
|
|
258
|
+
id: 'sort-asc',
|
|
259
|
+
group: 'sort',
|
|
260
|
+
label: 'Sort ascending',
|
|
261
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
262
|
+
icon: "arrowUp",
|
|
263
|
+
size: "xsm",
|
|
264
|
+
"aria-hidden": true
|
|
265
|
+
}),
|
|
266
|
+
checked: dir === 'ascending',
|
|
267
|
+
onSelect: () => c.onSortChange([{
|
|
268
|
+
sortKey: sortKey,
|
|
269
|
+
direction: 'ascending'
|
|
270
|
+
}])
|
|
271
|
+
}, {
|
|
272
|
+
id: 'sort-desc',
|
|
273
|
+
group: 'sort',
|
|
274
|
+
label: 'Sort descending',
|
|
275
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
276
|
+
icon: "arrowDown",
|
|
277
|
+
size: "xsm",
|
|
278
|
+
"aria-hidden": true
|
|
279
|
+
}),
|
|
280
|
+
checked: dir === 'descending',
|
|
281
|
+
onSelect: () => c.onSortChange([{
|
|
282
|
+
sortKey: sortKey,
|
|
283
|
+
direction: 'descending'
|
|
284
|
+
}])
|
|
285
|
+
}];
|
|
286
|
+
if (dir != null) {
|
|
287
|
+
actions.push({
|
|
288
|
+
id: 'sort-clear',
|
|
289
|
+
group: 'sort-clear',
|
|
290
|
+
label: 'Clear sort',
|
|
291
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
292
|
+
icon: "close",
|
|
293
|
+
size: "xsm",
|
|
294
|
+
"aria-hidden": true
|
|
295
|
+
}),
|
|
296
|
+
onSelect: () => c.onSortChange(c.sort.filter(e => e.sortKey !== sortKey))
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
return actions;
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
// Merge with any actions a prior plugin contributed (array or getter),
|
|
303
|
+
// resolving both lazily at open time.
|
|
304
|
+
const priorActions = props.contextMenuActions;
|
|
250
305
|
return {
|
|
251
306
|
...props,
|
|
252
307
|
htmlProps: {
|
|
@@ -259,7 +314,8 @@ export function useTableSortable(config) {
|
|
|
259
314
|
column: column,
|
|
260
315
|
configRef: configRef,
|
|
261
316
|
children: props.content
|
|
262
|
-
})
|
|
317
|
+
}),
|
|
318
|
+
contextMenuActions: () => [...resolveContextActions(priorActions), ...getSortActions()]
|
|
263
319
|
};
|
|
264
320
|
}
|
|
265
321
|
}), []);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/stickyColumns/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TablePlugin } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Config for {@link useTableStickyColumns}. Provide at least one of
|
|
4
|
+
* `startKeys` / `endKeys` to pin columns.
|
|
5
|
+
*
|
|
6
|
+
* @remarks Every field is optional by design, so `useTableStickyColumns({})`
|
|
7
|
+
* compiles and is an intentional no-op that pins nothing — the hook returns a
|
|
8
|
+
* plugin that passes every cell through untouched. This lets callers compute
|
|
9
|
+
* the config conditionally (e.g. `endKeys: enabled ? ['notes'] : undefined`)
|
|
10
|
+
* without branching on whether to install the plugin at all.
|
|
11
|
+
*/
|
|
12
|
+
export interface UseTableStickyColumnsConfig {
|
|
13
|
+
/**
|
|
14
|
+
* Column keys pinned to the START (inline-start / left in LTR) edge — the
|
|
15
|
+
* contiguous run from the first column through the last listed key.
|
|
16
|
+
*/
|
|
17
|
+
startKeys?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Column keys pinned to the END (inline-end / right in LTR) edge — the
|
|
20
|
+
* contiguous run from the first listed key through the last column.
|
|
21
|
+
*/
|
|
22
|
+
endKeys?: string[];
|
|
23
|
+
}
|
|
24
|
+
export declare function useTableStickyColumns<T extends Record<string, unknown>>(config: UseTableStickyColumnsConfig): TablePlugin<T>;
|
|
25
|
+
//# sourceMappingURL=useTableStickyColumns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableStickyColumns.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/stickyColumns/useTableStickyColumns.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAEV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAOrB;;;;;;;;;GASG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AA6MD,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,MAAM,EAAE,2BAA2B,GAClC,WAAW,CAAC,CAAC,CAAC,CAmJhB"}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file useTableStickyColumns.tsx
|
|
7
|
+
* @input React, StyleX, theme tokens, Table types
|
|
8
|
+
* @output Exports useTableStickyColumns hook and UseTableStickyColumnsConfig type
|
|
9
|
+
* @position Sticky-columns plugin; consumed by Table via plugins prop
|
|
10
|
+
*
|
|
11
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
12
|
+
* - /packages/core/src/Table/Table.doc.mjs (sticky-columns documentation)
|
|
13
|
+
* - /packages/core/src/Table/index.ts (exports)
|
|
14
|
+
*/
|
|
15
|
+
import { useCallback, useMemo, useRef } from 'react';
|
|
16
|
+
import * as stylex from '@stylexjs/stylex';
|
|
17
|
+
import "../../../theme/tokens.stylex.js";
|
|
18
|
+
import { colorVars, durationVars, easeVars } from "../../../theme/tokens.stylex.js";
|
|
19
|
+
import { DEFAULT_MIN_COLUMN_WIDTH } from "../../columnUtils.js";
|
|
20
|
+
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Config
|
|
23
|
+
// =============================================================================
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Config for {@link useTableStickyColumns}. Provide at least one of
|
|
27
|
+
* `startKeys` / `endKeys` to pin columns.
|
|
28
|
+
*
|
|
29
|
+
* @remarks Every field is optional by design, so `useTableStickyColumns({})`
|
|
30
|
+
* compiles and is an intentional no-op that pins nothing — the hook returns a
|
|
31
|
+
* plugin that passes every cell through untouched. This lets callers compute
|
|
32
|
+
* the config conditionally (e.g. `endKeys: enabled ? ['notes'] : undefined`)
|
|
33
|
+
* without branching on whether to install the plugin at all.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
// =============================================================================
|
|
37
|
+
// Width helpers
|
|
38
|
+
// =============================================================================
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Resolve a column's pixel width for cumulative offset math. Mirrors the
|
|
42
|
+
* resize plugin's fallback so offsets line up with rendered widths:
|
|
43
|
+
* pixel columns use their value; proportional columns use their declared
|
|
44
|
+
* minWidth (or the default); unknown widths use the default.
|
|
45
|
+
*/
|
|
46
|
+
function getColumnWidth(col) {
|
|
47
|
+
const w = col.width;
|
|
48
|
+
if (!w) {
|
|
49
|
+
return DEFAULT_MIN_COLUMN_WIDTH;
|
|
50
|
+
}
|
|
51
|
+
if (w.type === 'pixel') {
|
|
52
|
+
return w.value;
|
|
53
|
+
}
|
|
54
|
+
// proportional
|
|
55
|
+
return w.minWidth ?? DEFAULT_MIN_COLUMN_WIDTH;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Columns pinned to the START edge → cumulative inline offset (px). The pinned
|
|
60
|
+
* block is the contiguous run from column 0 through the last key in `startKeys`
|
|
61
|
+
* (inclusive of any synthetic columns before it). `null` if none / no context.
|
|
62
|
+
*/
|
|
63
|
+
function computeStartOffsets(columns, startKeys) {
|
|
64
|
+
if (!columns || columns.length === 0 || startKeys.length === 0) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
let lastStickyIndex = -1;
|
|
68
|
+
for (let i = 0; i < columns.length; i++) {
|
|
69
|
+
if (startKeys.includes(columns[i].key)) {
|
|
70
|
+
lastStickyIndex = i;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (lastStickyIndex === -1) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const offsets = new Map();
|
|
77
|
+
let cumulative = 0;
|
|
78
|
+
for (let i = 0; i <= lastStickyIndex; i++) {
|
|
79
|
+
offsets.set(columns[i].key, cumulative);
|
|
80
|
+
cumulative += getColumnWidth(columns[i]);
|
|
81
|
+
}
|
|
82
|
+
return offsets;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Mirror of {@link computeStartOffsets} for the END edge — contiguous run from
|
|
87
|
+
* the first key in `endKeys` through the last column, offsets accumulating from
|
|
88
|
+
* the end (last column = 0). `null` if none.
|
|
89
|
+
*/
|
|
90
|
+
function computeEndOffsets(columns, endKeys) {
|
|
91
|
+
if (!columns || columns.length === 0 || endKeys.length === 0) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
let firstStickyIndex = -1;
|
|
95
|
+
for (let i = 0; i < columns.length; i++) {
|
|
96
|
+
if (endKeys.includes(columns[i].key)) {
|
|
97
|
+
firstStickyIndex = i;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (firstStickyIndex === -1) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
const offsets = new Map();
|
|
105
|
+
let cumulative = 0;
|
|
106
|
+
for (let i = columns.length - 1; i >= firstStickyIndex; i--) {
|
|
107
|
+
offsets.set(columns[i].key, cumulative);
|
|
108
|
+
cumulative += getColumnWidth(columns[i]);
|
|
109
|
+
}
|
|
110
|
+
return offsets;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resolve how a single column should be pinned given the start/end configs and
|
|
114
|
+
* the full column list. A key (mis)configured on both edges resolves to start.
|
|
115
|
+
* Returns `null` for columns that should not be pinned.
|
|
116
|
+
*/
|
|
117
|
+
function resolveStickySide(columns, columnKey, startKeys, endKeys) {
|
|
118
|
+
const startOffsets = computeStartOffsets(columns, startKeys);
|
|
119
|
+
if (startOffsets?.has(columnKey)) {
|
|
120
|
+
return {
|
|
121
|
+
edge: 'start',
|
|
122
|
+
offset: startOffsets.get(columnKey) ?? 0
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
const endOffsets = computeEndOffsets(columns, endKeys);
|
|
126
|
+
if (endOffsets?.has(columnKey)) {
|
|
127
|
+
return {
|
|
128
|
+
edge: 'end',
|
|
129
|
+
offset: endOffsets.get(columnKey) ?? 0
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// =============================================================================
|
|
136
|
+
// Styles
|
|
137
|
+
// =============================================================================
|
|
138
|
+
|
|
139
|
+
// Scroll-state CSS variables set on the scroll container by the layout ref;
|
|
140
|
+
// the cell ::after shadows read them so each edge's shadow only shows when
|
|
141
|
+
// content is hidden behind it. (A variable, not stylex.when.ancestor, because
|
|
142
|
+
// StyleX ancestor selectors are pseudo-class only — not scroll state.)
|
|
143
|
+
const SHADOW_VAR_START = '--table-sticky-shadow-start';
|
|
144
|
+
const SHADOW_VAR_END = '--table-sticky-shadow-end';
|
|
145
|
+
const stickyStyles = {
|
|
146
|
+
cell: {
|
|
147
|
+
kVAEAm: "x7wzq59",
|
|
148
|
+
kWkggS: "x1fd97le",
|
|
149
|
+
kgeoSG: "x1cpjm7i",
|
|
150
|
+
kEoFBp: "x1hmns74",
|
|
151
|
+
kFcpXp: "xxx281p",
|
|
152
|
+
kxmVGU: "xy5mcqj",
|
|
153
|
+
km8f2m: "xkk1bqk",
|
|
154
|
+
kLkRvE: "x1uvfo0n",
|
|
155
|
+
k7KCAZ: "xxcwgru",
|
|
156
|
+
kKXxxB: "x1y1nw7a",
|
|
157
|
+
kqUdNP: "xa5v58t",
|
|
158
|
+
kHypHr: "xx83zyx",
|
|
159
|
+
kVQacm: "x1rea2x4",
|
|
160
|
+
$$css: true
|
|
161
|
+
},
|
|
162
|
+
headerCell: {
|
|
163
|
+
kY2c9j: "xzkaem6",
|
|
164
|
+
$$css: true
|
|
165
|
+
},
|
|
166
|
+
bodyCell: {
|
|
167
|
+
kY2c9j: "x1vjfegm",
|
|
168
|
+
$$css: true
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
// Soft drop shadow over the scrolling region (matches the EPS sticky treatment).
|
|
173
|
+
// border-collapse tables don't paint box-shadow on cells in Chromium, so it's a
|
|
174
|
+
// ::after gradient strip just past the pinned edge (visible thanks to the cell's
|
|
175
|
+
// overflow: visible). Opacity is gated by the scroll-state variable above.
|
|
176
|
+
const SHADOW_WIDTH = '6px';
|
|
177
|
+
// --color-shadow is only ~10% alpha (too faint here); use a slightly stronger soft tint.
|
|
178
|
+
const SHADOW_TINT = 'light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.32))';
|
|
179
|
+
const shadowStyles = {
|
|
180
|
+
start: {
|
|
181
|
+
k5JduY: "x1s928wv",
|
|
182
|
+
kwXMNM: "x1j6awrg",
|
|
183
|
+
k3foIR: "x1m1drc7",
|
|
184
|
+
k8Iv0R: "x1xrz1ek",
|
|
185
|
+
kH8aOt: "x1unh1gc",
|
|
186
|
+
kkgrvl: "xzkji8o",
|
|
187
|
+
kLigFv: "x1qyefdi",
|
|
188
|
+
kloYau: "x2q1x1w",
|
|
189
|
+
kFJxch: "x17s1k9h",
|
|
190
|
+
kypkao: "x1sggmfs",
|
|
191
|
+
kNctxI: "x156sm4c",
|
|
192
|
+
$$css: true
|
|
193
|
+
},
|
|
194
|
+
end: {
|
|
195
|
+
k5JduY: "x1s928wv",
|
|
196
|
+
kwXMNM: "x1j6awrg",
|
|
197
|
+
k3foIR: "x1m1drc7",
|
|
198
|
+
k8Iv0R: "x1xrz1ek",
|
|
199
|
+
kc1e00: "x1iygr5g",
|
|
200
|
+
kkgrvl: "xzkji8o",
|
|
201
|
+
kLigFv: "xvs0bi2",
|
|
202
|
+
kloYau: "x2q1x1w",
|
|
203
|
+
kFJxch: "x17s1k9h",
|
|
204
|
+
kypkao: "x1c2idit",
|
|
205
|
+
kNctxI: "x14ofgck",
|
|
206
|
+
$$css: true
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
// Stable empty default so an unset start/end doesn't allocate a fresh array
|
|
211
|
+
// (and bust the memo) on every render.
|
|
212
|
+
const EMPTY = [];
|
|
213
|
+
|
|
214
|
+
// =============================================================================
|
|
215
|
+
// Hook
|
|
216
|
+
// =============================================================================
|
|
217
|
+
|
|
218
|
+
export function useTableStickyColumns(config) {
|
|
219
|
+
const {
|
|
220
|
+
startKeys,
|
|
221
|
+
endKeys
|
|
222
|
+
} = config;
|
|
223
|
+
const start = startKeys ?? EMPTY;
|
|
224
|
+
const end = endKeys ?? EMPTY;
|
|
225
|
+
const hasStart = start.length > 0;
|
|
226
|
+
const hasEnd = end.length > 0;
|
|
227
|
+
|
|
228
|
+
// Live snapshot of the resolved config, read inside the (memoized) transforms
|
|
229
|
+
// and the scroll-shadow callback. Keeping these in a ref lets the plugin memo
|
|
230
|
+
// be computed once (deps: only the stable scroll-shadow callback) while never
|
|
231
|
+
// reading stale config — consumers typically pass fresh array literals each
|
|
232
|
+
// render, so we never want array identity in the deps.
|
|
233
|
+
const stateRef = useRef({
|
|
234
|
+
start,
|
|
235
|
+
end,
|
|
236
|
+
hasStart,
|
|
237
|
+
hasEnd
|
|
238
|
+
});
|
|
239
|
+
stateRef.current = {
|
|
240
|
+
start,
|
|
241
|
+
end,
|
|
242
|
+
hasStart,
|
|
243
|
+
hasEnd
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
// Scroll-aware shadows: toggle CSS variables on the scroll container so each
|
|
247
|
+
// edge's shadow only paints when there is hidden, horizontally-scrolled
|
|
248
|
+
// content behind that edge. Implemented with a callback ref + scroll/resize
|
|
249
|
+
// listeners (synchronizing with the DOM) rather than React state, so
|
|
250
|
+
// scrolling never triggers re-renders.
|
|
251
|
+
const detachRef = useRef(null);
|
|
252
|
+
const attachScrollShadow = useCallback(el => {
|
|
253
|
+
detachRef.current?.();
|
|
254
|
+
detachRef.current = null;
|
|
255
|
+
if (!el) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const update = () => {
|
|
259
|
+
const {
|
|
260
|
+
hasStart: hs,
|
|
261
|
+
hasEnd: he
|
|
262
|
+
} = stateRef.current;
|
|
263
|
+
const maxScroll = el.scrollWidth - el.clientWidth;
|
|
264
|
+
const hasOverflow = maxScroll > 1;
|
|
265
|
+
if (hs) {
|
|
266
|
+
el.style.setProperty(SHADOW_VAR_START, hasOverflow && el.scrollLeft > 1 ? '1' : '0');
|
|
267
|
+
}
|
|
268
|
+
if (he) {
|
|
269
|
+
el.style.setProperty(SHADOW_VAR_END, hasOverflow && el.scrollLeft < maxScroll - 1 ? '1' : '0');
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
el.addEventListener('scroll', update, {
|
|
273
|
+
passive: true
|
|
274
|
+
});
|
|
275
|
+
const resizeObserver = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null;
|
|
276
|
+
resizeObserver?.observe(el);
|
|
277
|
+
update();
|
|
278
|
+
detachRef.current = () => {
|
|
279
|
+
el.removeEventListener('scroll', update);
|
|
280
|
+
resizeObserver?.disconnect();
|
|
281
|
+
};
|
|
282
|
+
}, []);
|
|
283
|
+
return useMemo(() => ({
|
|
284
|
+
transformHeaderCell(props, column) {
|
|
285
|
+
const {
|
|
286
|
+
start: s,
|
|
287
|
+
end: e
|
|
288
|
+
} = stateRef.current;
|
|
289
|
+
const side = resolveStickySide(props.columns, column.key, s, e);
|
|
290
|
+
if (!side) {
|
|
291
|
+
return props;
|
|
292
|
+
}
|
|
293
|
+
// position/inline-offset are runtime values → set via inline style so
|
|
294
|
+
// they are authoritative regardless of plugin composition order (the
|
|
295
|
+
// resize plugin also writes inline style on header cells).
|
|
296
|
+
const offsetStyle = side.edge === 'start' ? {
|
|
297
|
+
insetInlineStart: `${side.offset}px`
|
|
298
|
+
} : {
|
|
299
|
+
insetInlineEnd: `${side.offset}px`
|
|
300
|
+
};
|
|
301
|
+
return {
|
|
302
|
+
...props,
|
|
303
|
+
htmlProps: {
|
|
304
|
+
...props.htmlProps,
|
|
305
|
+
style: {
|
|
306
|
+
...props.htmlProps.style,
|
|
307
|
+
...offsetStyle
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
styles: [...props.styles, stickyStyles.cell, stickyStyles.headerCell, side.edge === 'start' ? shadowStyles.start : shadowStyles.end]
|
|
311
|
+
};
|
|
312
|
+
},
|
|
313
|
+
transformBodyCell(props, column) {
|
|
314
|
+
const {
|
|
315
|
+
start: s,
|
|
316
|
+
end: e
|
|
317
|
+
} = stateRef.current;
|
|
318
|
+
const side = resolveStickySide(props.columns, column.key, s, e);
|
|
319
|
+
if (!side) {
|
|
320
|
+
return props;
|
|
321
|
+
}
|
|
322
|
+
const offsetStyle = side.edge === 'start' ? {
|
|
323
|
+
insetInlineStart: `${side.offset}px`
|
|
324
|
+
} : {
|
|
325
|
+
insetInlineEnd: `${side.offset}px`
|
|
326
|
+
};
|
|
327
|
+
return {
|
|
328
|
+
...props,
|
|
329
|
+
htmlProps: {
|
|
330
|
+
...props.htmlProps,
|
|
331
|
+
style: {
|
|
332
|
+
...props.htmlProps.style,
|
|
333
|
+
...offsetStyle
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
styles: [...props.styles, stickyStyles.cell, stickyStyles.bodyCell, side.edge === 'start' ? shadowStyles.start : shadowStyles.end]
|
|
337
|
+
};
|
|
338
|
+
},
|
|
339
|
+
transformScrollWrapper(props) {
|
|
340
|
+
// No pinned edges → nothing to gate; leave the wrapper untouched.
|
|
341
|
+
if (!stateRef.current.hasStart && !stateRef.current.hasEnd) {
|
|
342
|
+
return props;
|
|
343
|
+
}
|
|
344
|
+
// Compose with any ref a prior plugin (e.g. virtualization) set on the
|
|
345
|
+
// scroll container.
|
|
346
|
+
const existingRef = props.htmlProps.ref;
|
|
347
|
+
const mergedRef = node => {
|
|
348
|
+
attachScrollShadow(node);
|
|
349
|
+
if (typeof existingRef === 'function') {
|
|
350
|
+
existingRef(node);
|
|
351
|
+
} else if (existingRef != null) {
|
|
352
|
+
// RefObject — assign through its writable `.current`.
|
|
353
|
+
existingRef.current = node;
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
return {
|
|
357
|
+
...props,
|
|
358
|
+
htmlProps: {
|
|
359
|
+
...props.htmlProps,
|
|
360
|
+
ref: mergedRef
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
}),
|
|
365
|
+
// The returned plugin's transforms read live config from `stateRef` and
|
|
366
|
+
// `attachScrollShadow` is stable (empty deps), so the plugin object can be
|
|
367
|
+
// computed once and reused across renders.
|
|
368
|
+
[attachScrollShadow]);
|
|
369
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file tableContextMenu.tsx
|
|
3
|
+
* @input React, ContextMenu, Icon, types
|
|
4
|
+
* @output wrapInTableContextMenu helper
|
|
5
|
+
* @position Renders the aggregated `contextMenuActions` for a header cell / row
|
|
6
|
+
*
|
|
7
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
8
|
+
* - /packages/core/src/Table/BaseTable.tsx (call sites)
|
|
9
|
+
* - /packages/core/src/Table/types.ts (TableContextAction)
|
|
10
|
+
*/
|
|
11
|
+
import { type ReactNode } from 'react';
|
|
12
|
+
import type { TableContextAction, TableContextActions } from './types';
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a `contextMenuActions` value (array or getter) to a plain array.
|
|
15
|
+
* Use this when composing actions from a prior plugin's render props so you
|
|
16
|
+
* don't have to branch on the array-vs-getter form:
|
|
17
|
+
*
|
|
18
|
+
* ```
|
|
19
|
+
* contextMenuActions: () => [
|
|
20
|
+
* ...resolveContextActions(props.contextMenuActions),
|
|
21
|
+
* ...myActions,
|
|
22
|
+
* ]
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveContextActions(actions: TableContextActions | undefined): TableContextAction[];
|
|
26
|
+
/**
|
|
27
|
+
* Wrap a table element (a header cell's content or a body cell) in a right-click
|
|
28
|
+
* context menu rendering the aggregated `actions`. Accepts a static array or a
|
|
29
|
+
* getter (resolved lazily on open). When there are no actions the element is
|
|
30
|
+
* returned untouched so the native browser menu passes through.
|
|
31
|
+
*/
|
|
32
|
+
export declare function wrapInTableContextMenu(element: ReactNode, actions: TableContextActions | undefined): ReactNode;
|
|
33
|
+
//# sourceMappingURL=tableContextMenu.d.ts.map
|