@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/TabList/TabList.js
CHANGED
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file TabList.tsx
|
|
7
|
-
* @input Uses React, StyleX, TabListContext
|
|
7
|
+
* @input Uses React, StyleX, TabListContext, useListFocus, useKeyboardHint
|
|
8
8
|
* @output Exports TabList component and TabListProps type
|
|
9
|
-
* @position Nav wrapper; provides TabListContext to Tab and TabMenu children
|
|
9
|
+
* @position Nav wrapper; provides TabListContext to Tab and TabMenu children.
|
|
10
|
+
* Owns roving-tabindex keyboard navigation (Arrow/Home/End) across the tab
|
|
11
|
+
* strip via the shared useListFocus hook so it is a single Tab stop.
|
|
10
12
|
*
|
|
11
13
|
* SYNC: When modified, update:
|
|
12
14
|
* - /packages/core/src/TabList/TabList.doc.mjs
|
|
@@ -14,16 +16,25 @@
|
|
|
14
16
|
* - /packages/core/src/TabList/TabList.test.tsx
|
|
15
17
|
* - /packages/cli/templates/blocks/components/TabList/ (showcase blocks)
|
|
16
18
|
*/
|
|
17
|
-
import React, { useMemo } from 'react';
|
|
19
|
+
import React, { useCallback, useMemo } from 'react';
|
|
18
20
|
import * as stylex from '@stylexjs/stylex';
|
|
19
21
|
import "../theme/tokens.stylex.js";
|
|
20
22
|
import { borderVars, colorVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
21
23
|
import { TabListContext } from "./TabListContext.js";
|
|
22
24
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
23
|
-
import { mergeProps } from "../utils/index.js";
|
|
25
|
+
import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
26
|
+
import { useListFocus } from "../hooks/useListFocus.js";
|
|
27
|
+
import { useKeyboardHint } from "../hooks/useKeyboardHint.js";
|
|
24
28
|
import { EDGE_COMP_ATTR } from "../Layout/edgeCompensation.stylex.js";
|
|
25
29
|
import { themeProps } from "../utils/themeProps.js";
|
|
26
|
-
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Selector matching the focusable stops in the tab strip: every Tab
|
|
33
|
+
* (`[data-tab-value]`) and every TabMenu trigger (`[data-tab-menu]`),
|
|
34
|
+
* in DOM order. Disabled stops are filtered out by the handler.
|
|
35
|
+
*/
|
|
36
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
37
|
+
const TAB_STOP_SELECTOR = '[data-tab-value],[data-tab-menu]';
|
|
27
38
|
const styles = {
|
|
28
39
|
nav: {
|
|
29
40
|
k1xSpc: "x78zum5",
|
|
@@ -68,30 +79,95 @@ export function TabList({
|
|
|
68
79
|
size: sizeProp,
|
|
69
80
|
layout = 'hug',
|
|
70
81
|
hasDivider = false,
|
|
82
|
+
orientation = 'horizontal',
|
|
71
83
|
xstyle,
|
|
72
84
|
className,
|
|
73
85
|
style,
|
|
74
86
|
children,
|
|
87
|
+
onKeyDown: onKeyDownProp,
|
|
88
|
+
onFocus: onFocusProp,
|
|
89
|
+
onBlur: onBlurProp,
|
|
90
|
+
'aria-label': ariaLabel = 'Tabs',
|
|
91
|
+
'aria-orientation': _ariaOrientation,
|
|
92
|
+
[EDGE_COMP_ATTR]: _edgeCompAttr,
|
|
75
93
|
...restProps
|
|
76
94
|
}) {
|
|
77
95
|
const size = useSize(sizeProp, 'md');
|
|
96
|
+
|
|
97
|
+
// Roving-tabindex keyboard navigation across the tab strip via the shared
|
|
98
|
+
// hook. `orientation: 'both'` accepts both arrow axes per the WAI-ARIA APG
|
|
99
|
+
// allowance for tab strips (ArrowRight/ArrowDown advance, ArrowLeft/ArrowUp
|
|
100
|
+
// retreat) regardless of the component's `orientation` prop, which only
|
|
101
|
+
// drives the reported `aria-orientation`.
|
|
102
|
+
//
|
|
103
|
+
// `hasRovingTabIndex` makes the hook own the single tab stop: it stamps
|
|
104
|
+
// tabindex 0/-1, repairs the stop on mount and as stops mount/unmount or
|
|
105
|
+
// toggle disabled, and — via `handleFocus` on the nav — keeps the stop in
|
|
106
|
+
// sync after clicks or programmatic focus. Individual Tabs still render
|
|
107
|
+
// `tabIndex={isSelected ? 0 : -1}` (see Tab.tsx) as the initial source of
|
|
108
|
+
// truth; the hook's repair preserves an existing tab stop and only promotes
|
|
109
|
+
// the first enabled stop when none is tabbable.
|
|
110
|
+
const {
|
|
111
|
+
listRef,
|
|
112
|
+
handleKeyDown,
|
|
113
|
+
handleFocus
|
|
114
|
+
} = useListFocus({
|
|
115
|
+
itemSelector: TAB_STOP_SELECTOR,
|
|
116
|
+
orientation: 'both',
|
|
117
|
+
hasRovingTabIndex: true
|
|
118
|
+
});
|
|
119
|
+
const {
|
|
120
|
+
hintElement,
|
|
121
|
+
onKeyDown: onHintKeyDown,
|
|
122
|
+
onFocus: onHintFocus,
|
|
123
|
+
onBlur: onHintBlur
|
|
124
|
+
} = useKeyboardHint({
|
|
125
|
+
orientation
|
|
126
|
+
});
|
|
78
127
|
const contextValue = useMemo(() => ({
|
|
79
128
|
value,
|
|
80
129
|
onChange,
|
|
81
130
|
size,
|
|
82
131
|
layout
|
|
83
132
|
}), [value, onChange, size, layout]);
|
|
133
|
+
const handleRootKeyDown = useCallback(e => {
|
|
134
|
+
onKeyDownProp?.(e);
|
|
135
|
+
if (e.defaultPrevented) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
onHintKeyDown(e);
|
|
139
|
+
handleKeyDown(e);
|
|
140
|
+
}, [onKeyDownProp, onHintKeyDown, handleKeyDown]);
|
|
141
|
+
const handleRootFocus = useCallback(e => {
|
|
142
|
+
onFocusProp?.(e);
|
|
143
|
+
if (e.defaultPrevented) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
onHintFocus(e);
|
|
147
|
+
handleFocus(e);
|
|
148
|
+
}, [onFocusProp, onHintFocus, handleFocus]);
|
|
149
|
+
const handleRootBlur = useCallback(e => {
|
|
150
|
+
onBlurProp?.(e);
|
|
151
|
+
if (e.defaultPrevented) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
onHintBlur(e);
|
|
155
|
+
}, [onBlurProp, onHintBlur]);
|
|
84
156
|
return /*#__PURE__*/_jsx(TabListContext, {
|
|
85
157
|
value: contextValue,
|
|
86
|
-
children: /*#__PURE__*/
|
|
87
|
-
ref: ref,
|
|
88
|
-
"aria-label": "Tabs",
|
|
89
|
-
[EDGE_COMP_ATTR]: '',
|
|
158
|
+
children: /*#__PURE__*/_jsxs("nav", {
|
|
159
|
+
ref: mergeRefs(ref, listRef),
|
|
90
160
|
...restProps,
|
|
161
|
+
"aria-label": ariaLabel,
|
|
162
|
+
"aria-orientation": orientation,
|
|
163
|
+
onKeyDown: handleRootKeyDown,
|
|
164
|
+
onFocus: handleRootFocus,
|
|
165
|
+
onBlur: handleRootBlur,
|
|
166
|
+
[EDGE_COMP_ATTR]: '',
|
|
91
167
|
...mergeProps(themeProps('tab-list', {
|
|
92
168
|
size
|
|
93
169
|
}), stylex.props(styles.nav, layout === 'fill' && styles.fill, hasDivider && styles.divider, xstyle), className, style),
|
|
94
|
-
children: children
|
|
170
|
+
children: [children, hintElement]
|
|
95
171
|
})
|
|
96
172
|
});
|
|
97
173
|
}
|
|
@@ -9,6 +9,11 @@ export type TabListSize = 'sm' | 'md' | 'lg';
|
|
|
9
9
|
* - `'fill'`: tabs stretch equally to fill the container width.
|
|
10
10
|
*/
|
|
11
11
|
export type TabListLayout = 'hug' | 'fill';
|
|
12
|
+
/**
|
|
13
|
+
* Orientation of the tab strip. Controls which arrow keys move focus
|
|
14
|
+
* between tabs and the reported `aria-orientation`.
|
|
15
|
+
*/
|
|
16
|
+
export type TabListOrientation = 'horizontal' | 'vertical';
|
|
12
17
|
/**
|
|
13
18
|
* Context for communicating value/onChange/size/layout from TabList to children.
|
|
14
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabListContext.d.ts","sourceRoot":"","sources":["../../src/TabList/TabListContext.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"TabListContext.d.ts","sourceRoot":"","sources":["../../src/TabList/TabListContext.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAG9E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CASvD"}
|
|
@@ -23,6 +23,11 @@ import { createContext, use } from 'react';
|
|
|
23
23
|
* - `'fill'`: tabs stretch equally to fill the container width.
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Orientation of the tab strip. Controls which arrow keys move focus
|
|
28
|
+
* between tabs and the reported `aria-orientation`.
|
|
29
|
+
*/
|
|
30
|
+
|
|
26
31
|
/**
|
|
27
32
|
* Context for communicating value/onChange/size/layout from TabList to children.
|
|
28
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabMenu.d.ts","sourceRoot":"","sources":["../../src/TabList/TabMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAiBtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,CAAC,iBAAiB,CAAC,EAC5B,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AA8KD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,GAAG,EACH,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"TabMenu.d.ts","sourceRoot":"","sources":["../../src/TabList/TabMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAiBtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,CAAC,iBAAiB,CAAC,EAC5B,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AA8KD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,GAAG,EACH,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,YAAY,qBAiJd;yBAxJe,OAAO"}
|
package/dist/TabList/TabMenu.js
CHANGED
|
@@ -138,7 +138,10 @@ export function TabMenu({
|
|
|
138
138
|
const popover = usePopover({
|
|
139
139
|
hasLightDismiss: true,
|
|
140
140
|
hasCloseButton: false,
|
|
141
|
-
hasAutoFocus: false
|
|
141
|
+
hasAutoFocus: false,
|
|
142
|
+
// The popup's own role="menu" is the exposed semantics; a modal dialog
|
|
143
|
+
// wrapper would announce an unnamed dialog around the menu.
|
|
144
|
+
role: 'none'
|
|
142
145
|
});
|
|
143
146
|
const {
|
|
144
147
|
listRef,
|
|
@@ -169,6 +172,8 @@ export function TabMenu({
|
|
|
169
172
|
"aria-haspopup": "menu",
|
|
170
173
|
"aria-expanded": popover.isOpen,
|
|
171
174
|
"aria-controls": menuId,
|
|
175
|
+
"data-tab-menu": "",
|
|
176
|
+
tabIndex: hasSelectedOption ? 0 : -1,
|
|
172
177
|
onClick: handleToggle,
|
|
173
178
|
...mergeProps(themeProps('tab-menu'), stylex.props(styles.trigger, sizeStyles[size], hasSelectedOption && styles.triggerSelected, tabScope, xstyle), className, style),
|
|
174
179
|
children: [/*#__PURE__*/_jsx("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseTable.d.ts","sourceRoot":"","sources":["../../src/Table/BaseTable.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAkB,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"BaseTable.d.ts","sourceRoot":"","sources":["../../src/Table/BaseTable.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAkB,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EACV,cAAc,EAYf,MAAM,SAAS,CAAC;AA6hBjB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,SAAS,EAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3E,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAC,KACrD,YAAY,CAAC"}
|
package/dist/Table/BaseTable.js
CHANGED
|
@@ -105,7 +105,7 @@ function TableRowInner({
|
|
|
105
105
|
CellComponent
|
|
106
106
|
}) {
|
|
107
107
|
// Build cells first
|
|
108
|
-
const cells = columns.map(col => {
|
|
108
|
+
const cells = columns.map((col, columnIndex) => {
|
|
109
109
|
// Apply column alignment to body cells
|
|
110
110
|
const initialCellHtmlProps = {};
|
|
111
111
|
if (col.align) {
|
|
@@ -113,10 +113,13 @@ function TableRowInner({
|
|
|
113
113
|
textAlign: col.align
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
|
-
const
|
|
116
|
+
const initialBodyCellRenderProps = {
|
|
117
117
|
htmlProps: initialCellHtmlProps,
|
|
118
|
-
styles: []
|
|
119
|
-
|
|
118
|
+
styles: [],
|
|
119
|
+
columnIndex,
|
|
120
|
+
columns: columns
|
|
121
|
+
};
|
|
122
|
+
const cellRenderProps = applyPlugins(plugins, p => p.transformBodyCell, initialBodyCellRenderProps, col, item, columnIndex, columns);
|
|
120
123
|
const isDefaultRenderer = !col.renderCell;
|
|
121
124
|
const rawContent = isDefaultRenderer ? defaultCellRenderer(item, col.key) : col.renderCell?.(item) ?? null;
|
|
122
125
|
|
|
@@ -136,6 +139,7 @@ function TableRowInner({
|
|
|
136
139
|
}
|
|
137
140
|
return /*#__PURE__*/_jsx(CellComponent, {
|
|
138
141
|
...cellRenderProps.htmlProps,
|
|
142
|
+
contextMenuActions: cellRenderProps.contextMenuActions,
|
|
139
143
|
xstyle: cellRenderProps.styles,
|
|
140
144
|
children: content
|
|
141
145
|
}, col.key);
|
|
@@ -265,7 +269,7 @@ function BaseTableInner({
|
|
|
265
269
|
});
|
|
266
270
|
|
|
267
271
|
// --- Plugin pipeline: header cells ---
|
|
268
|
-
const headerCells = resolvedColumns.map(col => {
|
|
272
|
+
const headerCells = resolvedColumns.map((col, columnIndex) => {
|
|
269
273
|
const headerContent = col.header ?? col.key;
|
|
270
274
|
|
|
271
275
|
// Build initial htmlProps with column alignment if specified
|
|
@@ -277,11 +281,14 @@ function BaseTableInner({
|
|
|
277
281
|
textAlign: col.align
|
|
278
282
|
};
|
|
279
283
|
}
|
|
280
|
-
const
|
|
284
|
+
const initialHeaderRenderProps = {
|
|
281
285
|
htmlProps: initialHeaderHtmlProps,
|
|
282
286
|
styles: [],
|
|
283
|
-
content: headerContent
|
|
284
|
-
|
|
287
|
+
content: headerContent,
|
|
288
|
+
columnIndex,
|
|
289
|
+
columns: resolvedColumns
|
|
290
|
+
};
|
|
291
|
+
const cellRenderProps = applyPlugins(plugins, p => p.transformHeaderCell, initialHeaderRenderProps, col, columnIndex, resolvedColumns);
|
|
285
292
|
|
|
286
293
|
// Apply pre-computed column width styles on the <th>.
|
|
287
294
|
// With table-layout: fixed, header cell sizing controls column widths.
|
|
@@ -308,18 +315,20 @@ function BaseTableInner({
|
|
|
308
315
|
below
|
|
309
316
|
} = cellRenderProps;
|
|
310
317
|
const hasSlots = before != null || after != null || overlay != null || below != null;
|
|
318
|
+
const headerInner = hasSlots ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
319
|
+
children: [before, after != null ? /*#__PURE__*/_jsxs("div", {
|
|
320
|
+
...{
|
|
321
|
+
className: "x3nfvp2 x6s0dn4 xzye2dw xeuugli"
|
|
322
|
+
},
|
|
323
|
+
children: [resolvedContent, after]
|
|
324
|
+
}) : resolvedContent, overlay, below]
|
|
325
|
+
}) : resolvedContent;
|
|
311
326
|
return /*#__PURE__*/_jsx(HeaderCellComponent, {
|
|
312
327
|
...mergedHtmlProps,
|
|
313
328
|
...headerTitleProp,
|
|
329
|
+
contextMenuActions: cellRenderProps.contextMenuActions,
|
|
314
330
|
xstyle: cellRenderProps.styles,
|
|
315
|
-
children:
|
|
316
|
-
children: [before, after != null ? /*#__PURE__*/_jsxs("div", {
|
|
317
|
-
...{
|
|
318
|
-
className: "x3nfvp2 x6s0dn4 xzye2dw xeuugli"
|
|
319
|
-
},
|
|
320
|
-
children: [resolvedContent, after]
|
|
321
|
-
}) : resolvedContent, overlay, below]
|
|
322
|
-
}) : resolvedContent
|
|
331
|
+
children: headerInner
|
|
323
332
|
}, col.key);
|
|
324
333
|
});
|
|
325
334
|
|
|
@@ -348,6 +357,7 @@ function BaseTableInner({
|
|
|
348
357
|
children: [hasColumns && /*#__PURE__*/_jsx(TableHeader, {
|
|
349
358
|
children: /*#__PURE__*/_jsx(RowComponent, {
|
|
350
359
|
...headerRowRenderProps.htmlProps,
|
|
360
|
+
isHeaderRow: true,
|
|
351
361
|
xstyle: headerRowRenderProps.styles,
|
|
352
362
|
children: headerRowRenderProps.children
|
|
353
363
|
})
|
|
@@ -381,8 +391,20 @@ function BaseTableInner({
|
|
|
381
391
|
// when columns exceed the container width. This wrapper sits between
|
|
382
392
|
// the <table> and transformTableContext, so plugin chrome (pagination,
|
|
383
393
|
// toolbars) renders outside the scroll area.
|
|
394
|
+
//
|
|
395
|
+
// Before rendering the wrapper, run the plugin `transformScrollWrapper`
|
|
396
|
+
// pipeline so plugins can attach a ref to the scroll container (scroll-aware
|
|
397
|
+
// sticky shadows, virtualization) and inject before/after chrome.
|
|
384
398
|
if (ScrollWrapper) {
|
|
399
|
+
const scrollWrapperRenderProps = applyPlugins(plugins, p => p.transformScrollWrapper, {
|
|
400
|
+
htmlProps: {},
|
|
401
|
+
styles: []
|
|
402
|
+
});
|
|
385
403
|
tableElement = /*#__PURE__*/_jsx(ScrollWrapper, {
|
|
404
|
+
htmlProps: scrollWrapperRenderProps.htmlProps,
|
|
405
|
+
styles: scrollWrapperRenderProps.styles,
|
|
406
|
+
beforeTable: scrollWrapperRenderProps.beforeTable,
|
|
407
|
+
afterTable: scrollWrapperRenderProps.afterTable,
|
|
386
408
|
children: tableElement
|
|
387
409
|
});
|
|
388
410
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table/Table.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAQ3D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EAEZ,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table/Table.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAQ3D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EAEZ,MAAM,SAAS,CAAC;AAOjB,oDAAoD;AAEpD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/D,kCAAkC;AAElC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,8DAA8D;AAE9D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpD;;;;;GAKG;AAEH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,IAAI,CACzE,cAAc,CAAC,CAAC,CAAC,EACjB,SAAS,GAAG,YAAY,CACzB;IACC,uCAAuC;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C;AAsJD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,KAAK,EAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAC,KACjD,YAAY,CAAC"}
|
package/dist/Table/Table.js
CHANGED
|
@@ -41,7 +41,7 @@ import { themeProps } from "../utils/themeProps.js";
|
|
|
41
41
|
*
|
|
42
42
|
* @template T - The row data type
|
|
43
43
|
*/
|
|
44
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
44
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
45
45
|
// =============================================================================
|
|
46
46
|
// StyleX Styles (table-level only; cell/row/header styles owned by components)
|
|
47
47
|
// =============================================================================
|
|
@@ -53,14 +53,43 @@ const tableStyles = {
|
|
|
53
53
|
$$css: true
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
+
const scrollWrapperStyles = {
|
|
57
|
+
base: {
|
|
58
|
+
kXHlph: "xw2csxc",
|
|
59
|
+
kuHK5b: "x5lxg6s",
|
|
60
|
+
$$css: true
|
|
61
|
+
},
|
|
62
|
+
containerBleed: {
|
|
63
|
+
keTefX: "xojxgvx",
|
|
64
|
+
k71WvV: "x1fcf3bl",
|
|
65
|
+
kzqmXN: "xx6qvi6",
|
|
66
|
+
keoZOQ: "xkibk3",
|
|
67
|
+
k1K539: "xlayyun",
|
|
68
|
+
$$css: true
|
|
69
|
+
}
|
|
70
|
+
};
|
|
56
71
|
function TableScrollWrapper({
|
|
57
|
-
children
|
|
72
|
+
children,
|
|
73
|
+
htmlProps,
|
|
74
|
+
styles: pluginStyles,
|
|
75
|
+
beforeTable,
|
|
76
|
+
afterTable
|
|
58
77
|
}) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
78
|
+
const {
|
|
79
|
+
ref,
|
|
80
|
+
...restHtmlProps
|
|
81
|
+
} = htmlProps ?? {};
|
|
82
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
83
|
+
ref: ref
|
|
84
|
+
// Keyboard-focusable so keyboard users can scroll a horizontally
|
|
85
|
+
// overflowing table. Callers may override role/aria-label via htmlProps.
|
|
86
|
+
,
|
|
87
|
+
tabIndex: 0,
|
|
88
|
+
role: "region",
|
|
89
|
+
"aria-label": "Table",
|
|
90
|
+
...restHtmlProps,
|
|
91
|
+
...mergeProps(themeProps('table-scroll-wrapper'), stylex.props(scrollWrapperStyles.base, scrollWrapperStyles.containerBleed, ...(pluginStyles ?? []))),
|
|
92
|
+
children: [beforeTable, children, afterTable]
|
|
64
93
|
});
|
|
65
94
|
}
|
|
66
95
|
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import type { ReactNode } from 'react';
|
|
13
13
|
import type { BaseProps } from '../BaseProps';
|
|
14
14
|
import type { StyleXStyles } from '../theme/types';
|
|
15
|
+
import type { TableContextActions } from './types';
|
|
15
16
|
/** Props for TableCell — thin `<td>` wrapper */
|
|
16
17
|
export interface TableCellProps extends BaseProps<HTMLTableCellElement> {
|
|
17
18
|
/** Ref forwarded to the root element */
|
|
@@ -30,6 +31,12 @@ export interface TableCellProps extends BaseProps<HTMLTableCellElement> {
|
|
|
30
31
|
* Must be a `stylex.create()` value — not an inline style object.
|
|
31
32
|
*/
|
|
32
33
|
xstyle?: StyleXStyles | StyleXStyles[];
|
|
34
|
+
/**
|
|
35
|
+
* Right-click actions rendered as a context menu around the cell content.
|
|
36
|
+
* The cell owns the wrapper so it controls how the menu interacts with its
|
|
37
|
+
* padding / content. Empty or undefined renders no menu.
|
|
38
|
+
*/
|
|
39
|
+
contextMenuActions?: TableContextActions;
|
|
33
40
|
}
|
|
34
41
|
/**
|
|
35
42
|
* TableCell — a `<td>` wrapper for children/streaming mode.
|
|
@@ -45,7 +52,7 @@ export interface TableCellProps extends BaseProps<HTMLTableCellElement> {
|
|
|
45
52
|
* </TableRow>
|
|
46
53
|
* ```
|
|
47
54
|
*/
|
|
48
|
-
export declare function TableCell({ children, xstyle, ref, className: incomingClassName, style: incomingStyle, ...props }: TableCellProps): import("react").JSX.Element;
|
|
55
|
+
export declare function TableCell({ children, xstyle, ref, className: incomingClassName, style: incomingStyle, contextMenuActions, ...props }: TableCellProps): import("react").JSX.Element;
|
|
49
56
|
export declare namespace TableCell {
|
|
50
57
|
var displayName: string;
|
|
51
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCell.d.ts","sourceRoot":"","sources":["../../src/Table/TableCell.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"TableCell.d.ts","sourceRoot":"","sources":["../../src/Table/TableCell.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAgBjD,gDAAgD;AAChD,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtC,0FAA0F;IAC1F,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;IAChD,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACvC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;CAC1C;AA8DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,MAAM,EACN,GAAG,EACH,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,aAAa,EACpB,kBAAkB,EAClB,GAAG,KAAK,EACT,EAAE,cAAc,+BAiChB;yBAzCe,SAAS"}
|
package/dist/Table/TableCell.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import * as stylex from '@stylexjs/stylex';
|
|
17
17
|
import "../theme/tokens.stylex.js";
|
|
18
18
|
import { borderVars, colorVars, spacingVars, typeScaleVars } from "../theme/tokens.stylex.js";
|
|
19
|
+
import { wrapInTableContextMenu } from "./tableContextMenu.js";
|
|
19
20
|
import "./table.stylex.js";
|
|
20
21
|
import { overflowStyles, wrapStyles, containerEdgeStyles, tableRowMarker } from "./table.stylex.js";
|
|
21
22
|
import { useTableContext, buildDividerStyles, mergeXStyle } from "./useTableCellStyles.js";
|
|
@@ -98,23 +99,22 @@ export function TableCell({
|
|
|
98
99
|
ref,
|
|
99
100
|
className: incomingClassName,
|
|
100
101
|
style: incomingStyle,
|
|
102
|
+
contextMenuActions,
|
|
101
103
|
...props
|
|
102
104
|
}) {
|
|
103
105
|
const ctx = useTableContext();
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
const cellStyles = [densityStyles[ctx.density], ctx.textOverflow === 'truncate' ? overflowStyles.cell : wrapStyles.cell, containerEdgeStyles[ctx.density], verticalAlignStyles[ctx.verticalAlign], ...buildDividerStyles(ctx, dividerRowStyles.cell, dividerColumnStyles.cell)];
|
|
106
|
+
|
|
107
|
+
// Standalone (no table context) renders plain, with no density/divider styles.
|
|
108
|
+
const cellStyles = ctx ? [densityStyles[ctx.density], ctx.textOverflow === 'truncate' ? overflowStyles.cell : wrapStyles.cell, containerEdgeStyles[ctx.density], verticalAlignStyles[ctx.verticalAlign], ...buildDividerStyles(ctx, dividerRowStyles.cell, dividerColumnStyles.cell)] : [];
|
|
109
|
+
|
|
110
|
+
// The cell owns the context-menu wrapper so it controls how the menu
|
|
111
|
+
// interacts with its padding / content. No-op when no actions.
|
|
112
|
+
const content = wrapInTableContextMenu(children, contextMenuActions);
|
|
113
113
|
return /*#__PURE__*/_jsx("td", {
|
|
114
114
|
ref: ref,
|
|
115
115
|
...props,
|
|
116
116
|
...mergeProps(themeProps('table-cell'), stylex.props(...mergeXStyle(cellStyles, xstyle)), incomingClassName, incomingStyle),
|
|
117
|
-
children:
|
|
117
|
+
children: content
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
120
|
TableCell.displayName = 'TableCell';
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import type { ReactNode } from 'react';
|
|
13
13
|
import type { BaseProps } from '../BaseProps';
|
|
14
14
|
import type { StyleXStyles } from '../theme/types';
|
|
15
|
+
import type { TableContextActions } from './types';
|
|
15
16
|
/** Props for TableHeaderCell — `<th>` wrapper with context-aware styling */
|
|
16
17
|
export interface TableHeaderCellProps extends BaseProps<HTMLTableCellElement> {
|
|
17
18
|
/** Ref forwarded to the root element */
|
|
@@ -24,6 +25,12 @@ export interface TableHeaderCellProps extends BaseProps<HTMLTableCellElement> {
|
|
|
24
25
|
* Must be a `stylex.create()` value — not an inline style object.
|
|
25
26
|
*/
|
|
26
27
|
xstyle?: StyleXStyles | StyleXStyles[];
|
|
28
|
+
/**
|
|
29
|
+
* Right-click actions rendered as a context menu around the cell content.
|
|
30
|
+
* The cell owns the wrapper so it controls how the menu interacts with its
|
|
31
|
+
* padding / content. Empty or undefined renders no menu.
|
|
32
|
+
*/
|
|
33
|
+
contextMenuActions?: TableContextActions;
|
|
27
34
|
}
|
|
28
35
|
/**
|
|
29
36
|
* TableHeaderCell — a `<th>` wrapper for header cells.
|
|
@@ -44,7 +51,7 @@ export interface TableHeaderCellProps extends BaseProps<HTMLTableCellElement> {
|
|
|
44
51
|
* </thead>
|
|
45
52
|
* ```
|
|
46
53
|
*/
|
|
47
|
-
export declare function TableHeaderCell({ children, xstyle, ref, className: incomingClassName, style: incomingStyle, ...props }: TableHeaderCellProps): import("react").JSX.Element;
|
|
54
|
+
export declare function TableHeaderCell({ children, xstyle, ref, className: incomingClassName, style: incomingStyle, contextMenuActions, ...props }: TableHeaderCellProps): import("react").JSX.Element;
|
|
48
55
|
export declare namespace TableHeaderCell {
|
|
49
56
|
var displayName: string;
|
|
50
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderCell.d.ts","sourceRoot":"","sources":["../../src/Table/TableHeaderCell.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"TableHeaderCell.d.ts","sourceRoot":"","sources":["../../src/Table/TableHeaderCell.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAOjD,4EAA4E;AAC5E,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAC3E,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtC,oDAAoD;IACpD,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACvC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;CAC1C;AAkDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,GAAG,EACH,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,aAAa,EACpB,kBAAkB,EAClB,GAAG,KAAK,EACT,EAAE,oBAAoB,+BAsCtB;yBA9Ce,eAAe"}
|
|
@@ -18,6 +18,7 @@ import "../theme/tokens.stylex.js";
|
|
|
18
18
|
import { colorVars, spacingVars, fontWeightVars, typeScaleVars, borderVars } from "../theme/tokens.stylex.js";
|
|
19
19
|
import { overflowStyles, containerEdgeStyles } from "./table.stylex.js";
|
|
20
20
|
import { useTableContext, mergeXStyle } from "./useTableCellStyles.js";
|
|
21
|
+
import { wrapInTableContextMenu } from "./tableContextMenu.js";
|
|
21
22
|
import { mergeProps } from "../utils/index.js";
|
|
22
23
|
import { themeProps } from "../utils/themeProps.js";
|
|
23
24
|
|
|
@@ -96,32 +97,31 @@ export function TableHeaderCell({
|
|
|
96
97
|
ref,
|
|
97
98
|
className: incomingClassName,
|
|
98
99
|
style: incomingStyle,
|
|
100
|
+
contextMenuActions,
|
|
99
101
|
...props
|
|
100
102
|
}) {
|
|
101
103
|
const ctx = useTableContext();
|
|
102
|
-
if (!ctx) {
|
|
103
|
-
return /*#__PURE__*/_jsx("th", {
|
|
104
|
-
ref: ref,
|
|
105
|
-
...props,
|
|
106
|
-
...mergeProps(themeProps('table-header-cell'), stylex.props(xstyle), incomingClassName, incomingStyle),
|
|
107
|
-
children: children
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
104
|
|
|
111
105
|
// Header cells always get the bottom divider (separates header from body).
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
const cellStyles = [
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
106
|
+
// When used standalone (no table context) the cell renders plain, with no
|
|
107
|
+
// density/divider styles.
|
|
108
|
+
const cellStyles = [];
|
|
109
|
+
if (ctx) {
|
|
110
|
+
cellStyles.push(headerStyles.cell, densityStyles[ctx.density], headerDividerStyles.cell, overflowStyles.cell, containerEdgeStyles[ctx.density]);
|
|
111
|
+
// Column dividers come from the shared builder (column axis only).
|
|
112
|
+
if (ctx.dividers === 'columns' || ctx.dividers === 'grid') {
|
|
113
|
+
cellStyles.push(dividerColumnStyles.cell);
|
|
114
|
+
}
|
|
119
115
|
}
|
|
116
|
+
|
|
117
|
+
// The cell owns the context-menu wrapper so it controls how the menu
|
|
118
|
+
// interacts with its padding / content. No-op when no actions.
|
|
119
|
+
const content = wrapInTableContextMenu(children, contextMenuActions);
|
|
120
120
|
return /*#__PURE__*/_jsx("th", {
|
|
121
121
|
ref: ref,
|
|
122
122
|
...props,
|
|
123
123
|
...mergeProps(themeProps('table-header-cell'), stylex.props(...mergeXStyle(cellStyles, xstyle)), incomingClassName, incomingStyle),
|
|
124
|
-
children:
|
|
124
|
+
children: content
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
TableHeaderCell.displayName = 'TableHeaderCell';
|
package/dist/Table/TableRow.d.ts
CHANGED
|
@@ -22,6 +22,11 @@ export interface TableRowProps extends BaseProps<HTMLTableRowElement> {
|
|
|
22
22
|
* Must be a `stylex.create()` value — not an inline style object.
|
|
23
23
|
*/
|
|
24
24
|
xstyle?: StyleXStyles[];
|
|
25
|
+
/**
|
|
26
|
+
* Whether this row is the header row. Header rows skip the striped/hover
|
|
27
|
+
* row styling (which is only meant for body rows).
|
|
28
|
+
*/
|
|
29
|
+
isHeaderRow?: boolean;
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
27
32
|
* TableRow — a `<tr>` wrapper for children/streaming mode.
|
|
@@ -39,7 +44,7 @@ export interface TableRowProps extends BaseProps<HTMLTableRowElement> {
|
|
|
39
44
|
* </Table>
|
|
40
45
|
* ```
|
|
41
46
|
*/
|
|
42
|
-
export declare function TableRow({ children, xstyle, ref, ...props }: TableRowProps): import("react").JSX.Element;
|
|
47
|
+
export declare function TableRow({ children, xstyle, ref, isHeaderRow, ...props }: TableRowProps): import("react").JSX.Element;
|
|
43
48
|
export declare namespace TableRow {
|
|
44
49
|
var displayName: string;
|
|
45
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../src/Table/TableRow.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAM,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAMjD,+CAA+C;AAC/C,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,mBAAmB,CAAC;IACnE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../src/Table/TableRow.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAM,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAMjD,+CAA+C;AAC/C,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,mBAAmB,CAAC;IACnE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,GAAG,EACH,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,aAAa,+BAoDf;yBA1De,QAAQ"}
|
package/dist/Table/TableRow.js
CHANGED
|
@@ -27,12 +27,14 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
27
27
|
const stripedRowStyles = {
|
|
28
28
|
row: {
|
|
29
29
|
kWkggS: "x1dnou9g",
|
|
30
|
+
"--table-row-overlay": "x1rht92",
|
|
30
31
|
$$css: true
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
34
|
const hoverRowStyles = {
|
|
34
35
|
row: {
|
|
35
36
|
kWkggS: "xe9uy6x",
|
|
37
|
+
"--table-row-overlay": "x1pkcbo2",
|
|
36
38
|
k1ekBW: "x15406qy",
|
|
37
39
|
kIyJzY: "xuedmi6",
|
|
38
40
|
kAMwcw: "xlr8y92",
|
|
@@ -42,6 +44,7 @@ const hoverRowStyles = {
|
|
|
42
44
|
const stripedHoverRowStyles = {
|
|
43
45
|
row: {
|
|
44
46
|
kWkggS: "x1dnou9g xe9uy6x",
|
|
47
|
+
"--table-row-overlay": "x1rht92 x1pkcbo2",
|
|
45
48
|
k1ekBW: "x15406qy",
|
|
46
49
|
kIyJzY: "xuedmi6",
|
|
47
50
|
kAMwcw: "xlr8y92",
|
|
@@ -69,6 +72,7 @@ export function TableRow({
|
|
|
69
72
|
children,
|
|
70
73
|
xstyle,
|
|
71
74
|
ref,
|
|
75
|
+
isHeaderRow = false,
|
|
72
76
|
...props
|
|
73
77
|
}) {
|
|
74
78
|
const ctx = use(TableContext);
|
|
@@ -82,13 +86,17 @@ export function TableRow({
|
|
|
82
86
|
}
|
|
83
87
|
const rowStyles = [];
|
|
84
88
|
|
|
85
|
-
//
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
// Striped + hover styling is for body rows only — the header row must not
|
|
90
|
+
// pick up the hover highlight (or striping) even when hasHover/isStriped.
|
|
91
|
+
if (!isHeaderRow) {
|
|
92
|
+
// Handle striped + hover combination to avoid backgroundColor conflicts
|
|
93
|
+
if (ctx.isStriped && ctx.hasHover) {
|
|
94
|
+
rowStyles.push(stripedHoverRowStyles.row);
|
|
95
|
+
} else if (ctx.isStriped) {
|
|
96
|
+
rowStyles.push(stripedRowStyles.row);
|
|
97
|
+
} else if (ctx.hasHover) {
|
|
98
|
+
rowStyles.push(hoverRowStyles.row);
|
|
99
|
+
}
|
|
92
100
|
}
|
|
93
101
|
if (ctx.dividers === 'rows' || ctx.dividers === 'grid') {
|
|
94
102
|
// Note: last-body-row border removal is handled by TableCell
|