@rio-cloud/rio-uikit 2.2.1 → 2.3.0-beta.2
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/AnalyticsAnalysisOverlay.d.ts +1 -0
- package/AnalyticsAnalysisOverlay.js +5 -0
- package/AnalyticsAnalysisOverlay.js.map +1 -0
- package/DayPicker.js +6 -2
- package/DayPicker.js.map +1 -1
- package/DayPickerCalendar.d.ts +2 -0
- package/DayPickerCalendar.js +5 -0
- package/DayPickerCalendar.js.map +1 -0
- package/DayPickerPrototype.d.ts +2 -0
- package/DayPickerPrototype.js +5 -0
- package/DayPickerPrototype.js.map +1 -0
- package/Table.d.ts +2 -0
- package/Table.js +23 -0
- package/Table.js.map +1 -0
- package/TableCol.d.ts +2 -2
- package/TableCol.js +1 -1
- package/TableHead.d.ts +2 -2
- package/TableHead.js +1 -1
- package/TableNext.d.ts +2 -0
- package/TableNext.js +23 -0
- package/TableNext.js.map +1 -0
- package/TableSettingsDialog.d.ts +2 -2
- package/TableSettingsDialog.js +1 -1
- package/TableToolbar.js +4 -2
- package/TableToolbar.js.map +1 -1
- package/analyticsAnalysisUtils.d.ts +1 -0
- package/analyticsAnalysisUtils.js +13 -0
- package/analyticsAnalysisUtils.js.map +1 -0
- package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.d.ts +18 -0
- package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js +128 -0
- package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js.map +1 -0
- package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.d.ts +9 -0
- package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js +73 -0
- package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js.map +1 -0
- package/components/applicationHeader/AppMenuContent.js.map +1 -1
- package/components/applicationHeader/ApplicationActionBar.js +4 -4
- package/components/applicationHeader/ApplicationActionBar.js.map +1 -1
- package/components/applicationHeader/CollapsedNavItem.js +5 -14
- package/components/applicationHeader/CollapsedNavItem.js.map +1 -1
- package/components/applicationHeader/NavItems.js +10 -10
- package/components/applicationHeader/NavItems.js.map +1 -1
- package/components/assetTree/AssetTree.js +23 -23
- package/components/assetTree/AssetTree.js.map +1 -1
- package/components/assetTree/Tree.js +13 -13
- package/components/assetTree/TreeNothingFound.js +2 -2
- package/components/assetTree/TreeNothingFound.js.map +1 -1
- package/components/assetTree/treeUtils.js.map +1 -1
- package/components/autosuggest/AutoSuggest.js +31 -31
- package/components/autosuggest/AutoSuggest.js.map +1 -1
- package/components/autosuggest/AutoSuggestAddons.js +9 -9
- package/components/autosuggest/AutoSuggestAddons.js.map +1 -1
- package/components/banner/BannerActions.js +2 -2
- package/components/banner/BannerActions.js.map +1 -1
- package/components/banner/BannerIcon.js +3 -3
- package/components/banner/BannerIcon.js.map +1 -1
- package/components/banner/BannerPage.js +4 -4
- package/components/banner/BannerPage.js.map +1 -1
- package/components/button/Button.d.ts +7 -0
- package/components/button/Button.js +73 -65
- package/components/button/Button.js.map +1 -1
- package/components/charts/Area.d.ts +5 -3
- package/components/charts/Area.js +4 -3
- package/components/charts/Area.js.map +1 -1
- package/components/charts/AreaChart.js.map +1 -1
- package/components/charts/ComposedChart.js.map +1 -1
- package/components/checkbox/Checkbox.js +18 -17
- package/components/checkbox/Checkbox.js.map +1 -1
- package/components/clearableInput/ClearableInput.d.ts +30 -0
- package/components/clearableInput/ClearableInput.js +81 -78
- package/components/clearableInput/ClearableInput.js.map +1 -1
- package/components/datepicker/DateRangePicker.js +0 -2
- package/components/datepicker/DateRangePicker.js.map +1 -1
- package/components/datepicker/DayPicker.d.ts +4 -51
- package/components/datepicker/DayPicker.js +264 -256
- package/components/datepicker/DayPicker.js.map +1 -1
- package/components/datepicker/DayPickerCalendar.d.ts +4 -0
- package/components/datepicker/DayPickerCalendar.js +129 -0
- package/components/datepicker/DayPickerCalendar.js.map +1 -0
- package/components/datepicker/DayPickerDropdown.d.ts +18 -0
- package/components/datepicker/DayPickerDropdown.js +75 -0
- package/components/datepicker/DayPickerDropdown.js.map +1 -0
- package/components/datepicker/DayPickerDropdownFooter.d.ts +7 -0
- package/components/datepicker/DayPickerDropdownFooter.js +7 -0
- package/components/datepicker/DayPickerDropdownFooter.js.map +1 -0
- package/components/datepicker/DayPickerDropdownSidebar.d.ts +8 -0
- package/components/datepicker/DayPickerDropdownSidebar.js +7 -0
- package/components/datepicker/DayPickerDropdownSidebar.js.map +1 -0
- package/components/datepicker/DayPickerInput.d.ts +28 -0
- package/components/datepicker/DayPickerInput.js +65 -0
- package/components/datepicker/DayPickerInput.js.map +1 -0
- package/components/datepicker/DayPickerPrototype.d.ts +53 -0
- package/components/datepicker/DayPickerPrototype.js +285 -0
- package/components/datepicker/DayPickerPrototype.js.map +1 -0
- package/components/datepicker/dayPickerRangeSelectionUtils.d.ts +15 -0
- package/components/datepicker/dayPickerRangeSelectionUtils.js +31 -0
- package/components/datepicker/dayPickerRangeSelectionUtils.js.map +1 -0
- package/components/datepicker/dayPickerTypes.d.ts +517 -0
- package/components/datepicker/dayPickerTypes.js +7 -0
- package/components/datepicker/dayPickerTypes.js.map +1 -0
- package/components/datepicker/dayPickerUtils.d.ts +10 -0
- package/components/datepicker/dayPickerUtils.js +92 -0
- package/components/datepicker/dayPickerUtils.js.map +1 -0
- package/components/datepicker/useDayPickerInputState.d.ts +32 -0
- package/components/datepicker/useDayPickerInputState.js +85 -0
- package/components/datepicker/useDayPickerInputState.js.map +1 -0
- package/components/datepicker/useStackedDayPickerCalendars.d.ts +5 -0
- package/components/datepicker/useStackedDayPickerCalendars.js +39 -0
- package/components/datepicker/useStackedDayPickerCalendars.js.map +1 -0
- package/components/dialog/Dialog.js.map +1 -1
- package/components/dialog/DialogHeader.js +23 -20
- package/components/dialog/DialogHeader.js.map +1 -1
- package/components/dialog/MediaDialog.js +1 -1
- package/components/dialog/MediaDialog.js.map +1 -1
- package/components/divider/Divider.js +6 -6
- package/components/dropdown/ButtonDropdown.d.ts +4 -0
- package/components/dropdown/ButtonDropdown.js +70 -68
- package/components/dropdown/ButtonDropdown.js.map +1 -1
- package/components/dropdown/DropdownToggleButton.d.ts +1 -0
- package/components/dropdown/DropdownToggleButton.js +17 -15
- package/components/dropdown/DropdownToggleButton.js.map +1 -1
- package/components/editableContent/EditableContent.js +7 -7
- package/components/editableContent/EditableContent.js.map +1 -1
- package/components/expander/ExpanderList.d.ts +5 -0
- package/components/expander/ExpanderList.js +25 -16
- package/components/expander/ExpanderList.js.map +1 -1
- package/components/expander/ExpanderPanel.d.ts +5 -0
- package/components/expander/ExpanderPanel.js +29 -28
- package/components/expander/ExpanderPanel.js.map +1 -1
- package/components/fade/FadeExpander.js +17 -20
- package/components/fade/FadeExpander.js.map +1 -1
- package/components/filepicker/FilePicker.js.map +1 -1
- package/components/loadMore/LoadMoreButton.d.ts +5 -0
- package/components/loadMore/LoadMoreButton.js +33 -29
- package/components/loadMore/LoadMoreButton.js.map +1 -1
- package/components/loadMore/LoadMoreProgress.js +6 -7
- package/components/map/components/Map.js +3 -3
- package/components/map/components/features/ContextMenu.js +13 -13
- package/components/map/components/features/ContextMenu.js.map +1 -1
- package/components/map/components/features/basics/InfoBubble.js.map +1 -1
- package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
- package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +6 -6
- package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
- package/components/map/utils/eventHandling.js +18 -18
- package/components/map/utils/eventHandling.js.map +1 -1
- package/components/map/utils/positions.d.ts +1 -1
- package/components/map/utils/positions.js +15 -12
- package/components/map/utils/positions.js.map +1 -1
- package/components/map/utils/rendering.d.ts +1 -1
- package/components/map/utils/rendering.js +5 -5
- package/components/menuItems/MenuItems.js +6 -6
- package/components/menuItems/MenuItems.js.map +1 -1
- package/components/notification/NotificationsContainer.js.map +1 -1
- package/components/numberInput/NumberInput.js +57 -56
- package/components/numberInput/NumberInput.js.map +1 -1
- package/components/popover/Popover.js +3 -3
- package/components/popover/Popover.js.map +1 -1
- package/components/radiobutton/RadioCardGroup.js +3 -3
- package/components/resizer/Resizer.js +6 -3
- package/components/resizer/Resizer.js.map +1 -1
- package/components/rioglyph/RioglyphIconType.d.ts +1 -1
- package/components/selects/BaseSelectDropdown.js +34 -32
- package/components/selects/BaseSelectDropdown.js.map +1 -1
- package/components/selects/Multiselect.d.ts +6 -0
- package/components/selects/Multiselect.js +164 -150
- package/components/selects/Multiselect.js.map +1 -1
- package/components/selects/MultiselectTogglePlaceholder.js.map +1 -1
- package/components/selects/MultiselectToggleSelection.js +11 -11
- package/components/selects/MultiselectToggleSelection.js.map +1 -1
- package/components/selects/Select.js +39 -37
- package/components/selects/Select.js.map +1 -1
- package/components/sidebars/Sidebar.js +12 -12
- package/components/sidebars/Sidebar.js.map +1 -1
- package/components/sidebars/SidebarCloseButton.js +2 -2
- package/components/sidebars/SidebarCloseButton.js.map +1 -1
- package/components/smoothScrollbars/SmoothScrollbars.d.ts +4 -3
- package/components/smoothScrollbars/SmoothScrollbars.js +11 -11
- package/components/smoothScrollbars/SmoothScrollbars.js.map +1 -1
- package/components/states/CustomState.js.map +1 -1
- package/components/svgImage/svgConverter.js.map +1 -1
- package/components/table/Table.d.ts +46 -0
- package/components/table/Table.js +256 -0
- package/components/table/Table.js.map +1 -0
- package/components/table/Table.types.d.ts +379 -0
- package/components/table/TableBody.d.ts +70 -0
- package/components/table/TableBody.js +135 -0
- package/components/table/TableBody.js.map +1 -0
- package/components/table/TableCardsSorting.js +25 -32
- package/components/table/TableCardsSorting.js.map +1 -1
- package/components/table/TableColumn.d.ts +55 -0
- package/components/table/TableColumn.js +115 -0
- package/components/table/TableColumn.js.map +1 -0
- package/components/table/TableExpandedContentRow.d.ts +22 -0
- package/components/table/TableExpandedContentRow.js +110 -0
- package/components/table/TableExpandedContentRow.js.map +1 -0
- package/components/table/TableExpandedRow.d.ts +22 -0
- package/components/table/TableExpandedRow.js +150 -0
- package/components/table/TableExpandedRow.js.map +1 -0
- package/components/table/TableExpanderButton.d.ts +25 -0
- package/components/table/TableExpanderButton.js +24 -0
- package/components/table/TableExpanderButton.js.map +1 -0
- package/components/table/TableFooter.d.ts +17 -0
- package/components/table/TableFooter.js +52 -0
- package/components/table/TableFooter.js.map +1 -0
- package/components/table/TableGroupFooterRow.d.ts +18 -0
- package/components/table/TableGroupFooterRow.js +30 -0
- package/components/table/TableGroupFooterRow.js.map +1 -0
- package/components/table/TableGroupRow.d.ts +24 -0
- package/components/table/TableGroupRow.js +36 -0
- package/components/table/TableGroupRow.js.map +1 -0
- package/components/table/TableHeader.d.ts +14 -0
- package/components/table/TableHeader.js +107 -0
- package/components/table/TableHeader.js.map +1 -0
- package/components/table/TableHeaderColumn.d.ts +76 -0
- package/components/table/TableHeaderColumn.js +81 -0
- package/components/table/TableHeaderColumn.js.map +1 -0
- package/components/table/TableHeaderRow.d.ts +9 -0
- package/components/table/TableHeaderRow.js +14 -0
- package/components/table/TableHeaderRow.js.map +1 -0
- package/components/table/TableRow.d.ts +24 -0
- package/components/table/TableRow.js +111 -0
- package/components/table/TableRow.js.map +1 -0
- package/components/table/TableSpacerRow.d.ts +13 -0
- package/components/table/TableSpacerRow.js +29 -0
- package/components/table/TableSpacerRow.js.map +1 -0
- package/components/table/TableToolbar.d.ts +3 -0
- package/components/table/TableToolbar.js +49 -4
- package/components/table/TableToolbar.js.map +1 -1
- package/components/table/TableToolbarColumn.d.ts +31 -0
- package/components/table/TableToolbarColumn.js +33 -0
- package/components/table/TableToolbarColumn.js.map +1 -0
- package/components/table/TableViewToggles.d.ts +21 -3
- package/components/table/TableViewToggles.js +59 -87
- package/components/table/TableViewToggles.js.map +1 -1
- package/components/table/context/TableInteractionContext.d.ts +26 -0
- package/components/table/context/TableInteractionContext.js +7 -0
- package/components/table/context/TableInteractionContext.js.map +1 -0
- package/components/table/context/TableLayoutContext.d.ts +25 -0
- package/components/table/context/TableLayoutContext.js +7 -0
- package/components/table/context/TableLayoutContext.js.map +1 -0
- package/components/table/context/TableRenderConfigContext.d.ts +27 -0
- package/components/table/context/TableRenderConfigContext.js +7 -0
- package/components/table/context/TableRenderConfigContext.js.map +1 -0
- package/components/table/context/TableRenderContext.d.ts +85 -0
- package/components/table/context/TableRenderContext.js +7 -0
- package/components/table/context/TableRenderContext.js.map +1 -0
- package/components/table/context/TableStructureContext.d.ts +31 -0
- package/components/table/context/TableStructureContext.js +17 -0
- package/components/table/context/TableStructureContext.js.map +1 -0
- package/components/table/layout/columnSizing.d.ts +3 -0
- package/components/table/layout/columnSizing.js +23 -0
- package/components/table/layout/columnSizing.js.map +1 -0
- package/components/table/layout/useDraggableColumns.d.ts +14 -0
- package/components/table/layout/useDraggableColumns.js +47 -0
- package/components/table/layout/useDraggableColumns.js.map +1 -0
- package/components/table/layout/useHorizontalSectionSync.d.ts +13 -0
- package/components/table/layout/useHorizontalSectionSync.js +43 -0
- package/components/table/layout/useHorizontalSectionSync.js.map +1 -0
- package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +12 -0
- package/components/table/layout/useMeasuredColumnMaxWidths.js +85 -0
- package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -0
- package/components/table/layout/useResizableColumns.d.ts +15 -0
- package/components/table/layout/useResizableColumns.js +132 -0
- package/components/table/layout/useResizableColumns.js.map +1 -0
- package/components/table/layout/useTableBodyScrollBottom.d.ts +12 -0
- package/components/table/layout/useTableBodyScrollBottom.js +37 -0
- package/components/table/layout/useTableBodyScrollBottom.js.map +1 -0
- package/components/table/layout/useTableLayout.d.ts +36 -0
- package/components/table/layout/useTableLayout.js +59 -0
- package/components/table/layout/useTableLayout.js.map +1 -0
- package/components/table/layout/useTableVirtualization.d.ts +22 -0
- package/components/table/layout/useTableVirtualization.js +125 -0
- package/components/table/layout/useTableVirtualization.js.map +1 -0
- package/components/table/model/resolveRowMeta.d.ts +3 -0
- package/components/table/model/resolveRowMeta.js +15 -0
- package/components/table/model/resolveRowMeta.js.map +1 -0
- package/components/table/model/resolveTableClassConfig.d.ts +47 -0
- package/components/table/model/resolveTableClassConfig.js +64 -0
- package/components/table/model/resolveTableClassConfig.js.map +1 -0
- package/components/table/model/tableView.types.d.ts +41 -0
- package/components/table/native/TableCol.js.map +1 -0
- package/components/table/{TableHead.js → native/TableHead.js} +2 -2
- package/components/table/native/TableHead.js.map +1 -0
- package/components/table/native/TableSettingsColumnButtons.js +59 -0
- package/components/table/native/TableSettingsColumnButtons.js.map +1 -0
- package/components/table/{TableSettingsColumnDetails.js → native/TableSettingsColumnDetails.js} +2 -2
- package/components/table/native/TableSettingsColumnDetails.js.map +1 -0
- package/components/table/{TableSettingsDialog.d.ts → native/TableSettingsDialog.d.ts} +2 -3
- package/components/table/native/TableSettingsDialog.js +216 -0
- package/components/table/native/TableSettingsDialog.js.map +1 -0
- package/components/table/{TableSettingsDialogFooter.js → native/TableSettingsDialogFooter.js} +2 -2
- package/components/table/native/TableSettingsDialogFooter.js.map +1 -0
- package/components/table/native/TableSettingsListContainer.js.map +1 -0
- package/components/table/native/TableSettingsListItem.js +100 -0
- package/components/table/native/TableSettingsListItem.js.map +1 -0
- package/components/table/render/body/TableBodyContent.d.ts +21 -0
- package/components/table/render/body/TableBodyContent.js +52 -0
- package/components/table/render/body/TableBodyContent.js.map +1 -0
- package/components/table/render/body/TableEmptyRow.d.ts +7 -0
- package/components/table/render/body/TableEmptyRow.js +6 -0
- package/components/table/render/body/TableEmptyRow.js.map +1 -0
- package/components/table/render/footer/TableFooterContent.d.ts +6 -0
- package/components/table/render/footer/TableFooterContent.js +6 -0
- package/components/table/render/footer/TableFooterContent.js.map +1 -0
- package/components/table/render/header/TableBatchDropdown.d.ts +13 -0
- package/components/table/render/header/TableBatchDropdown.js +30 -0
- package/components/table/render/header/TableBatchDropdown.js.map +1 -0
- package/components/table/render/header/TableColumnFilter.d.ts +66 -0
- package/components/table/render/header/TableColumnFilter.js +72 -0
- package/components/table/render/header/TableColumnFilter.js.map +1 -0
- package/components/table/render/header/TableDraggableHeaderCell.d.ts +4 -0
- package/components/table/render/header/TableDraggableHeaderCell.js +64 -0
- package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -0
- package/components/table/render/header/TableHeader.types.d.ts +37 -0
- package/components/table/render/header/TableHeaderCellContent.d.ts +4 -0
- package/components/table/render/header/TableHeaderCellContent.js +57 -0
- package/components/table/render/header/TableHeaderCellContent.js.map +1 -0
- package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +4 -0
- package/components/table/render/header/TableHeaderCellResizeHandle.js +22 -0
- package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -0
- package/components/table/render/header/TableHeaderDragOverlay.d.ts +14 -0
- package/components/table/render/header/TableHeaderDragOverlay.js +35 -0
- package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -0
- package/components/table/render/header/TableHeaderSelectionCell.d.ts +9 -0
- package/components/table/render/header/TableHeaderSelectionCell.js +41 -0
- package/components/table/render/header/TableHeaderSelectionCell.js.map +1 -0
- package/components/table/render/header/TableStaticHeaderCell.d.ts +4 -0
- package/components/table/render/header/TableStaticHeaderCell.js +48 -0
- package/components/table/render/header/TableStaticHeaderCell.js.map +1 -0
- package/components/table/render/header/resolveAriaSort.d.ts +3 -0
- package/components/table/render/header/resolveAriaSort.js +8 -0
- package/components/table/render/header/resolveAriaSort.js.map +1 -0
- package/components/table/render/header/resolveColumnCollisionDetection.d.ts +2 -0
- package/components/table/render/header/resolveColumnCollisionDetection.js +9 -0
- package/components/table/render/header/resolveColumnCollisionDetection.js.map +1 -0
- package/components/table/render/header/resolveHeaderCellClassName.d.ts +12 -0
- package/components/table/render/header/resolveHeaderCellClassName.js +23 -0
- package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -0
- package/components/table/render/header/resolveHeaderCellStyle.d.ts +830 -0
- package/components/table/render/header/resolveHeaderCellStyle.js +9 -0
- package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -0
- package/components/table/runtime/shouldAnimateBodyRows.d.ts +17 -0
- package/components/table/runtime/shouldAnimateBodyRows.js +5 -0
- package/components/table/runtime/shouldAnimateBodyRows.js.map +1 -0
- package/components/table/runtime/useRenderDraftState.d.ts +14 -0
- package/components/table/runtime/useRenderDraftState.js +80 -0
- package/components/table/runtime/useRenderDraftState.js.map +1 -0
- package/components/table/runtime/useResolvedRenderColumns.d.ts +43 -0
- package/components/table/runtime/useResolvedRenderColumns.js +113 -0
- package/components/table/runtime/useResolvedRenderColumns.js.map +1 -0
- package/components/table/runtime/useResolvedRenderHeader.d.ts +27 -0
- package/components/table/runtime/useResolvedRenderHeader.js +67 -0
- package/components/table/runtime/useResolvedRenderHeader.js.map +1 -0
- package/components/table/selection/useInternalTableSelectionState.d.ts +17 -0
- package/components/table/selection/useInternalTableSelectionState.js +28 -0
- package/components/table/selection/useInternalTableSelectionState.js.map +1 -0
- package/components/table/selection/useTableSelection.d.ts +82 -0
- package/components/table/selection/useTableSelection.js +35 -0
- package/components/table/selection/useTableSelection.js.map +1 -0
- package/components/table/settings/TableColumnsDropdown.d.ts +90 -0
- package/components/table/settings/TableColumnsDropdown.js +137 -0
- package/components/table/settings/TableColumnsDropdown.js.map +1 -0
- package/components/table/settings/TableColumnsDropdownItem.d.ts +8 -0
- package/components/table/settings/TableColumnsDropdownItem.js +66 -0
- package/components/table/settings/TableColumnsDropdownItem.js.map +1 -0
- package/components/table/shared/getAlignClassName.d.ts +3 -0
- package/components/table/shared/getAlignClassName.js +6 -0
- package/components/table/shared/getAlignClassName.js.map +1 -0
- package/components/table/shared/getCellContentOverflowClassName.d.ts +3 -0
- package/components/table/shared/getCellContentOverflowClassName.js +18 -0
- package/components/table/shared/getCellContentOverflowClassName.js.map +1 -0
- package/components/table/shared/getInteractiveRowProps.d.ts +15 -0
- package/components/table/shared/getInteractiveRowProps.js +15 -0
- package/components/table/shared/getInteractiveRowProps.js.map +1 -0
- package/components/table/shared/resolveTableAria.d.ts +2 -0
- package/components/table/shared/resolveTableAria.js +6 -0
- package/components/table/shared/resolveTableAria.js.map +1 -0
- package/components/table/tableSizing.constants.d.ts +4 -0
- package/components/table/tableSizing.constants.js +8 -0
- package/components/table/tableSizing.constants.js.map +1 -0
- package/components/teaser/TeaserContainer.js +3 -3
- package/components/teaser/TeaserContainer.js.map +1 -1
- package/components/virtualList/VirtualList.js +16 -13
- package/components/virtualList/VirtualList.js.map +1 -1
- package/googleAnalyticsUtils.d.ts +1 -0
- package/googleAnalyticsUtils.js +9 -0
- package/googleAnalyticsUtils.js.map +1 -0
- package/hooks/useCookies.js +17 -17
- package/hooks/useCookies.js.map +1 -1
- package/hooks/useDraggableElement.d.ts +35 -0
- package/hooks/useDraggableElement.js +49 -0
- package/hooks/useDraggableElement.js.map +1 -0
- package/hooks/useElapsedTime.js +4 -4
- package/hooks/useElapsedTime.js.map +1 -1
- package/hooks/useLocationSuggestions.js +13 -10
- package/hooks/useLocationSuggestions.js.map +1 -1
- package/hooks/useMergeRefs.js +12 -12
- package/hooks/useMergeRefs.js.map +1 -1
- package/hooks/usePrevious.d.ts +1 -1
- package/hooks/usePrevious.js.map +1 -1
- package/hooks/useResizeObserver.js +25 -10
- package/hooks/useResizeObserver.js.map +1 -1
- package/hooks/useRioCookieConsent.js +7 -4
- package/hooks/useRioCookieConsent.js.map +1 -1
- package/hooks/useSorting.js +10 -10
- package/hooks/useSorting.js.map +1 -1
- package/hooks/useStorage.js +12 -12
- package/hooks/useStorage.js.map +1 -1
- package/hooks/useSum.js +10 -7
- package/hooks/useSum.js.map +1 -1
- package/hooks/useTableSelection.js.map +1 -1
- package/hooks/useTimeout.js +6 -3
- package/hooks/useTimeout.js.map +1 -1
- package/hooks/useUrlState.js +3 -3
- package/package.json +17 -18
- package/routeUtils.js +12 -10
- package/utils/analytics/analyticsAnalysisUtils.d.ts +27 -0
- package/utils/analytics/analyticsAnalysisUtils.js +161 -0
- package/utils/analytics/analyticsAnalysisUtils.js.map +1 -0
- package/utils/analytics/autoTracking.d.ts +14 -0
- package/utils/analytics/autoTracking.js +19 -0
- package/utils/analytics/autoTracking.js.map +1 -0
- package/utils/analytics/createAnalyticsOverlayTooltip.d.ts +36 -0
- package/utils/analytics/createAnalyticsOverlayTooltip.js +203 -0
- package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -0
- package/utils/analytics/googleAnalyticsUtils.d.ts +37 -0
- package/utils/analytics/googleAnalyticsUtils.js +37 -0
- package/utils/analytics/googleAnalyticsUtils.js.map +1 -0
- package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.d.ts +8 -0
- package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js +61 -0
- package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js.map +1 -0
- package/utils/analytics/useAnalyticsOverlayDom.d.ts +11 -0
- package/utils/analytics/useAnalyticsOverlayDom.js +120 -0
- package/utils/analytics/useAnalyticsOverlayDom.js.map +1 -0
- package/utils/arrayMove.js +11 -0
- package/utils/arrayMove.js.map +1 -0
- package/utils/cssuseragent.js +2 -2
- package/utils/cssuseragent.js.map +1 -1
- package/utils/deviceUtils.js.map +1 -1
- package/utils/formatUtils.js.map +1 -1
- package/utils/hasUtilityClass.js +3 -3
- package/utils/hasUtilityClass.js.map +1 -1
- package/utils/hidePiiData.js.map +1 -1
- package/utils/init/checkForReleaseVersion.js +4 -4
- package/utils/init/checkForReleaseVersion.js.map +1 -1
- package/utils/init/styledLogs.js.map +1 -1
- package/utils/mergeRefs.js +3 -3
- package/utils/mergeRefs.js.map +1 -1
- package/utils/routeUtils.d.ts +37 -3
- package/utils/routeUtils.js +88 -70
- package/utils/routeUtils.js.map +1 -1
- package/utils/storageUtils.js +9 -9
- package/utils/storageUtils.js.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +2 -2
- package/version.js.map +1 -1
- package/components/table/TableCol.js.map +0 -1
- package/components/table/TableHead.js.map +0 -1
- package/components/table/TableSettingsColumnButtons.js +0 -45
- package/components/table/TableSettingsColumnButtons.js.map +0 -1
- package/components/table/TableSettingsColumnDetails.js.map +0 -1
- package/components/table/TableSettingsDialog.js +0 -208
- package/components/table/TableSettingsDialog.js.map +0 -1
- package/components/table/TableSettingsDialogFooter.js.map +0 -1
- package/components/table/TableSettingsListContainer.js.map +0 -1
- package/components/table/TableSettingsListItem.js +0 -96
- package/components/table/TableSettingsListItem.js.map +0 -1
- /package/components/table/{TableCol.d.ts → native/TableCol.d.ts} +0 -0
- /package/components/table/{TableCol.js → native/TableCol.js} +0 -0
- /package/components/table/{TableHead.d.ts → native/TableHead.d.ts} +0 -0
- /package/components/table/{TableSettingsColumnButtons.d.ts → native/TableSettingsColumnButtons.d.ts} +0 -0
- /package/components/table/{TableSettingsColumnDetails.d.ts → native/TableSettingsColumnDetails.d.ts} +0 -0
- /package/components/table/{TableSettingsDialogFooter.d.ts → native/TableSettingsDialogFooter.d.ts} +0 -0
- /package/components/table/{TableSettingsListContainer.d.ts → native/TableSettingsListContainer.d.ts} +0 -0
- /package/components/table/{TableSettingsListContainer.js → native/TableSettingsListContainer.js} +0 -0
- /package/components/table/{TableSettingsListItem.d.ts → native/TableSettingsListItem.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveHeaderCellStyle.js","sources":["../../../../../src/components/table/render/header/resolveHeaderCellStyle.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nimport type { TableRowData } from '../../Table.types';\nimport type { HeaderColumn } from './TableHeader.types';\n\nexport const resolveHeaderCellStyle = (\n column: HeaderColumn<TableRowData>,\n showSelectionColumn?: boolean,\n extraStyle?: CSSProperties\n) => ({\n gridColumn: `${column.columnStart + (showSelectionColumn ? 1 : 0)} / span ${column.colSpan}`,\n gridRow: `${column.rowStart} / span ${column.rowSpan}`,\n ...extraStyle,\n});\n"],"names":["resolveHeaderCellStyle","column","showSelectionColumn","extraStyle"],"mappings":"AAKO,MAAMA,IAAyB,CAClCC,GACAC,GACAC,OACE;AAAA,EACF,YAAY,GAAGF,EAAO,eAAeC,IAAsB,IAAI,EAAE,WAAWD,EAAO,OAAO;AAAA,EAC1F,SAAS,GAAGA,EAAO,QAAQ,WAAWA,EAAO,OAAO;AAAA,EACpD,GAAGE;AACP;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TableExpandedRowAnimation, TableRowAnimationProps, TableRowData } from '../Table.types';
|
|
2
|
+
type ShouldAnimateBodyRowsOptions<RowType extends TableRowData> = {
|
|
3
|
+
rowAnimationProps?: TableRowAnimationProps<RowType>;
|
|
4
|
+
expandedRowAnimation?: TableExpandedRowAnimation;
|
|
5
|
+
hasExpandableRows?: boolean;
|
|
6
|
+
hasExpandedRows?: boolean;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Body rows only animate when the consumer explicitly opted into row animations
|
|
10
|
+
* or when expanded-row animations are enabled.
|
|
11
|
+
*
|
|
12
|
+
* Expanded rows need AnimatePresence to stay mounted before the first row is
|
|
13
|
+
* opened. Otherwise the first expanded row would mount together with the
|
|
14
|
+
* presence wrapper and skip its enter animation.
|
|
15
|
+
*/
|
|
16
|
+
export declare const shouldAnimateBodyRows: <RowType extends TableRowData>(options: ShouldAnimateBodyRowsOptions<RowType>) => boolean;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shouldAnimateBodyRows.js","sources":["../../../../src/components/table/runtime/shouldAnimateBodyRows.ts"],"sourcesContent":["import type { TableExpandedRowAnimation, TableRowAnimationProps, TableRowData } from '../Table.types';\n\ntype ShouldAnimateBodyRowsOptions<RowType extends TableRowData> = {\n rowAnimationProps?: TableRowAnimationProps<RowType>;\n expandedRowAnimation?: TableExpandedRowAnimation;\n hasExpandableRows?: boolean;\n hasExpandedRows?: boolean;\n};\n\n/**\n * Body rows only animate when the consumer explicitly opted into row animations\n * or when expanded-row animations are enabled.\n *\n * Expanded rows need AnimatePresence to stay mounted before the first row is\n * opened. Otherwise the first expanded row would mount together with the\n * presence wrapper and skip its enter animation.\n */\nexport const shouldAnimateBodyRows = <RowType extends TableRowData>(options: ShouldAnimateBodyRowsOptions<RowType>) => {\n if (options.rowAnimationProps) {\n return true;\n }\n\n if (options.expandedRowAnimation === false) {\n return false;\n }\n\n return options.hasExpandableRows === true || options.hasExpandedRows === true;\n};\n"],"names":["shouldAnimateBodyRows","options"],"mappings":"AAiBO,MAAMA,IAAwB,CAA+BC,MAC5DA,EAAQ,oBACD,KAGPA,EAAQ,yBAAyB,KAC1B,KAGJA,EAAQ,sBAAsB,MAAQA,EAAQ,oBAAoB;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode, RefObject } from 'react';
|
|
2
|
+
import { RenderBodyRow, RenderHeaderColumn, TableRenderDraft } from '../context/TableRenderContext';
|
|
3
|
+
import { TableRowData } from '../Table.types';
|
|
4
|
+
export type UseRenderDraftStateReturn<RowType extends TableRowData> = {
|
|
5
|
+
renderHeaderColumns: RenderHeaderColumn<RowType>[];
|
|
6
|
+
renderBodyRows: RenderBodyRow<RowType>[];
|
|
7
|
+
renderBodyMaxHeight?: string;
|
|
8
|
+
renderHasFooter: boolean;
|
|
9
|
+
renderHasFooterCells?: boolean;
|
|
10
|
+
renderHasExpandableRows?: boolean;
|
|
11
|
+
renderBodyRow: (row: RenderBodyRow<RowType>) => ReactNode;
|
|
12
|
+
};
|
|
13
|
+
export declare const useRenderDraftState: <RowType extends TableRowData>(renderDraftRef: RefObject<TableRenderDraft<RowType>>) => UseRenderDraftStateReturn<RowType>;
|
|
14
|
+
export default useRenderDraftState;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { useRef as v, useState as f, useLayoutEffect as B, useCallback as M } from "react";
|
|
2
|
+
const h = (o) => `${o.kind}-${String(o.rowId)}`, S = [
|
|
3
|
+
"id",
|
|
4
|
+
"columnKey",
|
|
5
|
+
"width",
|
|
6
|
+
"mobileLabel",
|
|
7
|
+
"horizontalAlign",
|
|
8
|
+
"verticalAlign",
|
|
9
|
+
"headerClassName",
|
|
10
|
+
"hideOnMobile",
|
|
11
|
+
"sortable",
|
|
12
|
+
"draggable",
|
|
13
|
+
"resizeable",
|
|
14
|
+
"minResizeWidth",
|
|
15
|
+
"maxResizeWidth",
|
|
16
|
+
"row",
|
|
17
|
+
"colSpan",
|
|
18
|
+
"rowSpan"
|
|
19
|
+
], E = ["rowId", "rowIndex", "kind", "disabled"], K = (o, r) => o.length === r.length && o.every((e, n) => {
|
|
20
|
+
const t = r[n];
|
|
21
|
+
return t !== void 0 && S.every((s) => e[s] === t[s]);
|
|
22
|
+
}), I = (o, r) => o.length === r.length && o.every((e, n) => {
|
|
23
|
+
const t = r[n];
|
|
24
|
+
return t !== void 0 && E.every((s) => e[s] === t[s]);
|
|
25
|
+
}), z = (o) => {
|
|
26
|
+
const r = /* @__PURE__ */ new Set();
|
|
27
|
+
return o.filter((e) => r.has(e.id) ? !1 : (r.add(e.id), !0));
|
|
28
|
+
}, H = (o) => {
|
|
29
|
+
const r = /* @__PURE__ */ new Set();
|
|
30
|
+
return o.filter((e) => {
|
|
31
|
+
const n = `${e.kind}-${String(e.rowId)}`;
|
|
32
|
+
return r.has(n) ? !1 : (r.add(n), !0);
|
|
33
|
+
});
|
|
34
|
+
}, g = (o) => new Map(o.map((r) => [h(r), r.render])), k = (o) => {
|
|
35
|
+
const r = v(/* @__PURE__ */ new Map()), [e, n] = f({
|
|
36
|
+
headerColumns: [],
|
|
37
|
+
bodyRows: [],
|
|
38
|
+
bodyMaxHeight: void 0,
|
|
39
|
+
hasFooter: !1,
|
|
40
|
+
hasFooterCells: void 0,
|
|
41
|
+
hasExpandableRows: void 0
|
|
42
|
+
});
|
|
43
|
+
B(() => {
|
|
44
|
+
const s = o.current;
|
|
45
|
+
if (!s)
|
|
46
|
+
return;
|
|
47
|
+
const d = z(s.headerColumns), a = H(s.bodyRows), l = a.map(({ render: $, ...F }) => F), p = g(a), R = s.bodyMaxHeight, i = s.hasFooter === !0, c = s.hasFooterCells, w = s.hasExpandableRows;
|
|
48
|
+
r.current = p;
|
|
49
|
+
const u = K(e.headerColumns, d) ? e.headerColumns : d, y = I(e.bodyRows, l) ? e.bodyRows : l, b = e.bodyMaxHeight === R ? e.bodyMaxHeight : R, x = e.hasFooter === i ? e.hasFooter : i, C = e.hasFooterCells === c ? e.hasFooterCells : c, m = e.hasExpandableRows === w ? e.hasExpandableRows : w;
|
|
50
|
+
e.headerColumns === u && e.bodyRows === y && e.bodyMaxHeight === b && e.hasFooter === x && e.hasFooterCells === C && e.hasExpandableRows === m || n({
|
|
51
|
+
headerColumns: u,
|
|
52
|
+
bodyRows: y,
|
|
53
|
+
bodyMaxHeight: b,
|
|
54
|
+
hasFooter: x,
|
|
55
|
+
hasFooterCells: C,
|
|
56
|
+
hasExpandableRows: m
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
const t = M(
|
|
60
|
+
(s) => {
|
|
61
|
+
const d = o.current;
|
|
62
|
+
return ((d ? g(H(d.bodyRows)) : void 0)?.get(h(s)) ?? r.current.get(h(s)))?.() ?? null;
|
|
63
|
+
},
|
|
64
|
+
[o]
|
|
65
|
+
);
|
|
66
|
+
return {
|
|
67
|
+
renderHeaderColumns: e.headerColumns,
|
|
68
|
+
renderBodyRows: e.bodyRows,
|
|
69
|
+
renderBodyMaxHeight: e.bodyMaxHeight,
|
|
70
|
+
renderHasFooter: e.hasFooter,
|
|
71
|
+
renderHasFooterCells: e.hasFooterCells,
|
|
72
|
+
renderHasExpandableRows: e.hasExpandableRows,
|
|
73
|
+
renderBodyRow: t
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export {
|
|
77
|
+
k as default,
|
|
78
|
+
k as useRenderDraftState
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=useRenderDraftState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRenderDraftState.js","sources":["../../../../src/components/table/runtime/useRenderDraftState.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef, useState, type ReactNode, type RefObject } from 'react';\n\nimport type { RenderBodyRow, RenderHeaderColumn, TableRenderDraft } from '../context/TableRenderContext';\nimport type { TableRowData } from '../Table.types';\n\ntype RenderDraftState<RowType extends TableRowData> = {\n headerColumns: RenderHeaderColumn<RowType>[];\n bodyRows: RenderBodyRow<RowType>[];\n bodyMaxHeight?: string;\n hasFooter: boolean;\n hasFooterCells?: boolean;\n hasExpandableRows?: boolean;\n};\n\nconst getRenderBodyRowRendererKey = <RowType extends TableRowData>(\n row: Pick<TableRenderDraft<RowType>['bodyRows'][number], 'kind' | 'rowId'>\n) => `${row.kind}-${String(row.rowId)}`;\n\nconst renderHeaderColumnComparisonKeys = [\n 'id',\n 'columnKey',\n 'width',\n 'mobileLabel',\n 'horizontalAlign',\n 'verticalAlign',\n 'headerClassName',\n 'hideOnMobile',\n 'sortable',\n 'draggable',\n 'resizeable',\n 'minResizeWidth',\n 'maxResizeWidth',\n 'row',\n 'colSpan',\n 'rowSpan',\n] as const satisfies ReadonlyArray<keyof RenderHeaderColumn<TableRowData>>;\n\nconst renderBodyRowComparisonKeys = ['rowId', 'rowIndex', 'kind', 'disabled'] as const satisfies ReadonlyArray<\n keyof RenderBodyRow<TableRowData>\n>;\n\nconst haveSameRenderHeaderColumns = <RowType extends TableRowData>(\n currentColumns: RenderHeaderColumn<RowType>[],\n nextColumns: RenderHeaderColumn<RowType>[]\n) =>\n currentColumns.length === nextColumns.length &&\n currentColumns.every((currentColumn, index) => {\n const nextColumn = nextColumns[index];\n\n return (\n nextColumn !== undefined &&\n renderHeaderColumnComparisonKeys.every(key => currentColumn[key] === nextColumn[key])\n );\n });\n\nconst haveSameRenderBodyRows = <RowType extends TableRowData>(\n currentRows: RenderBodyRow<RowType>[],\n nextRows: RenderBodyRow<RowType>[]\n) =>\n currentRows.length === nextRows.length &&\n currentRows.every((currentRow, index) => {\n const nextRow = nextRows[index];\n\n return nextRow !== undefined && renderBodyRowComparisonKeys.every(key => currentRow[key] === nextRow[key]);\n });\n\nconst dedupeRenderHeaderColumns = <RowType extends TableRowData>(headerColumns: RenderHeaderColumn<RowType>[]) => {\n const seenColumnIds = new Set<string>();\n\n return headerColumns.filter(column => {\n if (seenColumnIds.has(column.id)) {\n return false;\n }\n\n seenColumnIds.add(column.id);\n return true;\n });\n};\n\nconst dedupeRenderBodyRows = <RowType extends TableRowData>(bodyRows: TableRenderDraft<RowType>['bodyRows']) => {\n const seenRowKeys = new Set<string>();\n\n return bodyRows.filter(row => {\n const rowKey = `${row.kind}-${String(row.rowId)}`;\n\n if (seenRowKeys.has(rowKey)) {\n return false;\n }\n\n seenRowKeys.add(rowKey);\n return true;\n });\n};\n\nconst createRenderBodyRowRendererMap = <RowType extends TableRowData>(\n bodyRows: TableRenderDraft<RowType>['bodyRows']\n) => new Map(bodyRows.map(row => [getRenderBodyRowRendererKey(row), row.render] as const));\n\nexport type UseRenderDraftStateReturn<RowType extends TableRowData> = {\n renderHeaderColumns: RenderHeaderColumn<RowType>[];\n renderBodyRows: RenderBodyRow<RowType>[];\n renderBodyMaxHeight?: string;\n renderHasFooter: boolean;\n renderHasFooterCells?: boolean;\n renderHasExpandableRows?: boolean;\n renderBodyRow: (row: RenderBodyRow<RowType>) => ReactNode;\n};\n\nexport const useRenderDraftState = <RowType extends TableRowData>(\n renderDraftRef: RefObject<TableRenderDraft<RowType>>\n): UseRenderDraftStateReturn<RowType> => {\n const bodyRowRenderersRef = useRef(new Map<string, () => ReactNode>());\n const [renderDraftState, setRenderDraftState] = useState<RenderDraftState<RowType>>({\n headerColumns: [],\n bodyRows: [],\n bodyMaxHeight: undefined,\n hasFooter: false,\n hasFooterCells: undefined,\n hasExpandableRows: undefined,\n });\n\n useLayoutEffect(() => {\n const draft = renderDraftRef.current;\n\n if (!draft) {\n return;\n }\n\n const nextHeaderColumns = dedupeRenderHeaderColumns(draft.headerColumns);\n const nextBodyRowsWithRenderers = dedupeRenderBodyRows(draft.bodyRows);\n const nextBodyRows = nextBodyRowsWithRenderers.map(({ render: _render, ...bodyRow }) => bodyRow);\n const nextBodyRowRenderers = createRenderBodyRowRendererMap(nextBodyRowsWithRenderers);\n const nextBodyMaxHeight = draft.bodyMaxHeight;\n const nextHasFooter = draft.hasFooter === true;\n const nextHasFooterCells = draft.hasFooterCells;\n const nextHasExpandableRows = draft.hasExpandableRows;\n\n // Keep render functions out of React state. The draft state only tracks structural row\n // metadata, while the latest row render callbacks stay available via this ref.\n bodyRowRenderersRef.current = nextBodyRowRenderers;\n\n const resolvedHeaderColumns = haveSameRenderHeaderColumns(renderDraftState.headerColumns, nextHeaderColumns)\n ? renderDraftState.headerColumns\n : nextHeaderColumns;\n const resolvedBodyRows = haveSameRenderBodyRows(renderDraftState.bodyRows, nextBodyRows)\n ? renderDraftState.bodyRows\n : nextBodyRows;\n const resolvedBodyMaxHeight =\n renderDraftState.bodyMaxHeight === nextBodyMaxHeight ? renderDraftState.bodyMaxHeight : nextBodyMaxHeight;\n const resolvedHasFooter =\n renderDraftState.hasFooter === nextHasFooter ? renderDraftState.hasFooter : nextHasFooter;\n const resolvedHasFooterCells =\n renderDraftState.hasFooterCells === nextHasFooterCells\n ? renderDraftState.hasFooterCells\n : nextHasFooterCells;\n const resolvedHasExpandableRows =\n renderDraftState.hasExpandableRows === nextHasExpandableRows\n ? renderDraftState.hasExpandableRows\n : nextHasExpandableRows;\n\n // Avoid scheduling a layout-state update when the normalized draft did not\n // actually change. This keeps the render/register cycle stable in StrictMode\n // and prevents resize-reset flows from bouncing through nested updates.\n if (\n renderDraftState.headerColumns === resolvedHeaderColumns &&\n renderDraftState.bodyRows === resolvedBodyRows &&\n renderDraftState.bodyMaxHeight === resolvedBodyMaxHeight &&\n renderDraftState.hasFooter === resolvedHasFooter &&\n renderDraftState.hasFooterCells === resolvedHasFooterCells &&\n renderDraftState.hasExpandableRows === resolvedHasExpandableRows\n ) {\n return;\n }\n\n setRenderDraftState({\n headerColumns: resolvedHeaderColumns,\n bodyRows: resolvedBodyRows,\n bodyMaxHeight: resolvedBodyMaxHeight,\n hasFooter: resolvedHasFooter,\n hasFooterCells: resolvedHasFooterCells,\n hasExpandableRows: resolvedHasExpandableRows,\n });\n });\n\n const renderBodyRow = useCallback(\n (row: RenderBodyRow<RowType>) => {\n const draft = renderDraftRef.current;\n const draftRowRenderers = draft\n ? createRenderBodyRowRendererMap(dedupeRenderBodyRows(draft.bodyRows))\n : undefined;\n const rowRenderer =\n draftRowRenderers?.get(getRenderBodyRowRendererKey(row)) ??\n bodyRowRenderersRef.current.get(getRenderBodyRowRendererKey(row));\n\n return rowRenderer?.() ?? null;\n },\n [renderDraftRef]\n );\n\n return {\n renderHeaderColumns: renderDraftState.headerColumns,\n renderBodyRows: renderDraftState.bodyRows,\n renderBodyMaxHeight: renderDraftState.bodyMaxHeight,\n renderHasFooter: renderDraftState.hasFooter,\n renderHasFooterCells: renderDraftState.hasFooterCells,\n renderHasExpandableRows: renderDraftState.hasExpandableRows,\n renderBodyRow,\n };\n};\n\nexport default useRenderDraftState;\n"],"names":["getRenderBodyRowRendererKey","row","renderHeaderColumnComparisonKeys","renderBodyRowComparisonKeys","haveSameRenderHeaderColumns","currentColumns","nextColumns","currentColumn","index","nextColumn","key","haveSameRenderBodyRows","currentRows","nextRows","currentRow","nextRow","dedupeRenderHeaderColumns","headerColumns","seenColumnIds","column","dedupeRenderBodyRows","bodyRows","seenRowKeys","rowKey","createRenderBodyRowRendererMap","useRenderDraftState","renderDraftRef","bodyRowRenderersRef","useRef","renderDraftState","setRenderDraftState","useState","useLayoutEffect","draft","nextHeaderColumns","nextBodyRowsWithRenderers","nextBodyRows","_render","bodyRow","nextBodyRowRenderers","nextBodyMaxHeight","nextHasFooter","nextHasFooterCells","nextHasExpandableRows","resolvedHeaderColumns","resolvedBodyRows","resolvedBodyMaxHeight","resolvedHasFooter","resolvedHasFooterCells","resolvedHasExpandableRows","renderBodyRow","useCallback"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { RenderHeaderColumn } from '../context/TableRenderContext';
|
|
2
|
+
import { useDraggableColumns } from '../layout/useDraggableColumns';
|
|
3
|
+
import { useResizableColumns } from '../layout/useResizableColumns';
|
|
4
|
+
import { TableColumnDefinition, TableProps, TableRowData } from '../Table.types';
|
|
5
|
+
type UseResolvedRenderColumnsProps<RowType extends TableRowData> = {
|
|
6
|
+
columnOrder: TableProps<RowType>['columnOrder'];
|
|
7
|
+
onColumnOrderChange: TableProps<RowType>['onColumnOrderChange'];
|
|
8
|
+
onColumnResize: TableProps<RowType>['onColumnResize'];
|
|
9
|
+
renderHeaderColumns: RenderHeaderColumn<RowType>[];
|
|
10
|
+
viewType: TableProps<RowType>['viewType'];
|
|
11
|
+
};
|
|
12
|
+
export type UseResolvedRenderColumnsReturn<RowType extends TableRowData> = {
|
|
13
|
+
columnDefinitionsByKey: Map<string, TableColumnDefinition<RowType>>;
|
|
14
|
+
columnIndexByKey: Map<string, number>;
|
|
15
|
+
draggableColumnKeys?: string[];
|
|
16
|
+
draggableColumnsEnabled: boolean;
|
|
17
|
+
handleColumnDragEnd: ReturnType<typeof useDraggableColumns>['handleColumnDragEnd'];
|
|
18
|
+
handleColumnResizeReset: ReturnType<typeof useResizableColumns<RowType>>['handleColumnResizeReset'];
|
|
19
|
+
handleColumnResizeStart: ReturnType<typeof useResizableColumns<RowType>>['handleColumnResizeStart'];
|
|
20
|
+
lastResizableColumnKey?: string;
|
|
21
|
+
resettableColumnKeys: Set<string>;
|
|
22
|
+
renderLeafColumns: RenderHeaderColumn<RowType>[];
|
|
23
|
+
resizeColumnsEnabled: boolean;
|
|
24
|
+
resolvedRenderColumns: RenderHeaderColumn<RowType>[];
|
|
25
|
+
resizedColumns: ReturnType<typeof useResizableColumns<RowType>>['resizedColumns'];
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Resolves the leaf-level table columns that drive layout and column behavior.
|
|
29
|
+
*
|
|
30
|
+
* Header registration can contain grouped header cells, multi-row headers, and
|
|
31
|
+
* other metadata that is useful for rendering, but drag, resize, sticky layout,
|
|
32
|
+
* and body/footer cell placement ultimately need a flat list of leaf columns.
|
|
33
|
+
*
|
|
34
|
+
* This hook therefore:
|
|
35
|
+
* - narrows registered header cells down to leaf columns with a stable `columnKey`
|
|
36
|
+
* - applies column reordering
|
|
37
|
+
* - applies resized widths
|
|
38
|
+
* - exposes a normalized column map for body/footer cell lookup
|
|
39
|
+
*
|
|
40
|
+
* `Table` uses this as the canonical column model for the rest of the render pass.
|
|
41
|
+
*/
|
|
42
|
+
declare const useResolvedRenderColumns: <RowType extends TableRowData>(props: UseResolvedRenderColumnsProps<RowType>) => UseResolvedRenderColumnsReturn<RowType>;
|
|
43
|
+
export default useResolvedRenderColumns;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { useMemo as l } from "react";
|
|
2
|
+
import { useDraggableColumns as x } from "../layout/useDraggableColumns.js";
|
|
3
|
+
import { useResizableColumns as A } from "../layout/useResizableColumns.js";
|
|
4
|
+
const B = (m) => {
|
|
5
|
+
const { columnOrder: g, onColumnOrderChange: C, onColumnResize: y, renderHeaderColumns: t, viewType: d } = m, i = l(
|
|
6
|
+
() => t.flatMap(
|
|
7
|
+
(e) => e.columnKey && e.colSpan === 1 ? [
|
|
8
|
+
{
|
|
9
|
+
...e,
|
|
10
|
+
columnKey: e.columnKey
|
|
11
|
+
}
|
|
12
|
+
] : []
|
|
13
|
+
),
|
|
14
|
+
[t]
|
|
15
|
+
), n = l(
|
|
16
|
+
() => i.map((e) => ({
|
|
17
|
+
key: e.columnKey,
|
|
18
|
+
label: e.columnKey,
|
|
19
|
+
mobileLabel: e.mobileLabel,
|
|
20
|
+
width: e.width,
|
|
21
|
+
minResizeWidth: e.minResizeWidth,
|
|
22
|
+
maxResizeWidth: e.maxResizeWidth,
|
|
23
|
+
draggable: e.draggable,
|
|
24
|
+
resizeable: e.resizeable,
|
|
25
|
+
horizontalAlign: e.horizontalAlign,
|
|
26
|
+
headerClassName: e.headerClassName,
|
|
27
|
+
hideOnMobile: e.hideOnMobile,
|
|
28
|
+
sortable: e.sortable
|
|
29
|
+
})),
|
|
30
|
+
[i]
|
|
31
|
+
), o = d === "TABLE" && n.filter((e) => e.draggable === !0).length > 1, { draggableColumnKeys: R, handleColumnDragEnd: p, orderedColumns: b } = x({
|
|
32
|
+
columns: n,
|
|
33
|
+
columnOrder: g,
|
|
34
|
+
enabled: o,
|
|
35
|
+
onColumnOrderChange: C
|
|
36
|
+
}), h = d === "TABLE" && b.some((e) => e.resizeable === !0), {
|
|
37
|
+
handleColumnResizeReset: K,
|
|
38
|
+
handleColumnResizeStart: f,
|
|
39
|
+
lastResizableColumnKey: M,
|
|
40
|
+
resettableColumnKeys: W,
|
|
41
|
+
resizedColumns: r
|
|
42
|
+
} = A({
|
|
43
|
+
columns: b,
|
|
44
|
+
enabled: h,
|
|
45
|
+
onColumnResize: y
|
|
46
|
+
}), s = l(() => {
|
|
47
|
+
const e = new Map(i.map((a) => [a.columnKey, a]));
|
|
48
|
+
return r.flatMap((a) => {
|
|
49
|
+
const z = e.get(a.key);
|
|
50
|
+
return z ? [
|
|
51
|
+
{
|
|
52
|
+
...z,
|
|
53
|
+
width: a.width,
|
|
54
|
+
minResizeWidth: a.minResizeWidth,
|
|
55
|
+
maxResizeWidth: a.maxResizeWidth,
|
|
56
|
+
draggable: a.draggable,
|
|
57
|
+
resizeable: a.resizeable,
|
|
58
|
+
horizontalAlign: a.horizontalAlign,
|
|
59
|
+
headerClassName: a.headerClassName,
|
|
60
|
+
hideOnMobile: a.hideOnMobile,
|
|
61
|
+
sortable: a.sortable
|
|
62
|
+
}
|
|
63
|
+
] : [];
|
|
64
|
+
});
|
|
65
|
+
}, [i, r]), w = l(
|
|
66
|
+
() => new Map(
|
|
67
|
+
s.map((e) => [
|
|
68
|
+
e.columnKey,
|
|
69
|
+
{
|
|
70
|
+
key: e.columnKey,
|
|
71
|
+
label: e.label,
|
|
72
|
+
mobileLabel: e.mobileLabel,
|
|
73
|
+
icon: e.icon,
|
|
74
|
+
filter: e.filter,
|
|
75
|
+
hideLabel: e.hideLabel,
|
|
76
|
+
width: e.width,
|
|
77
|
+
minResizeWidth: e.minResizeWidth,
|
|
78
|
+
maxResizeWidth: e.maxResizeWidth,
|
|
79
|
+
draggable: e.draggable,
|
|
80
|
+
resizeable: e.resizeable,
|
|
81
|
+
horizontalAlign: e.horizontalAlign,
|
|
82
|
+
className: void 0,
|
|
83
|
+
headerClassName: e.headerClassName,
|
|
84
|
+
hideOnMobile: e.hideOnMobile,
|
|
85
|
+
sortable: e.sortable
|
|
86
|
+
}
|
|
87
|
+
])
|
|
88
|
+
),
|
|
89
|
+
[s]
|
|
90
|
+
), L = l(
|
|
91
|
+
() => new Map(s.map((e, a) => [e.columnKey, a])),
|
|
92
|
+
[s]
|
|
93
|
+
);
|
|
94
|
+
return {
|
|
95
|
+
columnDefinitionsByKey: w,
|
|
96
|
+
columnIndexByKey: L,
|
|
97
|
+
draggableColumnKeys: R,
|
|
98
|
+
draggableColumnsEnabled: o,
|
|
99
|
+
handleColumnDragEnd: p,
|
|
100
|
+
handleColumnResizeReset: K,
|
|
101
|
+
handleColumnResizeStart: f,
|
|
102
|
+
lastResizableColumnKey: M,
|
|
103
|
+
resettableColumnKeys: W,
|
|
104
|
+
renderLeafColumns: i,
|
|
105
|
+
resizeColumnsEnabled: h,
|
|
106
|
+
resolvedRenderColumns: s,
|
|
107
|
+
resizedColumns: r
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
export {
|
|
111
|
+
B as default
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=useResolvedRenderColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResolvedRenderColumns.js","sources":["../../../../src/components/table/runtime/useResolvedRenderColumns.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type { RenderHeaderColumn } from '../context/TableRenderContext';\nimport { useDraggableColumns } from '../layout/useDraggableColumns';\nimport { useResizableColumns } from '../layout/useResizableColumns';\nimport type { TableColumnDefinition, TableProps, TableRowData } from '../Table.types';\n\ntype UseResolvedRenderColumnsProps<RowType extends TableRowData> = {\n columnOrder: TableProps<RowType>['columnOrder'];\n onColumnOrderChange: TableProps<RowType>['onColumnOrderChange'];\n onColumnResize: TableProps<RowType>['onColumnResize'];\n renderHeaderColumns: RenderHeaderColumn<RowType>[];\n viewType: TableProps<RowType>['viewType'];\n};\n\nexport type UseResolvedRenderColumnsReturn<RowType extends TableRowData> = {\n columnDefinitionsByKey: Map<string, TableColumnDefinition<RowType>>;\n columnIndexByKey: Map<string, number>;\n draggableColumnKeys?: string[];\n draggableColumnsEnabled: boolean;\n handleColumnDragEnd: ReturnType<typeof useDraggableColumns>['handleColumnDragEnd'];\n handleColumnResizeReset: ReturnType<typeof useResizableColumns<RowType>>['handleColumnResizeReset'];\n handleColumnResizeStart: ReturnType<typeof useResizableColumns<RowType>>['handleColumnResizeStart'];\n lastResizableColumnKey?: string;\n resettableColumnKeys: Set<string>;\n renderLeafColumns: RenderHeaderColumn<RowType>[];\n resizeColumnsEnabled: boolean;\n resolvedRenderColumns: RenderHeaderColumn<RowType>[];\n resizedColumns: ReturnType<typeof useResizableColumns<RowType>>['resizedColumns'];\n};\n\n/**\n * Resolves the leaf-level table columns that drive layout and column behavior.\n *\n * Header registration can contain grouped header cells, multi-row headers, and\n * other metadata that is useful for rendering, but drag, resize, sticky layout,\n * and body/footer cell placement ultimately need a flat list of leaf columns.\n *\n * This hook therefore:\n * - narrows registered header cells down to leaf columns with a stable `columnKey`\n * - applies column reordering\n * - applies resized widths\n * - exposes a normalized column map for body/footer cell lookup\n *\n * `Table` uses this as the canonical column model for the rest of the render pass.\n */\nconst useResolvedRenderColumns = <RowType extends TableRowData>(\n props: UseResolvedRenderColumnsProps<RowType>\n): UseResolvedRenderColumnsReturn<RowType> => {\n const { columnOrder, onColumnOrderChange, onColumnResize, renderHeaderColumns, viewType } = props;\n\n // Only leaf header cells represent actual data columns. Group headers span\n // other columns and are part of the header layout, but not the column model\n // used by body/footer cells or drag/resize behavior.\n const renderLeafColumns = useMemo(\n () =>\n renderHeaderColumns.flatMap(column =>\n column.columnKey && column.colSpan === 1\n ? [\n {\n ...column,\n columnKey: column.columnKey,\n },\n ]\n : []\n ),\n [renderHeaderColumns]\n );\n\n const baseRenderColumnDefinitions = useMemo(\n () =>\n renderLeafColumns.map(column => ({\n key: column.columnKey,\n label: column.columnKey,\n mobileLabel: column.mobileLabel,\n width: column.width,\n minResizeWidth: column.minResizeWidth,\n maxResizeWidth: column.maxResizeWidth,\n draggable: column.draggable,\n resizeable: column.resizeable,\n horizontalAlign: column.horizontalAlign,\n headerClassName: column.headerClassName,\n hideOnMobile: column.hideOnMobile,\n sortable: column.sortable,\n })),\n [renderLeafColumns]\n );\n\n const draggableColumnsEnabled =\n viewType === 'TABLE' && baseRenderColumnDefinitions.filter(column => column.draggable === true).length > 1;\n const { draggableColumnKeys, handleColumnDragEnd, orderedColumns } = useDraggableColumns({\n columns: baseRenderColumnDefinitions,\n columnOrder,\n enabled: draggableColumnsEnabled,\n onColumnOrderChange,\n });\n\n const resizeColumnsEnabled = viewType === 'TABLE' && orderedColumns.some(column => column.resizeable === true);\n const {\n handleColumnResizeReset,\n handleColumnResizeStart,\n lastResizableColumnKey,\n resettableColumnKeys,\n resizedColumns,\n } = useResizableColumns({\n columns: orderedColumns,\n enabled: resizeColumnsEnabled,\n onColumnResize,\n });\n\n // Merge reordered/resized column behavior back into the registered leaf\n // columns so the rest of the table can render from one normalized shape.\n const resolvedRenderColumns = useMemo(() => {\n const renderColumnsByKey = new Map(renderLeafColumns.map(column => [column.columnKey, column] as const));\n\n return resizedColumns.flatMap(column => {\n const renderColumn = renderColumnsByKey.get(column.key);\n\n return renderColumn\n ? [\n {\n ...renderColumn,\n width: column.width,\n minResizeWidth: column.minResizeWidth,\n maxResizeWidth: column.maxResizeWidth,\n draggable: column.draggable,\n resizeable: column.resizeable,\n horizontalAlign: column.horizontalAlign,\n headerClassName: column.headerClassName,\n hideOnMobile: column.hideOnMobile,\n sortable: column.sortable,\n },\n ]\n : [];\n });\n }, [renderLeafColumns, resizedColumns]);\n\n // Body and footer cells resolve their column metadata by `columnKey`, so keep\n // an efficient lookup map next to the ordered column array.\n const columnDefinitionsByKey = useMemo(\n () =>\n new Map<string, TableColumnDefinition<RowType>>(\n resolvedRenderColumns.map(column => [\n column.columnKey,\n {\n key: column.columnKey,\n label: column.label,\n mobileLabel: column.mobileLabel,\n icon: column.icon,\n filter: column.filter,\n hideLabel: column.hideLabel,\n width: column.width,\n minResizeWidth: column.minResizeWidth,\n maxResizeWidth: column.maxResizeWidth,\n draggable: column.draggable,\n resizeable: column.resizeable,\n horizontalAlign: column.horizontalAlign,\n className: undefined,\n headerClassName: column.headerClassName,\n hideOnMobile: column.hideOnMobile,\n sortable: column.sortable,\n },\n ])\n ),\n [resolvedRenderColumns]\n );\n const columnIndexByKey = useMemo(\n () => new Map(resolvedRenderColumns.map((column, index) => [column.columnKey, index] as const)),\n [resolvedRenderColumns]\n );\n\n return {\n columnDefinitionsByKey,\n columnIndexByKey,\n draggableColumnKeys,\n draggableColumnsEnabled,\n handleColumnDragEnd,\n handleColumnResizeReset,\n handleColumnResizeStart,\n lastResizableColumnKey,\n resettableColumnKeys,\n renderLeafColumns,\n resizeColumnsEnabled,\n resolvedRenderColumns,\n resizedColumns,\n };\n};\n\nexport default useResolvedRenderColumns;\n"],"names":["useResolvedRenderColumns","props","columnOrder","onColumnOrderChange","onColumnResize","renderHeaderColumns","viewType","renderLeafColumns","useMemo","column","baseRenderColumnDefinitions","draggableColumnsEnabled","draggableColumnKeys","handleColumnDragEnd","orderedColumns","useDraggableColumns","resizeColumnsEnabled","handleColumnResizeReset","handleColumnResizeStart","lastResizableColumnKey","resettableColumnKeys","resizedColumns","useResizableColumns","resolvedRenderColumns","renderColumnsByKey","renderColumn","columnDefinitionsByKey","columnIndexByKey","index"],"mappings":";;;AA8CA,MAAMA,IAA2B,CAC7BC,MAC0C;AAC1C,QAAM,EAAE,aAAAC,GAAa,qBAAAC,GAAqB,gBAAAC,GAAgB,qBAAAC,GAAqB,UAAAC,MAAaL,GAKtFM,IAAoBC;AAAA,IACtB,MACIH,EAAoB;AAAA,MAAQ,CAAAI,MACxBA,EAAO,aAAaA,EAAO,YAAY,IACjC;AAAA,QACI;AAAA,UACI,GAAGA;AAAA,UACH,WAAWA,EAAO;AAAA,QAAA;AAAA,MACtB,IAEJ,CAAA;AAAA,IAAC;AAAA,IAEf,CAACJ,CAAmB;AAAA,EAAA,GAGlBK,IAA8BF;AAAA,IAChC,MACID,EAAkB,IAAI,CAAAE,OAAW;AAAA,MAC7B,KAAKA,EAAO;AAAA,MACZ,OAAOA,EAAO;AAAA,MACd,aAAaA,EAAO;AAAA,MACpB,OAAOA,EAAO;AAAA,MACd,gBAAgBA,EAAO;AAAA,MACvB,gBAAgBA,EAAO;AAAA,MACvB,WAAWA,EAAO;AAAA,MAClB,YAAYA,EAAO;AAAA,MACnB,iBAAiBA,EAAO;AAAA,MACxB,iBAAiBA,EAAO;AAAA,MACxB,cAAcA,EAAO;AAAA,MACrB,UAAUA,EAAO;AAAA,IAAA,EACnB;AAAA,IACN,CAACF,CAAiB;AAAA,EAAA,GAGhBI,IACFL,MAAa,WAAWI,EAA4B,OAAO,OAAUD,EAAO,cAAc,EAAI,EAAE,SAAS,GACvG,EAAE,qBAAAG,GAAqB,qBAAAC,GAAqB,gBAAAC,EAAA,IAAmBC,EAAoB;AAAA,IACrF,SAASL;AAAA,IACT,aAAAR;AAAA,IACA,SAASS;AAAA,IACT,qBAAAR;AAAA,EAAA,CACH,GAEKa,IAAuBV,MAAa,WAAWQ,EAAe,KAAK,CAAAL,MAAUA,EAAO,eAAe,EAAI,GACvG;AAAA,IACF,yBAAAQ;AAAA,IACA,yBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,IACAC,EAAoB;AAAA,IACpB,SAASR;AAAA,IACT,SAASE;AAAA,IACT,gBAAAZ;AAAA,EAAA,CACH,GAIKmB,IAAwBf,EAAQ,MAAM;AACxC,UAAMgB,IAAqB,IAAI,IAAIjB,EAAkB,IAAI,CAAAE,MAAU,CAACA,EAAO,WAAWA,CAAM,CAAU,CAAC;AAEvG,WAAOY,EAAe,QAAQ,CAAAZ,MAAU;AACpC,YAAMgB,IAAeD,EAAmB,IAAIf,EAAO,GAAG;AAEtD,aAAOgB,IACD;AAAA,QACI;AAAA,UACI,GAAGA;AAAA,UACH,OAAOhB,EAAO;AAAA,UACd,gBAAgBA,EAAO;AAAA,UACvB,gBAAgBA,EAAO;AAAA,UACvB,WAAWA,EAAO;AAAA,UAClB,YAAYA,EAAO;AAAA,UACnB,iBAAiBA,EAAO;AAAA,UACxB,iBAAiBA,EAAO;AAAA,UACxB,cAAcA,EAAO;AAAA,UACrB,UAAUA,EAAO;AAAA,QAAA;AAAA,MACrB,IAEJ,CAAA;AAAA,IACV,CAAC;AAAA,EACL,GAAG,CAACF,GAAmBc,CAAc,CAAC,GAIhCK,IAAyBlB;AAAA,IAC3B,MACI,IAAI;AAAA,MACAe,EAAsB,IAAI,CAAAd,MAAU;AAAA,QAChCA,EAAO;AAAA,QACP;AAAA,UACI,KAAKA,EAAO;AAAA,UACZ,OAAOA,EAAO;AAAA,UACd,aAAaA,EAAO;AAAA,UACpB,MAAMA,EAAO;AAAA,UACb,QAAQA,EAAO;AAAA,UACf,WAAWA,EAAO;AAAA,UAClB,OAAOA,EAAO;AAAA,UACd,gBAAgBA,EAAO;AAAA,UACvB,gBAAgBA,EAAO;AAAA,UACvB,WAAWA,EAAO;AAAA,UAClB,YAAYA,EAAO;AAAA,UACnB,iBAAiBA,EAAO;AAAA,UACxB,WAAW;AAAA,UACX,iBAAiBA,EAAO;AAAA,UACxB,cAAcA,EAAO;AAAA,UACrB,UAAUA,EAAO;AAAA,QAAA;AAAA,MACrB,CACH;AAAA,IAAA;AAAA,IAET,CAACc,CAAqB;AAAA,EAAA,GAEpBI,IAAmBnB;AAAA,IACrB,MAAM,IAAI,IAAIe,EAAsB,IAAI,CAACd,GAAQmB,MAAU,CAACnB,EAAO,WAAWmB,CAAK,CAAU,CAAC;AAAA,IAC9F,CAACL,CAAqB;AAAA,EAAA;AAG1B,SAAO;AAAA,IACH,wBAAAG;AAAA,IACA,kBAAAC;AAAA,IACA,qBAAAf;AAAA,IACA,yBAAAD;AAAA,IACA,qBAAAE;AAAA,IACA,yBAAAI;AAAA,IACA,yBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,mBAAAb;AAAA,IACA,sBAAAS;AAAA,IACA,uBAAAO;AAAA,IACA,gBAAAF;AAAA,EAAA;AAER;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RenderHeaderColumn } from '../context/TableRenderContext';
|
|
2
|
+
import { TableViewHeader } from '../model/tableView.types';
|
|
3
|
+
import { TableRowData, TableSortDirection } from '../Table.types';
|
|
4
|
+
type UseResolvedRenderHeaderProps<RowType extends TableRowData> = {
|
|
5
|
+
renderHeaderColumns: RenderHeaderColumn<RowType>[];
|
|
6
|
+
resolvedRenderColumns: RenderHeaderColumn<RowType>[];
|
|
7
|
+
sortBy?: string | string[];
|
|
8
|
+
sortDirection?: TableSortDirection;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Builds the normalized header layout from registered header cells and the
|
|
12
|
+
* already-resolved leaf columns.
|
|
13
|
+
*
|
|
14
|
+
* `useResolvedRenderColumns(...)` decides which columns actually exist after
|
|
15
|
+
* reorder/resize behavior. This hook takes that flat column model plus the
|
|
16
|
+
* registered header cells and computes the final header grid:
|
|
17
|
+
* - row count
|
|
18
|
+
* - column start positions
|
|
19
|
+
* - row/column spans
|
|
20
|
+
* - sortable state for the active sort key
|
|
21
|
+
* - `source` metadata for downstream header/cell consumers
|
|
22
|
+
*
|
|
23
|
+
* The result is a stable header view model that `TableHeader` can render
|
|
24
|
+
* without repeating placement logic.
|
|
25
|
+
*/
|
|
26
|
+
declare const useResolvedRenderHeader: <RowType extends TableRowData>(props: UseResolvedRenderHeaderProps<RowType>) => TableViewHeader<RowType> | undefined;
|
|
27
|
+
export default useResolvedRenderHeader;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { useMemo as f } from "react";
|
|
2
|
+
const z = (g) => {
|
|
3
|
+
const { renderHeaderColumns: i, resolvedRenderColumns: a, sortBy: l, sortDirection: h } = g;
|
|
4
|
+
return f(() => {
|
|
5
|
+
if (i.length === 0 || a.length === 0)
|
|
6
|
+
return;
|
|
7
|
+
const y = new Set(Array.isArray(l) ? l : l ? [l] : []), b = Math.max(...i.map((e) => e.row + e.rowSpan - 1), 1), d = Array.from({ length: b }, () => Array(a.length).fill(!1)), c = new Map(
|
|
8
|
+
a.map((e) => [e.columnKey, e])
|
|
9
|
+
), m = new Map(
|
|
10
|
+
a.map((e, r) => [e.columnKey, r + 1])
|
|
11
|
+
), w = (e, r) => {
|
|
12
|
+
for (let o = 1; o <= a.length - r + 1; o += 1)
|
|
13
|
+
if (d[e - 1]?.slice(o - 1, o - 1 + r).every((t) => !t))
|
|
14
|
+
return o;
|
|
15
|
+
return 1;
|
|
16
|
+
}, p = i.map((e) => {
|
|
17
|
+
const r = e.columnKey ? c.get(e.columnKey) : void 0, o = r?.columnKey ? {
|
|
18
|
+
key: r.columnKey,
|
|
19
|
+
label: r.label,
|
|
20
|
+
width: r.width,
|
|
21
|
+
mobileLabel: r.mobileLabel,
|
|
22
|
+
horizontalAlign: r.horizontalAlign,
|
|
23
|
+
headerClassName: r.headerClassName,
|
|
24
|
+
hideOnMobile: r.hideOnMobile,
|
|
25
|
+
sortable: r.sortable,
|
|
26
|
+
draggable: r.draggable,
|
|
27
|
+
resizeable: r.resizeable,
|
|
28
|
+
minResizeWidth: r.minResizeWidth,
|
|
29
|
+
maxResizeWidth: r.maxResizeWidth
|
|
30
|
+
} : void 0, n = r ? m.get(r.columnKey) ?? 1 : w(e.row, e.colSpan);
|
|
31
|
+
for (let t = e.row - 1; t < e.row - 1 + e.rowSpan; t += 1)
|
|
32
|
+
for (let s = n - 1; s < n - 1 + e.colSpan; s += 1)
|
|
33
|
+
d[t]?.[s] !== void 0 && (d[t][s] = !0);
|
|
34
|
+
return {
|
|
35
|
+
key: e.id,
|
|
36
|
+
columnKey: e.columnKey,
|
|
37
|
+
label: e.label,
|
|
38
|
+
icon: e.icon,
|
|
39
|
+
filter: e.filter,
|
|
40
|
+
hideLabel: e.hideLabel,
|
|
41
|
+
horizontalAlign: r?.horizontalAlign ?? e.horizontalAlign,
|
|
42
|
+
verticalAlign: r?.verticalAlign ?? e.verticalAlign,
|
|
43
|
+
className: void 0,
|
|
44
|
+
headerClassName: r?.headerClassName ?? e.headerClassName,
|
|
45
|
+
hideOnMobile: r?.hideOnMobile ?? e.hideOnMobile,
|
|
46
|
+
draggable: r?.draggable ?? e.draggable,
|
|
47
|
+
resizeable: r?.resizeable ?? e.resizeable,
|
|
48
|
+
sortable: r?.sortable ?? e.sortable,
|
|
49
|
+
sortDirection: e.columnKey && y.has(e.columnKey) ? h : void 0,
|
|
50
|
+
rowStart: e.row,
|
|
51
|
+
rowSpan: e.rowSpan,
|
|
52
|
+
columnStart: n,
|
|
53
|
+
colSpan: e.colSpan,
|
|
54
|
+
source: o
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
rowCount: b,
|
|
59
|
+
totalColumnCount: a.length,
|
|
60
|
+
columns: p
|
|
61
|
+
};
|
|
62
|
+
}, [i, a, l, h]);
|
|
63
|
+
};
|
|
64
|
+
export {
|
|
65
|
+
z as default
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=useResolvedRenderHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResolvedRenderHeader.js","sources":["../../../../src/components/table/runtime/useResolvedRenderHeader.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type { RenderHeaderColumn } from '../context/TableRenderContext';\nimport type { TableViewHeader } from '../model/tableView.types';\nimport type { TableColumnDefinition, TableRowData, TableSortDirection } from '../Table.types';\n\ntype UseResolvedRenderHeaderProps<RowType extends TableRowData> = {\n renderHeaderColumns: RenderHeaderColumn<RowType>[];\n resolvedRenderColumns: RenderHeaderColumn<RowType>[];\n sortBy?: string | string[];\n sortDirection?: TableSortDirection;\n};\n\n/**\n * Builds the normalized header layout from registered header cells and the\n * already-resolved leaf columns.\n *\n * `useResolvedRenderColumns(...)` decides which columns actually exist after\n * reorder/resize behavior. This hook takes that flat column model plus the\n * registered header cells and computes the final header grid:\n * - row count\n * - column start positions\n * - row/column spans\n * - sortable state for the active sort key\n * - `source` metadata for downstream header/cell consumers\n *\n * The result is a stable header view model that `TableHeader` can render\n * without repeating placement logic.\n */\nconst useResolvedRenderHeader = <RowType extends TableRowData>(\n props: UseResolvedRenderHeaderProps<RowType>\n): TableViewHeader<RowType> | undefined => {\n const { renderHeaderColumns, resolvedRenderColumns, sortBy, sortDirection } = props;\n\n return useMemo<TableViewHeader<RowType> | undefined>(() => {\n if (renderHeaderColumns.length === 0 || resolvedRenderColumns.length === 0) {\n return;\n }\n\n const sortedColumnKeys = new Set(Array.isArray(sortBy) ? sortBy : sortBy ? [sortBy] : []);\n const rowCount = Math.max(...renderHeaderColumns.map(column => column.row + column.rowSpan - 1), 1);\n const occupied = Array.from({ length: rowCount }, () => Array(resolvedRenderColumns.length).fill(false));\n const resolvedRenderColumnsByKey = new Map(\n resolvedRenderColumns.map(column => [column.columnKey, column] as const)\n );\n const columnStartByKey = new Map(\n resolvedRenderColumns.map((column, index) => [column.columnKey, index + 1] as const)\n );\n\n // Group headers without a direct `columnKey` still need a column start.\n // Find the next free slot by walking the occupied grid from left to right.\n const findColumnStart = (rowStart: number, colSpan: number) => {\n for (let candidate = 1; candidate <= resolvedRenderColumns.length - colSpan + 1; candidate += 1) {\n const hasFreeSlot = occupied[rowStart - 1]\n ?.slice(candidate - 1, candidate - 1 + colSpan)\n .every(isUsed => !isUsed);\n\n if (hasFreeSlot) {\n return candidate;\n }\n }\n\n return 1;\n };\n\n const columns = renderHeaderColumns.map(column => {\n const resolvedRenderColumn = column.columnKey\n ? resolvedRenderColumnsByKey.get(column.columnKey)\n : undefined;\n const sourceColumnDefinition: TableColumnDefinition<RowType> | undefined = resolvedRenderColumn?.columnKey\n ? {\n key: resolvedRenderColumn.columnKey,\n label: resolvedRenderColumn.label,\n width: resolvedRenderColumn.width,\n mobileLabel: resolvedRenderColumn.mobileLabel,\n horizontalAlign: resolvedRenderColumn.horizontalAlign,\n headerClassName: resolvedRenderColumn.headerClassName,\n hideOnMobile: resolvedRenderColumn.hideOnMobile,\n sortable: resolvedRenderColumn.sortable,\n draggable: resolvedRenderColumn.draggable,\n resizeable: resolvedRenderColumn.resizeable,\n minResizeWidth: resolvedRenderColumn.minResizeWidth,\n maxResizeWidth: resolvedRenderColumn.maxResizeWidth,\n }\n : undefined;\n const columnStart = resolvedRenderColumn\n ? (columnStartByKey.get(resolvedRenderColumn.columnKey) ?? 1)\n : findColumnStart(column.row, column.colSpan);\n\n // Mark the occupied grid so following grouped header cells can find\n // the next free placement slot in multi-row header layouts.\n for (let rowIndex = column.row - 1; rowIndex < column.row - 1 + column.rowSpan; rowIndex += 1) {\n for (\n let columnIndex = columnStart - 1;\n columnIndex < columnStart - 1 + column.colSpan;\n columnIndex += 1\n ) {\n if (occupied[rowIndex]?.[columnIndex] !== undefined) {\n occupied[rowIndex][columnIndex] = true;\n }\n }\n }\n\n return {\n key: column.id,\n columnKey: column.columnKey,\n label: column.label,\n icon: column.icon,\n filter: column.filter,\n hideLabel: column.hideLabel,\n horizontalAlign: resolvedRenderColumn?.horizontalAlign ?? column.horizontalAlign,\n verticalAlign: resolvedRenderColumn?.verticalAlign ?? column.verticalAlign,\n className: undefined,\n headerClassName: resolvedRenderColumn?.headerClassName ?? column.headerClassName,\n hideOnMobile: resolvedRenderColumn?.hideOnMobile ?? column.hideOnMobile,\n draggable: resolvedRenderColumn?.draggable ?? column.draggable,\n resizeable: resolvedRenderColumn?.resizeable ?? column.resizeable,\n sortable: resolvedRenderColumn?.sortable ?? column.sortable,\n sortDirection: column.columnKey && sortedColumnKeys.has(column.columnKey) ? sortDirection : undefined,\n rowStart: column.row,\n rowSpan: column.rowSpan,\n columnStart,\n colSpan: column.colSpan,\n source: sourceColumnDefinition,\n };\n });\n\n return {\n rowCount,\n totalColumnCount: resolvedRenderColumns.length,\n columns,\n };\n }, [renderHeaderColumns, resolvedRenderColumns, sortBy, sortDirection]);\n};\n\nexport default useResolvedRenderHeader;\n"],"names":["useResolvedRenderHeader","props","renderHeaderColumns","resolvedRenderColumns","sortBy","sortDirection","useMemo","sortedColumnKeys","rowCount","column","occupied","resolvedRenderColumnsByKey","columnStartByKey","index","findColumnStart","rowStart","colSpan","candidate","isUsed","columns","resolvedRenderColumn","sourceColumnDefinition","columnStart","rowIndex","columnIndex"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RenderBodyRow } from '../context/TableRenderContext';
|
|
2
|
+
import { TableRowData, TableRowId } from '../Table.types';
|
|
3
|
+
type UseInternalTableSelectionStateOptions<RowType extends TableRowData> = {
|
|
4
|
+
bodyRows: RenderBodyRow<RowType>[];
|
|
5
|
+
selectedRowIds?: TableRowId[];
|
|
6
|
+
onSelectionChange?: (rowIds: TableRowId[]) => void;
|
|
7
|
+
};
|
|
8
|
+
type UseInternalTableSelectionStateReturn = {
|
|
9
|
+
currentSelectedRowIds: TableRowId[];
|
|
10
|
+
selectedRowIdSet: Set<TableRowId>;
|
|
11
|
+
isAllRowsSelected: boolean;
|
|
12
|
+
isSomeRowsSelected: boolean;
|
|
13
|
+
handleToggleAllSelection: () => void;
|
|
14
|
+
handleToggleRowSelection: (rowId: TableRowId) => void;
|
|
15
|
+
};
|
|
16
|
+
declare const useInternalTableSelectionState: <RowType extends TableRowData>(props: UseInternalTableSelectionStateOptions<RowType>) => UseInternalTableSelectionStateReturn;
|
|
17
|
+
export default useInternalTableSelectionState;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useMemo as o } from "react";
|
|
2
|
+
const f = (r) => {
|
|
3
|
+
const { bodyRows: c, selectedRowIds: w, onSelectionChange: n } = r, l = o(
|
|
4
|
+
() => c.filter((e) => e.kind === "data" && !e.disabled).map((e) => e.rowId),
|
|
5
|
+
[c]
|
|
6
|
+
), d = o(() => new Set(l), [l]), t = w ?? [], a = o(() => new Set(t), [t]), S = o(
|
|
7
|
+
() => t.filter((e) => d.has(e)),
|
|
8
|
+
[t, d]
|
|
9
|
+
), i = o(() => new Set(S), [S]), s = l.length > 0 && l.every((e) => i.has(e)), R = i.size > 0 && !s;
|
|
10
|
+
return {
|
|
11
|
+
currentSelectedRowIds: t,
|
|
12
|
+
selectedRowIdSet: a,
|
|
13
|
+
isAllRowsSelected: s,
|
|
14
|
+
isSomeRowsSelected: R,
|
|
15
|
+
handleToggleAllSelection: () => {
|
|
16
|
+
n?.(s ? [] : l);
|
|
17
|
+
},
|
|
18
|
+
handleToggleRowSelection: (e) => {
|
|
19
|
+
n && n(
|
|
20
|
+
a.has(e) ? t.filter((g) => g !== e) : [...t, e]
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
f as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=useInternalTableSelectionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInternalTableSelectionState.js","sources":["../../../../src/components/table/selection/useInternalTableSelectionState.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type { RenderBodyRow } from '../context/TableRenderContext';\nimport type { TableRowData, TableRowId } from '../Table.types';\n\ntype UseInternalTableSelectionStateOptions<RowType extends TableRowData> = {\n bodyRows: RenderBodyRow<RowType>[];\n selectedRowIds?: TableRowId[];\n onSelectionChange?: (rowIds: TableRowId[]) => void;\n};\n\ntype UseInternalTableSelectionStateReturn = {\n currentSelectedRowIds: TableRowId[];\n selectedRowIdSet: Set<TableRowId>;\n isAllRowsSelected: boolean;\n isSomeRowsSelected: boolean;\n handleToggleAllSelection: () => void;\n handleToggleRowSelection: (rowId: TableRowId) => void;\n};\n\nconst useInternalTableSelectionState = <RowType extends TableRowData>(\n props: UseInternalTableSelectionStateOptions<RowType>\n): UseInternalTableSelectionStateReturn => {\n const { bodyRows, selectedRowIds, onSelectionChange } = props;\n\n const selectableRowIds = useMemo(\n () => bodyRows.filter(row => row.kind === 'data' && !row.disabled).map(row => row.rowId),\n [bodyRows]\n );\n const selectableRowIdSet = useMemo(() => new Set(selectableRowIds), [selectableRowIds]);\n const currentSelectedRowIds = selectedRowIds ?? [];\n const selectedRowIdSet = useMemo(() => new Set(currentSelectedRowIds), [currentSelectedRowIds]);\n const normalizedSelectedRowIds = useMemo(\n () => currentSelectedRowIds.filter(rowId => selectableRowIdSet.has(rowId)),\n [currentSelectedRowIds, selectableRowIdSet]\n );\n const normalizedSelectedRowIdSet = useMemo(() => new Set(normalizedSelectedRowIds), [normalizedSelectedRowIds]);\n\n const isAllRowsSelected =\n selectableRowIds.length > 0 && selectableRowIds.every(rowId => normalizedSelectedRowIdSet.has(rowId));\n const isSomeRowsSelected = normalizedSelectedRowIdSet.size > 0 && !isAllRowsSelected;\n\n const handleToggleAllSelection = () => {\n onSelectionChange?.(isAllRowsSelected ? [] : selectableRowIds);\n };\n\n const handleToggleRowSelection = (rowId: TableRowId) => {\n if (!onSelectionChange) {\n return;\n }\n\n onSelectionChange(\n selectedRowIdSet.has(rowId)\n ? currentSelectedRowIds.filter(selectedRowId => selectedRowId !== rowId)\n : [...currentSelectedRowIds, rowId]\n );\n };\n\n return {\n currentSelectedRowIds,\n selectedRowIdSet,\n isAllRowsSelected,\n isSomeRowsSelected,\n handleToggleAllSelection,\n handleToggleRowSelection,\n };\n};\n\nexport default useInternalTableSelectionState;\n"],"names":["useInternalTableSelectionState","props","bodyRows","selectedRowIds","onSelectionChange","selectableRowIds","useMemo","row","selectableRowIdSet","currentSelectedRowIds","selectedRowIdSet","normalizedSelectedRowIds","rowId","normalizedSelectedRowIdSet","isAllRowsSelected","isSomeRowsSelected","selectedRowId"],"mappings":";AAoBA,MAAMA,IAAiC,CACnCC,MACuC;AACvC,QAAM,EAAE,UAAAC,GAAU,gBAAAC,GAAgB,mBAAAC,EAAA,IAAsBH,GAElDI,IAAmBC;AAAA,IACrB,MAAMJ,EAAS,OAAO,CAAAK,MAAOA,EAAI,SAAS,UAAU,CAACA,EAAI,QAAQ,EAAE,IAAI,CAAAA,MAAOA,EAAI,KAAK;AAAA,IACvF,CAACL,CAAQ;AAAA,EAAA,GAEPM,IAAqBF,EAAQ,MAAM,IAAI,IAAID,CAAgB,GAAG,CAACA,CAAgB,CAAC,GAChFI,IAAwBN,KAAkB,CAAA,GAC1CO,IAAmBJ,EAAQ,MAAM,IAAI,IAAIG,CAAqB,GAAG,CAACA,CAAqB,CAAC,GACxFE,IAA2BL;AAAA,IAC7B,MAAMG,EAAsB,OAAO,OAASD,EAAmB,IAAII,CAAK,CAAC;AAAA,IACzE,CAACH,GAAuBD,CAAkB;AAAA,EAAA,GAExCK,IAA6BP,EAAQ,MAAM,IAAI,IAAIK,CAAwB,GAAG,CAACA,CAAwB,CAAC,GAExGG,IACFT,EAAiB,SAAS,KAAKA,EAAiB,MAAM,CAAAO,MAASC,EAA2B,IAAID,CAAK,CAAC,GAClGG,IAAqBF,EAA2B,OAAO,KAAK,CAACC;AAkBnE,SAAO;AAAA,IACH,uBAAAL;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAI;AAAA,IACA,oBAAAC;AAAA,IACA,0BArB6B,MAAM;AACnC,MAAAX,IAAoBU,IAAoB,CAAA,IAAKT,CAAgB;AAAA,IACjE;AAAA,IAoBI,0BAlB6B,CAACO,MAAsB;AACpD,MAAKR,KAILA;AAAA,QACIM,EAAiB,IAAIE,CAAK,IACpBH,EAAsB,OAAO,CAAAO,MAAiBA,MAAkBJ,CAAK,IACrE,CAAC,GAAGH,GAAuBG,CAAK;AAAA,MAAA;AAAA,IAE9C;AAAA,EAQI;AAER;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { TableRowData, TableRowId } from '../Table.types';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for `useTableSelection`.
|
|
4
|
+
*/
|
|
5
|
+
export type UseTableSelectionOptions<RowType extends TableRowData> = {
|
|
6
|
+
/**
|
|
7
|
+
* Data rows that participate in active-row and selection state.
|
|
8
|
+
*/
|
|
9
|
+
rows: RowType[];
|
|
10
|
+
/**
|
|
11
|
+
* Optional key accessor used to derive stable row ids.
|
|
12
|
+
*
|
|
13
|
+
* If omitted, the row index is used as a fallback.
|
|
14
|
+
*/
|
|
15
|
+
rowKey?: keyof RowType | ((row: RowType, rowIndex: number) => TableRowId);
|
|
16
|
+
/**
|
|
17
|
+
* Optional initially active row id.
|
|
18
|
+
*/
|
|
19
|
+
initialActiveRowId?: TableRowId;
|
|
20
|
+
/**
|
|
21
|
+
* Optional initially selected row ids.
|
|
22
|
+
*/
|
|
23
|
+
initialSelectedRowIds?: TableRowId[];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Selection and active-row state returned by `useTableSelection`.
|
|
27
|
+
*/
|
|
28
|
+
export type UseTableSelectionReturn = {
|
|
29
|
+
/**
|
|
30
|
+
* Currently active row id.
|
|
31
|
+
*/
|
|
32
|
+
activeRowId?: TableRowId;
|
|
33
|
+
/**
|
|
34
|
+
* Currently selected row ids.
|
|
35
|
+
*/
|
|
36
|
+
selectedRowIds: TableRowId[];
|
|
37
|
+
/**
|
|
38
|
+
* Whether at least one row is currently selected.
|
|
39
|
+
*/
|
|
40
|
+
hasSelection: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether all current rows are selected.
|
|
43
|
+
*/
|
|
44
|
+
isAllSelected: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Checks whether a given row id is currently selected.
|
|
47
|
+
*/
|
|
48
|
+
isRowSelected: (rowId: TableRowId) => boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Sets the current active row id.
|
|
51
|
+
*/
|
|
52
|
+
setActiveRowId: (rowId: TableRowId | undefined) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Replaces the current selection with the provided row ids.
|
|
55
|
+
*/
|
|
56
|
+
setSelectedRowIds: (rowIds: TableRowId[]) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Toggles selection state for a single row id.
|
|
59
|
+
*/
|
|
60
|
+
toggleRowSelection: (rowId: TableRowId) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Selects or deselects all current rows.
|
|
63
|
+
*
|
|
64
|
+
* If `shouldSelect` is omitted, the hook toggles based on the current
|
|
65
|
+
* all-selected state.
|
|
66
|
+
*/
|
|
67
|
+
toggleAllSelection: (shouldSelect?: boolean) => void;
|
|
68
|
+
/**
|
|
69
|
+
* Clears the current selection.
|
|
70
|
+
*/
|
|
71
|
+
clearSelection: () => void;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Small helper hook for controlled table demos and simple table integrations
|
|
75
|
+
* that need active-row state plus checkbox selection state.
|
|
76
|
+
*
|
|
77
|
+
* The hook derives stable row ids from `rows` and `rowKey`, keeps the active
|
|
78
|
+
* row and selection in sync when rows change, and provides convenience helpers
|
|
79
|
+
* for single-row and all-row toggling.
|
|
80
|
+
*/
|
|
81
|
+
declare const useTableSelection: <RowType extends TableRowData>(props: UseTableSelectionOptions<RowType>) => UseTableSelectionReturn;
|
|
82
|
+
export default useTableSelection;
|