@economic/taco 14.1.1 → 14.2.0-tanstack-virtual-update.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/charts/components/Area/AreaChart.cjs +2 -2
- package/dist/charts/components/Area/AreaChart.cjs.map +1 -1
- package/dist/charts/components/Area/AreaChart.js +2 -2
- package/dist/charts/components/Area/AreaChart.js.map +1 -1
- package/dist/charts/components/Bar/BarChart.cjs +1 -1
- package/dist/charts/components/Bar/BarChart.cjs.map +1 -1
- package/dist/charts/components/Bar/BarChart.js +1 -1
- package/dist/charts/components/Bar/BarChart.js.map +1 -1
- package/dist/charts/components/Line/LineChart.cjs +1 -1
- package/dist/charts/components/Line/LineChart.cjs.map +1 -1
- package/dist/charts/components/Line/LineChart.js +1 -1
- package/dist/charts/components/Line/LineChart.js.map +1 -1
- package/dist/components/Datepicker/Datepicker.cjs +4 -14
- package/dist/components/Datepicker/Datepicker.cjs.map +1 -1
- package/dist/components/Datepicker/Datepicker.js +4 -14
- package/dist/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.cjs +4 -20
- package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.js +5 -21
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/Popover/Popover.cjs +12 -3
- package/dist/components/Popover/Popover.cjs.map +1 -1
- package/dist/components/Popover/Popover.d.ts +1 -0
- package/dist/components/Popover/Popover.js +14 -5
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/util.cjs +2 -2
- package/dist/components/Popover/util.cjs.map +1 -1
- package/dist/components/Popover/util.d.ts +1 -1
- package/dist/components/Popover/util.js +2 -2
- package/dist/components/Popover/util.js.map +1 -1
- package/dist/components/Provider/Localization.cjs +3 -0
- package/dist/components/Provider/Localization.cjs.map +1 -1
- package/dist/components/Provider/Localization.d.ts +6 -0
- package/dist/components/Provider/Localization.js +3 -0
- package/dist/components/Provider/Localization.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Cell.cjs +3 -2
- package/dist/components/Table3/components/Columns/Cell/Cell.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Cell.js +3 -2
- package/dist/components/Table3/components/Columns/Cell/Cell.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs +6 -5
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js +6 -5
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs +9 -8
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js +9 -8
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/util.cjs +2 -1
- package/dist/components/Table3/components/Columns/Cell/util.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/util.js +2 -1
- package/dist/components/Table3/components/Columns/Cell/util.js.map +1 -1
- package/dist/components/Table3/components/Editing/Alert.cjs +2 -1
- package/dist/components/Table3/components/Editing/Alert.cjs.map +1 -1
- package/dist/components/Table3/components/Editing/Alert.js +2 -1
- package/dist/components/Table3/components/Editing/Alert.js.map +1 -1
- package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs +2 -1
- package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Editing/SaveStatus.js +2 -1
- package/dist/components/Table3/components/Row/Editing/SaveStatus.js.map +1 -1
- package/dist/components/Table3/components/Row/Row.cjs +2 -1
- package/dist/components/Table3/components/Row/Row.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Row.js +2 -1
- package/dist/components/Table3/components/Row/Row.js.map +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs +2 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs.map +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.js +2 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
- package/dist/components/Table3/features/useEditingState.cjs +3 -2
- package/dist/components/Table3/features/useEditingState.cjs.map +1 -1
- package/dist/components/Table3/features/useEditingState.js +3 -2
- package/dist/components/Table3/features/useEditingState.js.map +1 -1
- package/dist/components/Table3/features/useTableEditing.cjs +4 -3
- package/dist/components/Table3/features/useTableEditing.cjs.map +1 -1
- package/dist/components/Table3/features/useTableEditing.js +4 -3
- package/dist/components/Table3/features/useTableEditing.js.map +1 -1
- package/dist/components/Table3/listeners/useTableEditingListener.cjs +2 -1
- package/dist/components/Table3/listeners/useTableEditingListener.cjs.map +1 -1
- package/dist/components/Table3/listeners/useTableEditingListener.js +2 -1
- package/dist/components/Table3/listeners/useTableEditingListener.js.map +1 -1
- package/dist/components/Toggletip/Toggletip.cjs +85 -0
- package/dist/components/Toggletip/Toggletip.cjs.map +1 -0
- package/dist/components/Toggletip/Toggletip.d.ts +13 -0
- package/dist/components/Toggletip/Toggletip.js +68 -0
- package/dist/components/Toggletip/Toggletip.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.cjs +3 -19
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +3 -19
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/primitives/ArrowTip/ArrowTip.cjs +43 -0
- package/dist/primitives/ArrowTip/ArrowTip.cjs.map +1 -0
- package/dist/primitives/ArrowTip/ArrowTip.d.ts +10 -0
- package/dist/primitives/ArrowTip/ArrowTip.js +26 -0
- package/dist/primitives/ArrowTip/ArrowTip.js.map +1 -0
- package/dist/primitives/BareButton/BareButton.cjs +28 -0
- package/dist/primitives/BareButton/BareButton.cjs.map +1 -0
- package/dist/primitives/BareButton/BareButton.d.ts +7 -0
- package/dist/primitives/BareButton/BareButton.js +11 -0
- package/dist/primitives/BareButton/BareButton.js.map +1 -0
- package/dist/primitives/Table/Core/components/Body/Body.cjs +5 -5
- package/dist/primitives/Table/Core/components/Body/Body.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Body/Body.js +6 -6
- package/dist/primitives/Table/Core/components/Body/Body.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.cjs +2 -2
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js +2 -2
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.cjs +2 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js +2 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs +6 -5
- package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.js +6 -5
- package/dist/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs +3 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js +3 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs +3 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js +3 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs +3 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js +3 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Footer.cjs +3 -2
- package/dist/primitives/Table/Core/components/Footer/Footer.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Footer.js +3 -2
- package/dist/primitives/Table/Core/components/Footer/Footer.js.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.cjs +2 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.js +2 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
- package/dist/primitives/Table/Core/components/Header/Header.cjs +9 -8
- package/dist/primitives/Table/Core/components/Header/Header.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Header/Header.js +9 -8
- package/dist/primitives/Table/Core/components/Header/Header.js.map +1 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs +6 -5
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +2 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.cjs +3 -2
- package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +3 -2
- package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
- package/dist/primitives/Table/Core/components/Row/Row.cjs +2 -2
- package/dist/primitives/Table/Core/components/Row/Row.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Row/Row.js +2 -2
- package/dist/primitives/Table/Core/components/Row/Row.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/Toolbar.cjs +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/Toolbar.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/Toolbar.js +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/Toolbar.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.cjs +6 -6
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.js +6 -6
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js +2 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.cjs +1 -1
- package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.js +2 -2
- package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRef.cjs +3 -2
- package/dist/primitives/Table/Core/features/useTableRef.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRef.js +3 -2
- package/dist/primitives/Table/Core/features/useTableRef.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRenderer.cjs +13 -12
- package/dist/primitives/Table/Core/features/useTableRenderer.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableRenderer.js +3 -2
- package/dist/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyle.cjs +2 -1
- package/dist/primitives/Table/Core/features/useTableStyle.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyle.d.ts +857 -857
- package/dist/primitives/Table/Core/features/useTableStyle.js +2 -1
- package/dist/primitives/Table/Core/features/useTableStyle.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyleGrid.cjs +2 -1
- package/dist/primitives/Table/Core/features/useTableStyleGrid.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableStyleGrid.js +2 -1
- package/dist/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs +2 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs.map +1 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js +2 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs +5 -5
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js +2 -2
- package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.cjs +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.cjs +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.cjs +4 -3
- package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.cjs +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.cjs +4 -4
- package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +2 -2
- package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.cjs +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.cjs +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.cjs +5 -4
- package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js +2 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.cjs +3 -1
- package/dist/primitives/Table/useTableManager/useTableManager.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.js +3 -1
- package/dist/primitives/Table/useTableManager/useTableManager.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/rows.cjs +8 -1
- package/dist/primitives/Table/useTableManager/util/rows.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/rows.d.ts +2 -1
- package/dist/primitives/Table/useTableManager/util/rows.js +9 -2
- package/dist/primitives/Table/useTableManager/util/rows.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/search.cjs +2 -1
- package/dist/primitives/Table/useTableManager/util/search.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/search.js +2 -1
- package/dist/primitives/Table/useTableManager/util/search.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/settings.cjs +2 -1
- package/dist/primitives/Table/useTableManager/util/settings.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/settings.js +2 -1
- package/dist/primitives/Table/useTableManager/util/settings.js.map +1 -1
- package/dist/utils/tailwind.cjs +4 -0
- package/dist/utils/tailwind.cjs.map +1 -1
- package/dist/utils/tailwind.d.ts +4 -0
- package/dist/utils/tailwind.js +4 -0
- package/dist/utils/tailwind.js.map +1 -1
- package/package.json +6 -6
- package/dist/components/Popover/Primitives.cjs +0 -44
- package/dist/components/Popover/Primitives.cjs.map +0 -1
- package/dist/components/Popover/Primitives.d.ts +0 -2
- package/dist/components/Popover/Primitives.js +0 -27
- package/dist/components/Popover/Primitives.js.map +0 -1
- /package/dist/components/Icon/config/{index-template.d.cts → index-template.d.ts} +0 -0
- /package/dist/components/Icon/config/{svgr.config.d.cts → svgr.config.d.ts} +0 -0
- /package/dist/components/Icon/config/{template.d.cts → template.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Actions.tsx"],"sourcesContent":["import type {\n Table as ReactTable,\n CellContext as ReactTableCellContext,\n TableMeta as ReactTableMeta,\n} from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { LegacyIconButton, Menu, Shortcut, useLocalization } from '@/components';\n\nimport type {\n TableRowActionConfig,\n TableRowActionConfigRenderer,\n TableRowActionHelpers,\n TableRowActionRenderer,\n} from '../../../../types';\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { hasRowActions, isRowActionConfig } from '../../../../useTableManager/util/rowActions';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction renderRowActionConfig<TArg>(config: TableRowActionConfig<TArg>, arg: TArg) {\n const dataAttributes = config.data\n ? Object.fromEntries(\n Object.entries(config.data).map(([key, value]) => [key.startsWith('data-') ? key : `data-${key}`, value])\n )\n : undefined;\n\n return (\n <LegacyIconButton\n key={config.key}\n aria-label={config.name}\n tooltip={config.tooltip}\n icon={config.icon}\n disabled={config.disabled}\n shortcut={config.shortcut}\n onClick={event => config.onClick(arg, event)}\n {...dataAttributes}\n />\n );\n}\n\nexport type ActionsProps<TType = unknown> = {\n actions: TableRowActionRenderer<TType>[] | TableRowActionConfigRenderer<TType>;\n actionsLength: number;\n data: any;\n isActiveRow: boolean;\n rowId: string;\n table: ReactTable<TType>;\n};\nexport function Actions<TType = unknown>(props: ActionsProps<TType>) {\n const { actions, actionsLength, data, isActiveRow, rowId, table } = props;\n const { texts } = useLocalization();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const helpers: TableRowActionHelpers<TType> = {\n rowId,\n table,\n };\n\n if (tableMeta.editing?.isEnabled) {\n const lastFocusedCellIndex = tableMeta.editing.lastFocusedCellIndex;\n\n helpers.editing = {\n isEditing: tableMeta.editing?.isEditing ?? false,\n // cells stamp their visible index (data-cell-index), so the visible leaf column at that index is the focused column\n lastFocusedCellId:\n lastFocusedCellIndex === undefined ? undefined : table.getVisibleLeafColumns()[lastFocusedCellIndex]?.id,\n removeRowChanges: () => tableMeta.editing.discardChanges(rowId, table),\n save: () => tableMeta.editing.saveChanges(table, rowId),\n };\n }\n\n // a config-style function returns the row's whole list; Table3 may append its editing actions as ready elements\n const resolvedActions: (React.JSX.Element | TableRowActionConfig<TType> | null)[] = Array.isArray(actions)\n ? actions.map(action => action(data, helpers))\n : actions(data, helpers);\n\n const visibleActions = resolvedActions\n .filter((result): result is React.JSX.Element | TableRowActionConfig<TType> => !!result)\n .map(result => (isRowActionConfig(result) ? renderRowActionConfig(result, data) : result));\n\n let length = actionsLength;\n\n // always force the editing actions into a menu when present -- editing is undefined in Report\n if (tableMeta.editing?.isEditing && tableMeta.editing?.showEditingActions) {\n // When editing actions are enabled, there are always 2 editing actions (save and discard)\n // The menu button replaces one of them, so subtract 1\n const lengthWithoutEditingItems = visibleActions.length - 1;\n\n if (lengthWithoutEditingItems < actionsLength) {\n length = lengthWithoutEditingItems;\n }\n }\n\n const handleMenuButtonKeyDown = (event: React.KeyboardEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n const isLastRowActive = tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1;\n\n // normally we handle this on change of active row, but when tabbing out of the last row the active row state stays on the last one\n if (event.key === 'Tab' && isLastRowActive && tableMeta.editing?.isEditing && tableMeta.editing?.hasChanges()) {\n tableMeta.editing.saveChanges(table);\n }\n };\n\n const handleMenuContentKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.stopPropagation();\n }\n };\n\n const actionsOnRow = visibleActions.length === length ? visibleActions : visibleActions.slice(0, length - 1);\n const actionsInMenu = visibleActions.slice(visibleActions.length === length ? length : length - 1);\n\n const className = cn('flex justify-end bg-[inherit] text-right print:hidden');\n\n return (\n <span className={className}>\n {actionsOnRow.map((button, index) => {\n const tooltip = String(button.props.tooltip ?? button.props['aria-label'] ?? '');\n\n return React.cloneElement(button, {\n appearance: 'transparent',\n // config-rendered buttons carry their stable config key; legacy slots fall back to the index\n key: button.key ?? index,\n tabIndex: isActiveRow ? 0 : -1,\n tooltip: button.props.shortcut ? (\n <>\n {tooltip}\n <Shortcut className=\"ml-2\" keys={button.props.shortcut} />\n </>\n ) : (\n tooltip\n ),\n });\n })}\n {actionsInMenu.length ? (\n <LegacyIconButton\n appearance=\"transparent\"\n aria-label={texts.table.columns.actions.tooltip}\n icon=\"more\"\n onKeyDown={handleMenuButtonKeyDown}\n tabIndex={isActiveRow ? 0 : -1}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content onKeyDown={handleMenuContentKeyDown}>\n {actionsInMenu.map((action, i) => {\n const key = action.key ?? i;\n const item = (\n <Menu.Item key={key} {...action.props} shortcut={action.props.shortcut}>\n {action.props['aria-label']}\n </Menu.Item>\n );\n\n // add a separator between the editing items, if needed\n const isFirstEditingMenuItem =\n tableMeta.editing?.isEditing &&\n tableMeta.editing?.showEditingActions &&\n actionsInMenu.length > 2 &&\n i === actionsInMenu.length - 2;\n\n if (isFirstEditingMenuItem) {\n return (\n <React.Fragment key={key}>\n <Menu.Separator />\n {item}\n </React.Fragment>\n );\n }\n\n return item;\n })}\n </Menu.Content>\n </Menu>\n )}\n />\n ) : null}\n </span>\n );\n}\n\nfunction Header() {\n return null;\n}\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { row, table } = context;\n const { hideRowActions, isHovered, rowIndex } = React.useContext(RowContext);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const actions = tableMeta.rowActions.rowActions;\n const actionsLength = tableMeta.rowActions.rowActionsLength;\n\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;\n const isResizingColumn = !!table.getState().columnSizingInfo.isResizingColumn;\n const isHoverStatePaused = tableMeta.rowActive.isHoverStatePaused;\n const isRowGrouped = row.getIsGrouped();\n\n if (\n !hideRowActions &&\n !isRowGrouped &&\n hasRowActions(actions) &&\n (isActiveRow || (isHovered && !isHoverStatePaused && !isResizingColumn))\n ) {\n return (\n <Actions<TType>\n actions={actions}\n actionsLength={actionsLength}\n data={row.original}\n isActiveRow={isActiveRow}\n rowId={row.id}\n table={table}\n />\n );\n }\n\n return null;\n}) as <TType = unknown>(context: ReactTableCellContext<TType, unknown>) => React.JSX.Element;\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n meta: {\n align: 'right',\n className: cn(\n 'right-0 overflow-hidden !px-0 !pr-1 print:opacity-0 [table_&]:group-[[data-row-active=\"true\"]]/row:sticky',\n 'group-[[data-row-active=\"true\"][data-selected=\"false\"]]/row:text-gray-200',\n 'group-[[data-row-selected=\"true\"]]/row:text-blue-100',\n 'group-[[data-row-selected=\"false\"]:hover]/row:text-gray-100',\n // oxlint-disable-next-line taco/no-disallowed-shadow-classes -- scroll-edge indicator driven by a CSS variable, not a design-token elevation shadow\n 'shadow-[-6px_0px_6px_var(--table-row-actions-shadow)]'\n ),\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n },\n};\n"],"names":["LegacyIconButton","useLocalization","isRowActionConfig","Shortcut","Menu","RowContext","hasRowActions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Actions.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Actions.tsx"],"sourcesContent":["import type { Table as ReactTable, CellContext as ReactTableCellContext } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { LegacyIconButton, Menu, Shortcut, useLocalization } from '@/components';\n\nimport type {\n TableRowActionConfig,\n TableRowActionConfigRenderer,\n TableRowActionHelpers,\n TableRowActionRenderer,\n} from '../../../../types';\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { hasRowActions, isRowActionConfig } from '../../../../useTableManager/util/rowActions';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction renderRowActionConfig<TArg>(config: TableRowActionConfig<TArg>, arg: TArg) {\n const dataAttributes = config.data\n ? Object.fromEntries(\n Object.entries(config.data).map(([key, value]) => [key.startsWith('data-') ? key : `data-${key}`, value])\n )\n : undefined;\n\n return (\n <LegacyIconButton\n key={config.key}\n aria-label={config.name}\n tooltip={config.tooltip}\n icon={config.icon}\n disabled={config.disabled}\n shortcut={config.shortcut}\n onClick={event => config.onClick(arg, event)}\n {...dataAttributes}\n />\n );\n}\n\nexport type ActionsProps<TType = unknown> = {\n actions: TableRowActionRenderer<TType>[] | TableRowActionConfigRenderer<TType>;\n actionsLength: number;\n data: any;\n isActiveRow: boolean;\n rowId: string;\n table: ReactTable<TType>;\n};\nexport function Actions<TType = unknown>(props: ActionsProps<TType>) {\n const { actions, actionsLength, data, isActiveRow, rowId, table } = props;\n const { texts } = useLocalization();\n const tableMeta = getTableMeta(table);\n\n const helpers: TableRowActionHelpers<TType> = {\n rowId,\n table,\n };\n\n if (tableMeta.editing?.isEnabled) {\n const lastFocusedCellIndex = tableMeta.editing.lastFocusedCellIndex;\n\n helpers.editing = {\n isEditing: tableMeta.editing?.isEditing ?? false,\n // cells stamp their visible index (data-cell-index), so the visible leaf column at that index is the focused column\n lastFocusedCellId:\n lastFocusedCellIndex === undefined ? undefined : table.getVisibleLeafColumns()[lastFocusedCellIndex]?.id,\n removeRowChanges: () => tableMeta.editing.discardChanges(rowId, table),\n save: () => tableMeta.editing.saveChanges(table, rowId),\n };\n }\n\n // a config-style function returns the row's whole list; Table3 may append its editing actions as ready elements\n const resolvedActions: (React.JSX.Element | TableRowActionConfig<TType> | null)[] = Array.isArray(actions)\n ? actions.map(action => action(data, helpers))\n : actions(data, helpers);\n\n const visibleActions = resolvedActions\n .filter((result): result is React.JSX.Element | TableRowActionConfig<TType> => !!result)\n .map(result => (isRowActionConfig(result) ? renderRowActionConfig(result, data) : result));\n\n let length = actionsLength;\n\n // always force the editing actions into a menu when present -- editing is undefined in Report\n if (tableMeta.editing?.isEditing && tableMeta.editing?.showEditingActions) {\n // When editing actions are enabled, there are always 2 editing actions (save and discard)\n // The menu button replaces one of them, so subtract 1\n const lengthWithoutEditingItems = visibleActions.length - 1;\n\n if (lengthWithoutEditingItems < actionsLength) {\n length = lengthWithoutEditingItems;\n }\n }\n\n const handleMenuButtonKeyDown = (event: React.KeyboardEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n const isLastRowActive = tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1;\n\n // normally we handle this on change of active row, but when tabbing out of the last row the active row state stays on the last one\n if (event.key === 'Tab' && isLastRowActive && tableMeta.editing?.isEditing && tableMeta.editing?.hasChanges()) {\n tableMeta.editing.saveChanges(table);\n }\n };\n\n const handleMenuContentKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.stopPropagation();\n }\n };\n\n const actionsOnRow = visibleActions.length === length ? visibleActions : visibleActions.slice(0, length - 1);\n const actionsInMenu = visibleActions.slice(visibleActions.length === length ? length : length - 1);\n\n const className = cn('flex justify-end bg-[inherit] text-right print:hidden');\n\n return (\n <span className={className}>\n {actionsOnRow.map((button, index) => {\n const tooltip = String(button.props.tooltip ?? button.props['aria-label'] ?? '');\n\n return React.cloneElement(button, {\n appearance: 'transparent',\n // config-rendered buttons carry their stable config key; legacy slots fall back to the index\n key: button.key ?? index,\n tabIndex: isActiveRow ? 0 : -1,\n tooltip: button.props.shortcut ? (\n <>\n {tooltip}\n <Shortcut className=\"ml-2\" keys={button.props.shortcut} />\n </>\n ) : (\n tooltip\n ),\n });\n })}\n {actionsInMenu.length ? (\n <LegacyIconButton\n appearance=\"transparent\"\n aria-label={texts.table.columns.actions.tooltip}\n icon=\"more\"\n onKeyDown={handleMenuButtonKeyDown}\n tabIndex={isActiveRow ? 0 : -1}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content onKeyDown={handleMenuContentKeyDown}>\n {actionsInMenu.map((action, i) => {\n const key = action.key ?? i;\n const item = (\n <Menu.Item key={key} {...action.props} shortcut={action.props.shortcut}>\n {action.props['aria-label']}\n </Menu.Item>\n );\n\n // add a separator between the editing items, if needed\n const isFirstEditingMenuItem =\n tableMeta.editing?.isEditing &&\n tableMeta.editing?.showEditingActions &&\n actionsInMenu.length > 2 &&\n i === actionsInMenu.length - 2;\n\n if (isFirstEditingMenuItem) {\n return (\n <React.Fragment key={key}>\n <Menu.Separator />\n {item}\n </React.Fragment>\n );\n }\n\n return item;\n })}\n </Menu.Content>\n </Menu>\n )}\n />\n ) : null}\n </span>\n );\n}\n\nfunction Header() {\n return null;\n}\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { row, table } = context;\n const { hideRowActions, isHovered, rowIndex } = React.useContext(RowContext);\n const tableMeta = getTableMeta(table);\n\n const actions = tableMeta.rowActions.rowActions;\n const actionsLength = tableMeta.rowActions.rowActionsLength;\n\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;\n const isResizingColumn = !!table.getState().columnSizingInfo.isResizingColumn;\n const isHoverStatePaused = tableMeta.rowActive.isHoverStatePaused;\n const isRowGrouped = row.getIsGrouped();\n\n if (\n !hideRowActions &&\n !isRowGrouped &&\n hasRowActions(actions) &&\n (isActiveRow || (isHovered && !isHoverStatePaused && !isResizingColumn))\n ) {\n return (\n <Actions<TType>\n actions={actions}\n actionsLength={actionsLength}\n data={row.original}\n isActiveRow={isActiveRow}\n rowId={row.id}\n table={table}\n />\n );\n }\n\n return null;\n}) as <TType = unknown>(context: ReactTableCellContext<TType, unknown>) => React.JSX.Element;\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n meta: {\n align: 'right',\n className: cn(\n 'right-0 overflow-hidden !px-0 !pr-1 print:opacity-0 [table_&]:group-[[data-row-active=\"true\"]]/row:sticky',\n 'group-[[data-row-active=\"true\"][data-selected=\"false\"]]/row:text-gray-200',\n 'group-[[data-row-selected=\"true\"]]/row:text-blue-100',\n 'group-[[data-row-selected=\"false\"]:hover]/row:text-gray-100',\n // oxlint-disable-next-line taco/no-disallowed-shadow-classes -- scroll-edge indicator driven by a CSS variable, not a design-token elevation shadow\n 'shadow-[-6px_0px_6px_var(--table-row-actions-shadow)]'\n ),\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n },\n};\n"],"names":["LegacyIconButton","useLocalization","getTableMeta","isRowActionConfig","Shortcut","Menu","RowContext","hasRowActions"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import cn from "clsx";
|
|
2
2
|
import React__default from "react";
|
|
3
3
|
import { isRowActionConfig, hasRowActions } from "../../../../useTableManager/util/rowActions.js";
|
|
4
|
+
import { getTableMeta } from "../../../../useTableManager/util/rows.js";
|
|
4
5
|
import { RowContext } from "../../Row/RowContext.js";
|
|
5
6
|
import { useLocalization } from "../../../../../../components/Provider/Localization.js";
|
|
6
7
|
import { Shortcut } from "../../../../../../components/Shortcut/Shortcut.js";
|
|
@@ -27,7 +28,7 @@ function renderRowActionConfig(config, arg) {
|
|
|
27
28
|
function Actions(props) {
|
|
28
29
|
const { actions, actionsLength, data, isActiveRow, rowId, table } = props;
|
|
29
30
|
const { texts } = useLocalization();
|
|
30
|
-
const tableMeta = table
|
|
31
|
+
const tableMeta = getTableMeta(table);
|
|
31
32
|
const helpers = {
|
|
32
33
|
rowId,
|
|
33
34
|
table
|
|
@@ -100,7 +101,7 @@ function Header() {
|
|
|
100
101
|
const Cell = React__default.memo(function MemoedCell(context) {
|
|
101
102
|
const { row, table } = context;
|
|
102
103
|
const { hideRowActions, isHovered, rowIndex } = React__default.useContext(RowContext);
|
|
103
|
-
const tableMeta = table
|
|
104
|
+
const tableMeta = getTableMeta(table);
|
|
104
105
|
const actions = tableMeta.rowActions.rowActions;
|
|
105
106
|
const actionsLength = tableMeta.rowActions.rowActionsLength;
|
|
106
107
|
const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.js","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Actions.tsx"],"sourcesContent":["import type {\n Table as ReactTable,\n CellContext as ReactTableCellContext,\n TableMeta as ReactTableMeta,\n} from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { LegacyIconButton, Menu, Shortcut, useLocalization } from '@/components';\n\nimport type {\n TableRowActionConfig,\n TableRowActionConfigRenderer,\n TableRowActionHelpers,\n TableRowActionRenderer,\n} from '../../../../types';\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { hasRowActions, isRowActionConfig } from '../../../../useTableManager/util/rowActions';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction renderRowActionConfig<TArg>(config: TableRowActionConfig<TArg>, arg: TArg) {\n const dataAttributes = config.data\n ? Object.fromEntries(\n Object.entries(config.data).map(([key, value]) => [key.startsWith('data-') ? key : `data-${key}`, value])\n )\n : undefined;\n\n return (\n <LegacyIconButton\n key={config.key}\n aria-label={config.name}\n tooltip={config.tooltip}\n icon={config.icon}\n disabled={config.disabled}\n shortcut={config.shortcut}\n onClick={event => config.onClick(arg, event)}\n {...dataAttributes}\n />\n );\n}\n\nexport type ActionsProps<TType = unknown> = {\n actions: TableRowActionRenderer<TType>[] | TableRowActionConfigRenderer<TType>;\n actionsLength: number;\n data: any;\n isActiveRow: boolean;\n rowId: string;\n table: ReactTable<TType>;\n};\nexport function Actions<TType = unknown>(props: ActionsProps<TType>) {\n const { actions, actionsLength, data, isActiveRow, rowId, table } = props;\n const { texts } = useLocalization();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const helpers: TableRowActionHelpers<TType> = {\n rowId,\n table,\n };\n\n if (tableMeta.editing?.isEnabled) {\n const lastFocusedCellIndex = tableMeta.editing.lastFocusedCellIndex;\n\n helpers.editing = {\n isEditing: tableMeta.editing?.isEditing ?? false,\n // cells stamp their visible index (data-cell-index), so the visible leaf column at that index is the focused column\n lastFocusedCellId:\n lastFocusedCellIndex === undefined ? undefined : table.getVisibleLeafColumns()[lastFocusedCellIndex]?.id,\n removeRowChanges: () => tableMeta.editing.discardChanges(rowId, table),\n save: () => tableMeta.editing.saveChanges(table, rowId),\n };\n }\n\n // a config-style function returns the row's whole list; Table3 may append its editing actions as ready elements\n const resolvedActions: (React.JSX.Element | TableRowActionConfig<TType> | null)[] = Array.isArray(actions)\n ? actions.map(action => action(data, helpers))\n : actions(data, helpers);\n\n const visibleActions = resolvedActions\n .filter((result): result is React.JSX.Element | TableRowActionConfig<TType> => !!result)\n .map(result => (isRowActionConfig(result) ? renderRowActionConfig(result, data) : result));\n\n let length = actionsLength;\n\n // always force the editing actions into a menu when present -- editing is undefined in Report\n if (tableMeta.editing?.isEditing && tableMeta.editing?.showEditingActions) {\n // When editing actions are enabled, there are always 2 editing actions (save and discard)\n // The menu button replaces one of them, so subtract 1\n const lengthWithoutEditingItems = visibleActions.length - 1;\n\n if (lengthWithoutEditingItems < actionsLength) {\n length = lengthWithoutEditingItems;\n }\n }\n\n const handleMenuButtonKeyDown = (event: React.KeyboardEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n const isLastRowActive = tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1;\n\n // normally we handle this on change of active row, but when tabbing out of the last row the active row state stays on the last one\n if (event.key === 'Tab' && isLastRowActive && tableMeta.editing?.isEditing && tableMeta.editing?.hasChanges()) {\n tableMeta.editing.saveChanges(table);\n }\n };\n\n const handleMenuContentKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.stopPropagation();\n }\n };\n\n const actionsOnRow = visibleActions.length === length ? visibleActions : visibleActions.slice(0, length - 1);\n const actionsInMenu = visibleActions.slice(visibleActions.length === length ? length : length - 1);\n\n const className = cn('flex justify-end bg-[inherit] text-right print:hidden');\n\n return (\n <span className={className}>\n {actionsOnRow.map((button, index) => {\n const tooltip = String(button.props.tooltip ?? button.props['aria-label'] ?? '');\n\n return React.cloneElement(button, {\n appearance: 'transparent',\n // config-rendered buttons carry their stable config key; legacy slots fall back to the index\n key: button.key ?? index,\n tabIndex: isActiveRow ? 0 : -1,\n tooltip: button.props.shortcut ? (\n <>\n {tooltip}\n <Shortcut className=\"ml-2\" keys={button.props.shortcut} />\n </>\n ) : (\n tooltip\n ),\n });\n })}\n {actionsInMenu.length ? (\n <LegacyIconButton\n appearance=\"transparent\"\n aria-label={texts.table.columns.actions.tooltip}\n icon=\"more\"\n onKeyDown={handleMenuButtonKeyDown}\n tabIndex={isActiveRow ? 0 : -1}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content onKeyDown={handleMenuContentKeyDown}>\n {actionsInMenu.map((action, i) => {\n const key = action.key ?? i;\n const item = (\n <Menu.Item key={key} {...action.props} shortcut={action.props.shortcut}>\n {action.props['aria-label']}\n </Menu.Item>\n );\n\n // add a separator between the editing items, if needed\n const isFirstEditingMenuItem =\n tableMeta.editing?.isEditing &&\n tableMeta.editing?.showEditingActions &&\n actionsInMenu.length > 2 &&\n i === actionsInMenu.length - 2;\n\n if (isFirstEditingMenuItem) {\n return (\n <React.Fragment key={key}>\n <Menu.Separator />\n {item}\n </React.Fragment>\n );\n }\n\n return item;\n })}\n </Menu.Content>\n </Menu>\n )}\n />\n ) : null}\n </span>\n );\n}\n\nfunction Header() {\n return null;\n}\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { row, table } = context;\n const { hideRowActions, isHovered, rowIndex } = React.useContext(RowContext);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const actions = tableMeta.rowActions.rowActions;\n const actionsLength = tableMeta.rowActions.rowActionsLength;\n\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;\n const isResizingColumn = !!table.getState().columnSizingInfo.isResizingColumn;\n const isHoverStatePaused = tableMeta.rowActive.isHoverStatePaused;\n const isRowGrouped = row.getIsGrouped();\n\n if (\n !hideRowActions &&\n !isRowGrouped &&\n hasRowActions(actions) &&\n (isActiveRow || (isHovered && !isHoverStatePaused && !isResizingColumn))\n ) {\n return (\n <Actions<TType>\n actions={actions}\n actionsLength={actionsLength}\n data={row.original}\n isActiveRow={isActiveRow}\n rowId={row.id}\n table={table}\n />\n );\n }\n\n return null;\n}) as <TType = unknown>(context: ReactTableCellContext<TType, unknown>) => React.JSX.Element;\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n meta: {\n align: 'right',\n className: cn(\n 'right-0 overflow-hidden !px-0 !pr-1 print:opacity-0 [table_&]:group-[[data-row-active=\"true\"]]/row:sticky',\n 'group-[[data-row-active=\"true\"][data-selected=\"false\"]]/row:text-gray-200',\n 'group-[[data-row-selected=\"true\"]]/row:text-blue-100',\n 'group-[[data-row-selected=\"false\"]:hover]/row:text-gray-100',\n // oxlint-disable-next-line taco/no-disallowed-shadow-classes -- scroll-edge indicator driven by a CSS variable, not a design-token elevation shadow\n 'shadow-[-6px_0px_6px_var(--table-row-actions-shadow)]'\n ),\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n },\n};\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Actions.js","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Actions.tsx"],"sourcesContent":["import type { Table as ReactTable, CellContext as ReactTableCellContext } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { LegacyIconButton, Menu, Shortcut, useLocalization } from '@/components';\n\nimport type {\n TableRowActionConfig,\n TableRowActionConfigRenderer,\n TableRowActionHelpers,\n TableRowActionRenderer,\n} from '../../../../types';\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { hasRowActions, isRowActionConfig } from '../../../../useTableManager/util/rowActions';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction renderRowActionConfig<TArg>(config: TableRowActionConfig<TArg>, arg: TArg) {\n const dataAttributes = config.data\n ? Object.fromEntries(\n Object.entries(config.data).map(([key, value]) => [key.startsWith('data-') ? key : `data-${key}`, value])\n )\n : undefined;\n\n return (\n <LegacyIconButton\n key={config.key}\n aria-label={config.name}\n tooltip={config.tooltip}\n icon={config.icon}\n disabled={config.disabled}\n shortcut={config.shortcut}\n onClick={event => config.onClick(arg, event)}\n {...dataAttributes}\n />\n );\n}\n\nexport type ActionsProps<TType = unknown> = {\n actions: TableRowActionRenderer<TType>[] | TableRowActionConfigRenderer<TType>;\n actionsLength: number;\n data: any;\n isActiveRow: boolean;\n rowId: string;\n table: ReactTable<TType>;\n};\nexport function Actions<TType = unknown>(props: ActionsProps<TType>) {\n const { actions, actionsLength, data, isActiveRow, rowId, table } = props;\n const { texts } = useLocalization();\n const tableMeta = getTableMeta(table);\n\n const helpers: TableRowActionHelpers<TType> = {\n rowId,\n table,\n };\n\n if (tableMeta.editing?.isEnabled) {\n const lastFocusedCellIndex = tableMeta.editing.lastFocusedCellIndex;\n\n helpers.editing = {\n isEditing: tableMeta.editing?.isEditing ?? false,\n // cells stamp their visible index (data-cell-index), so the visible leaf column at that index is the focused column\n lastFocusedCellId:\n lastFocusedCellIndex === undefined ? undefined : table.getVisibleLeafColumns()[lastFocusedCellIndex]?.id,\n removeRowChanges: () => tableMeta.editing.discardChanges(rowId, table),\n save: () => tableMeta.editing.saveChanges(table, rowId),\n };\n }\n\n // a config-style function returns the row's whole list; Table3 may append its editing actions as ready elements\n const resolvedActions: (React.JSX.Element | TableRowActionConfig<TType> | null)[] = Array.isArray(actions)\n ? actions.map(action => action(data, helpers))\n : actions(data, helpers);\n\n const visibleActions = resolvedActions\n .filter((result): result is React.JSX.Element | TableRowActionConfig<TType> => !!result)\n .map(result => (isRowActionConfig(result) ? renderRowActionConfig(result, data) : result));\n\n let length = actionsLength;\n\n // always force the editing actions into a menu when present -- editing is undefined in Report\n if (tableMeta.editing?.isEditing && tableMeta.editing?.showEditingActions) {\n // When editing actions are enabled, there are always 2 editing actions (save and discard)\n // The menu button replaces one of them, so subtract 1\n const lengthWithoutEditingItems = visibleActions.length - 1;\n\n if (lengthWithoutEditingItems < actionsLength) {\n length = lengthWithoutEditingItems;\n }\n }\n\n const handleMenuButtonKeyDown = (event: React.KeyboardEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n const isLastRowActive = tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1;\n\n // normally we handle this on change of active row, but when tabbing out of the last row the active row state stays on the last one\n if (event.key === 'Tab' && isLastRowActive && tableMeta.editing?.isEditing && tableMeta.editing?.hasChanges()) {\n tableMeta.editing.saveChanges(table);\n }\n };\n\n const handleMenuContentKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.stopPropagation();\n }\n };\n\n const actionsOnRow = visibleActions.length === length ? visibleActions : visibleActions.slice(0, length - 1);\n const actionsInMenu = visibleActions.slice(visibleActions.length === length ? length : length - 1);\n\n const className = cn('flex justify-end bg-[inherit] text-right print:hidden');\n\n return (\n <span className={className}>\n {actionsOnRow.map((button, index) => {\n const tooltip = String(button.props.tooltip ?? button.props['aria-label'] ?? '');\n\n return React.cloneElement(button, {\n appearance: 'transparent',\n // config-rendered buttons carry their stable config key; legacy slots fall back to the index\n key: button.key ?? index,\n tabIndex: isActiveRow ? 0 : -1,\n tooltip: button.props.shortcut ? (\n <>\n {tooltip}\n <Shortcut className=\"ml-2\" keys={button.props.shortcut} />\n </>\n ) : (\n tooltip\n ),\n });\n })}\n {actionsInMenu.length ? (\n <LegacyIconButton\n appearance=\"transparent\"\n aria-label={texts.table.columns.actions.tooltip}\n icon=\"more\"\n onKeyDown={handleMenuButtonKeyDown}\n tabIndex={isActiveRow ? 0 : -1}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content onKeyDown={handleMenuContentKeyDown}>\n {actionsInMenu.map((action, i) => {\n const key = action.key ?? i;\n const item = (\n <Menu.Item key={key} {...action.props} shortcut={action.props.shortcut}>\n {action.props['aria-label']}\n </Menu.Item>\n );\n\n // add a separator between the editing items, if needed\n const isFirstEditingMenuItem =\n tableMeta.editing?.isEditing &&\n tableMeta.editing?.showEditingActions &&\n actionsInMenu.length > 2 &&\n i === actionsInMenu.length - 2;\n\n if (isFirstEditingMenuItem) {\n return (\n <React.Fragment key={key}>\n <Menu.Separator />\n {item}\n </React.Fragment>\n );\n }\n\n return item;\n })}\n </Menu.Content>\n </Menu>\n )}\n />\n ) : null}\n </span>\n );\n}\n\nfunction Header() {\n return null;\n}\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { row, table } = context;\n const { hideRowActions, isHovered, rowIndex } = React.useContext(RowContext);\n const tableMeta = getTableMeta(table);\n\n const actions = tableMeta.rowActions.rowActions;\n const actionsLength = tableMeta.rowActions.rowActionsLength;\n\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;\n const isResizingColumn = !!table.getState().columnSizingInfo.isResizingColumn;\n const isHoverStatePaused = tableMeta.rowActive.isHoverStatePaused;\n const isRowGrouped = row.getIsGrouped();\n\n if (\n !hideRowActions &&\n !isRowGrouped &&\n hasRowActions(actions) &&\n (isActiveRow || (isHovered && !isHoverStatePaused && !isResizingColumn))\n ) {\n return (\n <Actions<TType>\n actions={actions}\n actionsLength={actionsLength}\n data={row.original}\n isActiveRow={isActiveRow}\n rowId={row.id}\n table={table}\n />\n );\n }\n\n return null;\n}) as <TType = unknown>(context: ReactTableCellContext<TType, unknown>) => React.JSX.Element;\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n meta: {\n align: 'right',\n className: cn(\n 'right-0 overflow-hidden !px-0 !pr-1 print:opacity-0 [table_&]:group-[[data-row-active=\"true\"]]/row:sticky',\n 'group-[[data-row-active=\"true\"][data-selected=\"false\"]]/row:text-gray-200',\n 'group-[[data-row-selected=\"true\"]]/row:text-blue-100',\n 'group-[[data-row-selected=\"false\"]:hover]/row:text-gray-100',\n // oxlint-disable-next-line taco/no-disallowed-shadow-classes -- scroll-edge indicator driven by a CSS variable, not a design-token elevation shadow\n 'shadow-[-6px_0px_6px_var(--table-row-actions-shadow)]'\n ),\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n },\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const React = require("react");
|
|
4
|
+
const rows = require("../../../../useTableManager/util/rows.cjs");
|
|
4
5
|
const RowContext = require("../../Row/RowContext.cjs");
|
|
5
6
|
const Localization = require("../../../../../../components/Provider/Localization.cjs");
|
|
6
7
|
const Tooltip = require("../../../../../../components/Tooltip/Tooltip.cjs");
|
|
@@ -8,7 +9,7 @@ const IconButton = require("../../../../../../components/LegacyComponents/IconBu
|
|
|
8
9
|
function Header(context) {
|
|
9
10
|
const { texts } = Localization.useLocalization();
|
|
10
11
|
const { table } = context;
|
|
11
|
-
const tableMeta = table
|
|
12
|
+
const tableMeta = rows.getTableMeta(table);
|
|
12
13
|
if (!tableMeta.rowExpansion.canExpandAll) {
|
|
13
14
|
return null;
|
|
14
15
|
}
|
|
@@ -32,7 +33,7 @@ function Header(context) {
|
|
|
32
33
|
function Cell(context) {
|
|
33
34
|
const { texts } = Localization.useLocalization();
|
|
34
35
|
const { hideInternalColumns } = React.useContext(RowContext.RowContext);
|
|
35
|
-
const tableMeta = context.table
|
|
36
|
+
const tableMeta = rows.getTableMeta(context.table);
|
|
36
37
|
if (hideInternalColumns || context.row.getIsGrouped()) {
|
|
37
38
|
return null;
|
|
38
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expansion.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Expansion.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"Expansion.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Expansion.tsx"],"sourcesContent":["import type { HeaderContext as ReactTableHeaderContext, CellContext as ReactTableCellContext } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, Tooltip, useLocalization } from '@/components';\n\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = getTableMeta(table);\n\n if (!tableMeta.rowExpansion.canExpandAll) {\n return null;\n }\n\n const isSomeRowsExpanded = table.getIsSomeRowsExpanded();\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n table.toggleAllRowsExpanded(!isSomeRowsExpanded);\n };\n\n const title = isSomeRowsExpanded ? texts.table.columns.expansion.collapseAll : texts.table.columns.expansion.expandAll;\n\n return (\n <Tooltip title={title}>\n <LegacyIconButton\n appearance=\"transparent\"\n icon={isSomeRowsExpanded ? 'chevron-down-double' : 'chevron-right-double'}\n onClick={handleClick}\n tabIndex={-1}\n title={title}\n />\n </Tooltip>\n );\n}\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { hideInternalColumns } = React.useContext(RowContext);\n const tableMeta = getTableMeta(context.table);\n\n // group header rows are expanded by grouping, not by row expansion, so they never get a toggle\n if (hideInternalColumns || context.row.getIsGrouped()) {\n return null;\n }\n\n const hasExpandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(context.row.original);\n\n if (hasExpandedRow) {\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === context.row.index;\n const isExpanded = context.row.getIsExpanded();\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n context.row.toggleExpanded();\n };\n\n const title = isExpanded ? texts.table.columns.expansion.collapse : texts.table.columns.expansion.expand;\n const tabIndex = isActiveRow ? 0 : -1;\n\n return (\n <Tooltip title={title}>\n <LegacyIconButton\n appearance=\"discrete\"\n icon={isExpanded ? 'chevron-down' : 'chevron-right'}\n onClick={handleClick}\n tabIndex={tabIndex}\n title={title}\n />\n </Tooltip>\n );\n }\n\n return null;\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!p-0',\n },\n};\n"],"names":["useLocalization","getTableMeta","Tooltip","LegacyIconButton","RowContext"],"mappings":";;;;;;;;AASA,SAAS,OAAwB,SAAkD;AAC/E,QAAM,EAAE,MAAA,IAAUA,6BAAA;AAClB,QAAM,EAAE,UAAU;AAClB,QAAM,YAAYC,KAAAA,aAAa,KAAK;AAEpC,MAAI,CAAC,UAAU,aAAa,cAAc;AACtC,WAAO;AAAA,EACX;AAEA,QAAM,qBAAqB,MAAM,sBAAA;AAEjC,QAAM,cAAc,CAAC,UAA+C;AAChE,UAAM,gBAAA;AACN,UAAM,sBAAsB,CAAC,kBAAkB;AAAA,EACnD;AAEA,QAAM,QAAQ,qBAAqB,MAAM,MAAM,QAAQ,UAAU,cAAc,MAAM,MAAM,QAAQ,UAAU;AAE7G,SACI,sBAAA,cAACC,QAAAA,WAAQ,MAAA,GACL,sBAAA;AAAA,IAACC,WAAAA;AAAAA,IAAA;AAAA,MACG,YAAW;AAAA,MACX,MAAM,qBAAqB,wBAAwB;AAAA,MACnD,SAAS;AAAA,MACT,UAAU;AAAA,MACV;AAAA,IAAA;AAAA,EAAA,CAER;AAER;AAEA,SAAS,KAAsB,SAAgD;AAC3E,QAAM,EAAE,MAAA,IAAUH,6BAAA;AAClB,QAAM,EAAE,oBAAA,IAAwB,MAAM,WAAWI,WAAAA,UAAU;AAC3D,QAAM,YAAYH,KAAAA,aAAa,QAAQ,KAAK;AAG5C,MAAI,uBAAuB,QAAQ,IAAI,aAAA,GAAgB;AACnD,WAAO;AAAA,EACX;AAEA,QAAM,iBAAiB,UAAU,aAAa,uBAAuB,QAAQ,IAAI,QAAQ;AAEzF,MAAI,gBAAgB;AAChB,UAAM,cAAc,UAAU,UAAU,mBAAmB,QAAQ,IAAI;AACvE,UAAM,aAAa,QAAQ,IAAI,cAAA;AAE/B,UAAM,cAAc,CAAC,UAA+C;AAChE,YAAM,gBAAA;AACN,cAAQ,IAAI,eAAA;AAAA,IAChB;AAEA,UAAM,QAAQ,aAAa,MAAM,MAAM,QAAQ,UAAU,WAAW,MAAM,MAAM,QAAQ,UAAU;AAClG,UAAM,WAAW,cAAc,IAAI;AAEnC,WACI,sBAAA,cAACC,QAAAA,WAAQ,MAAA,GACL,sBAAA;AAAA,MAACC,WAAAA;AAAAA,MAAA;AAAA,QACG,YAAW;AAAA,QACX,MAAM,aAAa,iBAAiB;AAAA,QACpC,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,IAAA,CAER;AAAA,EAER;AAEA,SAAO;AACX;AAEO,MAAM,WAA0C;AAAA,EACnD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,IACF,OAAO;AAAA;AAAA,IAEP,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,iBAAiB;AAAA,EAAA;AAEzB;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React__default from "react";
|
|
2
|
+
import { getTableMeta } from "../../../../useTableManager/util/rows.js";
|
|
2
3
|
import { RowContext } from "../../Row/RowContext.js";
|
|
3
4
|
import { useLocalization } from "../../../../../../components/Provider/Localization.js";
|
|
4
5
|
import { Tooltip } from "../../../../../../components/Tooltip/Tooltip.js";
|
|
@@ -6,7 +7,7 @@ import { LegacyIconButton } from "../../../../../../components/LegacyComponents/
|
|
|
6
7
|
function Header(context) {
|
|
7
8
|
const { texts } = useLocalization();
|
|
8
9
|
const { table } = context;
|
|
9
|
-
const tableMeta = table
|
|
10
|
+
const tableMeta = getTableMeta(table);
|
|
10
11
|
if (!tableMeta.rowExpansion.canExpandAll) {
|
|
11
12
|
return null;
|
|
12
13
|
}
|
|
@@ -30,7 +31,7 @@ function Header(context) {
|
|
|
30
31
|
function Cell(context) {
|
|
31
32
|
const { texts } = useLocalization();
|
|
32
33
|
const { hideInternalColumns } = React__default.useContext(RowContext);
|
|
33
|
-
const tableMeta = context.table
|
|
34
|
+
const tableMeta = getTableMeta(context.table);
|
|
34
35
|
if (hideInternalColumns || context.row.getIsGrouped()) {
|
|
35
36
|
return null;
|
|
36
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expansion.js","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Expansion.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"Expansion.js","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Expansion.tsx"],"sourcesContent":["import type { HeaderContext as ReactTableHeaderContext, CellContext as ReactTableCellContext } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, Tooltip, useLocalization } from '@/components';\n\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = getTableMeta(table);\n\n if (!tableMeta.rowExpansion.canExpandAll) {\n return null;\n }\n\n const isSomeRowsExpanded = table.getIsSomeRowsExpanded();\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n table.toggleAllRowsExpanded(!isSomeRowsExpanded);\n };\n\n const title = isSomeRowsExpanded ? texts.table.columns.expansion.collapseAll : texts.table.columns.expansion.expandAll;\n\n return (\n <Tooltip title={title}>\n <LegacyIconButton\n appearance=\"transparent\"\n icon={isSomeRowsExpanded ? 'chevron-down-double' : 'chevron-right-double'}\n onClick={handleClick}\n tabIndex={-1}\n title={title}\n />\n </Tooltip>\n );\n}\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { hideInternalColumns } = React.useContext(RowContext);\n const tableMeta = getTableMeta(context.table);\n\n // group header rows are expanded by grouping, not by row expansion, so they never get a toggle\n if (hideInternalColumns || context.row.getIsGrouped()) {\n return null;\n }\n\n const hasExpandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(context.row.original);\n\n if (hasExpandedRow) {\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === context.row.index;\n const isExpanded = context.row.getIsExpanded();\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n context.row.toggleExpanded();\n };\n\n const title = isExpanded ? texts.table.columns.expansion.collapse : texts.table.columns.expansion.expand;\n const tabIndex = isActiveRow ? 0 : -1;\n\n return (\n <Tooltip title={title}>\n <LegacyIconButton\n appearance=\"discrete\"\n icon={isExpanded ? 'chevron-down' : 'chevron-right'}\n onClick={handleClick}\n tabIndex={tabIndex}\n title={title}\n />\n </Tooltip>\n );\n }\n\n return null;\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!p-0',\n },\n};\n"],"names":["React"],"mappings":";;;;;;AASA,SAAS,OAAwB,SAAkD;AAC/E,QAAM,EAAE,MAAA,IAAU,gBAAA;AAClB,QAAM,EAAE,UAAU;AAClB,QAAM,YAAY,aAAa,KAAK;AAEpC,MAAI,CAAC,UAAU,aAAa,cAAc;AACtC,WAAO;AAAA,EACX;AAEA,QAAM,qBAAqB,MAAM,sBAAA;AAEjC,QAAM,cAAc,CAAC,UAA+C;AAChE,UAAM,gBAAA;AACN,UAAM,sBAAsB,CAAC,kBAAkB;AAAA,EACnD;AAEA,QAAM,QAAQ,qBAAqB,MAAM,MAAM,QAAQ,UAAU,cAAc,MAAM,MAAM,QAAQ,UAAU;AAE7G,SACIA,+BAAA,cAAC,WAAQ,MAAA,GACLA,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAW;AAAA,MACX,MAAM,qBAAqB,wBAAwB;AAAA,MACnD,SAAS;AAAA,MACT,UAAU;AAAA,MACV;AAAA,IAAA;AAAA,EAAA,CAER;AAER;AAEA,SAAS,KAAsB,SAAgD;AAC3E,QAAM,EAAE,MAAA,IAAU,gBAAA;AAClB,QAAM,EAAE,oBAAA,IAAwBA,eAAM,WAAW,UAAU;AAC3D,QAAM,YAAY,aAAa,QAAQ,KAAK;AAG5C,MAAI,uBAAuB,QAAQ,IAAI,aAAA,GAAgB;AACnD,WAAO;AAAA,EACX;AAEA,QAAM,iBAAiB,UAAU,aAAa,uBAAuB,QAAQ,IAAI,QAAQ;AAEzF,MAAI,gBAAgB;AAChB,UAAM,cAAc,UAAU,UAAU,mBAAmB,QAAQ,IAAI;AACvE,UAAM,aAAa,QAAQ,IAAI,cAAA;AAE/B,UAAM,cAAc,CAAC,UAA+C;AAChE,YAAM,gBAAA;AACN,cAAQ,IAAI,eAAA;AAAA,IAChB;AAEA,UAAM,QAAQ,aAAa,MAAM,MAAM,QAAQ,UAAU,WAAW,MAAM,MAAM,QAAQ,UAAU;AAClG,UAAM,WAAW,cAAc,IAAI;AAEnC,WACIA,+BAAA,cAAC,WAAQ,MAAA,GACLA,+BAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,YAAW;AAAA,QACX,MAAM,aAAa,iBAAiB;AAAA,QACpC,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,IAAA,CAER;AAAA,EAER;AAEA,SAAO;AACX;AAEO,MAAM,WAA0C;AAAA,EACnD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,IACF,OAAO;AAAA;AAAA,IAEP,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,iBAAiB;AAAA,EAAA;AAEzB;"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const React = require("react");
|
|
4
4
|
const columns = require("../../../../useTableManager/util/columns.cjs");
|
|
5
|
+
const rows = require("../../../../useTableManager/util/rows.cjs");
|
|
5
6
|
const RowContext = require("../../Row/RowContext.cjs");
|
|
6
7
|
const Localization = require("../../../../../../components/Provider/Localization.cjs");
|
|
7
8
|
const Tooltip = require("../../../../../../components/Tooltip/Tooltip.cjs");
|
|
@@ -11,7 +12,7 @@ const Spinner = require("../../../../../../components/Spinner/Spinner.cjs");
|
|
|
11
12
|
function Header(context) {
|
|
12
13
|
const { texts } = Localization.useLocalization();
|
|
13
14
|
const { table } = context;
|
|
14
|
-
const tableMeta = table
|
|
15
|
+
const tableMeta = rows.getTableMeta(table);
|
|
15
16
|
const isAllRowsSelected = table.getIsAllRowsSelected();
|
|
16
17
|
const isSomeRowsSelected = table.getIsSomeRowsSelected();
|
|
17
18
|
const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;
|
|
@@ -46,7 +47,7 @@ function Cell(context) {
|
|
|
46
47
|
const { texts } = Localization.useLocalization();
|
|
47
48
|
const { row, table } = context;
|
|
48
49
|
const { hideInternalColumns, rowIndex } = React.useContext(RowContext.RowContext);
|
|
49
|
-
const tableMeta = table
|
|
50
|
+
const tableMeta = rows.getTableMeta(table);
|
|
50
51
|
if (hideInternalColumns || table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped()) {
|
|
51
52
|
return null;
|
|
52
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selection.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import type {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n
|
|
1
|
+
{"version":3,"file":"Selection.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import type {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n RowSelectionState,\n} from '@tanstack/react-table';\nimport React from 'react';\n\nimport { Checkbox, Spinner, Tooltip, Shortcut, useLocalization } from '@/components';\n\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { getHiddenColumns } from '../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = getTableMeta(table);\n\n const isAllRowsSelected = table.getIsAllRowsSelected();\n const isSomeRowsSelected = table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;\n\n const handleChange = async (checked: boolean) => {\n // load all data if that is possible (only needed when selecting all, not when deselecting)\n if (checked && tableMeta.server.loadAllIfNeeded) {\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined\n );\n }\n\n // setTimeout here fixes issue related React 18's automatic batching:\n // Selection should be applied after all rows are loaded\n setTimeout(() => table.toggleAllRowsSelected(checked), 1);\n };\n\n return (\n <Tooltip title={title}>\n {tableMeta.server.loading ? (\n <Spinner className=\"h-5 w-5 text-blue-500\" />\n ) : (\n <Checkbox\n aria-label={title}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected && !isAllRowsSelected}\n onChange={handleChange}\n />\n )}\n </Tooltip>\n );\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { row, table } = context;\n const { hideInternalColumns, rowIndex } = React.useContext(RowContext);\n const tableMeta = getTableMeta(table);\n\n if (hideInternalColumns || (table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped())) {\n return null;\n }\n\n const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();\n const canSelect = row.getCanSelect();\n const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;\n\n const handleClick = async (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (row.getIsGrouped()) {\n row.subRows.forEach(row => row.toggleSelected());\n } else if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0, rowIndex);\n\n if (tableMeta.server.loadAllIfNeeded) {\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined\n );\n }\n\n const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);\n table.setRowSelection((currentRowSelection: RowSelectionState) => ({\n ...currentRowSelection,\n ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({ ...state, [row.id]: true }), {}),\n }));\n } else {\n row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;\n };\n\n return (\n <Tooltip\n hidden={!canSelect}\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n checked={isSelected}\n onClick={handleClick}\n disabled={!canSelect}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n </Tooltip>\n );\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n className: '!px-1',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!px-1',\n },\n};\n"],"names":["useLocalization","getTableMeta","getHiddenColumns","Tooltip","Spinner","Checkbox","RowContext","row","Shortcut"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React__default from "react";
|
|
2
2
|
import { getHiddenColumns } from "../../../../useTableManager/util/columns.js";
|
|
3
|
+
import { getTableMeta } from "../../../../useTableManager/util/rows.js";
|
|
3
4
|
import { RowContext } from "../../Row/RowContext.js";
|
|
4
5
|
import { useLocalization } from "../../../../../../components/Provider/Localization.js";
|
|
5
6
|
import { Tooltip } from "../../../../../../components/Tooltip/Tooltip.js";
|
|
@@ -9,7 +10,7 @@ import { Spinner } from "../../../../../../components/Spinner/Spinner.js";
|
|
|
9
10
|
function Header(context) {
|
|
10
11
|
const { texts } = useLocalization();
|
|
11
12
|
const { table } = context;
|
|
12
|
-
const tableMeta = table
|
|
13
|
+
const tableMeta = getTableMeta(table);
|
|
13
14
|
const isAllRowsSelected = table.getIsAllRowsSelected();
|
|
14
15
|
const isSomeRowsSelected = table.getIsSomeRowsSelected();
|
|
15
16
|
const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;
|
|
@@ -44,7 +45,7 @@ function Cell(context) {
|
|
|
44
45
|
const { texts } = useLocalization();
|
|
45
46
|
const { row, table } = context;
|
|
46
47
|
const { hideInternalColumns, rowIndex } = React__default.useContext(RowContext);
|
|
47
|
-
const tableMeta = table
|
|
48
|
+
const tableMeta = getTableMeta(table);
|
|
48
49
|
if (hideInternalColumns || table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped()) {
|
|
49
50
|
return null;
|
|
50
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selection.js","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import type {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n
|
|
1
|
+
{"version":3,"file":"Selection.js","sources":["../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import type {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n RowSelectionState,\n} from '@tanstack/react-table';\nimport React from 'react';\n\nimport { Checkbox, Spinner, Tooltip, Shortcut, useLocalization } from '@/components';\n\nimport type { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { getHiddenColumns } from '../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport { RowContext } from '../../Row/RowContext';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = getTableMeta(table);\n\n const isAllRowsSelected = table.getIsAllRowsSelected();\n const isSomeRowsSelected = table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;\n\n const handleChange = async (checked: boolean) => {\n // load all data if that is possible (only needed when selecting all, not when deselecting)\n if (checked && tableMeta.server.loadAllIfNeeded) {\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined\n );\n }\n\n // setTimeout here fixes issue related React 18's automatic batching:\n // Selection should be applied after all rows are loaded\n setTimeout(() => table.toggleAllRowsSelected(checked), 1);\n };\n\n return (\n <Tooltip title={title}>\n {tableMeta.server.loading ? (\n <Spinner className=\"h-5 w-5 text-blue-500\" />\n ) : (\n <Checkbox\n aria-label={title}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected && !isAllRowsSelected}\n onChange={handleChange}\n />\n )}\n </Tooltip>\n );\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { row, table } = context;\n const { hideInternalColumns, rowIndex } = React.useContext(RowContext);\n const tableMeta = getTableMeta(table);\n\n if (hideInternalColumns || (table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped())) {\n return null;\n }\n\n const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();\n const canSelect = row.getCanSelect();\n const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;\n\n const handleClick = async (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (row.getIsGrouped()) {\n row.subRows.forEach(row => row.toggleSelected());\n } else if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0, rowIndex);\n\n if (tableMeta.server.loadAllIfNeeded) {\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined\n );\n }\n\n const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);\n table.setRowSelection((currentRowSelection: RowSelectionState) => ({\n ...currentRowSelection,\n ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({ ...state, [row.id]: true }), {}),\n }));\n } else {\n row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;\n };\n\n return (\n <Tooltip\n hidden={!canSelect}\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n checked={isSelected}\n onClick={handleClick}\n disabled={!canSelect}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n </Tooltip>\n );\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n className: '!px-1',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!px-1',\n },\n};\n"],"names":["React","row"],"mappings":"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"}
|
|
@@ -3,10 +3,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const reactTable = require("@tanstack/react-table");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const columns = require("../../../useTableManager/util/columns.cjs");
|
|
6
|
+
const rows = require("../../../useTableManager/util/rows.cjs");
|
|
6
7
|
const Summary = require("./Summary.cjs");
|
|
7
8
|
function Foot(props) {
|
|
8
9
|
const { children, table, ...attributes } = props;
|
|
9
|
-
const tableMeta = table
|
|
10
|
+
const tableMeta = rows.getTableMeta(table);
|
|
10
11
|
const nonGroupedHeaders = table.getFooterGroups()[0]?.headers.filter((header) => !header.column.getIsGrouped());
|
|
11
12
|
const firstVisibleExternalColumnIndex = nonGroupedHeaders?.find(
|
|
12
13
|
(header) => !columns.isInternalColumn(header.id) && header.column.columnDef.meta?.enablePrinting !== false
|
|
@@ -32,7 +33,7 @@ const MemoedFooter = React.memo(function MemoedFooter2(props) {
|
|
|
32
33
|
align = "left";
|
|
33
34
|
content = /* @__PURE__ */ React.createElement(Summary.Summary, { table: footer.getContext().table });
|
|
34
35
|
} else {
|
|
35
|
-
align = columnMeta
|
|
36
|
+
align = columnMeta?.align;
|
|
36
37
|
content = footer.isPlaceholder ? null : reactTable.flexRender(footer.column.columnDef.footer, footer.getContext());
|
|
37
38
|
}
|
|
38
39
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Footer.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"Footer.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Footer.tsx"],"sourcesContent":["import type { Header as ReactTableHeader, Table as ReactTable } from '@tanstack/react-table';\nimport { flexRender } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { isInternalColumn } from '../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../useTableManager/util/rows';\n\nimport { Summary } from './Summary';\n\nexport type FootProps<TType = unknown> = React.HTMLAttributes<HTMLTableSectionElement> & {\n table: ReactTable<TType>;\n};\nexport function Foot<TType = unknown>(props: FootProps<TType>) {\n const { children, table, ...attributes } = props;\n const tableMeta = getTableMeta(table);\n const nonGroupedHeaders = table.getFooterGroups()[0]?.headers.filter(header => !header.column.getIsGrouped());\n const firstVisibleExternalColumnIndex = nonGroupedHeaders?.find(\n header => !isInternalColumn(header.id) && header.column.columnDef.meta?.enablePrinting !== false\n )?.index;\n\n // During printing, the summary should be displayed in the first visible external column,\n // as internal and hidden columns are excluded from the printed document.\n // However, in the normal table view, the summary should appear in the first column.\n const summaryColumnIndex = tableMeta.printing.isPrinting ? firstVisibleExternalColumnIndex : 0;\n\n return (\n <tfoot {...attributes}>\n {children}\n <tr>\n {nonGroupedHeaders?.map((header, index) => (\n <Footer key={header.id} header={header} showSummary={index === summaryColumnIndex} />\n ))}\n </tr>\n </tfoot>\n );\n}\n\nexport type FooterProps<TType = unknown> = {\n header: ReactTableHeader<TType, unknown>;\n showSummary: boolean;\n};\nexport function Footer<TType = unknown>(props: FooterProps<TType>) {\n return <MemoedFooter footer={props.header} showSummary={props.showSummary} />;\n}\n\nexport type MemoedFooterProps<TType = unknown> = {\n footer: ReactTableHeader<TType, unknown>;\n showSummary: boolean;\n};\n\nconst MemoedFooter = React.memo(function MemoedFooter<TType = unknown>(props: MemoedFooterProps<TType>) {\n const { footer, showSummary } = props;\n const columnMeta = footer.column.columnDef.meta;\n\n // getIsPinned returns true for split header groups, even if the split group has no pinned sub headers\n const isHeaderGroup = !!footer.subHeaders?.length;\n const isPinned = isHeaderGroup\n ? footer.subHeaders.find(x => x.column.getIsPinned())?.column.getIsPinned()\n : footer.column.getIsPinned();\n\n const style: React.CSSProperties = {};\n\n if (isPinned) {\n // pinned columns should be offset from either the left or right\n style[isPinned] = `${footer.column.getStart(isPinned)}px`;\n }\n\n let content;\n let align;\n\n // Summary should only be appended to the first visible external column, as internal columns like the select column will be hidden in the print view.\n if (showSummary) {\n align = 'left';\n content = <Summary table={footer.getContext().table} />;\n } else {\n align = columnMeta?.align;\n content = footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext());\n }\n\n return (\n <td\n key={footer.id}\n data-cell-align={align}\n data-cell-id={footer.id}\n data-cell-pinned={isPinned || undefined}\n style={style}>\n {content}\n </td>\n );\n}) as <TType = unknown>(props: MemoedFooterProps<TType>) => React.JSX.Element;\n"],"names":["getTableMeta","isInternalColumn","MemoedFooter","Summary","flexRender"],"mappings":";;;;;;;AAYO,SAAS,KAAsB,OAAyB;AAC3D,QAAM,EAAE,UAAU,OAAO,GAAG,eAAe;AAC3C,QAAM,YAAYA,KAAAA,aAAa,KAAK;AACpC,QAAM,oBAAoB,MAAM,gBAAA,EAAkB,CAAC,GAAG,QAAQ,OAAO,CAAA,WAAU,CAAC,OAAO,OAAO,cAAc;AAC5G,QAAM,kCAAkC,mBAAmB;AAAA,IACvD,CAAA,WAAU,CAACC,yBAAiB,OAAO,EAAE,KAAK,OAAO,OAAO,UAAU,MAAM,mBAAmB;AAAA,EAAA,GAC5F;AAKH,QAAM,qBAAqB,UAAU,SAAS,aAAa,kCAAkC;AAE7F,SACI,sBAAA,cAAC,WAAO,GAAG,WAAA,GACN,UACD,sBAAA,cAAC,MAAA,MACI,mBAAmB,IAAI,CAAC,QAAQ,UAC7B,sBAAA,cAAC,QAAA,EAAO,KAAK,OAAO,IAAI,QAAgB,aAAa,UAAU,mBAAA,CAAoB,CACtF,CACL,CACJ;AAER;AAMO,SAAS,OAAwB,OAA2B;AAC/D,6CAAQ,cAAA,EAAa,QAAQ,MAAM,QAAQ,aAAa,MAAM,aAAa;AAC/E;AAOA,MAAM,eAAe,MAAM,KAAK,SAASC,cAA8B,OAAiC;AACpG,QAAM,EAAE,QAAQ,YAAA,IAAgB;AAChC,QAAM,aAAa,OAAO,OAAO,UAAU;AAG3C,QAAM,gBAAgB,CAAC,CAAC,OAAO,YAAY;AAC3C,QAAM,WAAW,gBACX,OAAO,WAAW,KAAK,OAAK,EAAE,OAAO,YAAA,CAAa,GAAG,OAAO,YAAA,IAC5D,OAAO,OAAO,YAAA;AAEpB,QAAM,QAA6B,CAAA;AAEnC,MAAI,UAAU;AAEV,UAAM,QAAQ,IAAI,GAAG,OAAO,OAAO,SAAS,QAAQ,CAAC;AAAA,EACzD;AAEA,MAAI;AACJ,MAAI;AAGJ,MAAI,aAAa;AACb,YAAQ;AACR,kDAAWC,iBAAA,EAAQ,OAAO,OAAO,aAAa,OAAO;AAAA,EACzD,OAAO;AACH,YAAQ,YAAY;AACpB,cAAU,OAAO,gBAAgB,OAAOC,WAAAA,WAAW,OAAO,OAAO,UAAU,QAAQ,OAAO,WAAA,CAAY;AAAA,EAC1G;AAEA,SACI,sBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAK,OAAO;AAAA,MACZ,mBAAiB;AAAA,MACjB,gBAAc,OAAO;AAAA,MACrB,oBAAkB,YAAY;AAAA,MAC9B;AAAA,IAAA;AAAA,IACC;AAAA,EAAA;AAGb,CAAC;;;"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { flexRender } from "@tanstack/react-table";
|
|
2
2
|
import React__default from "react";
|
|
3
3
|
import { isInternalColumn } from "../../../useTableManager/util/columns.js";
|
|
4
|
+
import { getTableMeta } from "../../../useTableManager/util/rows.js";
|
|
4
5
|
import { Summary } from "./Summary.js";
|
|
5
6
|
function Foot(props) {
|
|
6
7
|
const { children, table, ...attributes } = props;
|
|
7
|
-
const tableMeta = table
|
|
8
|
+
const tableMeta = getTableMeta(table);
|
|
8
9
|
const nonGroupedHeaders = table.getFooterGroups()[0]?.headers.filter((header) => !header.column.getIsGrouped());
|
|
9
10
|
const firstVisibleExternalColumnIndex = nonGroupedHeaders?.find(
|
|
10
11
|
(header) => !isInternalColumn(header.id) && header.column.columnDef.meta?.enablePrinting !== false
|
|
@@ -30,7 +31,7 @@ const MemoedFooter = React__default.memo(function MemoedFooter2(props) {
|
|
|
30
31
|
align = "left";
|
|
31
32
|
content = /* @__PURE__ */ React__default.createElement(Summary, { table: footer.getContext().table });
|
|
32
33
|
} else {
|
|
33
|
-
align = columnMeta
|
|
34
|
+
align = columnMeta?.align;
|
|
34
35
|
content = footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext());
|
|
35
36
|
}
|
|
36
37
|
return /* @__PURE__ */ React__default.createElement(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.js","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Footer.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"Footer.js","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Footer.tsx"],"sourcesContent":["import type { Header as ReactTableHeader, Table as ReactTable } from '@tanstack/react-table';\nimport { flexRender } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { isInternalColumn } from '../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../useTableManager/util/rows';\n\nimport { Summary } from './Summary';\n\nexport type FootProps<TType = unknown> = React.HTMLAttributes<HTMLTableSectionElement> & {\n table: ReactTable<TType>;\n};\nexport function Foot<TType = unknown>(props: FootProps<TType>) {\n const { children, table, ...attributes } = props;\n const tableMeta = getTableMeta(table);\n const nonGroupedHeaders = table.getFooterGroups()[0]?.headers.filter(header => !header.column.getIsGrouped());\n const firstVisibleExternalColumnIndex = nonGroupedHeaders?.find(\n header => !isInternalColumn(header.id) && header.column.columnDef.meta?.enablePrinting !== false\n )?.index;\n\n // During printing, the summary should be displayed in the first visible external column,\n // as internal and hidden columns are excluded from the printed document.\n // However, in the normal table view, the summary should appear in the first column.\n const summaryColumnIndex = tableMeta.printing.isPrinting ? firstVisibleExternalColumnIndex : 0;\n\n return (\n <tfoot {...attributes}>\n {children}\n <tr>\n {nonGroupedHeaders?.map((header, index) => (\n <Footer key={header.id} header={header} showSummary={index === summaryColumnIndex} />\n ))}\n </tr>\n </tfoot>\n );\n}\n\nexport type FooterProps<TType = unknown> = {\n header: ReactTableHeader<TType, unknown>;\n showSummary: boolean;\n};\nexport function Footer<TType = unknown>(props: FooterProps<TType>) {\n return <MemoedFooter footer={props.header} showSummary={props.showSummary} />;\n}\n\nexport type MemoedFooterProps<TType = unknown> = {\n footer: ReactTableHeader<TType, unknown>;\n showSummary: boolean;\n};\n\nconst MemoedFooter = React.memo(function MemoedFooter<TType = unknown>(props: MemoedFooterProps<TType>) {\n const { footer, showSummary } = props;\n const columnMeta = footer.column.columnDef.meta;\n\n // getIsPinned returns true for split header groups, even if the split group has no pinned sub headers\n const isHeaderGroup = !!footer.subHeaders?.length;\n const isPinned = isHeaderGroup\n ? footer.subHeaders.find(x => x.column.getIsPinned())?.column.getIsPinned()\n : footer.column.getIsPinned();\n\n const style: React.CSSProperties = {};\n\n if (isPinned) {\n // pinned columns should be offset from either the left or right\n style[isPinned] = `${footer.column.getStart(isPinned)}px`;\n }\n\n let content;\n let align;\n\n // Summary should only be appended to the first visible external column, as internal columns like the select column will be hidden in the print view.\n if (showSummary) {\n align = 'left';\n content = <Summary table={footer.getContext().table} />;\n } else {\n align = columnMeta?.align;\n content = footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext());\n }\n\n return (\n <td\n key={footer.id}\n data-cell-align={align}\n data-cell-id={footer.id}\n data-cell-pinned={isPinned || undefined}\n style={style}>\n {content}\n </td>\n );\n}) as <TType = unknown>(props: MemoedFooterProps<TType>) => React.JSX.Element;\n"],"names":["React","MemoedFooter"],"mappings":";;;;;AAYO,SAAS,KAAsB,OAAyB;AAC3D,QAAM,EAAE,UAAU,OAAO,GAAG,eAAe;AAC3C,QAAM,YAAY,aAAa,KAAK;AACpC,QAAM,oBAAoB,MAAM,gBAAA,EAAkB,CAAC,GAAG,QAAQ,OAAO,CAAA,WAAU,CAAC,OAAO,OAAO,cAAc;AAC5G,QAAM,kCAAkC,mBAAmB;AAAA,IACvD,CAAA,WAAU,CAAC,iBAAiB,OAAO,EAAE,KAAK,OAAO,OAAO,UAAU,MAAM,mBAAmB;AAAA,EAAA,GAC5F;AAKH,QAAM,qBAAqB,UAAU,SAAS,aAAa,kCAAkC;AAE7F,SACIA,+BAAA,cAAC,WAAO,GAAG,WAAA,GACN,UACDA,+BAAA,cAAC,MAAA,MACI,mBAAmB,IAAI,CAAC,QAAQ,UAC7BA,+BAAA,cAAC,QAAA,EAAO,KAAK,OAAO,IAAI,QAAgB,aAAa,UAAU,mBAAA,CAAoB,CACtF,CACL,CACJ;AAER;AAMO,SAAS,OAAwB,OAA2B;AAC/D,sDAAQ,cAAA,EAAa,QAAQ,MAAM,QAAQ,aAAa,MAAM,aAAa;AAC/E;AAOA,MAAM,eAAeA,eAAM,KAAK,SAASC,cAA8B,OAAiC;AACpG,QAAM,EAAE,QAAQ,YAAA,IAAgB;AAChC,QAAM,aAAa,OAAO,OAAO,UAAU;AAG3C,QAAM,gBAAgB,CAAC,CAAC,OAAO,YAAY;AAC3C,QAAM,WAAW,gBACX,OAAO,WAAW,KAAK,OAAK,EAAE,OAAO,YAAA,CAAa,GAAG,OAAO,YAAA,IAC5D,OAAO,OAAO,YAAA;AAEpB,QAAM,QAA6B,CAAA;AAEnC,MAAI,UAAU;AAEV,UAAM,QAAQ,IAAI,GAAG,OAAO,OAAO,SAAS,QAAQ,CAAC;AAAA,EACzD;AAEA,MAAI;AACJ,MAAI;AAGJ,MAAI,aAAa;AACb,YAAQ;AACR,2DAAW,SAAA,EAAQ,OAAO,OAAO,aAAa,OAAO;AAAA,EACzD,OAAO;AACH,YAAQ,YAAY;AACpB,cAAU,OAAO,gBAAgB,OAAO,WAAW,OAAO,OAAO,UAAU,QAAQ,OAAO,WAAA,CAAY;AAAA,EAC1G;AAEA,SACID,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAK,OAAO;AAAA,MACZ,mBAAiB;AAAA,MACjB,gBAAc,OAAO;AAAA,MACrB,oBAAkB,YAAY;AAAA,MAC9B;AAAA,IAAA;AAAA,IACC;AAAA,EAAA;AAGb,CAAC;"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const React = require("react");
|
|
4
|
+
const rows = require("../../../useTableManager/util/rows.cjs");
|
|
4
5
|
const Localization = require("../../../../../components/Provider/Localization.cjs");
|
|
5
6
|
function Summary(props) {
|
|
6
7
|
const { table } = props;
|
|
7
8
|
const { locale, texts } = Localization.useLocalization();
|
|
8
|
-
const tableMeta = table
|
|
9
|
+
const tableMeta = rows.getTableMeta(table);
|
|
9
10
|
const length = tableMeta.length;
|
|
10
11
|
const currentLength = table.getRowModel().rows.length;
|
|
11
12
|
let label;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Summary.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Summary.tsx"],"sourcesContent":["import type { Table as ReactTable
|
|
1
|
+
{"version":3,"file":"Summary.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Summary.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\n\nimport { getTableMeta } from '../../../useTableManager/util/rows';\n\nexport type FooterSummaryProps<TType = unknown> = {\n table: ReactTable<TType>;\n};\n\nexport function Summary<TType = unknown>(props: FooterSummaryProps<TType>) {\n const { table } = props;\n const { locale, texts } = useLocalization();\n const tableMeta = getTableMeta(table);\n const length = tableMeta.length;\n const currentLength = table.getRowModel().rows.length;\n\n let label;\n let count;\n\n // row selection\n // use table state and not the selected row model because of the way server loading works\n const rowsSelectedLength = Object.keys(table.getState().rowSelection).length;\n\n if (rowsSelectedLength > 0) {\n label = texts.table.footer.summary.selected;\n count = (\n <>\n <strong>{new Intl.NumberFormat(locale).format(rowsSelectedLength)}</strong> \n {texts.table.footer.summary.count} \n <strong>{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else if (\n !tableMeta.server.isEnabled &&\n (table.getState().columnFilters?.length ||\n // filtered data\n (!!table.getState().globalFilter && table.options.enableGlobalFilter))\n ) {\n label = texts.table.footer.summary.records;\n count = (\n <>\n <strong data-taco=\"table-footer-current-count\">{new Intl.NumberFormat(locale).format(currentLength)}</strong>\n \n {texts.table.footer.summary.count} \n <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else {\n label = texts.table.footer.summary.records;\n count = <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>;\n }\n\n return (\n <div\n // oxlint-disable-next-line taco/no-disallowed-shadow-classes\n className=\"sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]\"\n data-taco=\"table-footer-summary\">\n {label} {count}\n </div>\n );\n}\n"],"names":["useLocalization","getTableMeta"],"mappings":";;;;;AAWO,SAAS,QAAyB,OAAkC;AACvE,QAAM,EAAE,UAAU;AAClB,QAAM,EAAE,QAAQ,MAAA,IAAUA,6BAAA;AAC1B,QAAM,YAAYC,KAAAA,aAAa,KAAK;AACpC,QAAM,SAAS,UAAU;AACzB,QAAM,gBAAgB,MAAM,YAAA,EAAc,KAAK;AAE/C,MAAI;AACJ,MAAI;AAIJ,QAAM,qBAAqB,OAAO,KAAK,MAAM,SAAA,EAAW,YAAY,EAAE;AAEtE,MAAI,qBAAqB,GAAG;AACxB,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,kBAAkB,CAAE,GAAS,KAC1E,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClC,sBAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC1D;AAAA,EAER,WACI,CAAC,UAAU,OAAO,cACjB,MAAM,WAAW,eAAe;AAAA,EAE5B,CAAC,CAAC,MAAM,SAAA,EAAW,gBAAgB,MAAM,QAAQ,qBACxD;AACE,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA,cAAC,UAAA,EAAO,aAAU,gCAA8B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,aAAa,CAAE,GAAS,KAE5G,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClC,sBAAA,cAAC,YAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC/F;AAAA,EAER,OAAO;AACH,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YAAQ,sBAAA,cAAC,UAAA,EAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE;AAAA,EACvG;AAEA,SACI,sBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MAEG,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT;AAAA,IAAM;AAAA,IAAO;AAAA,EAAA;AAG1B;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React__default from "react";
|
|
2
|
+
import { getTableMeta } from "../../../useTableManager/util/rows.js";
|
|
2
3
|
import { useLocalization } from "../../../../../components/Provider/Localization.js";
|
|
3
4
|
function Summary(props) {
|
|
4
5
|
const { table } = props;
|
|
5
6
|
const { locale, texts } = useLocalization();
|
|
6
|
-
const tableMeta = table
|
|
7
|
+
const tableMeta = getTableMeta(table);
|
|
7
8
|
const length = tableMeta.length;
|
|
8
9
|
const currentLength = table.getRowModel().rows.length;
|
|
9
10
|
let label;
|