@rio-cloud/rio-uikit 2.2.0 → 2.3.0-beta.1
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/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/TableSettingsDialog.d.ts +2 -2
- package/TableSettingsDialog.js +1 -1
- package/TableToolbar.js +3 -2
- 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/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/checkbox/Checkbox.js +18 -17
- package/components/checkbox/Checkbox.js.map +1 -1
- package/components/datepicker/DateRangePicker.js +0 -2
- package/components/datepicker/DateRangePicker.js.map +1 -1
- package/components/datepicker/DayPicker.js +16 -16
- package/components/datepicker/DayPicker.js.map +1 -1
- 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/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 +1 -1
- 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/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/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 +4 -4
- package/components/popover/Popover.js.map +1 -1
- package/components/resizer/Resizer.js +6 -3
- package/components/resizer/Resizer.js.map +1 -1
- package/components/selects/BaseSelectDropdown.js +34 -32
- package/components/selects/BaseSelectDropdown.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/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 +267 -0
- package/components/table/Table.js +233 -0
- package/components/table/Table.js.map +1 -0
- package/components/table/Table.types.d.ts +207 -0
- package/components/table/TableBody.d.ts +10 -0
- package/components/table/TableBody.js +5 -0
- package/components/table/TableBody.js.map +1 -0
- package/components/table/TableCard.d.ts +63 -0
- package/components/table/TableCard.js +150 -0
- package/components/table/TableCard.js.map +1 -0
- package/components/table/TableColumn.d.ts +47 -0
- package/components/table/TableColumn.js +5 -0
- package/components/table/TableColumn.js.map +1 -0
- package/components/table/TableExpandedContentRow.d.ts +22 -0
- package/components/table/TableExpandedContentRow.js +5 -0
- package/components/table/TableExpandedContentRow.js.map +1 -0
- package/components/table/TableExpandedRow.d.ts +17 -0
- package/components/table/TableExpandedRow.js +5 -0
- package/components/table/TableExpandedRow.js.map +1 -0
- package/components/table/TableExpanderButton.d.ts +25 -0
- package/components/table/TableExpanderButton.js +22 -0
- package/components/table/TableExpanderButton.js.map +1 -0
- package/components/table/TableFooter.d.ts +13 -0
- package/components/table/TableFooter.js +5 -0
- package/components/table/TableFooter.js.map +1 -0
- package/components/table/TableGroupFooterRow.d.ts +18 -0
- package/components/table/TableGroupFooterRow.js +5 -0
- package/components/table/TableGroupFooterRow.js.map +1 -0
- package/components/table/TableGroupRow.d.ts +24 -0
- package/components/table/TableGroupRow.js +5 -0
- package/components/table/TableGroupRow.js.map +1 -0
- package/components/table/TableHeader.d.ts +9 -0
- package/components/table/TableHeader.js +5 -0
- package/components/table/TableHeader.js.map +1 -0
- package/components/table/TableHeaderColumn.d.ts +70 -0
- package/components/table/TableHeaderColumn.js +5 -0
- package/components/table/TableHeaderColumn.js.map +1 -0
- package/components/table/TableHeaderRow.d.ts +9 -0
- package/components/table/TableHeaderRow.js +5 -0
- package/components/table/TableHeaderRow.js.map +1 -0
- package/components/table/TableRow.d.ts +19 -0
- package/components/table/TableRow.js +5 -0
- package/components/table/TableRow.js.map +1 -0
- package/components/table/TableSpacerRow.d.ts +12 -0
- package/components/table/TableSpacerRow.js +5 -0
- package/components/table/TableSpacerRow.js.map +1 -0
- package/components/table/TableToolbar.d.ts +23 -1
- package/components/table/TableToolbar.js +38 -4
- package/components/table/TableToolbar.js.map +1 -1
- package/components/table/TableViewToggles.d.ts +18 -0
- package/components/table/TableViewToggles.js +59 -87
- package/components/table/TableViewToggles.js.map +1 -1
- 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 +11 -0
- package/components/table/layout/useHorizontalSectionSync.js +39 -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 +14 -0
- package/components/table/layout/useResizableColumns.js +91 -0
- package/components/table/layout/useResizableColumns.js.map +1 -0
- package/components/table/layout/useTableLayout.d.ts +25 -0
- package/components/table/layout/useTableLayout.js +56 -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/buildTableViewModel.d.ts +28 -0
- package/components/table/model/buildTableViewModel.js +221 -0
- package/components/table/model/buildTableViewModel.js.map +1 -0
- package/components/table/model/resolveCellContent.d.ts +2 -0
- package/components/table/model/resolveCellContent.js +5 -0
- package/components/table/model/resolveCellContent.js.map +1 -0
- package/components/table/model/resolveRowMeta.d.ts +2 -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 +48 -0
- package/components/table/model/resolveTableClassConfig.js +64 -0
- package/components/table/model/resolveTableClassConfig.js.map +1 -0
- package/components/table/model/tableViewModel.types.d.ts +153 -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/{TableSettingsListContainer.js → native/TableSettingsListContainer.js} +8 -8
- 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/parse/parseBody.d.ts +3 -0
- package/components/table/parse/parseBody.js +13 -0
- package/components/table/parse/parseBody.js.map +1 -0
- package/components/table/parse/parseColumns.d.ts +3 -0
- package/components/table/parse/parseColumns.js +81 -0
- package/components/table/parse/parseColumns.js.map +1 -0
- package/components/table/parse/parseFooter.d.ts +3 -0
- package/components/table/parse/parseFooter.js +39 -0
- package/components/table/parse/parseFooter.js.map +1 -0
- package/components/table/parse/parseHeaders.d.ts +4 -0
- package/components/table/parse/parseHeaders.js +89 -0
- package/components/table/parse/parseHeaders.js.map +1 -0
- package/components/table/parse/parseRows.d.ts +3 -0
- package/components/table/parse/parseRows.js +93 -0
- package/components/table/parse/parseRows.js.map +1 -0
- package/components/table/parse/tableChildGuards.d.ts +25 -0
- package/components/table/parse/tableChildGuards.js +29 -0
- package/components/table/parse/tableChildGuards.js.map +1 -0
- package/components/table/render/body/TableBodyRow.d.ts +16 -0
- package/components/table/render/body/TableBodyRow.js +84 -0
- package/components/table/render/body/TableBodyRow.js.map +1 -0
- package/components/table/render/body/TableBodySection.d.ts +20 -0
- package/components/table/render/body/TableBodySection.js +68 -0
- package/components/table/render/body/TableBodySection.js.map +1 -0
- package/components/table/render/body/TableDataRow.d.ts +15 -0
- package/components/table/render/body/TableDataRow.js +143 -0
- package/components/table/render/body/TableDataRow.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/body/TableExpandedRow.d.ts +8 -0
- package/components/table/render/body/TableExpandedRow.js +84 -0
- package/components/table/render/body/TableExpandedRow.js.map +1 -0
- package/components/table/render/body/TableGroupRow.d.ts +8 -0
- package/components/table/render/body/TableGroupRow.js +21 -0
- package/components/table/render/body/TableGroupRow.js.map +1 -0
- package/components/table/render/body/TableSpacerRow.d.ts +7 -0
- package/components/table/render/body/TableSpacerRow.js +15 -0
- package/components/table/render/body/TableSpacerRow.js.map +1 -0
- package/components/table/render/footer/TableFooterCell.d.ts +8 -0
- package/components/table/render/footer/TableFooterCell.js +31 -0
- package/components/table/render/footer/TableFooterCell.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/footer/TableFooterSection.d.ts +10 -0
- package/components/table/render/footer/TableFooterSection.js +28 -0
- package/components/table/render/footer/TableFooterSection.js.map +1 -0
- package/components/table/render/header/TableBatchDropdown.d.ts +9 -0
- package/components/table/render/header/TableBatchDropdown.js +28 -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 +70 -0
- package/components/table/render/header/TableColumnFilter.js.map +1 -0
- package/components/table/render/header/TableDraggableHeaderCell.d.ts +3 -0
- package/components/table/render/header/TableDraggableHeaderCell.js +54 -0
- package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -0
- package/components/table/render/header/TableHeader.types.d.ts +35 -0
- package/components/table/render/header/TableHeaderCellContent.d.ts +3 -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 +3 -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 +13 -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/TableHeaderSection.d.ts +3 -0
- package/components/table/render/header/TableHeaderSection.js +104 -0
- package/components/table/render/header/TableHeaderSection.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 +3 -0
- package/components/table/render/header/TableStaticHeaderCell.js +36 -0
- package/components/table/render/header/TableStaticHeaderCell.js.map +1 -0
- package/components/table/render/header/resolveAriaSort.d.ts +2 -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 +10 -0
- package/components/table/render/header/resolveHeaderCellClassName.js +22 -0
- package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -0
- package/components/table/render/header/resolveHeaderCellStyle.d.ts +829 -0
- package/components/table/render/header/resolveHeaderCellStyle.js +9 -0
- package/components/table/render/header/resolveHeaderCellStyle.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/getInteractiveRowProps.d.ts +14 -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/package.json +3 -3
- 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 +32 -1
- package/utils/routeUtils.js +85 -67
- 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/{TableSettingsListItem.d.ts → native/TableSettingsListItem.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResizableColumns.js","sources":["../../../../src/components/table/layout/useResizableColumns.ts"],"sourcesContent":["import { useEffect, useState, type PointerEvent as ReactPointerEvent } from 'react';\n\nimport type { TableColumnDefinition } from '../Table.types';\nimport {\n DEFAULT_MAX_RESIZE_WIDTH_PX,\n DEFAULT_MIN_RESIZE_WIDTH_PX,\n MIN_COLUMN_WIDTH_PX,\n} from '../tableSizing.constants';\n\ntype ResizeSession = {\n columnKey: string;\n maxResizeWidth: number;\n minResizeWidth: number;\n startWidth: number;\n startX: number;\n};\n\ntype UseResizableColumnsProps<RowType extends Record<string, unknown>> = {\n columns: TableColumnDefinition<RowType>[];\n enabled: boolean;\n onColumnResize?: (columnKey: string, width?: number) => void;\n};\n\nconst parsePixelWidth = (width?: number | string) => {\n const normalizedWidth = typeof width === 'number' ? `${width}px` : width;\n const match = normalizedWidth?.trim().match(/^(-?\\d+(?:\\.\\d+)?)px$/);\n\n if (!match) {\n return;\n }\n\n return Math.round(Number(match[1]));\n};\n\nexport const useResizableColumns = <RowType extends Record<string, unknown>>(\n props: UseResizableColumnsProps<RowType>\n) => {\n const { columns, enabled, onColumnResize } = props;\n const [resizedColumnWidths, setResizedColumnWidths] = useState<Record<string, number>>({});\n const [resizeSession, setResizeSession] = useState<ResizeSession | undefined>(undefined);\n\n useEffect(() => {\n if (!onColumnResize) {\n return;\n }\n\n setResizedColumnWidths(previousWidths => {\n const nextWidths = Object.fromEntries(\n Object.entries(previousWidths).flatMap(([columnKey]) => {\n const currentColumn = columns.find(column => column.key === columnKey);\n const currentPixelWidth = parsePixelWidth(currentColumn?.width);\n\n return currentPixelWidth === undefined ? [] : [[columnKey, currentPixelWidth]];\n })\n );\n\n return JSON.stringify(previousWidths) === JSON.stringify(nextWidths) ? previousWidths : nextWidths;\n });\n }, [columns, onColumnResize]);\n\n useEffect(() => {\n if (!resizeSession) {\n return;\n }\n\n const previousBodyCursor = document.body.style.cursor;\n const previousBodyUserSelect = document.body.style.userSelect;\n\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n\n const handlePointerMove = (event: PointerEvent) => {\n const nextWidth = Math.min(\n resizeSession.maxResizeWidth,\n Math.max(\n resizeSession.minResizeWidth,\n Math.round(resizeSession.startWidth + event.clientX - resizeSession.startX)\n )\n );\n\n onColumnResize?.(resizeSession.columnKey, nextWidth);\n\n setResizedColumnWidths(previousWidths =>\n previousWidths[resizeSession.columnKey] === nextWidth\n ? previousWidths\n : {\n ...previousWidths,\n [resizeSession.columnKey]: nextWidth,\n }\n );\n };\n\n const stopResize = () => {\n setResizeSession(undefined);\n };\n\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', stopResize);\n window.addEventListener('pointercancel', stopResize);\n\n return () => {\n document.body.style.cursor = previousBodyCursor;\n document.body.style.userSelect = previousBodyUserSelect;\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerup', stopResize);\n window.removeEventListener('pointercancel', stopResize);\n };\n }, [onColumnResize, resizeSession]);\n\n const handleColumnResizeStart = (columnKey: string, event: ReactPointerEvent<HTMLDivElement>) => {\n if (!enabled || event.button !== 0) {\n return;\n }\n\n const column = columns.find(currentColumn => currentColumn.key === columnKey);\n const headerCellElement = event.currentTarget.closest<HTMLElement>('.table-head-cell');\n\n if (!column || !headerCellElement) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const minResizeWidth = Math.max(column.minResizeWidth ?? DEFAULT_MIN_RESIZE_WIDTH_PX, MIN_COLUMN_WIDTH_PX);\n const maxResizeWidth = Math.max(column.maxResizeWidth ?? DEFAULT_MAX_RESIZE_WIDTH_PX, minResizeWidth);\n\n setResizeSession({\n columnKey,\n maxResizeWidth,\n minResizeWidth,\n startWidth: headerCellElement.getBoundingClientRect().width,\n startX: event.clientX,\n });\n };\n\n const handleColumnResizeReset = (columnKey: string) => {\n const column = columns.find(currentColumn => currentColumn.key === columnKey);\n const resetWidth =\n column?.minResizeWidth !== undefined ? Math.max(column.minResizeWidth, MIN_COLUMN_WIDTH_PX) : undefined;\n\n setResizeSession(undefined);\n onColumnResize?.(columnKey, resetWidth);\n setResizedColumnWidths(previousWidths => {\n if (resetWidth === undefined) {\n if (!(columnKey in previousWidths)) {\n return previousWidths;\n }\n\n const nextWidths = { ...previousWidths };\n delete nextWidths[columnKey];\n\n return nextWidths;\n }\n\n return previousWidths[columnKey] === resetWidth\n ? previousWidths\n : {\n ...previousWidths,\n [columnKey]: resetWidth,\n };\n });\n };\n\n const resizedColumns = columns.map(column => {\n const resizedWidth = resizedColumnWidths[column.key];\n\n return resizedWidth === undefined\n ? column\n : {\n ...column,\n width: resizedWidth,\n };\n });\n\n return {\n handleColumnResizeReset,\n handleColumnResizeStart,\n lastResizableColumnKey: columns.at(-1)?.key,\n resizedColumns,\n };\n};\n"],"names":["parsePixelWidth","width","match","useResizableColumns","props","columns","enabled","onColumnResize","resizedColumnWidths","setResizedColumnWidths","useState","resizeSession","setResizeSession","useEffect","previousWidths","nextWidths","columnKey","currentColumn","column","currentPixelWidth","previousBodyCursor","previousBodyUserSelect","handlePointerMove","event","nextWidth","stopResize","handleColumnResizeStart","headerCellElement","minResizeWidth","DEFAULT_MIN_RESIZE_WIDTH_PX","MIN_COLUMN_WIDTH_PX","maxResizeWidth","DEFAULT_MAX_RESIZE_WIDTH_PX","handleColumnResizeReset","resetWidth","resizedColumns","resizedWidth"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
import { TableCardsStyleSettings } from '../TableCard';
|
|
3
|
+
import { TableColumnDefinition, TableStyle } from '../Table.types';
|
|
4
|
+
export type TableColumnWithArea<RowType extends Record<string, unknown>> = {
|
|
5
|
+
column: TableColumnDefinition<RowType>;
|
|
6
|
+
columnIndex: number;
|
|
7
|
+
areaName: string;
|
|
8
|
+
};
|
|
9
|
+
type UseTableLayoutProps<RowType extends Record<string, unknown>> = {
|
|
10
|
+
bodyMaxHeight?: string;
|
|
11
|
+
cardsStyle?: TableCardsStyleSettings;
|
|
12
|
+
columns: TableColumnDefinition<RowType>[];
|
|
13
|
+
showSelectionColumn?: boolean;
|
|
14
|
+
style?: CSSProperties;
|
|
15
|
+
};
|
|
16
|
+
export declare const useTableLayout: <RowType extends Record<string, unknown>>(props: UseTableLayoutProps<RowType>) => {
|
|
17
|
+
columnsWithAreas: TableColumnWithArea<RowType>[];
|
|
18
|
+
handleBodyScroll: (event: import('react').UIEvent<HTMLElement> | undefined) => void;
|
|
19
|
+
tableUseOverflow: boolean;
|
|
20
|
+
tableWrapperRef: import('react').MutableRefObject<HTMLDivElement | null>;
|
|
21
|
+
tableFooterRowRef: import('react').RefObject<HTMLDivElement>;
|
|
22
|
+
tableHeadRowRef: import('react').RefObject<HTMLDivElement>;
|
|
23
|
+
wrapperStyle: TableStyle;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { useMeasuredColumnMaxWidths as v } from "./useMeasuredColumnMaxWidths.js";
|
|
2
|
+
import { MIN_COLUMN_WIDTH_PX as N } from "../tableSizing.constants.js";
|
|
3
|
+
import { toCssSize as c, getColumnTrack as R } from "./columnSizing.js";
|
|
4
|
+
import { useHorizontalSectionSync as z } from "./useHorizontalSectionSync.js";
|
|
5
|
+
import H from "../../../hooks/useResizeObserver.js";
|
|
6
|
+
const u = 50, L = (r) => {
|
|
7
|
+
if (!r)
|
|
8
|
+
return;
|
|
9
|
+
const n = r.trim().match(/^(-?\d+(?:\.\d+)?)px$/);
|
|
10
|
+
if (n)
|
|
11
|
+
return Number(n[1]);
|
|
12
|
+
}, I = (r) => {
|
|
13
|
+
const { bodyMaxHeight: n, cardsStyle: d, columns: a, showSelectionColumn: i, style: h } = r, [l, , { inlineSize: p }] = H(), t = a.map((e, o) => ({
|
|
14
|
+
column: e,
|
|
15
|
+
columnIndex: o,
|
|
16
|
+
areaName: `table-col-${o + 1}`
|
|
17
|
+
})), s = p ?? l.current?.clientWidth, b = (i ? u : 0) + a.reduce((e, o) => {
|
|
18
|
+
if (o.width === void 0)
|
|
19
|
+
return e + N;
|
|
20
|
+
const _ = L(c(o.width));
|
|
21
|
+
return e + (_ ?? 0);
|
|
22
|
+
}, 0), m = s !== void 0 && b > s, f = s !== void 0 ? `${s}px` : "100%", { handleBodyScroll: W, tableFooterRowRef: x, tableHeadRowRef: S } = z({
|
|
23
|
+
enabled: !!n
|
|
24
|
+
}), w = v({
|
|
25
|
+
columns: a,
|
|
26
|
+
enabled: m,
|
|
27
|
+
tableWrapperRef: l
|
|
28
|
+
}), C = t.length > 0 ? [
|
|
29
|
+
i ? `${u}px` : void 0,
|
|
30
|
+
...t.map(({ column: e }) => R(e, w[e.key]))
|
|
31
|
+
].filter(Boolean).join(" ") : "minmax(0, 1fr)", M = t.length > 0 ? `"${[
|
|
32
|
+
i ? "table-selection" : void 0,
|
|
33
|
+
...t.map(({ areaName: e }) => e)
|
|
34
|
+
].filter(Boolean).join(" ")}"` : "none", T = c(d?.minWidth) ?? "280px", g = c(d?.maxWidth) ?? "1fr", y = {
|
|
35
|
+
...h ?? {},
|
|
36
|
+
"--table-columns": C,
|
|
37
|
+
"--table-areas": M,
|
|
38
|
+
"--table-cards-min": T,
|
|
39
|
+
"--table-cards-max": g,
|
|
40
|
+
"--table-column-count": String(a.length + (i ? 1 : 0)),
|
|
41
|
+
"--table-width": f
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
columnsWithAreas: t,
|
|
45
|
+
handleBodyScroll: W,
|
|
46
|
+
tableUseOverflow: m,
|
|
47
|
+
tableWrapperRef: l,
|
|
48
|
+
tableFooterRowRef: x,
|
|
49
|
+
tableHeadRowRef: S,
|
|
50
|
+
wrapperStyle: y
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export {
|
|
54
|
+
I as useTableLayout
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=useTableLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableLayout.js","sources":["../../../../src/components/table/layout/useTableLayout.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nimport type { TableCardsStyleSettings } from '../TableCard';\nimport type { TableColumnDefinition, TableStyle } from '../Table.types';\nimport { useMeasuredColumnMaxWidths } from './useMeasuredColumnMaxWidths';\nimport { MIN_COLUMN_WIDTH_PX } from '../tableSizing.constants';\nimport { getColumnTrack, toCssSize } from './columnSizing';\nimport { useHorizontalSectionSync } from './useHorizontalSectionSync';\nimport useResizeObserver from '../../../useResizeObserver';\n\nconst TABLE_SELECTION_COLUMN_WIDTH_PX = 50;\n\nconst parsePixelSize = (value?: string) => {\n if (!value) {\n return;\n }\n\n const match = value.trim().match(/^(-?\\d+(?:\\.\\d+)?)px$/);\n\n if (!match) {\n return;\n }\n\n return Number(match[1]);\n};\n\nexport type TableColumnWithArea<RowType extends Record<string, unknown>> = {\n column: TableColumnDefinition<RowType>;\n columnIndex: number;\n areaName: string;\n};\n\ntype UseTableLayoutProps<RowType extends Record<string, unknown>> = {\n bodyMaxHeight?: string;\n cardsStyle?: TableCardsStyleSettings;\n columns: TableColumnDefinition<RowType>[];\n showSelectionColumn?: boolean;\n style?: CSSProperties;\n};\n\nexport const useTableLayout = <RowType extends Record<string, unknown>>(props: UseTableLayoutProps<RowType>) => {\n const { bodyMaxHeight, cardsStyle, columns, showSelectionColumn, style } = props;\n const [tableWrapperRef, , { inlineSize }] = useResizeObserver<HTMLDivElement>();\n\n const columnsWithAreas: TableColumnWithArea<RowType>[] = columns.map((column, columnIndex) => ({\n column,\n columnIndex,\n areaName: `table-col-${columnIndex + 1}`,\n }));\n const wrapperWidth = inlineSize ?? tableWrapperRef.current?.clientWidth;\n const minWidthTotal =\n (showSelectionColumn ? TABLE_SELECTION_COLUMN_WIDTH_PX : 0) +\n columns.reduce((totalWidth, column) => {\n if (column.width === undefined) {\n return totalWidth + MIN_COLUMN_WIDTH_PX;\n }\n\n const columnWidth = parsePixelSize(toCssSize(column.width));\n\n return totalWidth + (columnWidth ?? 0);\n }, 0);\n const tableUseOverflow = wrapperWidth !== undefined && minWidthTotal > wrapperWidth;\n const tableWidth = wrapperWidth !== undefined ? `${wrapperWidth}px` : '100%';\n\n const { handleBodyScroll, tableFooterRowRef, tableHeadRowRef } = useHorizontalSectionSync({\n enabled: !!bodyMaxHeight,\n });\n const measuredColumnMaxWidths = useMeasuredColumnMaxWidths({\n columns,\n enabled: tableUseOverflow,\n tableWrapperRef,\n });\n\n const gridTemplateColumns =\n columnsWithAreas.length > 0\n ? [\n showSelectionColumn ? `${TABLE_SELECTION_COLUMN_WIDTH_PX}px` : undefined,\n ...columnsWithAreas.map(({ column }) => getColumnTrack(column, measuredColumnMaxWidths[column.key])),\n ]\n .filter(Boolean)\n .join(' ')\n : 'minmax(0, 1fr)';\n\n const gridTemplateAreas =\n columnsWithAreas.length > 0\n ? `\"${[\n showSelectionColumn ? 'table-selection' : undefined,\n ...columnsWithAreas.map(({ areaName }) => areaName),\n ]\n .filter(Boolean)\n .join(' ')}\"`\n : 'none';\n\n const cardsMinWidth = toCssSize(cardsStyle?.minWidth) ?? '280px';\n const cardsMaxWidth = toCssSize(cardsStyle?.maxWidth) ?? '1fr';\n\n const wrapperStyle: TableStyle = {\n ...(style ?? {}),\n '--table-columns': gridTemplateColumns,\n '--table-areas': gridTemplateAreas,\n '--table-cards-min': cardsMinWidth,\n '--table-cards-max': cardsMaxWidth,\n '--table-column-count': String(columns.length + (showSelectionColumn ? 1 : 0)),\n '--table-width': tableWidth,\n };\n\n return {\n columnsWithAreas,\n handleBodyScroll,\n tableUseOverflow,\n tableWrapperRef,\n tableFooterRowRef,\n tableHeadRowRef,\n wrapperStyle,\n };\n};\n"],"names":["TABLE_SELECTION_COLUMN_WIDTH_PX","parsePixelSize","value","match","useTableLayout","props","bodyMaxHeight","cardsStyle","columns","showSelectionColumn","style","tableWrapperRef","inlineSize","useResizeObserver","columnsWithAreas","column","columnIndex","wrapperWidth","minWidthTotal","totalWidth","MIN_COLUMN_WIDTH_PX","columnWidth","toCssSize","tableUseOverflow","tableWidth","handleBodyScroll","tableFooterRowRef","tableHeadRowRef","useHorizontalSectionSync","measuredColumnMaxWidths","useMeasuredColumnMaxWidths","gridTemplateColumns","getColumnTrack","gridTemplateAreas","areaName","cardsMinWidth","cardsMaxWidth","wrapperStyle"],"mappings":";;;;;AAUA,MAAMA,IAAkC,IAElCC,IAAiB,CAACC,MAAmB;AACvC,MAAI,CAACA;AACD;AAGJ,QAAMC,IAAQD,EAAM,KAAA,EAAO,MAAM,uBAAuB;AAExD,MAAKC;AAIL,WAAO,OAAOA,EAAM,CAAC,CAAC;AAC1B,GAgBaC,IAAiB,CAA0CC,MAAwC;AAC5G,QAAM,EAAE,eAAAC,GAAe,YAAAC,GAAY,SAAAC,GAAS,qBAAAC,GAAqB,OAAAC,MAAUL,GACrE,CAACM,GAAA,EAAmB,EAAE,YAAAC,EAAA,CAAY,IAAIC,EAAA,GAEtCC,IAAmDN,EAAQ,IAAI,CAACO,GAAQC,OAAiB;AAAA,IAC3F,QAAAD;AAAA,IACA,aAAAC;AAAA,IACA,UAAU,aAAaA,IAAc,CAAC;AAAA,EAAA,EACxC,GACIC,IAAeL,KAAcD,EAAgB,SAAS,aACtDO,KACDT,IAAsBT,IAAkC,KACzDQ,EAAQ,OAAO,CAACW,GAAYJ,MAAW;AACnC,QAAIA,EAAO,UAAU;AACjB,aAAOI,IAAaC;AAGxB,UAAMC,IAAcpB,EAAeqB,EAAUP,EAAO,KAAK,CAAC;AAE1D,WAAOI,KAAcE,KAAe;AAAA,EACxC,GAAG,CAAC,GACFE,IAAmBN,MAAiB,UAAaC,IAAgBD,GACjEO,IAAaP,MAAiB,SAAY,GAAGA,CAAY,OAAO,QAEhE,EAAE,kBAAAQ,GAAkB,mBAAAC,GAAmB,iBAAAC,EAAA,IAAoBC,EAAyB;AAAA,IACtF,SAAS,CAAC,CAACtB;AAAA,EAAA,CACd,GACKuB,IAA0BC,EAA2B;AAAA,IACvD,SAAAtB;AAAA,IACA,SAASe;AAAA,IACT,iBAAAZ;AAAA,EAAA,CACH,GAEKoB,IACFjB,EAAiB,SAAS,IACpB;AAAA,IACIL,IAAsB,GAAGT,CAA+B,OAAO;AAAA,IAC/D,GAAGc,EAAiB,IAAI,CAAC,EAAE,QAAAC,EAAA,MAAaiB,EAAejB,GAAQc,EAAwBd,EAAO,GAAG,CAAC,CAAC;AAAA,EAAA,EAElG,OAAO,OAAO,EACd,KAAK,GAAG,IACb,kBAEJkB,IACFnB,EAAiB,SAAS,IACpB,IAAI;AAAA,IACAL,IAAsB,oBAAoB;AAAA,IAC1C,GAAGK,EAAiB,IAAI,CAAC,EAAE,UAAAoB,EAAA,MAAeA,CAAQ;AAAA,EAAA,EAEjD,OAAO,OAAO,EACd,KAAK,GAAG,CAAC,MACd,QAEJC,IAAgBb,EAAUf,GAAY,QAAQ,KAAK,SACnD6B,IAAgBd,EAAUf,GAAY,QAAQ,KAAK,OAEnD8B,IAA2B;AAAA,IAC7B,GAAI3B,KAAS,CAAA;AAAA,IACb,mBAAmBqB;AAAA,IACnB,iBAAiBE;AAAA,IACjB,qBAAqBE;AAAA,IACrB,qBAAqBC;AAAA,IACrB,wBAAwB,OAAO5B,EAAQ,UAAUC,IAAsB,IAAI,EAAE;AAAA,IAC7E,iBAAiBe;AAAA,EAAA;AAGrB,SAAO;AAAA,IACH,kBAAAV;AAAA,IACA,kBAAAW;AAAA,IACA,kBAAAF;AAAA,IACA,iBAAAZ;AAAA,IACA,mBAAAe;AAAA,IACA,iBAAAC;AAAA,IACA,cAAAU;AAAA,EAAA;AAER;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TableViewRow } from '../model/tableViewModel.types';
|
|
2
|
+
type TableVirtualScrollContainer = {
|
|
3
|
+
view?: HTMLDivElement | null;
|
|
4
|
+
};
|
|
5
|
+
type TableVirtualRow<RowType extends Record<string, unknown>> = {
|
|
6
|
+
index: number;
|
|
7
|
+
row: TableViewRow<RowType>;
|
|
8
|
+
};
|
|
9
|
+
type UseTableVirtualizationOptions<RowType extends Record<string, unknown>> = {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
overscan: number;
|
|
12
|
+
rows: TableViewRow<RowType>[];
|
|
13
|
+
scrollContainer: TableVirtualScrollContainer | null;
|
|
14
|
+
};
|
|
15
|
+
declare const useTableVirtualization: <RowType extends Record<string, unknown>>(options: UseTableVirtualizationOptions<RowType>) => {
|
|
16
|
+
isVirtualized: boolean;
|
|
17
|
+
measureRow: (index: number, element: HTMLElement | null) => void;
|
|
18
|
+
paddingBottom: number;
|
|
19
|
+
paddingTop: number;
|
|
20
|
+
virtualRows: TableVirtualRow<RowType>[];
|
|
21
|
+
};
|
|
22
|
+
export default useTableVirtualization;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { useState as O, useCallback as c, useEffect as p, useMemo as V } from "react";
|
|
2
|
+
const k = 50, T = (m, i) => m.start === i.start && m.end === i.end, F = (m) => {
|
|
3
|
+
const { enabled: i, overscan: d, rows: r, scrollContainer: v } = m, [l, H] = O({
|
|
4
|
+
itemHeights: {},
|
|
5
|
+
scrollTop: 0,
|
|
6
|
+
viewportHeight: 0,
|
|
7
|
+
visibleRange: { start: 0, end: 10 }
|
|
8
|
+
}), b = c(() => v?.view ?? null, [v]), w = c(() => {
|
|
9
|
+
const e = Object.values(l.itemHeights);
|
|
10
|
+
return e.length === 0 ? k : e.reduce((t, n) => t + n, 0) / e.length;
|
|
11
|
+
}, [l.itemHeights]), g = c(
|
|
12
|
+
(e) => l.itemHeights[e] ?? w(),
|
|
13
|
+
[w, l.itemHeights]
|
|
14
|
+
), f = c(
|
|
15
|
+
(e) => {
|
|
16
|
+
let t = 0;
|
|
17
|
+
for (let n = 0; n < e; n++)
|
|
18
|
+
t += g(n);
|
|
19
|
+
return t;
|
|
20
|
+
},
|
|
21
|
+
[g]
|
|
22
|
+
), E = c(() => {
|
|
23
|
+
let e = 0;
|
|
24
|
+
for (let t = 0; t < r.length; t++)
|
|
25
|
+
e += g(t);
|
|
26
|
+
return e;
|
|
27
|
+
}, [g, r.length]), h = c(
|
|
28
|
+
(e, t) => {
|
|
29
|
+
if (!i || r.length === 0)
|
|
30
|
+
return { start: 0, end: r.length };
|
|
31
|
+
let n = 0, a = 0;
|
|
32
|
+
for (; n < r.length; ) {
|
|
33
|
+
const o = g(n);
|
|
34
|
+
if (a + o > e - d * o)
|
|
35
|
+
break;
|
|
36
|
+
a += o, n++;
|
|
37
|
+
}
|
|
38
|
+
let s = n;
|
|
39
|
+
for (; s < r.length; ) {
|
|
40
|
+
const o = g(s);
|
|
41
|
+
if (a > e + t + d * o)
|
|
42
|
+
break;
|
|
43
|
+
a += o, s++;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
start: Math.max(0, n - d),
|
|
47
|
+
end: Math.min(r.length, s + d)
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
[i, g, d, r.length]
|
|
51
|
+
), u = c(() => {
|
|
52
|
+
const e = b();
|
|
53
|
+
if (!e)
|
|
54
|
+
return;
|
|
55
|
+
const t = e.clientHeight, n = e.scrollTop, a = h(n, t);
|
|
56
|
+
H(
|
|
57
|
+
(s) => s.scrollTop === n && s.viewportHeight === t && T(s.visibleRange, a) ? s : {
|
|
58
|
+
...s,
|
|
59
|
+
scrollTop: n,
|
|
60
|
+
viewportHeight: t,
|
|
61
|
+
visibleRange: a
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}, [h, b]);
|
|
65
|
+
p(() => {
|
|
66
|
+
if (!i)
|
|
67
|
+
return;
|
|
68
|
+
const e = b();
|
|
69
|
+
if (!e)
|
|
70
|
+
return;
|
|
71
|
+
u(), e.addEventListener("scroll", u, { passive: !0 });
|
|
72
|
+
const t = new ResizeObserver(u);
|
|
73
|
+
return t.observe(e), () => {
|
|
74
|
+
e.removeEventListener("scroll", u), t.disconnect();
|
|
75
|
+
};
|
|
76
|
+
}, [i, b, u]), p(() => {
|
|
77
|
+
i && H((e) => {
|
|
78
|
+
const t = h(e.scrollTop, e.viewportHeight);
|
|
79
|
+
return T(e.visibleRange, t) ? e : {
|
|
80
|
+
...e,
|
|
81
|
+
visibleRange: t
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
}, [h, i, r]);
|
|
85
|
+
const x = c(
|
|
86
|
+
(e, t) => {
|
|
87
|
+
if (!t)
|
|
88
|
+
return;
|
|
89
|
+
const n = t.getBoundingClientRect(), a = window.getComputedStyle(t), s = n.height + Number.parseFloat(a.marginTop || "0") + Number.parseFloat(a.marginBottom || "0");
|
|
90
|
+
H((o) => {
|
|
91
|
+
if (o.itemHeights[e] === s)
|
|
92
|
+
return o;
|
|
93
|
+
const R = {
|
|
94
|
+
...o,
|
|
95
|
+
itemHeights: {
|
|
96
|
+
...o.itemHeights,
|
|
97
|
+
[e]: s
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
...R,
|
|
102
|
+
visibleRange: h(R.scrollTop, R.viewportHeight)
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
[h]
|
|
107
|
+
), z = V(
|
|
108
|
+
() => i ? r.slice(l.visibleRange.start, l.visibleRange.end).map((e, t) => ({
|
|
109
|
+
index: l.visibleRange.start + t,
|
|
110
|
+
row: e
|
|
111
|
+
})) : [],
|
|
112
|
+
[i, r, l.visibleRange.end, l.visibleRange.start]
|
|
113
|
+
), C = i ? f(l.visibleRange.start) : 0, M = i ? Math.max(0, E() - f(l.visibleRange.end)) : 0;
|
|
114
|
+
return {
|
|
115
|
+
isVirtualized: i,
|
|
116
|
+
measureRow: x,
|
|
117
|
+
paddingBottom: M,
|
|
118
|
+
paddingTop: C,
|
|
119
|
+
virtualRows: z
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
export {
|
|
123
|
+
F as default
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=useTableVirtualization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableVirtualization.js","sources":["../../../../src/components/table/layout/useTableVirtualization.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport type { TableViewRow } from '../model/tableViewModel.types';\n\ntype TableVirtualScrollContainer = {\n view?: HTMLDivElement | null;\n};\n\ntype TableVirtualRow<RowType extends Record<string, unknown>> = {\n index: number;\n row: TableViewRow<RowType>;\n};\n\ntype UseTableVirtualizationOptions<RowType extends Record<string, unknown>> = {\n enabled: boolean;\n overscan: number;\n rows: TableViewRow<RowType>[];\n scrollContainer: TableVirtualScrollContainer | null;\n};\n\ntype TableVirtualizationState = {\n itemHeights: Record<number, number>;\n scrollTop: number;\n viewportHeight: number;\n visibleRange: {\n start: number;\n end: number;\n };\n};\n\nconst DEFAULT_ROW_HEIGHT = 50;\n\nconst areVisibleRangesEqual = (\n left: TableVirtualizationState['visibleRange'],\n right: TableVirtualizationState['visibleRange']\n) => left.start === right.start && left.end === right.end;\n\nconst useTableVirtualization = <RowType extends Record<string, unknown>>(\n options: UseTableVirtualizationOptions<RowType>\n) => {\n const { enabled, overscan, rows, scrollContainer } = options;\n const [state, setState] = useState<TableVirtualizationState>({\n itemHeights: {},\n scrollTop: 0,\n viewportHeight: 0,\n visibleRange: { start: 0, end: 10 },\n });\n\n const getScrollElement = useCallback(() => scrollContainer?.view ?? null, [scrollContainer]);\n\n const getEstimatedRowHeight = useCallback(() => {\n const measuredHeights = Object.values(state.itemHeights);\n\n if (measuredHeights.length === 0) {\n return DEFAULT_ROW_HEIGHT;\n }\n\n return measuredHeights.reduce((sum, height) => sum + height, 0) / measuredHeights.length;\n }, [state.itemHeights]);\n\n const getRowHeight = useCallback(\n (index: number) => state.itemHeights[index] ?? getEstimatedRowHeight(),\n [getEstimatedRowHeight, state.itemHeights]\n );\n\n const getItemPosition = useCallback(\n (index: number) => {\n let position = 0;\n\n for (let currentIndex = 0; currentIndex < index; currentIndex++) {\n position += getRowHeight(currentIndex);\n }\n\n return position;\n },\n [getRowHeight]\n );\n\n const getTotalHeight = useCallback(() => {\n let totalHeight = 0;\n\n for (let index = 0; index < rows.length; index++) {\n totalHeight += getRowHeight(index);\n }\n\n return totalHeight;\n }, [getRowHeight, rows.length]);\n\n const calculateVisibleRange = useCallback(\n (scrollTop: number, viewportHeight: number) => {\n if (!enabled || rows.length === 0) {\n return { start: 0, end: rows.length };\n }\n\n let start = 0;\n let currentPosition = 0;\n\n while (start < rows.length) {\n const rowHeight = getRowHeight(start);\n\n if (currentPosition + rowHeight > scrollTop - overscan * rowHeight) {\n break;\n }\n\n currentPosition += rowHeight;\n start++;\n }\n\n let end = start;\n\n while (end < rows.length) {\n const rowHeight = getRowHeight(end);\n\n if (currentPosition > scrollTop + viewportHeight + overscan * rowHeight) {\n break;\n }\n\n currentPosition += rowHeight;\n end++;\n }\n\n return {\n start: Math.max(0, start - overscan),\n end: Math.min(rows.length, end + overscan),\n };\n },\n [enabled, getRowHeight, overscan, rows.length]\n );\n\n const handleScroll = useCallback(() => {\n const scrollElement = getScrollElement();\n\n if (!scrollElement) {\n return;\n }\n\n const viewportHeight = scrollElement.clientHeight;\n const scrollTop = scrollElement.scrollTop;\n const visibleRange = calculateVisibleRange(scrollTop, viewportHeight);\n\n setState(previousState =>\n previousState.scrollTop === scrollTop &&\n previousState.viewportHeight === viewportHeight &&\n areVisibleRangesEqual(previousState.visibleRange, visibleRange)\n ? previousState\n : {\n ...previousState,\n scrollTop,\n viewportHeight,\n visibleRange,\n }\n );\n }, [calculateVisibleRange, getScrollElement]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const scrollElement = getScrollElement();\n\n if (!scrollElement) {\n return;\n }\n\n handleScroll();\n scrollElement.addEventListener('scroll', handleScroll, { passive: true });\n\n const resizeObserver = new ResizeObserver(handleScroll);\n resizeObserver.observe(scrollElement);\n\n return () => {\n scrollElement.removeEventListener('scroll', handleScroll);\n resizeObserver.disconnect();\n };\n }, [enabled, getScrollElement, handleScroll]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n setState(previousState => {\n const visibleRange = calculateVisibleRange(previousState.scrollTop, previousState.viewportHeight);\n\n return areVisibleRangesEqual(previousState.visibleRange, visibleRange)\n ? previousState\n : {\n ...previousState,\n visibleRange,\n };\n });\n }, [calculateVisibleRange, enabled, rows]);\n\n const measureRow = useCallback(\n (index: number, element: HTMLElement | null) => {\n if (!element) {\n return;\n }\n\n const rect = element.getBoundingClientRect();\n const computedStyle = window.getComputedStyle(element);\n const height =\n rect.height +\n Number.parseFloat(computedStyle.marginTop || '0') +\n Number.parseFloat(computedStyle.marginBottom || '0');\n\n setState(previousState => {\n if (previousState.itemHeights[index] === height) {\n return previousState;\n }\n\n const nextState = {\n ...previousState,\n itemHeights: {\n ...previousState.itemHeights,\n [index]: height,\n },\n };\n\n return {\n ...nextState,\n visibleRange: calculateVisibleRange(nextState.scrollTop, nextState.viewportHeight),\n };\n });\n },\n [calculateVisibleRange]\n );\n\n const virtualRows = useMemo<TableVirtualRow<RowType>[]>(\n () =>\n enabled\n ? rows.slice(state.visibleRange.start, state.visibleRange.end).map((row, offset) => {\n const index = state.visibleRange.start + offset;\n\n return {\n index,\n row,\n };\n })\n : [],\n [enabled, rows, state.visibleRange.end, state.visibleRange.start]\n );\n\n const paddingTop = enabled ? getItemPosition(state.visibleRange.start) : 0;\n const paddingBottom = enabled ? Math.max(0, getTotalHeight() - getItemPosition(state.visibleRange.end)) : 0;\n\n return {\n isVirtualized: enabled,\n measureRow,\n paddingBottom,\n paddingTop,\n virtualRows,\n };\n};\n\nexport default useTableVirtualization;\n"],"names":["DEFAULT_ROW_HEIGHT","areVisibleRangesEqual","left","right","useTableVirtualization","options","enabled","overscan","rows","scrollContainer","state","setState","useState","getScrollElement","useCallback","getEstimatedRowHeight","measuredHeights","sum","height","getRowHeight","index","getItemPosition","position","currentIndex","getTotalHeight","totalHeight","calculateVisibleRange","scrollTop","viewportHeight","start","currentPosition","rowHeight","end","handleScroll","scrollElement","visibleRange","previousState","useEffect","resizeObserver","measureRow","element","rect","computedStyle","nextState","virtualRows","useMemo","row","offset","paddingTop","paddingBottom"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { TableColumnWithArea } from '../layout/useTableLayout';
|
|
3
|
+
import { TableCellClassName, TableParsedFooter, TableParsedHeaderColumn, TableRowId, TableParsedRow, TableRowClassName, TableSortDirection } from '../Table.types';
|
|
4
|
+
import { TableViewModel } from './tableViewModel.types';
|
|
5
|
+
type BuildTableViewModelProps<RowType extends Record<string, unknown>> = {
|
|
6
|
+
columnsWithAreas: TableColumnWithArea<RowType>[];
|
|
7
|
+
resolvedHeaderColumns: TableParsedHeaderColumn<RowType>[];
|
|
8
|
+
resolvedRows: TableParsedRow<RowType>[];
|
|
9
|
+
resolvedFooter?: TableParsedFooter;
|
|
10
|
+
rowKey?: keyof RowType | ((row: RowType, rowIndex: number) => string | number);
|
|
11
|
+
rowClassName?: TableRowClassName<RowType>;
|
|
12
|
+
cellClassName?: TableCellClassName<RowType>;
|
|
13
|
+
activeRowId?: TableRowId;
|
|
14
|
+
noRowsState: ReactNode;
|
|
15
|
+
isClickable: boolean;
|
|
16
|
+
isTableView: boolean;
|
|
17
|
+
selectedRowIds?: TableRowId[];
|
|
18
|
+
sortBy?: string | string[];
|
|
19
|
+
sortDirection?: TableSortDirection;
|
|
20
|
+
cardClasses: {
|
|
21
|
+
rowClassName?: string;
|
|
22
|
+
cellClassName?: string;
|
|
23
|
+
labelClassName?: string;
|
|
24
|
+
contentClassName?: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare const buildTableViewModel: <RowType extends Record<string, unknown>>(props: BuildTableViewModelProps<RowType>) => TableViewModel<RowType>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import k from "../../../utils/classNames.js";
|
|
2
|
+
import { getMobileLabel as m } from "./resolveCellContent.js";
|
|
3
|
+
import { resolveRowKey as W, resolveRowClassName as j } from "./resolveRowMeta.js";
|
|
4
|
+
const f = (g, s) => g.cellsByKey?.[s], P = (g) => {
|
|
5
|
+
const {
|
|
6
|
+
columnsWithAreas: s,
|
|
7
|
+
resolvedHeaderColumns: v,
|
|
8
|
+
resolvedRows: b,
|
|
9
|
+
resolvedFooter: d,
|
|
10
|
+
rowKey: O,
|
|
11
|
+
rowClassName: R,
|
|
12
|
+
cellClassName: N,
|
|
13
|
+
activeRowId: H,
|
|
14
|
+
noRowsState: u,
|
|
15
|
+
isClickable: B,
|
|
16
|
+
isTableView: L,
|
|
17
|
+
selectedRowIds: D,
|
|
18
|
+
sortBy: y,
|
|
19
|
+
sortDirection: S,
|
|
20
|
+
cardClasses: w
|
|
21
|
+
} = g, F = new Set(D), K = new Set(Array.isArray(y) ? y : y ? [y] : []), T = s.map(({ column: e, areaName: n }) => ({
|
|
22
|
+
key: e.key,
|
|
23
|
+
label: e.label,
|
|
24
|
+
mobileLabel: m(e),
|
|
25
|
+
horizontalAlign: e.horizontalAlign,
|
|
26
|
+
className: e.className,
|
|
27
|
+
headerClassName: e.headerClassName,
|
|
28
|
+
hideOnMobile: e.hideOnMobile,
|
|
29
|
+
sortable: e.sortable,
|
|
30
|
+
sortDirection: K.has(e.key) ? S : void 0,
|
|
31
|
+
areaName: n,
|
|
32
|
+
source: e
|
|
33
|
+
})), p = new Map(s.map(({ column: e }, n) => [e.key, n + 1])), A = (() => {
|
|
34
|
+
if (v.length === 0)
|
|
35
|
+
return;
|
|
36
|
+
const e = Math.max(...v.map((a) => a.row + a.rowSpan - 1)), n = Array.from({ length: e }, () => Array(s.length).fill(!1)), i = (a, r) => {
|
|
37
|
+
for (let t = 1; t <= s.length - r + 1; t += 1)
|
|
38
|
+
if (n[a - 1].slice(t - 1, t - 1 + r).every((o) => !o))
|
|
39
|
+
return t;
|
|
40
|
+
return 1;
|
|
41
|
+
}, l = v.map((a) => {
|
|
42
|
+
const r = a.columnKey ? p.get(a.columnKey) ?? 1 : i(a.row, a.colSpan);
|
|
43
|
+
for (let t = a.row - 1; t < a.row - 1 + a.rowSpan; t += 1)
|
|
44
|
+
for (let c = r - 1; c < r - 1 + a.colSpan; c += 1)
|
|
45
|
+
n[t]?.[c] !== void 0 && (n[t][c] = !0);
|
|
46
|
+
return {
|
|
47
|
+
key: a.key,
|
|
48
|
+
columnKey: a.columnKey,
|
|
49
|
+
label: a.label,
|
|
50
|
+
icon: a.icon,
|
|
51
|
+
filter: a.filter,
|
|
52
|
+
hideLabel: a.hideLabel,
|
|
53
|
+
horizontalAlign: a.horizontalAlign,
|
|
54
|
+
verticalAlign: a.verticalAlign,
|
|
55
|
+
className: a.className,
|
|
56
|
+
headerClassName: a.headerClassName,
|
|
57
|
+
hideOnMobile: a.hideOnMobile,
|
|
58
|
+
draggable: a.draggable,
|
|
59
|
+
resizeable: a.resizeable,
|
|
60
|
+
sortable: a.sortable,
|
|
61
|
+
sortDirection: a.columnKey && K.has(a.columnKey) ? S : void 0,
|
|
62
|
+
rowStart: a.row,
|
|
63
|
+
rowSpan: a.rowSpan,
|
|
64
|
+
columnStart: r,
|
|
65
|
+
colSpan: a.colSpan,
|
|
66
|
+
source: a.columnKey ? s.find(({ column: t }) => t.key === a.columnKey)?.column : void 0
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
rowCount: e,
|
|
71
|
+
totalColumnCount: s.length,
|
|
72
|
+
columns: l
|
|
73
|
+
};
|
|
74
|
+
})(), V = new Map(
|
|
75
|
+
A?.columns.filter((e) => !!e.columnKey).map((e) => [
|
|
76
|
+
e.columnKey,
|
|
77
|
+
{
|
|
78
|
+
horizontalAlign: e.horizontalAlign,
|
|
79
|
+
verticalAlign: e.verticalAlign
|
|
80
|
+
}
|
|
81
|
+
]) ?? []
|
|
82
|
+
), h = (e) => e ? V.get(e) : void 0, E = (e, n) => {
|
|
83
|
+
const i = W(e.data, n, O), l = e.cellsByKey && (() => {
|
|
84
|
+
const a = [];
|
|
85
|
+
let r = -1;
|
|
86
|
+
return s.forEach(({ column: t, columnIndex: c }) => {
|
|
87
|
+
if (c <= r)
|
|
88
|
+
return;
|
|
89
|
+
const o = f(e, t.key), C = h(t.key), M = o?.colSpan ?? 1;
|
|
90
|
+
o && (r = c + M - 1), a.push({
|
|
91
|
+
key: String(o?.key ?? t.key),
|
|
92
|
+
mobileLabel: m(t),
|
|
93
|
+
content: o?.content ?? "",
|
|
94
|
+
horizontalAlign: o?.horizontalAlign ?? C?.horizontalAlign ?? t.horizontalAlign,
|
|
95
|
+
verticalAlign: o?.verticalAlign ?? C?.verticalAlign,
|
|
96
|
+
className: k(t.className, o?.className),
|
|
97
|
+
contentClassName: o?.contentClassName,
|
|
98
|
+
resolvedClassName: N?.(e.data, t, n, c),
|
|
99
|
+
hideOnMobile: t.hideOnMobile,
|
|
100
|
+
columnStart: c + 1,
|
|
101
|
+
colSpan: M,
|
|
102
|
+
preventRowClick: o?.preventRowClick
|
|
103
|
+
});
|
|
104
|
+
}), a;
|
|
105
|
+
})();
|
|
106
|
+
return {
|
|
107
|
+
kind: e.kind,
|
|
108
|
+
key: i,
|
|
109
|
+
parentKey: e.kind === "expanded" ? e.parentKey : void 0,
|
|
110
|
+
rowIndex: n,
|
|
111
|
+
data: e.data,
|
|
112
|
+
active: i === H,
|
|
113
|
+
disabled: e.disabled,
|
|
114
|
+
className: e.className,
|
|
115
|
+
noHover: e.noHover,
|
|
116
|
+
resolvedClassName: j(R, e.data, n),
|
|
117
|
+
selected: F.has(i),
|
|
118
|
+
cells: l && l.length > 0 ? l : s.map(({ column: a, columnIndex: r }) => {
|
|
119
|
+
const t = h(a.key);
|
|
120
|
+
return {
|
|
121
|
+
key: a.key,
|
|
122
|
+
mobileLabel: m(a),
|
|
123
|
+
content: "",
|
|
124
|
+
horizontalAlign: t?.horizontalAlign ?? a.horizontalAlign,
|
|
125
|
+
verticalAlign: t?.verticalAlign,
|
|
126
|
+
className: a.className,
|
|
127
|
+
contentClassName: void 0,
|
|
128
|
+
resolvedClassName: N?.(e.data, a, n, r),
|
|
129
|
+
hideOnMobile: a.hideOnMobile,
|
|
130
|
+
columnStart: r + 1,
|
|
131
|
+
colSpan: 1,
|
|
132
|
+
preventRowClick: !1
|
|
133
|
+
};
|
|
134
|
+
})
|
|
135
|
+
};
|
|
136
|
+
}, U = b.length > 0 ? b.map((e, n) => {
|
|
137
|
+
switch (e.kind) {
|
|
138
|
+
case "spacer":
|
|
139
|
+
return e;
|
|
140
|
+
case "group":
|
|
141
|
+
return {
|
|
142
|
+
kind: "group",
|
|
143
|
+
key: e.key,
|
|
144
|
+
content: e.content,
|
|
145
|
+
sticky: e.sticky,
|
|
146
|
+
className: e.className,
|
|
147
|
+
noHover: e.noHover
|
|
148
|
+
};
|
|
149
|
+
case "group-footer":
|
|
150
|
+
return {
|
|
151
|
+
kind: "group-footer",
|
|
152
|
+
key: e.key,
|
|
153
|
+
content: e.content,
|
|
154
|
+
className: e.className,
|
|
155
|
+
noHover: e.noHover
|
|
156
|
+
};
|
|
157
|
+
case "expanded-full-width":
|
|
158
|
+
return {
|
|
159
|
+
kind: "expanded-full-width",
|
|
160
|
+
key: e.key,
|
|
161
|
+
parentKey: e.parentKey,
|
|
162
|
+
content: e.content,
|
|
163
|
+
className: e.className,
|
|
164
|
+
noHover: e.noHover
|
|
165
|
+
};
|
|
166
|
+
default:
|
|
167
|
+
return E(e, n);
|
|
168
|
+
}
|
|
169
|
+
}) : [
|
|
170
|
+
{
|
|
171
|
+
kind: "empty",
|
|
172
|
+
key: "empty",
|
|
173
|
+
content: u
|
|
174
|
+
}
|
|
175
|
+
], z = d ? {
|
|
176
|
+
className: d.className,
|
|
177
|
+
content: d.content,
|
|
178
|
+
cells: d.cells ? d.cells.map((e, n) => {
|
|
179
|
+
const i = e.columnKey ? (p.get(e.columnKey) ?? n + 1) - 1 : n, l = s[i]?.column, a = h(e.columnKey ?? l?.key);
|
|
180
|
+
return {
|
|
181
|
+
key: String(e.key ?? l?.key ?? n),
|
|
182
|
+
content: e.content,
|
|
183
|
+
horizontalAlign: e.horizontalAlign ?? a?.horizontalAlign ?? l?.horizontalAlign,
|
|
184
|
+
verticalAlign: e.verticalAlign ?? a?.verticalAlign,
|
|
185
|
+
className: k(l?.className, e.className),
|
|
186
|
+
hideOnMobile: l?.hideOnMobile,
|
|
187
|
+
columnStart: e.columnKey ? p.get(e.columnKey) ?? n + 1 : n + 1,
|
|
188
|
+
colSpan: e.colSpan
|
|
189
|
+
};
|
|
190
|
+
}) : d.cellsByIndex || d.cellsByKey ? s.map(({ column: e, columnIndex: n }) => {
|
|
191
|
+
const i = f(d, e.key), l = h(e.key);
|
|
192
|
+
return {
|
|
193
|
+
key: e.key,
|
|
194
|
+
content: i?.content ?? "",
|
|
195
|
+
horizontalAlign: i?.horizontalAlign ?? l?.horizontalAlign ?? e.horizontalAlign,
|
|
196
|
+
verticalAlign: i?.verticalAlign ?? l?.verticalAlign,
|
|
197
|
+
className: k(e.className, i?.className),
|
|
198
|
+
hideOnMobile: e.hideOnMobile,
|
|
199
|
+
columnStart: n + 1,
|
|
200
|
+
colSpan: 1
|
|
201
|
+
};
|
|
202
|
+
}) : void 0
|
|
203
|
+
} : void 0;
|
|
204
|
+
return {
|
|
205
|
+
columns: T,
|
|
206
|
+
header: A,
|
|
207
|
+
rows: U,
|
|
208
|
+
footer: z,
|
|
209
|
+
flags: {
|
|
210
|
+
hasHeader: !!A,
|
|
211
|
+
hasFooter: !!z,
|
|
212
|
+
isClickable: B,
|
|
213
|
+
isTableView: L
|
|
214
|
+
},
|
|
215
|
+
cardClasses: w
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
export {
|
|
219
|
+
P as buildTableViewModel
|
|
220
|
+
};
|
|
221
|
+
//# sourceMappingURL=buildTableViewModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildTableViewModel.js","sources":["../../../../src/components/table/model/buildTableViewModel.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport classNames from '../../../utils/classNames';\nimport type { TableColumnWithArea } from '../layout/useTableLayout';\nimport { getMobileLabel } from './resolveCellContent';\nimport { resolveRowClassName, resolveRowKey } from './resolveRowMeta';\nimport type {\n TableCellClassName,\n TableParsedDataRow,\n TableParsedExpandedDataRow,\n TableParsedCells,\n TableParsedFooter,\n TableParsedHeaderColumn,\n TableRowId,\n TableParsedRow,\n TableRowClassName,\n TableSortDirection,\n} from '../Table.types';\nimport type {\n TableDataViewRow,\n TableExpandedContentViewRow,\n TableExpandedDataViewRow,\n TableGroupFooterViewRow,\n TableGroupViewRow,\n TableViewHeader,\n TableViewHeaderColumn,\n TableViewCell,\n TableViewFooter,\n TableViewFooterCell,\n TableViewModel,\n TableViewRow,\n} from './tableViewModel.types';\n\nconst resolveDeclarativeCell = (resolvedCells: TableParsedCells, columnKey: string) =>\n resolvedCells.cellsByKey?.[columnKey];\n\ntype BuildTableViewModelProps<RowType extends Record<string, unknown>> = {\n columnsWithAreas: TableColumnWithArea<RowType>[];\n resolvedHeaderColumns: TableParsedHeaderColumn<RowType>[];\n resolvedRows: TableParsedRow<RowType>[];\n resolvedFooter?: TableParsedFooter;\n rowKey?: keyof RowType | ((row: RowType, rowIndex: number) => string | number);\n rowClassName?: TableRowClassName<RowType>;\n cellClassName?: TableCellClassName<RowType>;\n activeRowId?: TableRowId;\n noRowsState: ReactNode;\n isClickable: boolean;\n isTableView: boolean;\n selectedRowIds?: TableRowId[];\n sortBy?: string | string[];\n sortDirection?: TableSortDirection;\n cardClasses: {\n rowClassName?: string;\n cellClassName?: string;\n labelClassName?: string;\n contentClassName?: string;\n };\n};\n\nexport const buildTableViewModel = <RowType extends Record<string, unknown>>(\n props: BuildTableViewModelProps<RowType>\n): TableViewModel<RowType> => {\n const {\n columnsWithAreas,\n resolvedHeaderColumns,\n resolvedRows,\n resolvedFooter,\n rowKey,\n rowClassName,\n cellClassName,\n activeRowId,\n noRowsState,\n isClickable,\n isTableView,\n selectedRowIds,\n sortBy,\n sortDirection,\n cardClasses,\n } = props;\n\n const selectedRowIdSet = new Set(selectedRowIds);\n const sortedColumnKeys = new Set(Array.isArray(sortBy) ? sortBy : sortBy ? [sortBy] : []);\n\n const columns = columnsWithAreas.map(({ column, areaName }) => ({\n key: column.key,\n label: column.label,\n mobileLabel: getMobileLabel(column),\n horizontalAlign: column.horizontalAlign,\n className: column.className,\n headerClassName: column.headerClassName,\n hideOnMobile: column.hideOnMobile,\n sortable: column.sortable,\n sortDirection: sortedColumnKeys.has(column.key) ? sortDirection : undefined,\n areaName,\n source: column,\n }));\n\n const columnStartByKey = new Map(columnsWithAreas.map(({ column }, index) => [column.key, index + 1]));\n\n const header = (() => {\n if (resolvedHeaderColumns.length === 0) {\n return;\n }\n\n const rowCount = Math.max(...resolvedHeaderColumns.map(column => column.row + column.rowSpan - 1));\n const occupied = Array.from({ length: rowCount }, () => Array(columnsWithAreas.length).fill(false));\n\n const findColumnStart = (rowStart: number, colSpan: number) => {\n for (let candidate = 1; candidate <= columnsWithAreas.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 = resolvedHeaderColumns.map<TableViewHeaderColumn<RowType>>(column => {\n const columnStart = column.columnKey\n ? (columnStartByKey.get(column.columnKey) ?? 1)\n : findColumnStart(column.row, column.colSpan);\n\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.key,\n columnKey: column.columnKey,\n label: column.label,\n icon: column.icon,\n filter: column.filter,\n hideLabel: column.hideLabel,\n horizontalAlign: column.horizontalAlign,\n verticalAlign: column.verticalAlign,\n className: column.className,\n headerClassName: column.headerClassName,\n hideOnMobile: column.hideOnMobile,\n draggable: column.draggable,\n resizeable: column.resizeable,\n 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: column.columnKey\n ? columnsWithAreas.find(({ column: sourceColumn }) => sourceColumn.key === column.columnKey)?.column\n : undefined,\n };\n });\n\n return {\n rowCount,\n totalColumnCount: columnsWithAreas.length,\n columns,\n } satisfies TableViewHeader<RowType>;\n })();\n\n const headerAlignmentByColumnKey = new Map(\n header?.columns\n .filter((column): column is TableViewHeaderColumn<RowType> & { columnKey: string } => !!column.columnKey)\n .map(column => [\n column.columnKey,\n {\n horizontalAlign: column.horizontalAlign,\n verticalAlign: column.verticalAlign,\n },\n ]) ?? []\n );\n\n const resolveHeaderAlignment = (columnKey?: string) =>\n columnKey ? headerAlignmentByColumnKey.get(columnKey) : undefined;\n\n const createDataRow = (\n row: TableParsedDataRow<RowType> | TableParsedExpandedDataRow<RowType>,\n rowIndex: number\n ): TableDataViewRow<RowType> | TableExpandedDataViewRow<RowType> => {\n const resolvedRowId = resolveRowKey(row.data, rowIndex, rowKey);\n const declarativeCells =\n row.cellsByKey &&\n (() => {\n const nextCells: TableViewCell[] = [];\n let coveredUntilColumnIndex = -1;\n\n columnsWithAreas.forEach(({ column, columnIndex }) => {\n if (columnIndex <= coveredUntilColumnIndex) {\n return;\n }\n\n const declarativeCell = resolveDeclarativeCell(row, column.key);\n const headerAlignment = resolveHeaderAlignment(column.key);\n const colSpan = declarativeCell?.colSpan ?? 1;\n\n if (declarativeCell) {\n coveredUntilColumnIndex = columnIndex + colSpan - 1;\n }\n\n nextCells.push({\n key: String(declarativeCell?.key ?? column.key),\n mobileLabel: getMobileLabel(column),\n content: declarativeCell?.content ?? '',\n horizontalAlign:\n declarativeCell?.horizontalAlign ??\n headerAlignment?.horizontalAlign ??\n column.horizontalAlign,\n verticalAlign: declarativeCell?.verticalAlign ?? headerAlignment?.verticalAlign,\n className: classNames(column.className, declarativeCell?.className),\n contentClassName: declarativeCell?.contentClassName,\n resolvedClassName: cellClassName?.(row.data, column, rowIndex, columnIndex),\n hideOnMobile: column.hideOnMobile,\n columnStart: columnIndex + 1,\n colSpan,\n preventRowClick: declarativeCell?.preventRowClick,\n });\n });\n\n return nextCells;\n })();\n\n return {\n kind: row.kind,\n key: resolvedRowId,\n parentKey: row.kind === 'expanded' ? row.parentKey : undefined,\n rowIndex,\n data: row.data,\n active: resolvedRowId === activeRowId,\n disabled: row.disabled,\n className: row.className,\n noHover: row.noHover,\n resolvedClassName: resolveRowClassName(rowClassName, row.data, rowIndex),\n selected: selectedRowIdSet.has(resolvedRowId),\n cells:\n declarativeCells && declarativeCells.length > 0\n ? declarativeCells\n : columnsWithAreas.map(({ column, columnIndex }) => {\n const headerAlignment = resolveHeaderAlignment(column.key);\n\n return {\n key: column.key,\n mobileLabel: getMobileLabel(column),\n content: '',\n horizontalAlign: headerAlignment?.horizontalAlign ?? column.horizontalAlign,\n verticalAlign: headerAlignment?.verticalAlign,\n className: column.className,\n contentClassName: undefined,\n resolvedClassName: cellClassName?.(row.data, column, rowIndex, columnIndex),\n hideOnMobile: column.hideOnMobile,\n columnStart: columnIndex + 1,\n colSpan: 1,\n preventRowClick: false,\n };\n }),\n };\n };\n\n const rows: TableViewRow<RowType>[] =\n resolvedRows.length > 0\n ? resolvedRows.map((row, rowIndex) => {\n switch (row.kind) {\n case 'spacer':\n return row;\n case 'group':\n return {\n kind: 'group',\n key: row.key,\n content: row.content,\n sticky: row.sticky,\n className: row.className,\n noHover: row.noHover,\n } satisfies TableGroupViewRow;\n case 'group-footer':\n return {\n kind: 'group-footer',\n key: row.key,\n content: row.content,\n className: row.className,\n noHover: row.noHover,\n } satisfies TableGroupFooterViewRow;\n case 'expanded-full-width':\n return {\n kind: 'expanded-full-width',\n key: row.key,\n parentKey: row.parentKey,\n content: row.content,\n className: row.className,\n noHover: row.noHover,\n } satisfies TableExpandedContentViewRow<RowType>;\n default:\n return createDataRow(row, rowIndex);\n }\n })\n : [\n {\n kind: 'empty',\n key: 'empty',\n content: noRowsState,\n },\n ];\n\n const footer: TableViewFooter | undefined = resolvedFooter\n ? {\n className: resolvedFooter.className,\n content: resolvedFooter.content,\n cells: resolvedFooter.cells\n ? resolvedFooter.cells.map((footerCell, footerCellIndex) => {\n const baseColumnIndex = footerCell.columnKey\n ? (columnStartByKey.get(footerCell.columnKey) ?? footerCellIndex + 1) - 1\n : footerCellIndex;\n const sourceColumn = columnsWithAreas[baseColumnIndex]?.column;\n const headerAlignment = resolveHeaderAlignment(footerCell.columnKey ?? sourceColumn?.key);\n\n return {\n key: String(footerCell.key ?? sourceColumn?.key ?? footerCellIndex),\n content: footerCell.content,\n horizontalAlign:\n footerCell.horizontalAlign ??\n headerAlignment?.horizontalAlign ??\n sourceColumn?.horizontalAlign,\n verticalAlign: footerCell.verticalAlign ?? headerAlignment?.verticalAlign,\n className: classNames(sourceColumn?.className, footerCell.className),\n hideOnMobile: sourceColumn?.hideOnMobile,\n columnStart: footerCell.columnKey\n ? (columnStartByKey.get(footerCell.columnKey) ?? footerCellIndex + 1)\n : footerCellIndex + 1,\n colSpan: footerCell.colSpan,\n } satisfies TableViewFooterCell;\n })\n : resolvedFooter.cellsByIndex || resolvedFooter.cellsByKey\n ? columnsWithAreas.map(({ column, columnIndex }) => {\n const footerCell = resolveDeclarativeCell(resolvedFooter, column.key);\n const headerAlignment = resolveHeaderAlignment(column.key);\n\n return {\n key: column.key,\n content: footerCell?.content ?? '',\n horizontalAlign:\n footerCell?.horizontalAlign ??\n headerAlignment?.horizontalAlign ??\n column.horizontalAlign,\n verticalAlign: footerCell?.verticalAlign ?? headerAlignment?.verticalAlign,\n className: classNames(column.className, footerCell?.className),\n hideOnMobile: column.hideOnMobile,\n columnStart: columnIndex + 1,\n colSpan: 1,\n } satisfies TableViewFooterCell;\n })\n : undefined,\n }\n : undefined;\n\n return {\n columns,\n header,\n rows,\n footer,\n flags: {\n hasHeader: !!header,\n hasFooter: !!footer,\n isClickable,\n isTableView,\n },\n cardClasses,\n };\n};\n"],"names":["resolveDeclarativeCell","resolvedCells","columnKey","buildTableViewModel","props","columnsWithAreas","resolvedHeaderColumns","resolvedRows","resolvedFooter","rowKey","rowClassName","cellClassName","activeRowId","noRowsState","isClickable","isTableView","selectedRowIds","sortBy","sortDirection","cardClasses","selectedRowIdSet","sortedColumnKeys","columns","column","areaName","getMobileLabel","columnStartByKey","index","header","rowCount","occupied","findColumnStart","rowStart","colSpan","candidate","isUsed","columnStart","rowIndex","columnIndex","sourceColumn","headerAlignmentByColumnKey","resolveHeaderAlignment","createDataRow","row","resolvedRowId","resolveRowKey","declarativeCells","nextCells","coveredUntilColumnIndex","declarativeCell","headerAlignment","classNames","resolveRowClassName","rows","footer","footerCell","footerCellIndex","baseColumnIndex"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveCellContent.js","sources":["../../../../src/components/table/model/resolveCellContent.ts"],"sourcesContent":["import type { TableColumnDefinition } from '../Table.types';\n\nexport const getMobileLabel = <RowType extends Record<string, unknown>>(column: TableColumnDefinition<RowType>) => {\n if (column.mobileLabel !== undefined) {\n return column.mobileLabel;\n }\n\n return typeof column.label === 'string' ? column.label : '';\n};\n"],"names":["getMobileLabel","column"],"mappings":"AAEO,MAAMA,IAAiB,CAA0CC,MAChEA,EAAO,gBAAgB,SAChBA,EAAO,cAGX,OAAOA,EAAO,SAAU,WAAWA,EAAO,QAAQ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const resolveRowClassName: <RowType extends Record<string, unknown>>(rowClassName: string | ((row: RowType, rowIndex: number) => string) | undefined, row: RowType, rowIndex: number) => string | undefined;
|
|
2
|
+
export declare const resolveRowKey: <RowType extends Record<string, unknown>>(row: RowType, rowIndex: number, rowKey: keyof RowType | ((row: RowType, rowIndex: number) => string | number) | undefined) => string | number;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const r = (t, e, n) => typeof t == "function" ? t(e, n) : t, u = (t, e, n) => {
|
|
2
|
+
if (typeof n == "function")
|
|
3
|
+
return n(t, e);
|
|
4
|
+
if (n) {
|
|
5
|
+
const f = t[n];
|
|
6
|
+
if (typeof f == "string" || typeof f == "number")
|
|
7
|
+
return f;
|
|
8
|
+
}
|
|
9
|
+
return e;
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
r as resolveRowClassName,
|
|
13
|
+
u as resolveRowKey
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=resolveRowMeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveRowMeta.js","sources":["../../../../src/components/table/model/resolveRowMeta.ts"],"sourcesContent":["export const resolveRowClassName = <RowType extends Record<string, unknown>>(\n rowClassName: string | ((row: RowType, rowIndex: number) => string) | undefined,\n row: RowType,\n rowIndex: number\n) => {\n if (typeof rowClassName === 'function') {\n return rowClassName(row, rowIndex);\n }\n\n return rowClassName;\n};\n\nexport const resolveRowKey = <RowType extends Record<string, unknown>>(\n row: RowType,\n rowIndex: number,\n rowKey: keyof RowType | ((row: RowType, rowIndex: number) => string | number) | undefined\n) => {\n if (typeof rowKey === 'function') {\n return rowKey(row, rowIndex);\n }\n\n if (rowKey) {\n const rowValue = row[rowKey];\n if (typeof rowValue === 'string' || typeof rowValue === 'number') {\n return rowValue;\n }\n }\n\n return rowIndex;\n};\n"],"names":["resolveRowClassName","rowClassName","row","rowIndex","resolveRowKey","rowKey","rowValue"],"mappings":"AAAO,MAAMA,IAAsB,CAC/BC,GACAC,GACAC,MAEI,OAAOF,KAAiB,aACjBA,EAAaC,GAAKC,CAAQ,IAG9BF,GAGEG,IAAgB,CACzBF,GACAC,GACAE,MACC;AACD,MAAI,OAAOA,KAAW;AAClB,WAAOA,EAAOH,GAAKC,CAAQ;AAG/B,MAAIE,GAAQ;AACR,UAAMC,IAAWJ,EAAIG,CAAM;AAC3B,QAAI,OAAOC,KAAa,YAAY,OAAOA,KAAa;AACpD,aAAOA;AAAA,EAEf;AAEA,SAAOH;AACX;"}
|