@galaxy-io/dls 1.6.1 → 2.0.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/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +136 -116
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +32 -20
- package/dist/charts/ChartFrame.d.ts +69 -116
- package/dist/charts/ChartFrame.js +253 -119
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +27 -48
- package/dist/charts/ChartLegend.js +206 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +33 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +295 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +159 -117
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +149 -135
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/constants.d.ts +96 -256
- package/dist/charts/constants.js +105 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +197 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +47 -116
- package/dist/charts/useChartInteraction.js +95 -71
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +81 -17
- package/dist/drawer/Drawer.js +370 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +292 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1077 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +99 -0
- package/dist/timeline/Timeline.js +269 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +851 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -30
- package/dist/inputs/SwitcherInput.js +0 -81
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
|
@@ -1,19 +1,109 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { type VirtualizedInfiniteTableProps } from "./types";
|
|
3
|
-
export { ColumnAlign, ColumnPin, ColumnResizeMode, TableDensity, TableVariant } from "./types";
|
|
4
|
-
export type { ColumnDef, ColumnSizingState, Row, VirtualizedInfiniteTableProps } from "./types";
|
|
5
1
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
2
|
+
* InfiniteTable for very long lists: the same columns, header, sizes, sort indicator, row
|
|
3
|
+
* actions, column arrangement and status states, but only the rows in view (plus
|
|
4
|
+
* `VIRTUAL_OVERSCAN` above and below) are in the DOM. The app gives a row count and
|
|
5
|
+
* `getRowData(index)` instead of an array; rows it has not loaded yet show as skeleton rows in
|
|
6
|
+
* place. Every row is exactly the `size` rung's height; there is no selection, no expansion and
|
|
7
|
+
* no client-side sorting (the app re-queries when `sort` changes).
|
|
8
|
+
*
|
|
9
|
+
* Built on the shared table core (`TableCore`, `useTableColumnLayout`,
|
|
10
|
+
* `useTableKeyboardNavigation`, `useInfiniteScrollSentinel`) plus `useTableVirtualizer`
|
|
11
|
+
* (`@tanstack/react-virtual`, an optional peer). It imports nothing from `InfiniteTable`, so it
|
|
12
|
+
* never needs `@tanstack/react-table`.
|
|
9
13
|
*/
|
|
10
|
-
|
|
14
|
+
import { type AriaAttributes, type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactElement, type ReactNode, type RefAttributes } from "react";
|
|
15
|
+
import type { TableColumn, TableColumnLayout, TableSort } from "./types.js";
|
|
16
|
+
/** Row rung of the table (canonical subset; the 1.x TableDensity members). Same rows as InfiniteTableSize. */
|
|
17
|
+
export declare enum VirtualizedInfiniteTableSize {
|
|
18
|
+
/** 32px rows, body_sm text. */
|
|
19
|
+
SMALL = "SMALL",
|
|
20
|
+
/** 48px rows, body_md text. The default. */
|
|
21
|
+
MEDIUM = "MEDIUM",
|
|
22
|
+
/** 52px rows, body_lg text. */
|
|
23
|
+
LARGE = "LARGE"
|
|
24
|
+
}
|
|
25
|
+
export interface VirtualizedInfiniteTableProps<TData> extends AriaAttributes {
|
|
26
|
+
/** The columns in their default order. Same column type as InfiniteTable (`@galaxy-io/dls/table/types`). */
|
|
27
|
+
columns: TableColumn<TData>[];
|
|
28
|
+
/** Number of rows the table can show, loaded or not. Grow it as pages arrive. */
|
|
29
|
+
totalRowCount: number;
|
|
30
|
+
/** Returns the row at `index`, or `undefined` while it is not loaded (it shows as a skeleton row). Called for visible rows only; must be cheap. */
|
|
31
|
+
getRowData: (index: number) => TData | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Stable identity of a loaded row, for `activeRowId` and React keys.
|
|
34
|
+
* @default (row, index) => String(index)
|
|
35
|
+
*/
|
|
36
|
+
getRowId?: (row: TData, index: number) => string;
|
|
37
|
+
/**
|
|
38
|
+
* Row rung: 32 / 48 / 52px rows. Every row is exactly this tall.
|
|
39
|
+
* @default VirtualizedInfiniteTableSize.MEDIUM
|
|
40
|
+
*/
|
|
41
|
+
size?: VirtualizedInfiniteTableSize;
|
|
42
|
+
/**
|
|
43
|
+
* Rows are loading: skeleton rows replace an empty body, or follow the last row while more load. Sets `aria-busy`.
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
isLoading?: boolean;
|
|
47
|
+
/** Message from the app when loading failed. Shown as an error state in an empty body, or as an error row after the last row. `onEndReached` pauses while it is set. */
|
|
48
|
+
error?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Shown in the body when `totalRowCount` is 0 and the table is neither loading nor in error.
|
|
51
|
+
* @default <EmptyState header="No results" />
|
|
52
|
+
*/
|
|
53
|
+
emptyState?: ReactNode;
|
|
54
|
+
/** Called when the last row comes within 500px of view, and again only after `totalRowCount` grows. */
|
|
55
|
+
onEndReached?: () => void;
|
|
56
|
+
/** Called when a loaded row is clicked or Enter is pressed on it. Not called for clicks on a control inside the row. */
|
|
57
|
+
onRowClick?: (row: TData, event: MouseEvent<HTMLTableRowElement> | KeyboardEvent<HTMLTableRowElement>) => void;
|
|
58
|
+
/** Id of the row shown as current, such as the one open in a side panel. Display only: set it from `onRowClick`. */
|
|
59
|
+
activeRowId?: string | null;
|
|
60
|
+
/** Menu rows (`MenuItem`, `MenuSeparator`, …) for a loaded row's actions menu, opened from a trailing "…" button. Return `null` for a row with no actions. */
|
|
61
|
+
rowActions?: (row: TData, rowIndex: number) => ReactNode;
|
|
62
|
+
/** Controlled sorted column, shown in the header. The table never reorders rows itself: the app re-queries with the new sort. */
|
|
63
|
+
sort?: TableSort | null;
|
|
64
|
+
/**
|
|
65
|
+
* Initial sort while uncontrolled.
|
|
66
|
+
* @default null
|
|
67
|
+
*/
|
|
68
|
+
defaultSort?: TableSort | null;
|
|
69
|
+
/** Called with the next sort when a sortable header is pressed. Reset the data (and scroll) when it changes. */
|
|
70
|
+
onSortChange?: (sort: TableSort | null) => void;
|
|
71
|
+
/** Controlled column arrangement: order, hidden column ids and widths. Persist it to keep a user's layout. */
|
|
72
|
+
columnLayout?: TableColumnLayout;
|
|
73
|
+
/**
|
|
74
|
+
* Initial arrangement while uncontrolled (for example, columns hidden by default).
|
|
75
|
+
* @default {}
|
|
76
|
+
*/
|
|
77
|
+
defaultColumnLayout?: TableColumnLayout;
|
|
78
|
+
/** Called with the full new arrangement when the user resizes, moves, hides, shows or resets columns. Fires on every resize step; debounce before saving. */
|
|
79
|
+
onColumnLayoutChange?: (columnLayout: TableColumnLayout) => void;
|
|
80
|
+
/**
|
|
81
|
+
* Adds a drag handle at the end of each header cell (arrow keys too). Columns opt out with `canResize: false`.
|
|
82
|
+
* @default false
|
|
83
|
+
*/
|
|
84
|
+
canResizeColumns?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Lets the user reorder columns (drag a header, or Alt+ArrowLeft / Alt+ArrowRight on it) and show or hide them from a Columns menu at the end of the header. Columns opt out of hiding with `canHide: false`.
|
|
87
|
+
* @default false
|
|
88
|
+
*/
|
|
89
|
+
canCustomizeColumns?: boolean;
|
|
90
|
+
/** Accessible name of the table. Use `aria-labelledby` instead when a visible heading names it. */
|
|
91
|
+
ariaLabel?: string;
|
|
92
|
+
/** DOM id on the root `<div>`. */
|
|
93
|
+
id?: string;
|
|
94
|
+
/** Any `data-*` attribute, forwarded to the root `<div>`. */
|
|
95
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
96
|
+
/** Extra class on the root `<div>`. */
|
|
97
|
+
className?: string;
|
|
98
|
+
/** Inline style on the root `<div>`; only for setting CSS custom properties. */
|
|
99
|
+
style?: CSSProperties;
|
|
100
|
+
}
|
|
11
101
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* The trade is a fixed row height and no natural content sizing. Prefer plain
|
|
16
|
-
* `InfiniteTable` until row count actually becomes the problem.
|
|
102
|
+
* The public, generic call signature (`TData` inferred from `getRowData` and `columns`). Never
|
|
103
|
+
* called: it only types the default export. An arrow function rather than a type literal, so
|
|
104
|
+
* react-docgen-typescript reads the props for the Docs tab (the SelectInput precedent).
|
|
17
105
|
*/
|
|
18
|
-
declare
|
|
106
|
+
declare const VIRTUALIZED_INFINITE_TABLE_SIGNATURE: <TData>(_props: VirtualizedInfiniteTableProps<TData> & RefAttributes<HTMLDivElement>) => ReactElement | null;
|
|
107
|
+
/** InfiniteTable with a virtual body, for tens of thousands of rows. */
|
|
108
|
+
declare const VirtualizedInfiniteTable: typeof VIRTUALIZED_INFINITE_TABLE_SIGNATURE;
|
|
19
109
|
export default VirtualizedInfiniteTable;
|
|
@@ -1,233 +1,294 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { useTableColumnResize } from "./useTableColumnResize.js";
|
|
1
|
+
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
2
|
+
import { useControlledState } from "../hooks/useControlledState.js";
|
|
3
|
+
import { TABLE_LARGE_METRICS, TABLE_MEDIUM_METRICS, TABLE_SMALL_METRICS, TableBodyRow, TableColumnsMenu, TableFrame, TableSkeletonRow, VIRTUAL_BODY_CSS, VIRTUAL_ROW_CSS } from "./TableCore.js";
|
|
5
4
|
import { useTableColumnLayout } from "./useTableColumnLayout.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import TableStatusRow from "./TableStatusRow.js";
|
|
11
|
-
import React, { useCallback, useRef } from "react";
|
|
12
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
5
|
+
import { useTableVirtualizer } from "./useTableVirtualizer.js";
|
|
6
|
+
import { useTableKeyboardNavigation } from "./useTableKeyboardNavigation.js";
|
|
7
|
+
import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
14
9
|
//#region src/table/VirtualizedInfiniteTable.tsx
|
|
15
|
-
function VirtualizedRowInner({ rowData, rowIndex, translateY, rowHeight, density, variant, isLastRow, isClickable, columns, getColumnWidth, pinnedOffsets, onClick }) {
|
|
16
|
-
return /* @__PURE__ */ jsx(TableRow, {
|
|
17
|
-
$density: density,
|
|
18
|
-
$variant: variant,
|
|
19
|
-
$isLastRow: isLastRow,
|
|
20
|
-
$isClickable: isClickable,
|
|
21
|
-
$translateY: translateY,
|
|
22
|
-
$rowHeight: rowHeight,
|
|
23
|
-
role: "row",
|
|
24
|
-
"aria-rowindex": rowIndex + 2,
|
|
25
|
-
onClick: onClick ? (event) => onClick(rowIndex, event) : void 0,
|
|
26
|
-
children: columns.map((col, columnIndex) => /* @__PURE__ */ jsx(TableDataCell, {
|
|
27
|
-
$width: getColumnWidth(col),
|
|
28
|
-
$minWidth: col.minSize,
|
|
29
|
-
$maxWidth: col.maxSize,
|
|
30
|
-
$pin: col.pin,
|
|
31
|
-
$pinnedOffset: pinnedOffsets.get(col.id),
|
|
32
|
-
$align: col.align,
|
|
33
|
-
$density: density,
|
|
34
|
-
$variant: variant,
|
|
35
|
-
role: "cell",
|
|
36
|
-
"aria-colindex": columnIndex + 1,
|
|
37
|
-
children: rowData && col.cell ? col.cell({
|
|
38
|
-
value: col.accessorFn?.(rowData),
|
|
39
|
-
row: createVirtualRow(rowData, rowIndex)
|
|
40
|
-
}) : null
|
|
41
|
-
}, col.id))
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
var VirtualizedRow = React.memo(VirtualizedRowInner);
|
|
45
10
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
11
|
+
* InfiniteTable for very long lists: the same columns, header, sizes, sort indicator, row
|
|
12
|
+
* actions, column arrangement and status states, but only the rows in view (plus
|
|
13
|
+
* `VIRTUAL_OVERSCAN` above and below) are in the DOM. The app gives a row count and
|
|
14
|
+
* `getRowData(index)` instead of an array; rows it has not loaded yet show as skeleton rows in
|
|
15
|
+
* place. Every row is exactly the `size` rung's height; there is no selection, no expansion and
|
|
16
|
+
* no client-side sorting (the app re-queries when `sort` changes).
|
|
48
17
|
*
|
|
49
|
-
*
|
|
50
|
-
* `
|
|
18
|
+
* Built on the shared table core (`TableCore`, `useTableColumnLayout`,
|
|
19
|
+
* `useTableKeyboardNavigation`, `useInfiniteScrollSentinel`) plus `useTableVirtualizer`
|
|
20
|
+
* (`@tanstack/react-virtual`, an optional peer). It imports nothing from `InfiniteTable`, so it
|
|
21
|
+
* never needs `@tanstack/react-table`.
|
|
51
22
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
23
|
+
/** Row rung of the table (canonical subset; the 1.x TableDensity members). Same rows as InfiniteTableSize. */
|
|
24
|
+
var VirtualizedInfiniteTableSize = /* @__PURE__ */ function(VirtualizedInfiniteTableSize) {
|
|
25
|
+
/** 32px rows, body_sm text. */
|
|
26
|
+
VirtualizedInfiniteTableSize["SMALL"] = "SMALL";
|
|
27
|
+
/** 48px rows, body_md text. The default. */
|
|
28
|
+
VirtualizedInfiniteTableSize["MEDIUM"] = "MEDIUM";
|
|
29
|
+
/** 52px rows, body_lg text. */
|
|
30
|
+
VirtualizedInfiniteTableSize["LARGE"] = "LARGE";
|
|
31
|
+
return VirtualizedInfiniteTableSize;
|
|
32
|
+
}({});
|
|
33
|
+
var VIRTUALIZED_INFINITE_TABLE_SIZE_TO_TABLE_METRICS_MAP = {
|
|
34
|
+
["SMALL"]: TABLE_SMALL_METRICS,
|
|
35
|
+
["MEDIUM"]: TABLE_MEDIUM_METRICS,
|
|
36
|
+
["LARGE"]: TABLE_LARGE_METRICS
|
|
37
|
+
};
|
|
38
|
+
/** `data-*` to the root, `aria-*` to the `<table>`. */
|
|
39
|
+
function splitPassthrough(rest) {
|
|
40
|
+
const rootProps = {};
|
|
41
|
+
const tableAria = {};
|
|
42
|
+
for (const [key, value] of Object.entries(rest)) if (key.startsWith("data-")) rootProps[key] = value;
|
|
43
|
+
else if (key.startsWith("aria-")) tableAria[key] = value;
|
|
44
|
+
return {
|
|
45
|
+
rootProps,
|
|
46
|
+
tableAria
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** What the live region says when the sort changes and the rows jump to the top. */
|
|
50
|
+
function sortAnnouncement(sort, columns) {
|
|
51
|
+
if (sort === null) return "Sort cleared";
|
|
52
|
+
return `Sorted by ${columns.find((column) => column.id === sort.columnId)?.header ?? sort.columnId}, ${sort.isDescending ? "descending" : "ascending"}`;
|
|
53
|
+
}
|
|
54
|
+
/** InfiniteTable with a virtual body, for tens of thousands of rows. */
|
|
55
|
+
var VirtualizedInfiniteTableInner = forwardRef(function VirtualizedInfiniteTable(props, ref) {
|
|
56
|
+
const { columns, totalRowCount, getRowData, getRowId, size: sizeProp, isLoading: isLoadingProp, error: errorProp, emptyState, onEndReached, onRowClick, activeRowId, rowActions, sort, defaultSort, onSortChange, columnLayout, defaultColumnLayout, onColumnLayoutChange, canResizeColumns: canResizeColumnsProp, canCustomizeColumns: canCustomizeColumnsProp, ariaLabel, id, className, style, ...rest } = props;
|
|
57
|
+
const error = errorProp === "" ? void 0 : errorProp;
|
|
58
|
+
const size = sizeProp ?? "MEDIUM";
|
|
59
|
+
const isLoading = isLoadingProp ?? false;
|
|
60
|
+
const canResizeColumns = canResizeColumnsProp ?? false;
|
|
61
|
+
const canCustomizeColumns = canCustomizeColumnsProp ?? false;
|
|
62
|
+
const rowCount = Math.max(0, Math.floor(totalRowCount));
|
|
63
|
+
const metrics = VIRTUALIZED_INFINITE_TABLE_SIZE_TO_TABLE_METRICS_MAP[size];
|
|
64
|
+
const scrollRef = useRef(null);
|
|
65
|
+
const { rootProps, tableAria } = splitPassthrough(rest);
|
|
66
|
+
if (id !== void 0) rootProps.id = id;
|
|
67
|
+
const hasRowActions = rowActions !== void 0;
|
|
68
|
+
const hasTrailingColumn = hasRowActions || canCustomizeColumns;
|
|
69
|
+
const isInteractive = onRowClick !== void 0 || hasRowActions;
|
|
70
|
+
const hasRowClick = onRowClick !== void 0;
|
|
71
|
+
const resolveRowId = useCallback((row, index) => getRowId ? getRowId(row, index) : String(index), [getRowId]);
|
|
72
|
+
const [currentSort, setSort] = useControlledState({
|
|
73
|
+
value: sort,
|
|
74
|
+
defaultValue: defaultSort ?? null,
|
|
75
|
+
onChange: onSortChange
|
|
76
|
+
});
|
|
77
|
+
const handleSortPress = useCallback((columnId) => {
|
|
78
|
+
if (currentSort?.columnId !== columnId) setSort({
|
|
79
|
+
columnId,
|
|
80
|
+
isDescending: false
|
|
81
|
+
});
|
|
82
|
+
else if (!currentSort.isDescending) setSort({
|
|
83
|
+
columnId,
|
|
84
|
+
isDescending: true
|
|
85
|
+
});
|
|
86
|
+
else setSort(null);
|
|
87
|
+
}, [currentSort, setSort]);
|
|
88
|
+
const [openActionsRowId, setOpenActionsRowId] = useState(null);
|
|
89
|
+
const layout = useTableColumnLayout({
|
|
59
90
|
columns,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
91
|
+
columnLayout,
|
|
92
|
+
defaultColumnLayout: defaultColumnLayout ?? {},
|
|
93
|
+
onColumnLayoutChange,
|
|
94
|
+
canResizeColumns,
|
|
95
|
+
canCustomizeColumns,
|
|
96
|
+
leadingCount: 0,
|
|
97
|
+
hasTrailing: hasTrailingColumn,
|
|
98
|
+
syntheticWidthPx: metrics.rowHeightPx
|
|
65
99
|
});
|
|
66
|
-
const
|
|
100
|
+
const visibleColumns = layout.visibleColumns;
|
|
101
|
+
const hasFooter = visibleColumns.some(({ column }) => column.footer !== void 0 && column.footer !== null);
|
|
102
|
+
const latestRef = useRef({
|
|
67
103
|
columns,
|
|
68
|
-
|
|
104
|
+
getRowData,
|
|
105
|
+
resolveRowId,
|
|
106
|
+
onRowClick,
|
|
107
|
+
rowActions
|
|
69
108
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
109
|
+
latestRef.current = {
|
|
110
|
+
columns,
|
|
111
|
+
getRowData,
|
|
112
|
+
resolveRowId,
|
|
113
|
+
onRowClick,
|
|
114
|
+
rowActions
|
|
115
|
+
};
|
|
116
|
+
const handleKey = useCallback((rowIndex, event) => {
|
|
117
|
+
const current = latestRef.current;
|
|
118
|
+
if (event.key === " ") {
|
|
119
|
+
event.preventDefault();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const row = current.getRowData(rowIndex);
|
|
123
|
+
if (row === void 0) return;
|
|
124
|
+
if (event.key === "Enter") {
|
|
125
|
+
current.onRowClick?.(row, event);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (event.key === "F10" && event.shiftKey || event.key === "ContextMenu") {
|
|
129
|
+
const actions = current.rowActions?.(row, rowIndex);
|
|
130
|
+
if (actions === null || actions === void 0) return;
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
setOpenActionsRowId(current.resolveRowId(row, rowIndex));
|
|
133
|
+
}
|
|
134
|
+
}, []);
|
|
135
|
+
const virtualizerRef = useRef(null);
|
|
136
|
+
const navigation = useTableKeyboardNavigation({
|
|
137
|
+
rowCount,
|
|
138
|
+
getPageSize: useCallback(() => {
|
|
139
|
+
const scroll = scrollRef.current;
|
|
140
|
+
if (scroll === null) return 1;
|
|
141
|
+
return Math.max(1, Math.floor((scroll.clientHeight - metrics.headerHeightPx) / metrics.rowHeightPx) - 1);
|
|
142
|
+
}, [metrics.rowHeightPx, metrics.headerHeightPx]),
|
|
143
|
+
scrollToIndex: (index) => virtualizerRef.current?.scrollToIndex(index),
|
|
144
|
+
onKeyDown: handleKey
|
|
76
145
|
});
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
146
|
+
const getItemKey = useCallback((index) => {
|
|
147
|
+
const row = latestRef.current.getRowData(index);
|
|
148
|
+
return row === void 0 ? index : latestRef.current.resolveRowId(row, index);
|
|
149
|
+
}, []);
|
|
150
|
+
const virtualizer = useTableVirtualizer({
|
|
151
|
+
count: rowCount,
|
|
152
|
+
scrollRef,
|
|
153
|
+
rowHeightPx: metrics.rowHeightPx,
|
|
154
|
+
headerHeightPx: metrics.headerHeightPx,
|
|
155
|
+
footerHeightPx: hasFooter ? metrics.headerHeightPx : 0,
|
|
156
|
+
getItemKey,
|
|
157
|
+
keepIndexes: rowCount > 0 ? [navigation.tabStopIndex] : []
|
|
84
158
|
});
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
variant,
|
|
214
|
-
isLastRow: noLastRowBorder && virtualRow.index === totalRowCount - 1,
|
|
215
|
-
isClickable: Boolean(onRowClick),
|
|
216
|
-
columns,
|
|
217
|
-
getColumnWidth,
|
|
218
|
-
pinnedOffsets,
|
|
219
|
-
onClick: onRowClick ? handleRowClick : void 0
|
|
220
|
-
}, rowId);
|
|
221
|
-
}),
|
|
222
|
-
isFetchingNextPage && (showRows ? renderTrailingLoadingRows(virtualTotalSize) : null)
|
|
223
|
-
]
|
|
224
|
-
})]
|
|
225
|
-
}), /* @__PURE__ */ jsx(InfiniteScrollSentinel, {
|
|
226
|
-
ref: sentinelRef,
|
|
227
|
-
"aria-hidden": "true"
|
|
228
|
-
})]
|
|
159
|
+
virtualizerRef.current = { scrollToIndex: (index) => virtualizer.scrollToIndex(index, { align: "auto" }) };
|
|
160
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
161
|
+
useIsomorphicLayoutEffect(() => setIsMounted(true), []);
|
|
162
|
+
const [announcement, setAnnouncement] = useState("");
|
|
163
|
+
const sortKey = currentSort === null ? "" : `${currentSort.columnId}:${currentSort.isDescending}`;
|
|
164
|
+
const previousSortKeyRef = useRef(sortKey);
|
|
165
|
+
useEffect(() => {
|
|
166
|
+
if (previousSortKeyRef.current === sortKey) return;
|
|
167
|
+
previousSortKeyRef.current = sortKey;
|
|
168
|
+
virtualizer.scrollToOffset(0);
|
|
169
|
+
setAnnouncement(sortAnnouncement(currentSort, latestRef.current.columns));
|
|
170
|
+
}, [
|
|
171
|
+
sortKey,
|
|
172
|
+
currentSort,
|
|
173
|
+
virtualizer
|
|
174
|
+
]);
|
|
175
|
+
const callbacks = useMemo(() => ({
|
|
176
|
+
registerRow: navigation.registerRow,
|
|
177
|
+
onRowClick: hasRowClick ? (row, event) => latestRef.current.onRowClick?.(row, event) : void 0,
|
|
178
|
+
onRowKeyDown: navigation.handleRowKeyDown,
|
|
179
|
+
onRowFocus: navigation.handleRowFocus,
|
|
180
|
+
onToggleSelect: () => {},
|
|
181
|
+
onToggleExpand: () => {},
|
|
182
|
+
onActionsOpenChange: (rowId, isOpen) => setOpenActionsRowId((current) => isOpen ? rowId : current === rowId ? null : current),
|
|
183
|
+
getRowActions: hasRowActions ? (row, rowIndex) => latestRef.current.rowActions?.(row, rowIndex) : void 0,
|
|
184
|
+
getRowName: (row, rowIndex) => {
|
|
185
|
+
const name = latestRef.current.columns.find((column) => column.isRowHeader === true)?.accessor?.(row);
|
|
186
|
+
return name === void 0 || name === null || name === "" ? `row ${rowIndex + 1}` : String(name);
|
|
187
|
+
}
|
|
188
|
+
}), [
|
|
189
|
+
navigation.registerRow,
|
|
190
|
+
navigation.handleRowKeyDown,
|
|
191
|
+
navigation.handleRowFocus,
|
|
192
|
+
hasRowClick,
|
|
193
|
+
hasRowActions
|
|
194
|
+
]);
|
|
195
|
+
const startStylesRef = useRef(/* @__PURE__ */ new Map());
|
|
196
|
+
const startStyle = (start) => {
|
|
197
|
+
let cached = startStylesRef.current.get(start);
|
|
198
|
+
if (cached === void 0) {
|
|
199
|
+
cached = { "--gx-table-row-start": `${start}px` };
|
|
200
|
+
if (startStylesRef.current.size > 2e3) startStylesRef.current.clear();
|
|
201
|
+
startStylesRef.current.set(start, cached);
|
|
202
|
+
}
|
|
203
|
+
return cached;
|
|
204
|
+
};
|
|
205
|
+
const virtualItems = isMounted ? virtualizer.getVirtualItems() : [];
|
|
206
|
+
const bodyVariables = { "--gx-table-virtual-height": `${isMounted ? virtualizer.getTotalSize() : 0}px` };
|
|
207
|
+
const cellRole = isInteractive ? "gridcell" : "cell";
|
|
208
|
+
const hasStatusAfter = isLoading || error !== void 0;
|
|
209
|
+
const scrollMargin = virtualizer.options.scrollMargin;
|
|
210
|
+
return /* @__PURE__ */ jsx(TableFrame, {
|
|
211
|
+
metrics,
|
|
212
|
+
columnLayout: layout,
|
|
213
|
+
leadingHeaders: [],
|
|
214
|
+
trailingHeader: canCustomizeColumns ? /* @__PURE__ */ jsx(TableColumnsMenu, {
|
|
215
|
+
entries: layout.menuEntries,
|
|
216
|
+
metrics,
|
|
217
|
+
onToggle: (columnId, isVisible) => layout.setColumnHidden(columnId, !isVisible),
|
|
218
|
+
onReset: layout.resetLayout
|
|
219
|
+
}) : void 0,
|
|
220
|
+
hasTrailingColumn,
|
|
221
|
+
sort: currentSort,
|
|
222
|
+
onSortPress: handleSortPress,
|
|
223
|
+
canCustomizeColumns,
|
|
224
|
+
rowCount,
|
|
225
|
+
isLoading,
|
|
226
|
+
error,
|
|
227
|
+
emptyState,
|
|
228
|
+
onEndReached,
|
|
229
|
+
role: isInteractive ? "grid" : "table",
|
|
230
|
+
ariaLabel,
|
|
231
|
+
tableAria,
|
|
232
|
+
isMultiselectable: false,
|
|
233
|
+
ariaRowCount: rowCount + 1 + (hasFooter ? 1 : 0),
|
|
234
|
+
rootRef: ref,
|
|
235
|
+
scrollRef,
|
|
236
|
+
rootProps,
|
|
237
|
+
className,
|
|
238
|
+
style,
|
|
239
|
+
bodyClassName: VIRTUAL_BODY_CSS,
|
|
240
|
+
bodyStyle: bodyVariables,
|
|
241
|
+
announcement,
|
|
242
|
+
children: virtualItems.map((item) => {
|
|
243
|
+
const row = getRowData(item.index);
|
|
244
|
+
const isBorderless = item.index === rowCount - 1 && !hasStatusAfter;
|
|
245
|
+
const rowStyle = startStyle(item.start - scrollMargin);
|
|
246
|
+
if (row === void 0) return /* @__PURE__ */ jsx(TableSkeletonRow, {
|
|
247
|
+
columns: visibleColumns,
|
|
248
|
+
metrics,
|
|
249
|
+
leadingCount: 0,
|
|
250
|
+
hasTrailingColumn,
|
|
251
|
+
isBorderless,
|
|
252
|
+
ariaRowIndex: item.index + 2,
|
|
253
|
+
...isInteractive ? { pending: {
|
|
254
|
+
rowRef: (element) => navigation.registerRow(item.index, element),
|
|
255
|
+
isTabStop: item.index === navigation.tabStopIndex,
|
|
256
|
+
onKeyDown: (event) => navigation.handleRowKeyDown(item.index, event),
|
|
257
|
+
onFocus: () => navigation.handleRowFocus(item.index)
|
|
258
|
+
} } : {},
|
|
259
|
+
className: VIRTUAL_ROW_CSS,
|
|
260
|
+
style: rowStyle
|
|
261
|
+
}, `pending-${item.index}`);
|
|
262
|
+
const rowId = resolveRowId(row, item.index);
|
|
263
|
+
return /* @__PURE__ */ jsx(TableBodyRow, {
|
|
264
|
+
row,
|
|
265
|
+
rowIndex: item.index,
|
|
266
|
+
rowId,
|
|
267
|
+
columns: visibleColumns,
|
|
268
|
+
metrics,
|
|
269
|
+
callbacks,
|
|
270
|
+
cellRole,
|
|
271
|
+
isFocusable: isInteractive,
|
|
272
|
+
isTabStop: item.index === navigation.tabStopIndex,
|
|
273
|
+
isClickable: hasRowClick,
|
|
274
|
+
isBorderless,
|
|
275
|
+
isActive: activeRowId !== void 0 && activeRowId !== null && activeRowId === rowId,
|
|
276
|
+
isSelected: void 0,
|
|
277
|
+
hasExpandColumn: false,
|
|
278
|
+
isExpanded: void 0,
|
|
279
|
+
panelId: void 0,
|
|
280
|
+
hasTrailingColumn,
|
|
281
|
+
isActionsOpen: openActionsRowId === rowId,
|
|
282
|
+
ariaRowIndex: item.index + 2,
|
|
283
|
+
hasColIndex: true,
|
|
284
|
+
className: VIRTUAL_ROW_CSS,
|
|
285
|
+
style: rowStyle
|
|
286
|
+
}, rowId);
|
|
229
287
|
})
|
|
230
288
|
});
|
|
231
|
-
}
|
|
289
|
+
});
|
|
290
|
+
VirtualizedInfiniteTableInner.displayName = "VirtualizedInfiniteTable";
|
|
291
|
+
/** InfiniteTable with a virtual body, for tens of thousands of rows. */
|
|
292
|
+
var VirtualizedInfiniteTable = VirtualizedInfiniteTableInner;
|
|
232
293
|
//#endregion
|
|
233
|
-
export {
|
|
294
|
+
export { VirtualizedInfiniteTableSize, VirtualizedInfiniteTable as default };
|