@astryxdesign/core 0.3.0 → 0.4.0
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 +156 -0
- package/dist/AlertDialog/AlertDialog.d.ts +10 -2
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +22 -3
- package/dist/AppShell/AppShell.d.ts +2 -2
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +40 -9
- package/dist/AspectRatio/AspectRatio.d.ts +13 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +9 -0
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +33 -20
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +2 -3
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +15 -14
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +21 -8
- package/dist/Breadcrumbs/index.d.ts +2 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +1 -0
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -15
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +2 -1
- package/dist/Calendar/styles.d.ts +0 -2
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +0 -2
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +8 -12
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +2 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +3 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +4 -3
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +17 -17
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +2 -6
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +36 -125
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +3 -11
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +84 -67
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +35 -15
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +6 -3
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +35 -33
- package/dist/ContextMenu/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +1 -1
- package/dist/ContextMenu/index.d.ts +2 -1
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +1 -0
- package/dist/DateInput/DateInput.d.ts +9 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +24 -23
- package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +11 -16
- package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +22 -17
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +4 -4
- package/dist/DropdownMenu/DropdownMenu.d.ts +33 -8
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +62 -20
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +8 -11
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +32 -31
- package/dist/DropdownMenu/DropdownMenuDivider.d.ts +25 -0
- package/dist/DropdownMenu/DropdownMenuDivider.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuDivider.js +66 -0
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +15 -2
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +20 -8
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +5 -5
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +24 -67
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +2 -8
- package/dist/DropdownMenu/index.d.ts +2 -1
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +4 -0
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +35 -27
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +9 -5
- package/dist/Field/InputClearButton.d.ts +16 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +15 -4
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +3 -19
- package/dist/Indicator/CheckIndicator.d.ts +25 -0
- package/dist/Indicator/CheckIndicator.d.ts.map +1 -0
- package/dist/Indicator/CheckIndicator.js +155 -0
- package/dist/Indicator/CheckboxIndicator.d.ts +22 -0
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -0
- package/dist/Indicator/CheckboxIndicator.js +173 -0
- package/dist/Indicator/RadioIndicator.d.ts +23 -0
- package/dist/Indicator/RadioIndicator.d.ts.map +1 -0
- package/dist/Indicator/RadioIndicator.js +137 -0
- package/dist/Indicator/index.d.ts +24 -0
- package/dist/Indicator/index.d.ts.map +1 -0
- package/dist/Indicator/index.js +26 -0
- package/dist/Indicator/indicator.markers.stylex.d.ts +16 -0
- package/dist/Indicator/indicator.markers.stylex.d.ts.map +1 -0
- package/dist/Indicator/indicator.markers.stylex.js +21 -0
- package/dist/Indicator/indicatorRegistry.d.ts +71 -0
- package/dist/Indicator/indicatorRegistry.d.ts.map +1 -0
- package/dist/Indicator/indicatorRegistry.js +93 -0
- package/dist/Indicator/types.d.ts +167 -0
- package/dist/Indicator/types.d.ts.map +1 -0
- package/dist/Indicator/types.js +1 -0
- package/dist/Indicator/useIndicator.d.ts +18 -0
- package/dist/Indicator/useIndicator.d.ts.map +1 -0
- package/dist/Indicator/useIndicator.js +30 -0
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -8
- package/dist/Layer/useLayer.d.ts +14 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +25 -2
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +56 -53
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +4 -5
- package/dist/MobileNav/MobileNav.js +8 -8
- package/dist/MoreMenu/MoreMenu.d.ts +14 -1
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MoreMenu/MoreMenu.js +4 -0
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +78 -75
- package/dist/NumberInput/NumberInput.d.ts +27 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +230 -42
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +2 -3
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +61 -63
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -8
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +7 -0
- package/dist/ProgressBar/ProgressBar.d.ts +11 -4
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +96 -6
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +29 -84
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +2 -3
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +2 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +3 -11
- package/dist/Selector/Selector.d.ts +2 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +164 -94
- package/dist/Selector/hooks.d.ts +18 -6
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +57 -40
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +29 -14
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +56 -20
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +28 -22
- package/dist/Stack/stack.stylex.d.ts +3 -3
- package/dist/Switch/Switch.js +11 -10
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +2 -3
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +41 -19
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +8 -0
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +22 -18
- package/dist/Table/plugins/rowExpansion/index.d.ts +1 -1
- package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/index.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +41 -76
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +94 -345
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +23 -4
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +29 -33
- package/dist/Table/tableContextMenu.d.ts.map +1 -1
- package/dist/Table/tableContextMenu.js +2 -1
- package/dist/Table/types.d.ts +11 -0
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/TextArea/TextArea.d.ts +10 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +16 -6
- package/dist/TextInput/TextInput.d.ts +10 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +13 -19
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +32 -26
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +7 -15
- package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -1
- package/dist/Timestamp/TimestampHoverCard.js +16 -34
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +20 -11
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +4 -2
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +3 -19
- package/dist/TopNav/TopNav.d.ts.map +1 -1
- package/dist/TopNav/TopNav.js +6 -5
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +54 -16
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +3 -9
- package/dist/TopNav/TopNavMegaMenu.d.ts +7 -0
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +146 -60
- package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +22 -3
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +83 -38
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +13 -0
- package/dist/TreeList/TreeListBranches.d.ts +1 -1
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +14 -4
- package/dist/TreeList/TreeListItem.d.ts +11 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +57 -30
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +16 -8
- package/dist/astryx.css +74 -85
- package/dist/astryx.umd.js +56 -56
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.stylex.d.ts +61 -0
- package/dist/hooks/containerReveal.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.stylex.js +63 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/useClipboard.d.ts +59 -0
- package/dist/hooks/useClipboard.d.ts.map +1 -0
- package/dist/hooks/useClipboard.js +106 -0
- package/dist/hooks/useContainerReveal.d.ts +14 -8
- package/dist/hooks/useContainerReveal.d.ts.map +1 -1
- package/dist/hooks/useContainerReveal.js +28 -69
- package/dist/hooks/useIndicatorFocusRing.d.ts +28 -0
- package/dist/hooks/useIndicatorFocusRing.d.ts.map +1 -0
- package/dist/hooks/useIndicatorFocusRing.js +96 -0
- package/dist/hooks/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +12 -2
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +33 -18
- package/dist/hooks/useStreamingText.d.ts +18 -3
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +47 -7
- package/dist/hooks/useTreeFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.js +9 -3
- package/dist/hooks/useTypeahead.d.ts +3 -2
- package/dist/hooks/useTypeahead.d.ts.map +1 -1
- package/dist/hooks/useTypeahead.js +19 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/defineTheme.d.ts +16 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +8 -0
- package/dist/theme/derivedVarRegistry.d.ts +8 -0
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +14 -13
- package/dist/theme/expandColorScale.d.ts +3 -1
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +17 -7
- package/dist/theme/expandTypeScale.d.ts.map +1 -1
- package/dist/theme/expandTypeScale.js +17 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +11 -0
- package/dist/theme/index.d.ts +1 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.d.ts +107 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
- package/dist/utils/focusOutline.stylex.js +130 -0
- package/dist/utils/focusReturn.d.ts +24 -0
- package/dist/utils/focusReturn.d.ts.map +1 -0
- package/dist/utils/focusReturn.js +29 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/mergeRefs.d.ts.map +1 -1
- package/dist/utils/mergeRefs.js +7 -5
- package/dist/utils/rtlStyles.d.ts +2 -2
- package/dist/utils/rtlStyles.js +2 -2
- package/dist/utils/themeProps.d.ts +20 -1
- package/dist/utils/themeProps.d.ts.map +1 -1
- package/dist/utils/themeProps.js +8 -2
- package/locales/en.json +12 -0
- package/locales/pseudo.json +9 -0
- package/package.json +7 -2
- package/src/AlertDialog/AlertDialog.doc.mjs +16 -3
- package/src/AlertDialog/AlertDialog.test.tsx +208 -1
- package/src/AlertDialog/AlertDialog.tsx +21 -3
- package/src/AppShell/AppShell.doc.mjs +11 -0
- package/src/AppShell/AppShell.test.tsx +139 -0
- package/src/AppShell/AppShell.tsx +32 -22
- package/src/AspectRatio/AspectRatio.doc.mjs +27 -3
- package/src/AspectRatio/AspectRatio.test.tsx +30 -0
- package/src/AspectRatio/AspectRatio.tsx +13 -0
- package/src/Avatar/Avatar.doc.mjs +2 -13
- package/src/Avatar/Avatar.test.tsx +33 -8
- package/src/Avatar/Avatar.tsx +52 -50
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -9
- package/src/Banner/Banner.tsx +9 -6
- package/src/Breadcrumbs/BreadcrumbItem.tsx +16 -6
- package/src/Breadcrumbs/index.ts +5 -1
- package/src/Button/Button.tsx +21 -41
- package/src/Calendar/Calendar.tsx +2 -1
- package/src/Calendar/styles.ts +0 -8
- package/src/Carousel/Carousel.doc.mjs +3 -0
- package/src/Carousel/Carousel.tsx +10 -6
- package/src/Chat/Chat.doc.mjs +2 -0
- package/src/Chat/ChatDictationButton.tsx +7 -1
- package/src/Chat/ChatLayoutScrollButton.test.tsx +22 -0
- package/src/Chat/ChatLayoutScrollButton.tsx +8 -1
- package/src/Chat/ChatSendButton.tsx +2 -3
- package/src/Chat/ChatToolCalls.test.tsx +35 -0
- package/src/Chat/ChatToolCalls.tsx +36 -16
- package/src/Chat/useTriggerMenu.tsx +2 -5
- package/src/CheckboxInput/CheckboxInput.doc.mjs +4 -2
- package/src/CheckboxInput/CheckboxInput.test.tsx +115 -0
- package/src/CheckboxInput/CheckboxInput.tsx +45 -202
- package/src/ClickableCard/ClickableCard.tsx +6 -11
- package/src/CodeBlock/CodeBlock.doc.mjs +3 -0
- package/src/CodeBlock/CodeBlock.test.tsx +91 -0
- package/src/CodeBlock/CodeBlock.tsx +57 -80
- package/src/Collapsible/Collapsible.tsx +22 -18
- package/src/CommandPalette/CommandPalette.test.tsx +29 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +7 -4
- package/src/CommandPalette/CommandPaletteList.tsx +2 -2
- package/src/ComplexSelector/ComplexSelector.doc.mjs +42 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +64 -0
- package/src/ComplexSelector/ComplexSelector.tsx +46 -29
- package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
- package/src/ContextMenu/ContextMenu.test.tsx +41 -0
- package/src/ContextMenu/ContextMenu.tsx +3 -3
- package/src/ContextMenu/index.ts +5 -1
- package/src/DateInput/DateInput.doc.mjs +18 -3
- package/src/DateInput/DateInput.test.tsx +93 -11
- package/src/DateInput/DateInput.tsx +41 -19
- package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +110 -14
- package/src/DateRangeInput/DateRangeInput.tsx +24 -12
- package/src/DateTimeInput/DateTimeInput.doc.mjs +16 -2
- package/src/DateTimeInput/DateTimeInput.test.tsx +75 -0
- package/src/DateTimeInput/DateTimeInput.tsx +35 -8
- package/src/Dialog/Dialog.tsx +2 -9
- package/src/DropdownMenu/DropdownMenu.doc.mjs +5 -9
- package/src/DropdownMenu/DropdownMenu.test.tsx +534 -4
- package/src/DropdownMenu/DropdownMenu.tsx +113 -52
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +27 -30
- package/src/DropdownMenu/DropdownMenuDivider.doc.mjs +34 -0
- package/src/DropdownMenu/DropdownMenuDivider.tsx +81 -0
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +39 -4
- package/src/DropdownMenu/DropdownMenuItem.tsx +48 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +30 -76
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +25 -19
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +44 -14
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +1 -5
- package/src/DropdownMenu/index.ts +8 -1
- package/src/DropdownMenu/renderDropdownItems.tsx +33 -34
- package/src/EmptyState/EmptyState.doc.mjs +4 -0
- package/src/EmptyState/EmptyState.test.tsx +62 -0
- package/src/EmptyState/EmptyState.tsx +16 -6
- package/src/Field/Field.doc.mjs +1 -0
- package/src/Field/InputClearButton.test.tsx +117 -0
- package/src/Field/InputClearButton.tsx +30 -3
- package/src/HoverCard/useHoverCard.tsx +2 -23
- package/src/Icon/Icon.doc.mjs +2 -1
- package/src/Indicator/CheckIndicator.tsx +174 -0
- package/src/Indicator/CheckboxIndicator.tsx +257 -0
- package/src/Indicator/Indicator.doc.mjs +344 -0
- package/src/Indicator/Indicator.test.tsx +393 -0
- package/src/Indicator/RadioIndicator.tsx +206 -0
- package/src/Indicator/index.ts +45 -0
- package/src/Indicator/indicator.markers.stylex.ts +19 -0
- package/src/Indicator/indicatorRegistry.test.tsx +106 -0
- package/src/Indicator/indicatorRegistry.ts +120 -0
- package/src/Indicator/types.ts +186 -0
- package/src/Indicator/useIndicator.ts +39 -0
- package/src/Item/Item.doc.mjs +1 -1
- package/src/Item/Item.tsx +7 -14
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layer/useLayer.test.tsx +85 -0
- package/src/Layer/useLayer.tsx +39 -1
- package/src/Lightbox/Lightbox.doc.mjs +1 -1
- package/src/Lightbox/Lightbox.tsx +43 -38
- package/src/Link/Link.tsx +4 -11
- package/src/MobileNav/MobileNav.tsx +3 -3
- package/src/MoreMenu/MoreMenu.doc.mjs +31 -0
- package/src/MoreMenu/MoreMenu.test.tsx +68 -1
- package/src/MoreMenu/MoreMenu.tsx +19 -0
- package/src/MultiSelector/MultiSelector.doc.mjs +9 -1
- package/src/MultiSelector/MultiSelector.test.tsx +255 -16
- package/src/MultiSelector/MultiSelector.tsx +103 -99
- package/src/NumberInput/NumberInput.doc.mjs +265 -50
- package/src/NumberInput/NumberInput.test.tsx +726 -21
- package/src/NumberInput/NumberInput.tsx +353 -59
- package/src/Outline/Outline.tsx +2 -5
- package/src/Pagination/Pagination.doc.mjs +1 -1
- package/src/Pagination/Pagination.test.tsx +22 -7
- package/src/Pagination/Pagination.tsx +38 -35
- package/src/Popover/Popover.tsx +6 -7
- package/src/PowerSearch/PowerSearch.tsx +1 -1
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +42 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +7 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +27 -5
- package/src/ProgressBar/ProgressBar.test.tsx +224 -1
- package/src/ProgressBar/ProgressBar.tsx +124 -22
- package/src/RadioList/RadioList.doc.mjs +4 -2
- package/src/RadioList/RadioListItem.tsx +31 -130
- package/src/Resizable/ResizeHandle.tsx +2 -9
- package/src/SegmentedControl/SegmentedControlItem.tsx +2 -9
- package/src/SelectableCard/SelectableCard.tsx +4 -9
- package/src/Selector/Selector.doc.mjs +7 -4
- package/src/Selector/Selector.test.tsx +935 -25
- package/src/Selector/Selector.tsx +189 -106
- package/src/Selector/hooks.ts +77 -50
- package/src/SideNav/SideNav.test.tsx +46 -0
- package/src/SideNav/SideNav.tsx +1 -0
- package/src/SideNav/SideNavCollapseButton.tsx +15 -10
- package/src/SideNav/SideNavHeading.tsx +48 -10
- package/src/SideNav/SideNavItem.tsx +20 -12
- package/src/Stack/Stack.doc.mjs +110 -0
- package/src/StatusDot/StatusDot.doc.mjs +12 -3
- package/src/Switch/Switch.test.tsx +32 -0
- package/src/Switch/Switch.tsx +8 -8
- package/src/TabList/Tab.tsx +2 -9
- package/src/TabList/TabMenu.tsx +14 -21
- package/src/Table/BaseTable.tsx +11 -0
- package/src/Table/index.ts +1 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +30 -14
- package/src/Table/plugins/rowExpansion/index.ts +1 -4
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +125 -175
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +115 -458
- package/src/Table/plugins/sortable/useTableSortable.tsx +2 -6
- package/src/Table/plugins/tree/useTableTreeData.tsx +43 -24
- package/src/Table/tableContextMenu.test.tsx +27 -0
- package/src/Table/tableContextMenu.tsx +1 -0
- package/src/Table/types.ts +11 -0
- package/src/Table/useTableGroupedRows.doc.mjs +1 -1
- package/src/Table/useTableRowExpansion.doc.mjs +43 -66
- package/src/TextArea/TextArea.doc.mjs +42 -2
- package/src/TextArea/TextArea.test.tsx +219 -0
- package/src/TextArea/TextArea.tsx +34 -7
- package/src/TextInput/TextInput.doc.mjs +18 -2
- package/src/TextInput/TextInput.test.tsx +189 -0
- package/src/TextInput/TextInput.tsx +25 -31
- package/src/Thumbnail/Thumbnail.tsx +2 -9
- package/src/TimeInput/TimeInput.doc.mjs +2 -2
- package/src/TimeInput/TimeInput.test.tsx +30 -3
- package/src/TimeInput/TimeInput.tsx +9 -26
- package/src/Timestamp/Timestamp.doc.mjs +4 -3
- package/src/Timestamp/TimestampHoverCard.tsx +13 -35
- package/src/Token/Token.tsx +5 -28
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.test.tsx +45 -3
- package/src/Tokenizer/Tokenizer.tsx +10 -2
- package/src/Tooltip/useTooltip.tsx +2 -23
- package/src/TopNav/TopNav.tsx +1 -3
- package/src/TopNav/TopNavHeading.tsx +42 -13
- package/src/TopNav/TopNavItem.tsx +3 -21
- package/src/TopNav/TopNavMegaMenu.test.tsx +433 -33
- package/src/TopNav/TopNavMegaMenu.tsx +118 -53
- package/src/TopNav/TopNavMegaMenuItem.tsx +2 -9
- package/src/TopNav/TopNavMenu.tsx +34 -37
- package/src/TreeList/TreeList.doc.mjs +5 -0
- package/src/TreeList/TreeList.test.tsx +206 -7
- package/src/TreeList/TreeList.tsx +22 -0
- package/src/TreeList/TreeListBranches.tsx +25 -2
- package/src/TreeList/TreeListItem.tsx +89 -52
- package/src/Typeahead/BaseTypeahead.tsx +19 -6
- package/src/Typeahead/Typeahead.doc.mjs +1 -0
- package/src/Typeahead/Typeahead.test.tsx +76 -3
- package/src/hooks/containerReveal.stylex.ts +102 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useClipboard.doc.mjs +87 -0
- package/src/hooks/useClipboard.test.tsx +151 -0
- package/src/hooks/useClipboard.ts +135 -0
- package/src/hooks/useContainerReveal.doc.mjs +7 -7
- package/src/hooks/useContainerReveal.test.tsx +42 -62
- package/src/hooks/useContainerReveal.ts +36 -91
- package/src/hooks/useImageMode.test.ts +1 -1
- package/src/hooks/useIndicatorFocusRing.tsx +120 -0
- package/src/hooks/useLongPress.test.tsx +18 -0
- package/src/hooks/useLongPress.ts +12 -2
- package/src/hooks/useScrollLock.test.ts +72 -0
- package/src/hooks/useScrollLock.ts +51 -19
- package/src/hooks/useStreamingText.test.ts +46 -1
- package/src/hooks/useStreamingText.ts +49 -7
- package/src/hooks/useTreeFocus.test.tsx +50 -0
- package/src/hooks/useTreeFocus.ts +14 -3
- package/src/hooks/useTypeahead.test.tsx +150 -0
- package/src/hooks/useTypeahead.ts +24 -9
- package/src/i18n/InternationalizationProvider.doc.mjs +7 -2
- package/src/index.ts +1 -0
- package/src/theme/defineTheme.ts +24 -0
- package/src/theme/derivedVarRegistry.test.ts +21 -1
- package/src/theme/derivedVarRegistry.ts +19 -6
- package/src/theme/expandColorScale.test.ts +14 -0
- package/src/theme/expandColorScale.ts +24 -9
- package/src/theme/expandTypeScale.test.ts +43 -0
- package/src/theme/expandTypeScale.ts +17 -0
- package/src/theme/generateThemeRules.test.ts +61 -20
- package/src/theme/generateThemeRules.ts +11 -0
- package/src/theme/index.ts +13 -0
- package/src/utils/focusOutline.stylex.ts +163 -0
- package/src/utils/focusReturn.test.ts +42 -0
- package/src/utils/focusReturn.ts +31 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/mergeRefs.test.ts +48 -0
- package/src/utils/mergeRefs.ts +12 -6
- package/src/utils/rtlStyles.ts +2 -2
- package/src/utils/themeProps.ts +26 -4
- package/dist/CheckboxInput/checkbox.markers.stylex.d.ts +0 -9
- package/dist/CheckboxInput/checkbox.markers.stylex.d.ts.map +0 -1
- package/dist/CheckboxInput/checkbox.markers.stylex.js +0 -14
- package/dist/RadioList/radio.markers.stylex.d.ts +0 -7
- package/dist/RadioList/radio.markers.stylex.d.ts.map +0 -1
- package/dist/RadioList/radio.markers.stylex.js +0 -12
- package/dist/hooks/containerReveal.pool.stylex.d.ts +0 -303
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +0 -1
- package/dist/hooks/containerReveal.pool.stylex.js +0 -292
- package/src/CheckboxInput/checkbox.markers.stylex.ts +0 -12
- package/src/RadioList/radio.markers.stylex.ts +0 -10
- package/src/hooks/containerReveal.pool.stylex.ts +0 -571
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import {useRef, useMemo, type ReactNode} from 'react';
|
|
17
17
|
import * as stylex from '@stylexjs/stylex';
|
|
18
18
|
import {colorVars, spacingVars, radiusVars} from '../../../theme/tokens.stylex';
|
|
19
|
+
import {focusOutlineProps} from '../../../utils/focusOutline.stylex';
|
|
19
20
|
import {Icon} from '../../../Icon';
|
|
20
21
|
import {resolveContextActions} from '../../tableContextMenu';
|
|
21
22
|
import {useTranslator, type TranslatorFn} from '../../../i18n';
|
|
@@ -130,11 +131,6 @@ const sortStyles = stylex.create({
|
|
|
130
131
|
width: '100%',
|
|
131
132
|
height: '100%',
|
|
132
133
|
textAlign: 'inherit',
|
|
133
|
-
outline: {
|
|
134
|
-
default: 'none',
|
|
135
|
-
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
136
|
-
},
|
|
137
|
-
outlineOffset: '2px',
|
|
138
134
|
borderRadius: radiusVars['--radius-inner'],
|
|
139
135
|
},
|
|
140
136
|
iconWrapperUnsorted: {
|
|
@@ -307,7 +303,7 @@ function SortHeaderButton<T extends Record<string, unknown>>({
|
|
|
307
303
|
return (
|
|
308
304
|
<button
|
|
309
305
|
type="button"
|
|
310
|
-
{...
|
|
306
|
+
{...focusOutlineProps.focusVisible(sortStyles.button)}
|
|
311
307
|
aria-label={ariaLabel}
|
|
312
308
|
onClick={handleClick}>
|
|
313
309
|
<span>{children}</span>
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
import * as stylex from '@stylexjs/stylex';
|
|
43
43
|
import {colorVars, radiusVars, spacingVars} from '../../../theme/tokens.stylex';
|
|
44
44
|
import {Icon} from '../../../Icon';
|
|
45
|
-
import {mergeRefs
|
|
45
|
+
import {mergeRefs} from '../../../utils';
|
|
46
46
|
import type {
|
|
47
47
|
TablePlugin,
|
|
48
48
|
TableColumn,
|
|
@@ -259,14 +259,26 @@ const treeStyles = stylex.create({
|
|
|
259
259
|
color: colorVars['--color-icon-primary'],
|
|
260
260
|
},
|
|
261
261
|
},
|
|
262
|
-
|
|
263
|
-
display: 'inline-flex',
|
|
262
|
+
chevronIcon: {
|
|
264
263
|
transitionProperty: 'transform',
|
|
265
264
|
transitionDuration: '150ms',
|
|
266
|
-
transform: 'rotate(0deg)',
|
|
267
265
|
},
|
|
268
|
-
|
|
269
|
-
|
|
266
|
+
// The RTL mirror is folded into each state's transform rather than living on
|
|
267
|
+
// a parent span. Both are `transform`, so on one element the later value
|
|
268
|
+
// would win — spelling out `scaleX(-1) rotate(...)` per state composes them
|
|
269
|
+
// exactly as the nested elements did, while leaving a single element to
|
|
270
|
+
// carry the glyph's theme target.
|
|
271
|
+
chevronIconCollapsed: {
|
|
272
|
+
transform: {
|
|
273
|
+
default: 'rotate(0deg)',
|
|
274
|
+
':is([dir="rtl"] *)': 'scaleX(-1) rotate(0deg)',
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
chevronIconExpanded: {
|
|
278
|
+
transform: {
|
|
279
|
+
default: 'rotate(90deg)',
|
|
280
|
+
':is([dir="rtl"] *)': 'scaleX(-1) rotate(90deg)',
|
|
281
|
+
},
|
|
270
282
|
},
|
|
271
283
|
/** Keeps leaf content aligned with expandable siblings. */
|
|
272
284
|
leafSpacer: {
|
|
@@ -314,15 +326,19 @@ function TreeExpander({
|
|
|
314
326
|
: t('@astryx.tableTree.expandRow')
|
|
315
327
|
}
|
|
316
328
|
aria-expanded={isExpanded}>
|
|
317
|
-
<
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
329
|
+
<Icon
|
|
330
|
+
icon="chevronRight"
|
|
331
|
+
size="xsm"
|
|
332
|
+
// The rotation rides on the glyph rather than a wrapper span so the
|
|
333
|
+
// theme target below reaches both the mark and its open/closed
|
|
334
|
+
// transform.
|
|
335
|
+
xstyle={[
|
|
336
|
+
treeStyles.chevronIcon,
|
|
337
|
+
isExpanded
|
|
338
|
+
? treeStyles.chevronIconExpanded
|
|
339
|
+
: treeStyles.chevronIconCollapsed,
|
|
340
|
+
]}
|
|
341
|
+
/>
|
|
326
342
|
</button>
|
|
327
343
|
);
|
|
328
344
|
}
|
|
@@ -363,15 +379,18 @@ function TreeExpandAllToggle({
|
|
|
363
379
|
: t('@astryx.tableTree.expandAllRows')
|
|
364
380
|
}
|
|
365
381
|
aria-expanded={allExpanded}>
|
|
366
|
-
<
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
382
|
+
<Icon
|
|
383
|
+
icon="chevronRight"
|
|
384
|
+
size="xsm"
|
|
385
|
+
// Same one-element treatment as the row expander: the glyph carries
|
|
386
|
+
// both the rotation and the theme target.
|
|
387
|
+
xstyle={[
|
|
388
|
+
treeStyles.chevronIcon,
|
|
389
|
+
allExpanded
|
|
390
|
+
? treeStyles.chevronIconExpanded
|
|
391
|
+
: treeStyles.chevronIconCollapsed,
|
|
392
|
+
]}
|
|
393
|
+
/>
|
|
375
394
|
</button>
|
|
376
395
|
);
|
|
377
396
|
}
|
|
@@ -116,6 +116,33 @@ describe('Table header context menu', () => {
|
|
|
116
116
|
screen.queryByRole('menuitem', {hidden: true}),
|
|
117
117
|
).not.toBeInTheDocument();
|
|
118
118
|
});
|
|
119
|
+
|
|
120
|
+
it('forwards a destructive action variant to the menu item', () => {
|
|
121
|
+
const plugin: TablePlugin<Row> = {
|
|
122
|
+
transformHeaderCell: props => ({
|
|
123
|
+
...props,
|
|
124
|
+
contextMenuActions: [
|
|
125
|
+
{
|
|
126
|
+
id: 'delete',
|
|
127
|
+
label: 'Delete column',
|
|
128
|
+
variant: 'destructive',
|
|
129
|
+
onSelect: () => {},
|
|
130
|
+
},
|
|
131
|
+
{id: 'pin', label: 'Pin column', onSelect: () => {}},
|
|
132
|
+
],
|
|
133
|
+
}),
|
|
134
|
+
};
|
|
135
|
+
render(
|
|
136
|
+
<Table data={data} columns={columns} idKey="id" plugins={{plugin}} />,
|
|
137
|
+
);
|
|
138
|
+
fireEvent.contextMenu(screen.getByText('Name'));
|
|
139
|
+
expect(
|
|
140
|
+
screen.getAllByRole('menuitem', {name: 'Delete column', hidden: true})[0],
|
|
141
|
+
).toHaveAttribute('data-variant', 'destructive');
|
|
142
|
+
expect(
|
|
143
|
+
screen.getAllByRole('menuitem', {name: 'Pin column', hidden: true})[0],
|
|
144
|
+
).not.toHaveAttribute('data-variant');
|
|
145
|
+
});
|
|
119
146
|
});
|
|
120
147
|
|
|
121
148
|
// =============================================================================
|
package/src/Table/types.ts
CHANGED
|
@@ -290,6 +290,12 @@ export interface BodyRowRenderProps {
|
|
|
290
290
|
children: ReactNode;
|
|
291
291
|
/** Ref for the `<tr>` element. Plugins can set this to access the row DOM node. */
|
|
292
292
|
ref?: Ref<HTMLTableRowElement>;
|
|
293
|
+
/**
|
|
294
|
+
* Extra content rendered as a sibling immediately after this row's `<tr>`.
|
|
295
|
+
* Plugins use it to append a full-width detail-panel `<tr>` (e.g. row
|
|
296
|
+
* expansion). Multiple plugins compose by wrapping the previous `afterRow`.
|
|
297
|
+
*/
|
|
298
|
+
afterRow?: ReactNode;
|
|
293
299
|
}
|
|
294
300
|
|
|
295
301
|
/** Props passed through the plugin pipeline for each body `<td>` */
|
|
@@ -379,6 +385,11 @@ export interface TableContextAction {
|
|
|
379
385
|
group?: string;
|
|
380
386
|
/** When true, the item renders as checked (e.g. the active sort direction). */
|
|
381
387
|
checked?: boolean;
|
|
388
|
+
/**
|
|
389
|
+
* Visual variant. `'destructive'` renders the action in the error color for
|
|
390
|
+
* dangerous operations (e.g. Delete row). @default 'default'
|
|
391
|
+
*/
|
|
392
|
+
variant?: 'default' | 'destructive';
|
|
382
393
|
}
|
|
383
394
|
|
|
384
395
|
/**
|
|
@@ -7,7 +7,7 @@ export const docs = {
|
|
|
7
7
|
subComponentOf: 'Table',
|
|
8
8
|
displayName: 'useTableGroupedRows',
|
|
9
9
|
description:
|
|
10
|
-
'Hook that groups a flat data array into collapsible section rows. Each distinct groupBy value becomes a full-width section-header row with a chevron toggle, the group label, and a member count; collapsing hides that group\'s data rows while keeping the header visible. Mirrors
|
|
10
|
+
'Hook that groups a flat data array into collapsible section rows. Each distinct groupBy value becomes a full-width section-header row with a chevron toggle, the group label, and a member count; collapsing hides that group\'s data rows while keeping the header visible. Mirrors useTableTreeState: the consumer owns the collapsedGroups set and the hook returns {data, plugin, idKey}: pass all three to Table (data, plugins, and idKey respectively).',
|
|
11
11
|
props: [
|
|
12
12
|
{
|
|
13
13
|
name: 'data',
|
|
@@ -7,18 +7,19 @@ export const docs = {
|
|
|
7
7
|
subComponentOf: 'Table',
|
|
8
8
|
displayName: 'useTableRowExpansion',
|
|
9
9
|
description:
|
|
10
|
-
'
|
|
10
|
+
'Hook that returns a TablePlugin which expands a full-width detail panel below a row, rendered by the consumer via renderExpanded(item). Adds a leading chevron column and a right-click "Expand/Collapse row" action; the consumer owns the expandedKeys set. Use it for master-detail rows (order details, forms, charts, nested tables). For hierarchical data where child rows reuse the parent columns, use useTableTreeData + useTableTreeState instead.',
|
|
11
11
|
props: [
|
|
12
12
|
{
|
|
13
13
|
name: 'expandedKeys',
|
|
14
14
|
type: 'Set<string>',
|
|
15
|
-
description: 'Set of currently-expanded row keys.',
|
|
15
|
+
description: 'Set of currently-expanded row keys. Consumer-owned.',
|
|
16
16
|
required: true,
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
name: 'onToggle',
|
|
20
20
|
type: '(key: string) => void',
|
|
21
|
-
description:
|
|
21
|
+
description:
|
|
22
|
+
'Called with a row key when its expansion is toggled (chevron click or context-menu action).',
|
|
22
23
|
required: true,
|
|
23
24
|
},
|
|
24
25
|
{
|
|
@@ -28,48 +29,44 @@ export const docs = {
|
|
|
28
29
|
required: true,
|
|
29
30
|
},
|
|
30
31
|
{
|
|
31
|
-
name: '
|
|
32
|
-
type: '(item: T) =>
|
|
33
|
-
description:
|
|
32
|
+
name: 'renderExpanded',
|
|
33
|
+
type: '(item: T) => ReactNode',
|
|
34
|
+
description:
|
|
35
|
+
'Render the detail content shown in a full-width panel below the row when it is expanded. Receives the row item.',
|
|
34
36
|
required: true,
|
|
35
37
|
},
|
|
36
|
-
{
|
|
37
|
-
name: 'getDepth',
|
|
38
|
-
type: '(item: T) => number',
|
|
39
|
-
description: 'Return the depth of a row in the hierarchy (0 = top-level). Used for indentation.',
|
|
40
|
-
},
|
|
41
38
|
{
|
|
42
39
|
name: 'getIsItemExpandable',
|
|
43
40
|
type: '(item: T) => boolean',
|
|
44
|
-
description:
|
|
45
|
-
|
|
46
|
-
{
|
|
47
|
-
name: 'hasRowClickExpansion',
|
|
48
|
-
type: 'boolean',
|
|
49
|
-
description: 'When true, clicking anywhere on the row toggles expansion.',
|
|
50
|
-
default: 'false',
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: 'isAllExpanded',
|
|
54
|
-
type: "boolean | 'indeterminate'",
|
|
55
|
-
description: 'State of the expand-all toggle in the header. Enables the header toggle button.',
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: 'onToggleExpandAll',
|
|
59
|
-
type: '(expand: boolean) => void',
|
|
60
|
-
description: 'Callback when the expand-all header toggle is clicked.',
|
|
41
|
+
description:
|
|
42
|
+
'Control which rows are expandable. Non-expandable rows show no chevron, no context-menu action, and never render a panel. Defaults to all rows expandable.',
|
|
61
43
|
},
|
|
62
44
|
],
|
|
63
45
|
examples: [
|
|
64
46
|
{
|
|
65
|
-
label: '
|
|
66
|
-
code:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
47
|
+
label: 'Master-detail order rows',
|
|
48
|
+
code: `const [expandedKeys, setExpandedKeys] = useState(new Set());
|
|
49
|
+
const expansion = useTableRowExpansion({
|
|
50
|
+
expandedKeys,
|
|
51
|
+
onToggle: key =>
|
|
52
|
+
setExpandedKeys(prev => {
|
|
53
|
+
const next = new Set(prev);
|
|
54
|
+
next.has(key) ? next.delete(key) : next.add(key);
|
|
55
|
+
return next;
|
|
56
|
+
}),
|
|
57
|
+
getRowKey: item => item.id,
|
|
58
|
+
renderExpanded: item => <OrderDetails order={item} />,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
<Table data={orders} columns={columns} idKey="id" plugins={{expansion}} />;`,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
label: 'Migrating from tree rows to the tree plugin',
|
|
65
|
+
code: `// useTableRowExpansion is now for DETAIL PANELS, not tree rows. If you used
|
|
66
|
+
// it to render nested child rows that reuse the parent columns, move to
|
|
67
|
+
// useTableTreeData + useTableTreeState.
|
|
70
68
|
|
|
71
|
-
// BEFORE
|
|
72
|
-
const [expandedKeys, setExpandedKeys] = useState(new Set(['root']));
|
|
69
|
+
// BEFORE (tree rows via useTableRowExpansion + useTableRowExpansionState):
|
|
73
70
|
const {data, expansionConfig} = useTableRowExpansionState({
|
|
74
71
|
baseData: tree,
|
|
75
72
|
getChildren: item => item.children ?? [],
|
|
@@ -80,12 +77,12 @@ const {data, expansionConfig} = useTableRowExpansionState({
|
|
|
80
77
|
const expansion = useTableRowExpansion(expansionConfig);
|
|
81
78
|
<Table data={data} columns={columns} idKey="id" plugins={{expansion}} />;
|
|
82
79
|
|
|
83
|
-
// AFTER
|
|
80
|
+
// AFTER (tree rows via the tree plugin):
|
|
84
81
|
const {visibleData, treeConfig} = useTableTreeState({
|
|
85
|
-
data: tree, // nested data
|
|
82
|
+
data: tree, // nested data
|
|
86
83
|
idKey: 'id', // or a function: idKey={item => item.id}
|
|
87
|
-
childrenKey: 'children', // replaces getChildren
|
|
88
|
-
defaultExpandedIds: ['root'], //
|
|
84
|
+
childrenKey: 'children', // replaces getChildren
|
|
85
|
+
defaultExpandedIds: ['root'], // or controlled: expandedIds + onExpandedIdsChange
|
|
89
86
|
});
|
|
90
87
|
const tree = useTableTreeData({
|
|
91
88
|
...treeConfig,
|
|
@@ -94,40 +91,20 @@ const tree = useTableTreeData({
|
|
|
94
91
|
});
|
|
95
92
|
<Table data={visibleData} columns={columns} idKey="id" plugins={{tree}} />;`,
|
|
96
93
|
},
|
|
97
|
-
{
|
|
98
|
-
label: 'Config mapping',
|
|
99
|
-
code: `// useTableRowExpansion(State) -> useTableTreeState / useTableTreeData
|
|
100
|
-
|
|
101
|
-
// baseData: T[] (nested) -> data: T[] (useTableTreeState)
|
|
102
|
-
// getChildren: item => item.children -> childrenKey: 'children' (property name)
|
|
103
|
-
// getRowKey: item => item.id -> idKey: 'id' | (item => item.id)
|
|
104
|
-
// getIsItemExpandable -> isItemExpandable (same shape)
|
|
105
|
-
// expandedKeys + setExpandedKeys -> defaultExpandedIds (uncontrolled), or
|
|
106
|
-
// expandedIds + onExpandedIdsChange (controlled)
|
|
107
|
-
// getDepth -> removed; depth derives from nesting
|
|
108
|
-
// isAllExpanded + onToggleExpandAll -> hasExpandAllControl (state is computed)
|
|
109
|
-
// hasRowClickExpansion -> hasRowClickExpansion (unchanged)
|
|
110
|
-
|
|
111
|
-
// Rendering: useTableRowExpansion prepends a dedicated expander column;
|
|
112
|
-
// useTableTreeData decorates the tree column in place (configurable via
|
|
113
|
-
// treeColumnKey). Keyboard and AT users toggle via the chevron in both.`,
|
|
114
|
-
},
|
|
115
94
|
],
|
|
116
95
|
};
|
|
117
96
|
|
|
118
97
|
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
119
98
|
export const docsDense = {
|
|
120
99
|
description:
|
|
121
|
-
'
|
|
100
|
+
'Returns a TablePlugin that expands a full-width detail panel below a row via renderExpanded(item). Adds a chevron column + right-click expand/collapse action; consumer owns expandedKeys. For nested child rows that reuse parent columns, use useTableTreeData + useTableTreeState instead.',
|
|
122
101
|
propDescriptions: {
|
|
123
|
-
expandedKeys: 'Set of currently-expanded row keys.',
|
|
124
|
-
onToggle: 'Called
|
|
102
|
+
expandedKeys: 'Set of currently-expanded row keys. Consumer-owned.',
|
|
103
|
+
onToggle: 'Called with a row key when its expansion is toggled.',
|
|
125
104
|
getRowKey: 'Derive a stable unique key from a row item.',
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
getIsItemExpandable:
|
|
129
|
-
|
|
130
|
-
isAllExpanded: 'State of the expand-all header toggle. Enables the header toggle button.',
|
|
131
|
-
onToggleExpandAll: 'Callback when the expand-all header toggle is clicked.',
|
|
105
|
+
renderExpanded:
|
|
106
|
+
'Render the full-width detail panel below an expanded row. Receives the row item.',
|
|
107
|
+
getIsItemExpandable:
|
|
108
|
+
'Control which rows are expandable. Defaults to all rows expandable.',
|
|
132
109
|
},
|
|
133
110
|
};
|
|
@@ -70,6 +70,13 @@ export const docs = {
|
|
|
70
70
|
description: 'Disables the textarea, preventing interaction.',
|
|
71
71
|
default: 'false',
|
|
72
72
|
},
|
|
73
|
+
{
|
|
74
|
+
name: 'isReadOnly',
|
|
75
|
+
type: 'boolean',
|
|
76
|
+
description:
|
|
77
|
+
'Makes the textarea read-only: the value is shown at full opacity and still submits with the form, but cannot be edited. Unlike isDisabled, a read-only textarea is not dimmed and stays in the tab order. isDisabled takes precedence when both are set.',
|
|
78
|
+
default: 'false',
|
|
79
|
+
},
|
|
73
80
|
{
|
|
74
81
|
name: 'disabledMessage',
|
|
75
82
|
type: 'string',
|
|
@@ -179,7 +186,19 @@ export const docs = {
|
|
|
179
186
|
],
|
|
180
187
|
theming: {
|
|
181
188
|
targets: [
|
|
182
|
-
{className: 'astryx-textarea', visualProps: ['size', 'status']},
|
|
189
|
+
{className: 'astryx-textarea', visualProps: ['size', 'status'], states: ['disabled', 'readonly']},
|
|
190
|
+
],
|
|
191
|
+
vars: [
|
|
192
|
+
{
|
|
193
|
+
name: '--_textarea-inline-padding',
|
|
194
|
+
description:
|
|
195
|
+
"Inline padding of the textarea's text. The wrapper stays flush (padding: 0) so the native resize grip sits in the true corner; this var carries the inset on the inner <textarea>, and the start icon, status/spinner, and character counter align to it.",
|
|
196
|
+
default: 'var(--spacing-2)',
|
|
197
|
+
private: true,
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
derived: [
|
|
201
|
+
{property: 'paddingInline', vars: ['--_textarea-inline-padding'], replaces: true},
|
|
183
202
|
],
|
|
184
203
|
},
|
|
185
204
|
usage: {
|
|
@@ -259,6 +278,13 @@ export const docsZh = {
|
|
|
259
278
|
description: '禁用文本域,阻止交互。',
|
|
260
279
|
default: 'false',
|
|
261
280
|
},
|
|
281
|
+
{
|
|
282
|
+
name: 'isReadOnly',
|
|
283
|
+
type: 'boolean',
|
|
284
|
+
description:
|
|
285
|
+
'将文本域设为只读:值以完整不透明度显示并仍随表单提交,但无法编辑。与 isDisabled 不同,只读文本域不会变暗,并保留在 Tab 顺序中。同时设置时 isDisabled 优先。',
|
|
286
|
+
default: 'false',
|
|
287
|
+
},
|
|
262
288
|
{
|
|
263
289
|
name: 'disabledMessage',
|
|
264
290
|
type: 'string',
|
|
@@ -355,7 +381,19 @@ export const docsZh = {
|
|
|
355
381
|
],
|
|
356
382
|
theming: {
|
|
357
383
|
targets: [
|
|
358
|
-
{className: 'astryx-textarea', visualProps: ['size', 'status']},
|
|
384
|
+
{className: 'astryx-textarea', visualProps: ['size', 'status'], states: ['disabled', 'readonly']},
|
|
385
|
+
],
|
|
386
|
+
vars: [
|
|
387
|
+
{
|
|
388
|
+
name: '--_textarea-inline-padding',
|
|
389
|
+
description:
|
|
390
|
+
'文本域文本的行内内边距。外层容器保持无内边距(padding: 0),使原生缩放手柄位于真正的角落;该变量在内部 <textarea> 上承载内边距,起始图标、状态/加载指示器和字符计数器都与之对齐。',
|
|
391
|
+
default: 'var(--spacing-2)',
|
|
392
|
+
private: true,
|
|
393
|
+
},
|
|
394
|
+
],
|
|
395
|
+
derived: [
|
|
396
|
+
{property: 'paddingInline', vars: ['--_textarea-inline-padding'], replaces: true},
|
|
359
397
|
],
|
|
360
398
|
},
|
|
361
399
|
usage: {
|
|
@@ -402,6 +440,8 @@ export const docsDense = {
|
|
|
402
440
|
isOptional: 'Shows "Optional" indicator. Mutually exclusive w/ isRequired.',
|
|
403
441
|
isRequired: 'Shows "Required" indicator+sets aria-required. Mutually exclusive w/ isOptional.',
|
|
404
442
|
isDisabled: 'Disables textarea, prevents interaction.',
|
|
443
|
+
isReadOnly:
|
|
444
|
+
'Read-only: value visible + still submits, but not editable. Unlike isDisabled: not dimmed, stays in tab order.',
|
|
405
445
|
disabledMessage:
|
|
406
446
|
'Explains why textarea is disabled. With isDisabled, shows tooltip on hover/focus + keeps textarea focusable via aria-disabled (field becomes read-only). Use instead of wrapping a disabled TextArea in Tooltip.',
|
|
407
447
|
isLoading: 'Loading state w/ spinner inside input.',
|