@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":"Summary.js","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Summary.tsx"],"sourcesContent":["import type { Table as ReactTable
|
|
1
|
+
{"version":3,"file":"Summary.js","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":["React"],"mappings":";;;AAWO,SAAS,QAAyB,OAAkC;AACvE,QAAM,EAAE,UAAU;AAClB,QAAM,EAAE,QAAQ,MAAA,IAAU,gBAAA;AAC1B,QAAM,YAAY,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,YACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,kBAAkB,CAAE,GAAS,KAC1E,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClCA,+BAAA,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,YACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,UAAA,EAAO,aAAU,gCAA8B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,aAAa,CAAE,GAAS,KAE5G,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClCA,+BAAA,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,YAAQA,+BAAA,cAAC,UAAA,EAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE;AAAA,EACvG;AAEA,SACIA,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MAEG,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT;AAAA,IAAM;AAAA,IAAO;AAAA,EAAA;AAG1B;"}
|
|
@@ -5,6 +5,7 @@ const cn = require("clsx");
|
|
|
5
5
|
const React = require("react");
|
|
6
6
|
const types = require("../../../types.cjs");
|
|
7
7
|
const columns = require("../../../useTableManager/util/columns.cjs");
|
|
8
|
+
const rows = require("../../../useTableManager/util/rows.cjs");
|
|
8
9
|
const Menu = require("./components/Menu.cjs");
|
|
9
10
|
const Resizer = require("./components/Resizer.cjs");
|
|
10
11
|
const SortIndicator = require("./components/SortIndicator.cjs");
|
|
@@ -22,8 +23,8 @@ function Header(props) {
|
|
|
22
23
|
return null;
|
|
23
24
|
}
|
|
24
25
|
const { table } = header.getContext();
|
|
25
|
-
const tableMeta = table
|
|
26
|
-
const columnMeta = header.column.columnDef.meta
|
|
26
|
+
const tableMeta = rows.getTableMeta(table);
|
|
27
|
+
const columnMeta = header.column.columnDef.meta;
|
|
27
28
|
const isGroup = !!header.subHeaders.length;
|
|
28
29
|
const isPinned = util.getIsPinned(header);
|
|
29
30
|
const canFilter = !header.isPlaceholder && header.column.getCanFilter() && !!table.options.enableColumnFilters;
|
|
@@ -33,12 +34,12 @@ function Header(props) {
|
|
|
33
34
|
const canResize = !header.isPlaceholder && !isGroup && header.column.getCanResize();
|
|
34
35
|
const canSort = !header.isPlaceholder && !isGroup && header.column.getCanSort();
|
|
35
36
|
const canGoto = canSort && !header.isPlaceholder && !isGroup && tableMeta.rowGoto.isEnabled && !!header.column.getIsSorted();
|
|
36
|
-
const hasMenu = !columns.isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta
|
|
37
|
+
const hasMenu = !columns.isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta?.menu);
|
|
37
38
|
const sorting = table.getState().sorting;
|
|
38
39
|
const filters = table.getState().columnFilters;
|
|
39
40
|
const search = table.getState().globalFilter;
|
|
40
41
|
const memoedProps = {
|
|
41
|
-
align: columnMeta
|
|
42
|
+
align: columnMeta?.align,
|
|
42
43
|
canFilter,
|
|
43
44
|
canHide,
|
|
44
45
|
canGoto,
|
|
@@ -46,11 +47,11 @@ function Header(props) {
|
|
|
46
47
|
canPin,
|
|
47
48
|
canResize,
|
|
48
49
|
canSort,
|
|
49
|
-
className: cn("group/header", columnMeta
|
|
50
|
+
className: cn("group/header", columnMeta?.headerClassName),
|
|
50
51
|
children: reactTable.flexRender(header.column.columnDef.header, header.getContext()),
|
|
51
52
|
colSpan: header.colSpan,
|
|
52
|
-
customMenu: columnMeta
|
|
53
|
-
defaultWidth: columnMeta
|
|
53
|
+
customMenu: columnMeta?.menu,
|
|
54
|
+
defaultWidth: columnMeta?.defaultWidth,
|
|
54
55
|
hasMenu,
|
|
55
56
|
id: header.id,
|
|
56
57
|
isFiltered: header.column.getIsFiltered(),
|
|
@@ -63,7 +64,7 @@ function Header(props) {
|
|
|
63
64
|
scrollToIndex,
|
|
64
65
|
setRowActiveIndex: tableMeta.rowActive.setRowActiveIndex,
|
|
65
66
|
setColumnSizing: table.setColumnSizing,
|
|
66
|
-
tooltip: columnMeta
|
|
67
|
+
tooltip: columnMeta?.tooltip,
|
|
67
68
|
width: table.getState().columnSizing[header.id]
|
|
68
69
|
};
|
|
69
70
|
if (header.isPlaceholder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Header/Header.tsx"],"sourcesContent":["import type {\n TableMeta as ReactTableMeta,\n ColumnMeta as ReactTableColumnMeta,\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport { flexRender } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { Tooltip } from '@/components';\n\nimport type { TableColumnAlignment, TableColumnMenu, TableColumnSortDirection, TableColumnWidth } from '../../../types';\nimport { TableFilterComparator } from '../../../types';\nimport { freezeUptoExternalColumn, isInternalColumn, unfreezeAllExternalColumns } from '../../../useTableManager/util/columns';\n\nimport { HeaderMenu } from './components/Menu';\nimport { Resizer } from './components/Resizer';\nimport { SortIndicator, getSortAttributes } from './components/SortIndicator';\nimport { getIsPinned, useSetInitialColumnSizing } from './util';\n\ntype HeaderContentProps = {\n children: React.ReactNode;\n tooltip?: React.ReactNode;\n isInternalColumnHeader: boolean;\n};\n\nconst HeaderContent = ({ children, tooltip, isInternalColumnHeader }: HeaderContentProps) => {\n if (isInternalColumnHeader || typeof children !== 'string') {\n return <>{children}</>;\n }\n\n return (\n <Tooltip title={String(tooltip ?? children)} placement=\"top\">\n <span className=\"truncate\">{children}</span>\n </Tooltip>\n );\n};\n\nexport type HeaderProps<TType = unknown> = {\n header: ReactTableHeader<TType, unknown>;\n scrollToIndex: (index: number) => void;\n};\n\nexport function Header<TType = unknown>(props: HeaderProps<TType>) {\n const { header, scrollToIndex } = props;\n\n if (header.column.getIsGrouped()) {\n return null;\n }\n\n const { table } = header.getContext();\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const columnMeta = (header.column.columnDef.meta ?? {}) as ReactTableColumnMeta<TType, unknown>;\n\n const isGroup = !!header.subHeaders.length;\n const isPinned = getIsPinned(header);\n\n const canFilter = !header.isPlaceholder && header.column.getCanFilter() && !!table.options.enableColumnFilters;\n const canHide = !header.isPlaceholder && !isGroup && header.column.getCanHide();\n const canMeasureSize = !!table.getRowModel().rows.length;\n const canPin = !header.isPlaceholder && !isGroup && header.column.getCanPin();\n const canResize = !header.isPlaceholder && !isGroup && header.column.getCanResize();\n const canSort = !header.isPlaceholder && !isGroup && header.column.getCanSort();\n const canGoto = canSort && !header.isPlaceholder && !isGroup && tableMeta.rowGoto.isEnabled && !!header.column.getIsSorted();\n\n const hasMenu = !isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta.menu);\n\n const sorting = table.getState().sorting;\n const filters = table.getState().columnFilters;\n const search = table.getState().globalFilter;\n\n // passing header or column results in re-renders on scroll, so anything from those objects as memoed props\n const memoedProps: MemoedHeaderProps = {\n align: columnMeta.align,\n canFilter,\n canHide,\n canGoto,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n className: cn('group/header', columnMeta.headerClassName),\n children: flexRender(header.column.columnDef.header, header.getContext()),\n colSpan: header.colSpan,\n customMenu: columnMeta.menu,\n defaultWidth: columnMeta.defaultWidth,\n hasMenu,\n id: header.id,\n isFiltered: header.column.getIsFiltered(),\n index: header.index,\n isGroup,\n isPinned,\n isPlaceholder: header.isPlaceholder,\n offset: header.column.getStart(isPinned),\n parentId: header.column.parent?.id,\n scrollToIndex,\n setRowActiveIndex: tableMeta.rowActive.setRowActiveIndex,\n setColumnSizing: table.setColumnSizing,\n tooltip: columnMeta.tooltip,\n width: table.getState().columnSizing[header.id],\n };\n\n if (header.isPlaceholder) {\n const nextHeader = header.headerGroup.headers[header.index + 1];\n memoedProps.className = cn('!bg-white before:!content-none', memoedProps.className, {\n 'after:!content-none': nextHeader?.isPlaceholder,\n });\n }\n\n if (canFilter) {\n memoedProps.onFilter = () => {\n header.column.setFilterValue({ comparator: TableFilterComparator.Contains });\n };\n }\n\n if (canGoto) {\n memoedProps.onGoto = ((query: string) => tableMeta.rowGoto.handleGoto?.(header.id, query, sorting, filters, search)) as (\n query: string\n ) => Promise<number>;\n }\n\n if (canHide) {\n memoedProps.onHide = header.column.getToggleVisibilityHandler();\n }\n\n if (header.id === '__expansion') {\n memoedProps.isExpanded = table.getIsSomeRowsExpanded();\n }\n\n if (canPin) {\n memoedProps.onPin = (index: number | undefined) => {\n // TODO: this can probably be moved to a feature hook\n table.setColumnPinning(pinningState => {\n return {\n ...pinningState,\n left:\n index === undefined\n ? unfreezeAllExternalColumns(pinningState.left)\n : freezeUptoExternalColumn(\n index,\n table.getAllLeafColumns().map(column => column.id)\n ),\n };\n });\n };\n }\n\n if (canResize) {\n memoedProps.isResizing = header.column.getIsResizing();\n memoedProps.onResize = header.getResizeHandler();\n memoedProps.resetSize = header.column.resetSize;\n }\n\n if (canSort) {\n const handleSortToggle = (sortDirection: TableColumnSortDirection | false) => {\n if (sortDirection === false) {\n header.column.clearSorting();\n } else {\n header.column.toggleSorting(sortDirection === 'desc');\n }\n };\n\n memoedProps.onSort = header.column.getToggleSortingHandler();\n memoedProps.onSortToggle = handleSortToggle;\n memoedProps.sortDirection = header.column.getIsSorted();\n }\n\n return <MemoedHeader key={header.id} {...memoedProps} />;\n}\n\nexport type MemoedHeaderProps = {\n align?: TableColumnAlignment;\n canFilter: boolean;\n canHide: boolean;\n canGoto: boolean;\n canMeasureSize: boolean;\n canPin: boolean;\n canResize: boolean;\n canSort: boolean;\n children: React.JSX.Element | React.ReactNode;\n className?: string;\n colSpan: number;\n customMenu?: TableColumnMenu;\n defaultWidth?: TableColumnWidth;\n hasMenu: boolean;\n id: string;\n index: number;\n isExpanded?: boolean;\n isFiltered: boolean;\n isGroup: boolean;\n isPinned?: ReactTableColumnPinningPosition;\n isPlaceholder: boolean;\n isResizing?: boolean;\n offset?: number;\n onFilter?: () => void;\n onGoto?: (query: string) => Promise<number>;\n onHide?: (event: unknown) => void;\n onPin?: (index: number | undefined) => void;\n onResize?: (event: unknown) => void;\n onSort?: (event: unknown) => void;\n onSortToggle?: (sortDirection: TableColumnSortDirection | false) => void;\n parentId?: string;\n resetSize?: () => void;\n scrollToIndex: (index: number) => void;\n setRowActiveIndex: (index: number) => void;\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void;\n sortDirection?: TableColumnSortDirection | false;\n tooltip?: string;\n width?: TableColumnWidth;\n};\n\nconst MemoedHeader = React.memo(function MemoedHeader(props: MemoedHeaderProps) {\n const {\n align,\n canFilter,\n canGoto,\n canHide,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n children,\n className,\n colSpan,\n customMenu,\n defaultWidth,\n hasMenu,\n id,\n index,\n isExpanded,\n isFiltered,\n isGroup,\n isPinned,\n isPlaceholder,\n isResizing,\n offset,\n onFilter: handleFilter,\n onGoto: handleGoto,\n onHide: handleHide,\n onPin: handlePin,\n onResize: handleResize,\n onSort: handleSort,\n onSortToggle: handleSortToggle,\n resetSize: handleResetSize,\n scrollToIndex,\n setRowActiveIndex,\n setColumnSizing,\n sortDirection,\n tooltip,\n width,\n } = props;\n const [ref, setRef] = React.useState<HTMLTableCellElement | null>(null);\n\n // save column width if none is set\n useSetInitialColumnSizing(id, defaultWidth, width, ref, canMeasureSize, setColumnSizing);\n\n // feature specific styles\n const style: React.CSSProperties = {};\n\n // column groups often span multiple columns\n if (colSpan > 1) {\n style.gridColumn = `span ${colSpan}`;\n }\n\n // pinned columns should be offset from either the left or right\n if (isPinned) {\n style[isPinned] = `${offset}px`;\n }\n\n return (\n <th\n {...getSortAttributes(canSort, handleSort, sortDirection)}\n className={className}\n data-cell-align={isGroup ? 'center' : align}\n data-cell-id={id}\n data-cell-pinned={isPinned || undefined}\n data-taco={\n isGroup ? (isPlaceholder ? 'grouped-column-header-placeholder' : 'grouped-column-header') : 'column-header'\n }\n data-parent-group-id={props.parentId ? props.parentId : undefined}\n data-rows-expanded={isExpanded || undefined}\n style={style}\n ref={setRef}>\n {isPlaceholder ? null : (\n <HeaderContent children={children} tooltip={tooltip} isInternalColumnHeader={!!isInternalColumn(id)} />\n )}\n {sortDirection ? <SortIndicator direction={sortDirection} /> : null}\n {hasMenu ? (\n <HeaderMenu\n canFilter={canFilter}\n canGoto={canGoto}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n className={cn({\n 'ml-auto': align !== 'right',\n 'ml-0': align === 'right',\n })}\n customMenu={customMenu}\n index={index}\n isFiltered={isFiltered}\n onFilter={handleFilter}\n onGoto={handleGoto}\n onHide={handleHide}\n onPin={handlePin}\n onSortToggle={handleSortToggle}\n scrollToIndex={scrollToIndex}\n setRowActiveIndex={setRowActiveIndex}\n sortDirection={sortDirection}\n columnId={id}\n />\n ) : null}\n {canResize ? (\n <Resizer\n headerRef={ref}\n id={id}\n isResizing={isResizing as boolean}\n onResize={handleResize as (event: unknown) => void}\n onResetSize={handleResetSize as () => void}\n setColumnSizing={setColumnSizing}\n width={width}\n />\n ) : null}\n </th>\n );\n});\n"],"names":["Tooltip","getIsPinned","isInternalColumn","flexRender","TableFilterComparator","unfreezeAllExternalColumns","freezeUptoExternalColumn","MemoedHeader","useSetInitialColumnSizing","getSortAttributes","SortIndicator","HeaderMenu","Resizer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Header.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Header/Header.tsx"],"sourcesContent":["import type {\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport { flexRender } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { Tooltip } from '@/components';\n\nimport type { TableColumnAlignment, TableColumnMenu, TableColumnSortDirection, TableColumnWidth } from '../../../types';\nimport { TableFilterComparator } from '../../../types';\nimport { freezeUptoExternalColumn, isInternalColumn, unfreezeAllExternalColumns } from '../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../useTableManager/util/rows';\n\nimport { HeaderMenu } from './components/Menu';\nimport { Resizer } from './components/Resizer';\nimport { SortIndicator, getSortAttributes } from './components/SortIndicator';\nimport { getIsPinned, useSetInitialColumnSizing } from './util';\n\ntype HeaderContentProps = {\n children: React.ReactNode;\n tooltip?: React.ReactNode;\n isInternalColumnHeader: boolean;\n};\n\nconst HeaderContent = ({ children, tooltip, isInternalColumnHeader }: HeaderContentProps) => {\n if (isInternalColumnHeader || typeof children !== 'string') {\n return <>{children}</>;\n }\n\n return (\n <Tooltip title={String(tooltip ?? children)} placement=\"top\">\n <span className=\"truncate\">{children}</span>\n </Tooltip>\n );\n};\n\nexport type HeaderProps<TType = unknown> = {\n header: ReactTableHeader<TType, unknown>;\n scrollToIndex: (index: number) => void;\n};\n\nexport function Header<TType = unknown>(props: HeaderProps<TType>) {\n const { header, scrollToIndex } = props;\n\n if (header.column.getIsGrouped()) {\n return null;\n }\n\n const { table } = header.getContext();\n\n const tableMeta = getTableMeta(table);\n const columnMeta = header.column.columnDef.meta;\n\n const isGroup = !!header.subHeaders.length;\n const isPinned = getIsPinned(header);\n\n const canFilter = !header.isPlaceholder && header.column.getCanFilter() && !!table.options.enableColumnFilters;\n const canHide = !header.isPlaceholder && !isGroup && header.column.getCanHide();\n const canMeasureSize = !!table.getRowModel().rows.length;\n const canPin = !header.isPlaceholder && !isGroup && header.column.getCanPin();\n const canResize = !header.isPlaceholder && !isGroup && header.column.getCanResize();\n const canSort = !header.isPlaceholder && !isGroup && header.column.getCanSort();\n const canGoto = canSort && !header.isPlaceholder && !isGroup && tableMeta.rowGoto.isEnabled && !!header.column.getIsSorted();\n\n const hasMenu = !isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta?.menu);\n\n const sorting = table.getState().sorting;\n const filters = table.getState().columnFilters;\n const search = table.getState().globalFilter;\n\n // passing header or column results in re-renders on scroll, so anything from those objects as memoed props\n const memoedProps: MemoedHeaderProps = {\n align: columnMeta?.align,\n canFilter,\n canHide,\n canGoto,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n className: cn('group/header', columnMeta?.headerClassName),\n children: flexRender(header.column.columnDef.header, header.getContext()),\n colSpan: header.colSpan,\n customMenu: columnMeta?.menu,\n defaultWidth: columnMeta?.defaultWidth,\n hasMenu,\n id: header.id,\n isFiltered: header.column.getIsFiltered(),\n index: header.index,\n isGroup,\n isPinned,\n isPlaceholder: header.isPlaceholder,\n offset: header.column.getStart(isPinned),\n parentId: header.column.parent?.id,\n scrollToIndex,\n setRowActiveIndex: tableMeta.rowActive.setRowActiveIndex,\n setColumnSizing: table.setColumnSizing,\n tooltip: columnMeta?.tooltip,\n width: table.getState().columnSizing[header.id],\n };\n\n if (header.isPlaceholder) {\n const nextHeader = header.headerGroup.headers[header.index + 1];\n memoedProps.className = cn('!bg-white before:!content-none', memoedProps.className, {\n 'after:!content-none': nextHeader?.isPlaceholder,\n });\n }\n\n if (canFilter) {\n memoedProps.onFilter = () => {\n header.column.setFilterValue({ comparator: TableFilterComparator.Contains });\n };\n }\n\n if (canGoto) {\n memoedProps.onGoto = ((query: string) => tableMeta.rowGoto.handleGoto?.(header.id, query, sorting, filters, search)) as (\n query: string\n ) => Promise<number>;\n }\n\n if (canHide) {\n memoedProps.onHide = header.column.getToggleVisibilityHandler();\n }\n\n if (header.id === '__expansion') {\n memoedProps.isExpanded = table.getIsSomeRowsExpanded();\n }\n\n if (canPin) {\n memoedProps.onPin = (index: number | undefined) => {\n // TODO: this can probably be moved to a feature hook\n table.setColumnPinning(pinningState => {\n return {\n ...pinningState,\n left:\n index === undefined\n ? unfreezeAllExternalColumns(pinningState.left)\n : freezeUptoExternalColumn(\n index,\n table.getAllLeafColumns().map(column => column.id)\n ),\n };\n });\n };\n }\n\n if (canResize) {\n memoedProps.isResizing = header.column.getIsResizing();\n memoedProps.onResize = header.getResizeHandler();\n memoedProps.resetSize = header.column.resetSize;\n }\n\n if (canSort) {\n const handleSortToggle = (sortDirection: TableColumnSortDirection | false) => {\n if (sortDirection === false) {\n header.column.clearSorting();\n } else {\n header.column.toggleSorting(sortDirection === 'desc');\n }\n };\n\n memoedProps.onSort = header.column.getToggleSortingHandler();\n memoedProps.onSortToggle = handleSortToggle;\n memoedProps.sortDirection = header.column.getIsSorted();\n }\n\n return <MemoedHeader key={header.id} {...memoedProps} />;\n}\n\nexport type MemoedHeaderProps = {\n align?: TableColumnAlignment;\n canFilter: boolean;\n canHide: boolean;\n canGoto: boolean;\n canMeasureSize: boolean;\n canPin: boolean;\n canResize: boolean;\n canSort: boolean;\n children: React.JSX.Element | React.ReactNode;\n className?: string;\n colSpan: number;\n customMenu?: TableColumnMenu;\n defaultWidth?: TableColumnWidth;\n hasMenu: boolean;\n id: string;\n index: number;\n isExpanded?: boolean;\n isFiltered: boolean;\n isGroup: boolean;\n isPinned?: ReactTableColumnPinningPosition;\n isPlaceholder: boolean;\n isResizing?: boolean;\n offset?: number;\n onFilter?: () => void;\n onGoto?: (query: string) => Promise<number>;\n onHide?: (event: unknown) => void;\n onPin?: (index: number | undefined) => void;\n onResize?: (event: unknown) => void;\n onSort?: (event: unknown) => void;\n onSortToggle?: (sortDirection: TableColumnSortDirection | false) => void;\n parentId?: string;\n resetSize?: () => void;\n scrollToIndex: (index: number) => void;\n setRowActiveIndex: (index: number) => void;\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void;\n sortDirection?: TableColumnSortDirection | false;\n tooltip?: string;\n width?: TableColumnWidth;\n};\n\nconst MemoedHeader = React.memo(function MemoedHeader(props: MemoedHeaderProps) {\n const {\n align,\n canFilter,\n canGoto,\n canHide,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n children,\n className,\n colSpan,\n customMenu,\n defaultWidth,\n hasMenu,\n id,\n index,\n isExpanded,\n isFiltered,\n isGroup,\n isPinned,\n isPlaceholder,\n isResizing,\n offset,\n onFilter: handleFilter,\n onGoto: handleGoto,\n onHide: handleHide,\n onPin: handlePin,\n onResize: handleResize,\n onSort: handleSort,\n onSortToggle: handleSortToggle,\n resetSize: handleResetSize,\n scrollToIndex,\n setRowActiveIndex,\n setColumnSizing,\n sortDirection,\n tooltip,\n width,\n } = props;\n const [ref, setRef] = React.useState<HTMLTableCellElement | null>(null);\n\n // save column width if none is set\n useSetInitialColumnSizing(id, defaultWidth, width, ref, canMeasureSize, setColumnSizing);\n\n // feature specific styles\n const style: React.CSSProperties = {};\n\n // column groups often span multiple columns\n if (colSpan > 1) {\n style.gridColumn = `span ${colSpan}`;\n }\n\n // pinned columns should be offset from either the left or right\n if (isPinned) {\n style[isPinned] = `${offset}px`;\n }\n\n return (\n <th\n {...getSortAttributes(canSort, handleSort, sortDirection)}\n className={className}\n data-cell-align={isGroup ? 'center' : align}\n data-cell-id={id}\n data-cell-pinned={isPinned || undefined}\n data-taco={\n isGroup ? (isPlaceholder ? 'grouped-column-header-placeholder' : 'grouped-column-header') : 'column-header'\n }\n data-parent-group-id={props.parentId ? props.parentId : undefined}\n data-rows-expanded={isExpanded || undefined}\n style={style}\n ref={setRef}>\n {isPlaceholder ? null : (\n <HeaderContent children={children} tooltip={tooltip} isInternalColumnHeader={!!isInternalColumn(id)} />\n )}\n {sortDirection ? <SortIndicator direction={sortDirection} /> : null}\n {hasMenu ? (\n <HeaderMenu\n canFilter={canFilter}\n canGoto={canGoto}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n className={cn({\n 'ml-auto': align !== 'right',\n 'ml-0': align === 'right',\n })}\n customMenu={customMenu}\n index={index}\n isFiltered={isFiltered}\n onFilter={handleFilter}\n onGoto={handleGoto}\n onHide={handleHide}\n onPin={handlePin}\n onSortToggle={handleSortToggle}\n scrollToIndex={scrollToIndex}\n setRowActiveIndex={setRowActiveIndex}\n sortDirection={sortDirection}\n columnId={id}\n />\n ) : null}\n {canResize ? (\n <Resizer\n headerRef={ref}\n id={id}\n isResizing={isResizing as boolean}\n onResize={handleResize as (event: unknown) => void}\n onResetSize={handleResetSize as () => void}\n setColumnSizing={setColumnSizing}\n width={width}\n />\n ) : null}\n </th>\n );\n});\n"],"names":["Tooltip","getTableMeta","getIsPinned","isInternalColumn","flexRender","TableFilterComparator","unfreezeAllExternalColumns","freezeUptoExternalColumn","MemoedHeader","useSetInitialColumnSizing","getSortAttributes","SortIndicator","HeaderMenu","Resizer"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import cn from "clsx";
|
|
|
3
3
|
import React__default from "react";
|
|
4
4
|
import { TableFilterComparator } from "../../../types.js";
|
|
5
5
|
import { isInternalColumn, unfreezeAllExternalColumns, freezeUptoExternalColumn } from "../../../useTableManager/util/columns.js";
|
|
6
|
+
import { getTableMeta } from "../../../useTableManager/util/rows.js";
|
|
6
7
|
import { HeaderMenu } from "./components/Menu.js";
|
|
7
8
|
import { Resizer } from "./components/Resizer.js";
|
|
8
9
|
import { getSortAttributes, SortIndicator } from "./components/SortIndicator.js";
|
|
@@ -20,8 +21,8 @@ function Header(props) {
|
|
|
20
21
|
return null;
|
|
21
22
|
}
|
|
22
23
|
const { table } = header.getContext();
|
|
23
|
-
const tableMeta = table
|
|
24
|
-
const columnMeta = header.column.columnDef.meta
|
|
24
|
+
const tableMeta = getTableMeta(table);
|
|
25
|
+
const columnMeta = header.column.columnDef.meta;
|
|
25
26
|
const isGroup = !!header.subHeaders.length;
|
|
26
27
|
const isPinned = getIsPinned(header);
|
|
27
28
|
const canFilter = !header.isPlaceholder && header.column.getCanFilter() && !!table.options.enableColumnFilters;
|
|
@@ -31,12 +32,12 @@ function Header(props) {
|
|
|
31
32
|
const canResize = !header.isPlaceholder && !isGroup && header.column.getCanResize();
|
|
32
33
|
const canSort = !header.isPlaceholder && !isGroup && header.column.getCanSort();
|
|
33
34
|
const canGoto = canSort && !header.isPlaceholder && !isGroup && tableMeta.rowGoto.isEnabled && !!header.column.getIsSorted();
|
|
34
|
-
const hasMenu = !isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta
|
|
35
|
+
const hasMenu = !isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta?.menu);
|
|
35
36
|
const sorting = table.getState().sorting;
|
|
36
37
|
const filters = table.getState().columnFilters;
|
|
37
38
|
const search = table.getState().globalFilter;
|
|
38
39
|
const memoedProps = {
|
|
39
|
-
align: columnMeta
|
|
40
|
+
align: columnMeta?.align,
|
|
40
41
|
canFilter,
|
|
41
42
|
canHide,
|
|
42
43
|
canGoto,
|
|
@@ -44,11 +45,11 @@ function Header(props) {
|
|
|
44
45
|
canPin,
|
|
45
46
|
canResize,
|
|
46
47
|
canSort,
|
|
47
|
-
className: cn("group/header", columnMeta
|
|
48
|
+
className: cn("group/header", columnMeta?.headerClassName),
|
|
48
49
|
children: flexRender(header.column.columnDef.header, header.getContext()),
|
|
49
50
|
colSpan: header.colSpan,
|
|
50
|
-
customMenu: columnMeta
|
|
51
|
-
defaultWidth: columnMeta
|
|
51
|
+
customMenu: columnMeta?.menu,
|
|
52
|
+
defaultWidth: columnMeta?.defaultWidth,
|
|
52
53
|
hasMenu,
|
|
53
54
|
id: header.id,
|
|
54
55
|
isFiltered: header.column.getIsFiltered(),
|
|
@@ -61,7 +62,7 @@ function Header(props) {
|
|
|
61
62
|
scrollToIndex,
|
|
62
63
|
setRowActiveIndex: tableMeta.rowActive.setRowActiveIndex,
|
|
63
64
|
setColumnSizing: table.setColumnSizing,
|
|
64
|
-
tooltip: columnMeta
|
|
65
|
+
tooltip: columnMeta?.tooltip,
|
|
65
66
|
width: table.getState().columnSizing[header.id]
|
|
66
67
|
};
|
|
67
68
|
if (header.isPlaceholder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../../../src/primitives/Table/Core/components/Header/Header.tsx"],"sourcesContent":["import type {\n TableMeta as ReactTableMeta,\n ColumnMeta as ReactTableColumnMeta,\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport { flexRender } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { Tooltip } from '@/components';\n\nimport type { TableColumnAlignment, TableColumnMenu, TableColumnSortDirection, TableColumnWidth } from '../../../types';\nimport { TableFilterComparator } from '../../../types';\nimport { freezeUptoExternalColumn, isInternalColumn, unfreezeAllExternalColumns } from '../../../useTableManager/util/columns';\n\nimport { HeaderMenu } from './components/Menu';\nimport { Resizer } from './components/Resizer';\nimport { SortIndicator, getSortAttributes } from './components/SortIndicator';\nimport { getIsPinned, useSetInitialColumnSizing } from './util';\n\ntype HeaderContentProps = {\n children: React.ReactNode;\n tooltip?: React.ReactNode;\n isInternalColumnHeader: boolean;\n};\n\nconst HeaderContent = ({ children, tooltip, isInternalColumnHeader }: HeaderContentProps) => {\n if (isInternalColumnHeader || typeof children !== 'string') {\n return <>{children}</>;\n }\n\n return (\n <Tooltip title={String(tooltip ?? children)} placement=\"top\">\n <span className=\"truncate\">{children}</span>\n </Tooltip>\n );\n};\n\nexport type HeaderProps<TType = unknown> = {\n header: ReactTableHeader<TType, unknown>;\n scrollToIndex: (index: number) => void;\n};\n\nexport function Header<TType = unknown>(props: HeaderProps<TType>) {\n const { header, scrollToIndex } = props;\n\n if (header.column.getIsGrouped()) {\n return null;\n }\n\n const { table } = header.getContext();\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const columnMeta = (header.column.columnDef.meta ?? {}) as ReactTableColumnMeta<TType, unknown>;\n\n const isGroup = !!header.subHeaders.length;\n const isPinned = getIsPinned(header);\n\n const canFilter = !header.isPlaceholder && header.column.getCanFilter() && !!table.options.enableColumnFilters;\n const canHide = !header.isPlaceholder && !isGroup && header.column.getCanHide();\n const canMeasureSize = !!table.getRowModel().rows.length;\n const canPin = !header.isPlaceholder && !isGroup && header.column.getCanPin();\n const canResize = !header.isPlaceholder && !isGroup && header.column.getCanResize();\n const canSort = !header.isPlaceholder && !isGroup && header.column.getCanSort();\n const canGoto = canSort && !header.isPlaceholder && !isGroup && tableMeta.rowGoto.isEnabled && !!header.column.getIsSorted();\n\n const hasMenu = !isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta.menu);\n\n const sorting = table.getState().sorting;\n const filters = table.getState().columnFilters;\n const search = table.getState().globalFilter;\n\n // passing header or column results in re-renders on scroll, so anything from those objects as memoed props\n const memoedProps: MemoedHeaderProps = {\n align: columnMeta.align,\n canFilter,\n canHide,\n canGoto,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n className: cn('group/header', columnMeta.headerClassName),\n children: flexRender(header.column.columnDef.header, header.getContext()),\n colSpan: header.colSpan,\n customMenu: columnMeta.menu,\n defaultWidth: columnMeta.defaultWidth,\n hasMenu,\n id: header.id,\n isFiltered: header.column.getIsFiltered(),\n index: header.index,\n isGroup,\n isPinned,\n isPlaceholder: header.isPlaceholder,\n offset: header.column.getStart(isPinned),\n parentId: header.column.parent?.id,\n scrollToIndex,\n setRowActiveIndex: tableMeta.rowActive.setRowActiveIndex,\n setColumnSizing: table.setColumnSizing,\n tooltip: columnMeta.tooltip,\n width: table.getState().columnSizing[header.id],\n };\n\n if (header.isPlaceholder) {\n const nextHeader = header.headerGroup.headers[header.index + 1];\n memoedProps.className = cn('!bg-white before:!content-none', memoedProps.className, {\n 'after:!content-none': nextHeader?.isPlaceholder,\n });\n }\n\n if (canFilter) {\n memoedProps.onFilter = () => {\n header.column.setFilterValue({ comparator: TableFilterComparator.Contains });\n };\n }\n\n if (canGoto) {\n memoedProps.onGoto = ((query: string) => tableMeta.rowGoto.handleGoto?.(header.id, query, sorting, filters, search)) as (\n query: string\n ) => Promise<number>;\n }\n\n if (canHide) {\n memoedProps.onHide = header.column.getToggleVisibilityHandler();\n }\n\n if (header.id === '__expansion') {\n memoedProps.isExpanded = table.getIsSomeRowsExpanded();\n }\n\n if (canPin) {\n memoedProps.onPin = (index: number | undefined) => {\n // TODO: this can probably be moved to a feature hook\n table.setColumnPinning(pinningState => {\n return {\n ...pinningState,\n left:\n index === undefined\n ? unfreezeAllExternalColumns(pinningState.left)\n : freezeUptoExternalColumn(\n index,\n table.getAllLeafColumns().map(column => column.id)\n ),\n };\n });\n };\n }\n\n if (canResize) {\n memoedProps.isResizing = header.column.getIsResizing();\n memoedProps.onResize = header.getResizeHandler();\n memoedProps.resetSize = header.column.resetSize;\n }\n\n if (canSort) {\n const handleSortToggle = (sortDirection: TableColumnSortDirection | false) => {\n if (sortDirection === false) {\n header.column.clearSorting();\n } else {\n header.column.toggleSorting(sortDirection === 'desc');\n }\n };\n\n memoedProps.onSort = header.column.getToggleSortingHandler();\n memoedProps.onSortToggle = handleSortToggle;\n memoedProps.sortDirection = header.column.getIsSorted();\n }\n\n return <MemoedHeader key={header.id} {...memoedProps} />;\n}\n\nexport type MemoedHeaderProps = {\n align?: TableColumnAlignment;\n canFilter: boolean;\n canHide: boolean;\n canGoto: boolean;\n canMeasureSize: boolean;\n canPin: boolean;\n canResize: boolean;\n canSort: boolean;\n children: React.JSX.Element | React.ReactNode;\n className?: string;\n colSpan: number;\n customMenu?: TableColumnMenu;\n defaultWidth?: TableColumnWidth;\n hasMenu: boolean;\n id: string;\n index: number;\n isExpanded?: boolean;\n isFiltered: boolean;\n isGroup: boolean;\n isPinned?: ReactTableColumnPinningPosition;\n isPlaceholder: boolean;\n isResizing?: boolean;\n offset?: number;\n onFilter?: () => void;\n onGoto?: (query: string) => Promise<number>;\n onHide?: (event: unknown) => void;\n onPin?: (index: number | undefined) => void;\n onResize?: (event: unknown) => void;\n onSort?: (event: unknown) => void;\n onSortToggle?: (sortDirection: TableColumnSortDirection | false) => void;\n parentId?: string;\n resetSize?: () => void;\n scrollToIndex: (index: number) => void;\n setRowActiveIndex: (index: number) => void;\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void;\n sortDirection?: TableColumnSortDirection | false;\n tooltip?: string;\n width?: TableColumnWidth;\n};\n\nconst MemoedHeader = React.memo(function MemoedHeader(props: MemoedHeaderProps) {\n const {\n align,\n canFilter,\n canGoto,\n canHide,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n children,\n className,\n colSpan,\n customMenu,\n defaultWidth,\n hasMenu,\n id,\n index,\n isExpanded,\n isFiltered,\n isGroup,\n isPinned,\n isPlaceholder,\n isResizing,\n offset,\n onFilter: handleFilter,\n onGoto: handleGoto,\n onHide: handleHide,\n onPin: handlePin,\n onResize: handleResize,\n onSort: handleSort,\n onSortToggle: handleSortToggle,\n resetSize: handleResetSize,\n scrollToIndex,\n setRowActiveIndex,\n setColumnSizing,\n sortDirection,\n tooltip,\n width,\n } = props;\n const [ref, setRef] = React.useState<HTMLTableCellElement | null>(null);\n\n // save column width if none is set\n useSetInitialColumnSizing(id, defaultWidth, width, ref, canMeasureSize, setColumnSizing);\n\n // feature specific styles\n const style: React.CSSProperties = {};\n\n // column groups often span multiple columns\n if (colSpan > 1) {\n style.gridColumn = `span ${colSpan}`;\n }\n\n // pinned columns should be offset from either the left or right\n if (isPinned) {\n style[isPinned] = `${offset}px`;\n }\n\n return (\n <th\n {...getSortAttributes(canSort, handleSort, sortDirection)}\n className={className}\n data-cell-align={isGroup ? 'center' : align}\n data-cell-id={id}\n data-cell-pinned={isPinned || undefined}\n data-taco={\n isGroup ? (isPlaceholder ? 'grouped-column-header-placeholder' : 'grouped-column-header') : 'column-header'\n }\n data-parent-group-id={props.parentId ? props.parentId : undefined}\n data-rows-expanded={isExpanded || undefined}\n style={style}\n ref={setRef}>\n {isPlaceholder ? null : (\n <HeaderContent children={children} tooltip={tooltip} isInternalColumnHeader={!!isInternalColumn(id)} />\n )}\n {sortDirection ? <SortIndicator direction={sortDirection} /> : null}\n {hasMenu ? (\n <HeaderMenu\n canFilter={canFilter}\n canGoto={canGoto}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n className={cn({\n 'ml-auto': align !== 'right',\n 'ml-0': align === 'right',\n })}\n customMenu={customMenu}\n index={index}\n isFiltered={isFiltered}\n onFilter={handleFilter}\n onGoto={handleGoto}\n onHide={handleHide}\n onPin={handlePin}\n onSortToggle={handleSortToggle}\n scrollToIndex={scrollToIndex}\n setRowActiveIndex={setRowActiveIndex}\n sortDirection={sortDirection}\n columnId={id}\n />\n ) : null}\n {canResize ? (\n <Resizer\n headerRef={ref}\n id={id}\n isResizing={isResizing as boolean}\n onResize={handleResize as (event: unknown) => void}\n onResetSize={handleResetSize as () => void}\n setColumnSizing={setColumnSizing}\n width={width}\n />\n ) : null}\n </th>\n );\n});\n"],"names":["React","MemoedHeader"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../../../src/primitives/Table/Core/components/Header/Header.tsx"],"sourcesContent":["import type {\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport { flexRender } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { Tooltip } from '@/components';\n\nimport type { TableColumnAlignment, TableColumnMenu, TableColumnSortDirection, TableColumnWidth } from '../../../types';\nimport { TableFilterComparator } from '../../../types';\nimport { freezeUptoExternalColumn, isInternalColumn, unfreezeAllExternalColumns } from '../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../useTableManager/util/rows';\n\nimport { HeaderMenu } from './components/Menu';\nimport { Resizer } from './components/Resizer';\nimport { SortIndicator, getSortAttributes } from './components/SortIndicator';\nimport { getIsPinned, useSetInitialColumnSizing } from './util';\n\ntype HeaderContentProps = {\n children: React.ReactNode;\n tooltip?: React.ReactNode;\n isInternalColumnHeader: boolean;\n};\n\nconst HeaderContent = ({ children, tooltip, isInternalColumnHeader }: HeaderContentProps) => {\n if (isInternalColumnHeader || typeof children !== 'string') {\n return <>{children}</>;\n }\n\n return (\n <Tooltip title={String(tooltip ?? children)} placement=\"top\">\n <span className=\"truncate\">{children}</span>\n </Tooltip>\n );\n};\n\nexport type HeaderProps<TType = unknown> = {\n header: ReactTableHeader<TType, unknown>;\n scrollToIndex: (index: number) => void;\n};\n\nexport function Header<TType = unknown>(props: HeaderProps<TType>) {\n const { header, scrollToIndex } = props;\n\n if (header.column.getIsGrouped()) {\n return null;\n }\n\n const { table } = header.getContext();\n\n const tableMeta = getTableMeta(table);\n const columnMeta = header.column.columnDef.meta;\n\n const isGroup = !!header.subHeaders.length;\n const isPinned = getIsPinned(header);\n\n const canFilter = !header.isPlaceholder && header.column.getCanFilter() && !!table.options.enableColumnFilters;\n const canHide = !header.isPlaceholder && !isGroup && header.column.getCanHide();\n const canMeasureSize = !!table.getRowModel().rows.length;\n const canPin = !header.isPlaceholder && !isGroup && header.column.getCanPin();\n const canResize = !header.isPlaceholder && !isGroup && header.column.getCanResize();\n const canSort = !header.isPlaceholder && !isGroup && header.column.getCanSort();\n const canGoto = canSort && !header.isPlaceholder && !isGroup && tableMeta.rowGoto.isEnabled && !!header.column.getIsSorted();\n\n const hasMenu = !isInternalColumn(header.id) && (canHide || canGoto || canPin || canSort || !!columnMeta?.menu);\n\n const sorting = table.getState().sorting;\n const filters = table.getState().columnFilters;\n const search = table.getState().globalFilter;\n\n // passing header or column results in re-renders on scroll, so anything from those objects as memoed props\n const memoedProps: MemoedHeaderProps = {\n align: columnMeta?.align,\n canFilter,\n canHide,\n canGoto,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n className: cn('group/header', columnMeta?.headerClassName),\n children: flexRender(header.column.columnDef.header, header.getContext()),\n colSpan: header.colSpan,\n customMenu: columnMeta?.menu,\n defaultWidth: columnMeta?.defaultWidth,\n hasMenu,\n id: header.id,\n isFiltered: header.column.getIsFiltered(),\n index: header.index,\n isGroup,\n isPinned,\n isPlaceholder: header.isPlaceholder,\n offset: header.column.getStart(isPinned),\n parentId: header.column.parent?.id,\n scrollToIndex,\n setRowActiveIndex: tableMeta.rowActive.setRowActiveIndex,\n setColumnSizing: table.setColumnSizing,\n tooltip: columnMeta?.tooltip,\n width: table.getState().columnSizing[header.id],\n };\n\n if (header.isPlaceholder) {\n const nextHeader = header.headerGroup.headers[header.index + 1];\n memoedProps.className = cn('!bg-white before:!content-none', memoedProps.className, {\n 'after:!content-none': nextHeader?.isPlaceholder,\n });\n }\n\n if (canFilter) {\n memoedProps.onFilter = () => {\n header.column.setFilterValue({ comparator: TableFilterComparator.Contains });\n };\n }\n\n if (canGoto) {\n memoedProps.onGoto = ((query: string) => tableMeta.rowGoto.handleGoto?.(header.id, query, sorting, filters, search)) as (\n query: string\n ) => Promise<number>;\n }\n\n if (canHide) {\n memoedProps.onHide = header.column.getToggleVisibilityHandler();\n }\n\n if (header.id === '__expansion') {\n memoedProps.isExpanded = table.getIsSomeRowsExpanded();\n }\n\n if (canPin) {\n memoedProps.onPin = (index: number | undefined) => {\n // TODO: this can probably be moved to a feature hook\n table.setColumnPinning(pinningState => {\n return {\n ...pinningState,\n left:\n index === undefined\n ? unfreezeAllExternalColumns(pinningState.left)\n : freezeUptoExternalColumn(\n index,\n table.getAllLeafColumns().map(column => column.id)\n ),\n };\n });\n };\n }\n\n if (canResize) {\n memoedProps.isResizing = header.column.getIsResizing();\n memoedProps.onResize = header.getResizeHandler();\n memoedProps.resetSize = header.column.resetSize;\n }\n\n if (canSort) {\n const handleSortToggle = (sortDirection: TableColumnSortDirection | false) => {\n if (sortDirection === false) {\n header.column.clearSorting();\n } else {\n header.column.toggleSorting(sortDirection === 'desc');\n }\n };\n\n memoedProps.onSort = header.column.getToggleSortingHandler();\n memoedProps.onSortToggle = handleSortToggle;\n memoedProps.sortDirection = header.column.getIsSorted();\n }\n\n return <MemoedHeader key={header.id} {...memoedProps} />;\n}\n\nexport type MemoedHeaderProps = {\n align?: TableColumnAlignment;\n canFilter: boolean;\n canHide: boolean;\n canGoto: boolean;\n canMeasureSize: boolean;\n canPin: boolean;\n canResize: boolean;\n canSort: boolean;\n children: React.JSX.Element | React.ReactNode;\n className?: string;\n colSpan: number;\n customMenu?: TableColumnMenu;\n defaultWidth?: TableColumnWidth;\n hasMenu: boolean;\n id: string;\n index: number;\n isExpanded?: boolean;\n isFiltered: boolean;\n isGroup: boolean;\n isPinned?: ReactTableColumnPinningPosition;\n isPlaceholder: boolean;\n isResizing?: boolean;\n offset?: number;\n onFilter?: () => void;\n onGoto?: (query: string) => Promise<number>;\n onHide?: (event: unknown) => void;\n onPin?: (index: number | undefined) => void;\n onResize?: (event: unknown) => void;\n onSort?: (event: unknown) => void;\n onSortToggle?: (sortDirection: TableColumnSortDirection | false) => void;\n parentId?: string;\n resetSize?: () => void;\n scrollToIndex: (index: number) => void;\n setRowActiveIndex: (index: number) => void;\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void;\n sortDirection?: TableColumnSortDirection | false;\n tooltip?: string;\n width?: TableColumnWidth;\n};\n\nconst MemoedHeader = React.memo(function MemoedHeader(props: MemoedHeaderProps) {\n const {\n align,\n canFilter,\n canGoto,\n canHide,\n canMeasureSize,\n canPin,\n canResize,\n canSort,\n children,\n className,\n colSpan,\n customMenu,\n defaultWidth,\n hasMenu,\n id,\n index,\n isExpanded,\n isFiltered,\n isGroup,\n isPinned,\n isPlaceholder,\n isResizing,\n offset,\n onFilter: handleFilter,\n onGoto: handleGoto,\n onHide: handleHide,\n onPin: handlePin,\n onResize: handleResize,\n onSort: handleSort,\n onSortToggle: handleSortToggle,\n resetSize: handleResetSize,\n scrollToIndex,\n setRowActiveIndex,\n setColumnSizing,\n sortDirection,\n tooltip,\n width,\n } = props;\n const [ref, setRef] = React.useState<HTMLTableCellElement | null>(null);\n\n // save column width if none is set\n useSetInitialColumnSizing(id, defaultWidth, width, ref, canMeasureSize, setColumnSizing);\n\n // feature specific styles\n const style: React.CSSProperties = {};\n\n // column groups often span multiple columns\n if (colSpan > 1) {\n style.gridColumn = `span ${colSpan}`;\n }\n\n // pinned columns should be offset from either the left or right\n if (isPinned) {\n style[isPinned] = `${offset}px`;\n }\n\n return (\n <th\n {...getSortAttributes(canSort, handleSort, sortDirection)}\n className={className}\n data-cell-align={isGroup ? 'center' : align}\n data-cell-id={id}\n data-cell-pinned={isPinned || undefined}\n data-taco={\n isGroup ? (isPlaceholder ? 'grouped-column-header-placeholder' : 'grouped-column-header') : 'column-header'\n }\n data-parent-group-id={props.parentId ? props.parentId : undefined}\n data-rows-expanded={isExpanded || undefined}\n style={style}\n ref={setRef}>\n {isPlaceholder ? null : (\n <HeaderContent children={children} tooltip={tooltip} isInternalColumnHeader={!!isInternalColumn(id)} />\n )}\n {sortDirection ? <SortIndicator direction={sortDirection} /> : null}\n {hasMenu ? (\n <HeaderMenu\n canFilter={canFilter}\n canGoto={canGoto}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n className={cn({\n 'ml-auto': align !== 'right',\n 'ml-0': align === 'right',\n })}\n customMenu={customMenu}\n index={index}\n isFiltered={isFiltered}\n onFilter={handleFilter}\n onGoto={handleGoto}\n onHide={handleHide}\n onPin={handlePin}\n onSortToggle={handleSortToggle}\n scrollToIndex={scrollToIndex}\n setRowActiveIndex={setRowActiveIndex}\n sortDirection={sortDirection}\n columnId={id}\n />\n ) : null}\n {canResize ? (\n <Resizer\n headerRef={ref}\n id={id}\n isResizing={isResizing as boolean}\n onResize={handleResize as (event: unknown) => void}\n onResetSize={handleResetSize as () => void}\n setColumnSizing={setColumnSizing}\n width={width}\n />\n ) : null}\n </th>\n );\n});\n"],"names":["React","MemoedHeader"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ const useResizeObserver = require("../../../../../../hooks/useResizeObserver.cjs
|
|
|
6
6
|
const dom = require("../../../../../../utils/dom.cjs");
|
|
7
7
|
const useDropTarget = require("../../../../../../utils/hooks/useDropTarget.cjs");
|
|
8
8
|
const mergeRefs = require("../../../../../../utils/mergeRefs.cjs");
|
|
9
|
+
const rows = require("../../../../useTableManager/util/rows.cjs");
|
|
9
10
|
const Cell = require("../../Columns/Cell/Cell.cjs");
|
|
10
11
|
const DisplayRow = React.memo(
|
|
11
12
|
React.forwardRef(function DisplayRow2(props, externalRef) {
|
|
@@ -19,7 +20,7 @@ const DisplayRow = React.memo(
|
|
|
19
20
|
remeasureDependencies = [],
|
|
20
21
|
...otherAttributes
|
|
21
22
|
} = props;
|
|
22
|
-
const tableMeta = table
|
|
23
|
+
const tableMeta = rows.getTableMeta(table);
|
|
23
24
|
const attributes = {
|
|
24
25
|
...otherAttributes,
|
|
25
26
|
"data-row-id": row.id,
|
|
@@ -51,13 +52,13 @@ const DisplayRow = React.memo(
|
|
|
51
52
|
attributes.draggable = true;
|
|
52
53
|
const GHOST_ELEMENT_ID = "taco_table_dragging";
|
|
53
54
|
attributes.onDragStart = (event) => {
|
|
54
|
-
let
|
|
55
|
+
let rows2 = [row];
|
|
55
56
|
if (row.getCanSelect()) {
|
|
56
|
-
|
|
57
|
+
rows2 = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];
|
|
57
58
|
}
|
|
58
|
-
const data =
|
|
59
|
+
const data = rows2.map((row2) => row2.original);
|
|
59
60
|
tableMeta.rowDrag.setDragging?.(
|
|
60
|
-
|
|
61
|
+
rows2.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})
|
|
61
62
|
);
|
|
62
63
|
event.dataTransfer.setData("text", JSON.stringify(data));
|
|
63
64
|
const showPlaceholder = (text) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayRow.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.tsx"],"sourcesContent":["import type { TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { useResizeObserver } from '@/hooks/useResizeObserver';\nimport { isElementInteractive } from '@/utils/dom';\nimport { useDropTarget } from '@/utils/hooks/useDropTarget';\nimport { mergeRefs } from '@/utils/mergeRefs';\n\nimport type { TableRowWithMetaData } from '../../../../types';\nimport type { TableRowRendererProps } from '../../../types';\nimport { Cell } from '../../Columns/Cell/Cell';\n\nexport type DisplayRowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n remeasureDependencies?: React.DependencyList;\n };\n\nexport const DisplayRow = React.memo(\n React.forwardRef<HTMLTableRowElement, DisplayRowProps>(function DisplayRow<TType = unknown>(\n props: DisplayRowProps<TType>,\n externalRef: React.Ref<HTMLTableRowElement>\n ) {\n const {\n children,\n cellRenderer: CellRenderer,\n index,\n measureRow,\n row,\n table,\n remeasureDependencies = [],\n ...otherAttributes\n } = props;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const attributes: any = {\n ...otherAttributes,\n 'data-row-id': row.id,\n 'data-row-index': index,\n tabIndex: -1,\n };\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLTableRowElement>) => {\n const clickedElement = event.target as HTMLElement;\n\n if (!event.currentTarget?.contains(event.target as HTMLElement) || isElementInteractive(clickedElement)) {\n return;\n }\n\n tableMeta.rowClick.handleClick(event, row.original);\n },\n [row.original]\n );\n const handlePointerDown = React.useCallback(() => {\n requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(index));\n }, [index]);\n\n // row active\n if (tableMeta.rowActive.isEnabled) {\n attributes['data-row-active'] = tableMeta.rowActive.rowActiveIndex === index ? true : undefined;\n // we use pointerdown because it let's us picks up clicks on components inside the row, e.g. checkboxes\n attributes.onPointerDown = handlePointerDown;\n }\n\n // row click\n if (tableMeta.rowClick.isEnabled(row.original)) {\n attributes.onClick = handleClick;\n }\n\n // row drag\n if (tableMeta.rowDrag.isEnabled) {\n attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];\n attributes.draggable = true;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n attributes.onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (row.getCanSelect()) {\n rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging?.(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'bg-blue-500 text-white rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.append(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n tableMeta.rowDrag.handleRowDrag?.(data, showPlaceholder, setDataTransfer);\n };\n\n attributes.onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging?.({});\n };\n }\n\n // row drop\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => tableMeta.rowDrop.handleDrop?.(event, row.original));\n\n if (tableMeta.rowDrop.isEnabled) {\n attributes.onDragEnter = dropTargetProps?.onDragEnter;\n attributes.onDragLeave = dropTargetProps?.onDragLeave;\n attributes.onDragOver = dropTargetProps?.onDragOver;\n attributes.onDrop = dropTargetProps?.onDrop;\n attributes['data-row-dragged-over'] = isDraggedOver;\n }\n\n // row grouping\n if (table.options.enableGrouping) {\n attributes['data-row-group'] = row.getIsGrouped() ? true : undefined;\n }\n\n // row selection\n if (row.getCanSelect()) {\n attributes['data-row-selected'] = row.getIsSelected() || row.getIsAllSubRowsSelected() ? true : undefined;\n }\n\n // row expansion\n // When grouping is enabled, a group header row also reports getIsExpanded() === true\n // when its children are visible. Skip the renderer in that case — otherwise row.original\n // (the first child's data) gets rendered as expansion content under the header.\n let expandedRow;\n\n if (tableMeta.rowExpansion.isEnabled && row.getIsExpanded() && !row.getIsGrouped()) {\n attributes['data-row-expanded'] = true;\n expandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(row.original)?.();\n }\n\n const rowMeta = (row.original as TableRowWithMetaData<TType>)._meta;\n\n if (rowMeta?.layout) {\n attributes['data-row-meta-layout'] = rowMeta.layout;\n }\n\n const ref = React.useRef<HTMLTableRowElement>(null);\n const expansionRef = React.useRef<HTMLTableRowElement>(null);\n const expandedRowSize = useResizeObserver(expansionRef, !!expandedRow);\n\n React.useEffect(() => {\n const rowHeight = ref.current?.getBoundingClientRect().height ?? 0;\n const expansionHeight = expansionRef.current?.getBoundingClientRect().height ?? 0;\n\n // Deferred a frame — resizeItem can trigger a synchronous flushSync, which React\n // rejects when called straight from this effect while still committing. Cancelled\n // on cleanup so a stale frame can't fire measureRow after this row unmounts or a\n // dep change (e.g. a new remeasure) supersedes it.\n const frameId = requestAnimationFrame(() => {\n measureRow(rowHeight + expansionHeight);\n });\n\n return () => cancelAnimationFrame(frameId);\n }, [expansionRef.current, expandedRowSize?.height, ...remeasureDependencies]);\n\n const className = cn('group/row', otherAttributes.className, {\n 'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',\n 'hover:cursor-pointer': typeof attributes.onClick === 'function',\n });\n\n const isGrouped = row.getIsGrouped();\n\n const mergedRef = mergeRefs([ref, externalRef]);\n\n return (\n <>\n <tr {...attributes} className={className} ref={mergedRef}>\n {children}\n {row\n .getVisibleCells()\n // Filter out the row actions cell from rendering in Grouped Row\n .filter(cell => !(isGrouped && cell.column.id === '__actions'))\n .map((cell, cellIndex) => (\n <Cell key={cell.id} cell={cell} index={cellIndex} renderer={CellRenderer} />\n ))}\n </tr>\n {expandedRow ? (\n <tr data-row-parent-id={row.id} ref={expansionRef}>\n <td className=\"col-span-full\">{expandedRow}</td>\n </tr>\n ) : null}\n </>\n );\n })\n) as <TType = unknown>(props: DisplayRowProps<TType> & { ref?: React.Ref<HTMLTableRowElement> }) => React.JSX.Element;\n"],"names":["DisplayRow","isElementInteractive","row","useDropTarget","useResizeObserver","mergeRefs","Cell"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DisplayRow.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport { useResizeObserver } from '@/hooks/useResizeObserver';\nimport { isElementInteractive } from '@/utils/dom';\nimport { useDropTarget } from '@/utils/hooks/useDropTarget';\nimport { mergeRefs } from '@/utils/mergeRefs';\n\nimport type { TableRowWithMetaData } from '../../../../types';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport type { TableRowRendererProps } from '../../../types';\nimport { Cell } from '../../Columns/Cell/Cell';\n\nexport type DisplayRowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n remeasureDependencies?: React.DependencyList;\n };\n\nexport const DisplayRow = React.memo(\n React.forwardRef<HTMLTableRowElement, DisplayRowProps>(function DisplayRow<TType = unknown>(\n props: DisplayRowProps<TType>,\n externalRef: React.Ref<HTMLTableRowElement>\n ) {\n const {\n children,\n cellRenderer: CellRenderer,\n index,\n measureRow,\n row,\n table,\n remeasureDependencies = [],\n ...otherAttributes\n } = props;\n const tableMeta = getTableMeta(table);\n\n const attributes: any = {\n ...otherAttributes,\n 'data-row-id': row.id,\n 'data-row-index': index,\n tabIndex: -1,\n };\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLTableRowElement>) => {\n const clickedElement = event.target as HTMLElement;\n\n if (!event.currentTarget?.contains(event.target as HTMLElement) || isElementInteractive(clickedElement)) {\n return;\n }\n\n tableMeta.rowClick.handleClick(event, row.original);\n },\n [row.original]\n );\n const handlePointerDown = React.useCallback(() => {\n requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(index));\n }, [index]);\n\n // row active\n if (tableMeta.rowActive.isEnabled) {\n attributes['data-row-active'] = tableMeta.rowActive.rowActiveIndex === index ? true : undefined;\n // we use pointerdown because it let's us picks up clicks on components inside the row, e.g. checkboxes\n attributes.onPointerDown = handlePointerDown;\n }\n\n // row click\n if (tableMeta.rowClick.isEnabled(row.original)) {\n attributes.onClick = handleClick;\n }\n\n // row drag\n if (tableMeta.rowDrag.isEnabled) {\n attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];\n attributes.draggable = true;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n attributes.onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (row.getCanSelect()) {\n rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging?.(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'bg-blue-500 text-white rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.append(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n tableMeta.rowDrag.handleRowDrag?.(data, showPlaceholder, setDataTransfer);\n };\n\n attributes.onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging?.({});\n };\n }\n\n // row drop\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => tableMeta.rowDrop.handleDrop?.(event, row.original));\n\n if (tableMeta.rowDrop.isEnabled) {\n attributes.onDragEnter = dropTargetProps?.onDragEnter;\n attributes.onDragLeave = dropTargetProps?.onDragLeave;\n attributes.onDragOver = dropTargetProps?.onDragOver;\n attributes.onDrop = dropTargetProps?.onDrop;\n attributes['data-row-dragged-over'] = isDraggedOver;\n }\n\n // row grouping\n if (table.options.enableGrouping) {\n attributes['data-row-group'] = row.getIsGrouped() ? true : undefined;\n }\n\n // row selection\n if (row.getCanSelect()) {\n attributes['data-row-selected'] = row.getIsSelected() || row.getIsAllSubRowsSelected() ? true : undefined;\n }\n\n // row expansion\n // When grouping is enabled, a group header row also reports getIsExpanded() === true\n // when its children are visible. Skip the renderer in that case — otherwise row.original\n // (the first child's data) gets rendered as expansion content under the header.\n let expandedRow;\n\n if (tableMeta.rowExpansion.isEnabled && row.getIsExpanded() && !row.getIsGrouped()) {\n attributes['data-row-expanded'] = true;\n expandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(row.original)?.();\n }\n\n const rowMeta = (row.original as TableRowWithMetaData<TType>)._meta;\n\n if (rowMeta?.layout) {\n attributes['data-row-meta-layout'] = rowMeta.layout;\n }\n\n const ref = React.useRef<HTMLTableRowElement>(null);\n const expansionRef = React.useRef<HTMLTableRowElement>(null);\n const expandedRowSize = useResizeObserver(expansionRef, !!expandedRow);\n\n React.useEffect(() => {\n const rowHeight = ref.current?.getBoundingClientRect().height ?? 0;\n const expansionHeight = expansionRef.current?.getBoundingClientRect().height ?? 0;\n\n // Deferred a frame — resizeItem can trigger a synchronous flushSync, which React\n // rejects when called straight from this effect while still committing. Cancelled\n // on cleanup so a stale frame can't fire measureRow after this row unmounts or a\n // dep change (e.g. a new remeasure) supersedes it.\n const frameId = requestAnimationFrame(() => {\n measureRow(rowHeight + expansionHeight);\n });\n\n return () => cancelAnimationFrame(frameId);\n }, [expansionRef.current, expandedRowSize?.height, ...remeasureDependencies]);\n\n const className = cn('group/row', otherAttributes.className, {\n 'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',\n 'hover:cursor-pointer': typeof attributes.onClick === 'function',\n });\n\n const isGrouped = row.getIsGrouped();\n\n const mergedRef = mergeRefs([ref, externalRef]);\n\n return (\n <>\n <tr {...attributes} className={className} ref={mergedRef}>\n {children}\n {row\n .getVisibleCells()\n // Filter out the row actions cell from rendering in Grouped Row\n .filter(cell => !(isGrouped && cell.column.id === '__actions'))\n .map((cell, cellIndex) => (\n <Cell key={cell.id} cell={cell} index={cellIndex} renderer={CellRenderer} />\n ))}\n </tr>\n {expandedRow ? (\n <tr data-row-parent-id={row.id} ref={expansionRef}>\n <td className=\"col-span-full\">{expandedRow}</td>\n </tr>\n ) : null}\n </>\n );\n })\n) as <TType = unknown>(props: DisplayRowProps<TType> & { ref?: React.Ref<HTMLTableRowElement> }) => React.JSX.Element;\n"],"names":["DisplayRow","getTableMeta","isElementInteractive","rows","row","useDropTarget","useResizeObserver","mergeRefs","Cell"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { useResizeObserver } from "../../../../../../hooks/useResizeObserver.js"
|
|
|
4
4
|
import { isElementInteractive } from "../../../../../../utils/dom.js";
|
|
5
5
|
import { useDropTarget } from "../../../../../../utils/hooks/useDropTarget.js";
|
|
6
6
|
import { mergeRefs } from "../../../../../../utils/mergeRefs.js";
|
|
7
|
+
import { getTableMeta } from "../../../../useTableManager/util/rows.js";
|
|
7
8
|
import { Cell } from "../../Columns/Cell/Cell.js";
|
|
8
9
|
const DisplayRow = React__default.memo(
|
|
9
10
|
React__default.forwardRef(function DisplayRow2(props, externalRef) {
|
|
@@ -17,7 +18,7 @@ const DisplayRow = React__default.memo(
|
|
|
17
18
|
remeasureDependencies = [],
|
|
18
19
|
...otherAttributes
|
|
19
20
|
} = props;
|
|
20
|
-
const tableMeta = table
|
|
21
|
+
const tableMeta = getTableMeta(table);
|
|
21
22
|
const attributes = {
|
|
22
23
|
...otherAttributes,
|
|
23
24
|
"data-row-id": row.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayRow.js","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.tsx"],"sourcesContent":["import type { TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { useResizeObserver } from '@/hooks/useResizeObserver';\nimport { isElementInteractive } from '@/utils/dom';\nimport { useDropTarget } from '@/utils/hooks/useDropTarget';\nimport { mergeRefs } from '@/utils/mergeRefs';\n\nimport type { TableRowWithMetaData } from '../../../../types';\nimport type { TableRowRendererProps } from '../../../types';\nimport { Cell } from '../../Columns/Cell/Cell';\n\nexport type DisplayRowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n remeasureDependencies?: React.DependencyList;\n };\n\nexport const DisplayRow = React.memo(\n React.forwardRef<HTMLTableRowElement, DisplayRowProps>(function DisplayRow<TType = unknown>(\n props: DisplayRowProps<TType>,\n externalRef: React.Ref<HTMLTableRowElement>\n ) {\n const {\n children,\n cellRenderer: CellRenderer,\n index,\n measureRow,\n row,\n table,\n remeasureDependencies = [],\n ...otherAttributes\n } = props;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const attributes: any = {\n ...otherAttributes,\n 'data-row-id': row.id,\n 'data-row-index': index,\n tabIndex: -1,\n };\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLTableRowElement>) => {\n const clickedElement = event.target as HTMLElement;\n\n if (!event.currentTarget?.contains(event.target as HTMLElement) || isElementInteractive(clickedElement)) {\n return;\n }\n\n tableMeta.rowClick.handleClick(event, row.original);\n },\n [row.original]\n );\n const handlePointerDown = React.useCallback(() => {\n requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(index));\n }, [index]);\n\n // row active\n if (tableMeta.rowActive.isEnabled) {\n attributes['data-row-active'] = tableMeta.rowActive.rowActiveIndex === index ? true : undefined;\n // we use pointerdown because it let's us picks up clicks on components inside the row, e.g. checkboxes\n attributes.onPointerDown = handlePointerDown;\n }\n\n // row click\n if (tableMeta.rowClick.isEnabled(row.original)) {\n attributes.onClick = handleClick;\n }\n\n // row drag\n if (tableMeta.rowDrag.isEnabled) {\n attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];\n attributes.draggable = true;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n attributes.onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (row.getCanSelect()) {\n rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging?.(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'bg-blue-500 text-white rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.append(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n tableMeta.rowDrag.handleRowDrag?.(data, showPlaceholder, setDataTransfer);\n };\n\n attributes.onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging?.({});\n };\n }\n\n // row drop\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => tableMeta.rowDrop.handleDrop?.(event, row.original));\n\n if (tableMeta.rowDrop.isEnabled) {\n attributes.onDragEnter = dropTargetProps?.onDragEnter;\n attributes.onDragLeave = dropTargetProps?.onDragLeave;\n attributes.onDragOver = dropTargetProps?.onDragOver;\n attributes.onDrop = dropTargetProps?.onDrop;\n attributes['data-row-dragged-over'] = isDraggedOver;\n }\n\n // row grouping\n if (table.options.enableGrouping) {\n attributes['data-row-group'] = row.getIsGrouped() ? true : undefined;\n }\n\n // row selection\n if (row.getCanSelect()) {\n attributes['data-row-selected'] = row.getIsSelected() || row.getIsAllSubRowsSelected() ? true : undefined;\n }\n\n // row expansion\n // When grouping is enabled, a group header row also reports getIsExpanded() === true\n // when its children are visible. Skip the renderer in that case — otherwise row.original\n // (the first child's data) gets rendered as expansion content under the header.\n let expandedRow;\n\n if (tableMeta.rowExpansion.isEnabled && row.getIsExpanded() && !row.getIsGrouped()) {\n attributes['data-row-expanded'] = true;\n expandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(row.original)?.();\n }\n\n const rowMeta = (row.original as TableRowWithMetaData<TType>)._meta;\n\n if (rowMeta?.layout) {\n attributes['data-row-meta-layout'] = rowMeta.layout;\n }\n\n const ref = React.useRef<HTMLTableRowElement>(null);\n const expansionRef = React.useRef<HTMLTableRowElement>(null);\n const expandedRowSize = useResizeObserver(expansionRef, !!expandedRow);\n\n React.useEffect(() => {\n const rowHeight = ref.current?.getBoundingClientRect().height ?? 0;\n const expansionHeight = expansionRef.current?.getBoundingClientRect().height ?? 0;\n\n // Deferred a frame — resizeItem can trigger a synchronous flushSync, which React\n // rejects when called straight from this effect while still committing. Cancelled\n // on cleanup so a stale frame can't fire measureRow after this row unmounts or a\n // dep change (e.g. a new remeasure) supersedes it.\n const frameId = requestAnimationFrame(() => {\n measureRow(rowHeight + expansionHeight);\n });\n\n return () => cancelAnimationFrame(frameId);\n }, [expansionRef.current, expandedRowSize?.height, ...remeasureDependencies]);\n\n const className = cn('group/row', otherAttributes.className, {\n 'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',\n 'hover:cursor-pointer': typeof attributes.onClick === 'function',\n });\n\n const isGrouped = row.getIsGrouped();\n\n const mergedRef = mergeRefs([ref, externalRef]);\n\n return (\n <>\n <tr {...attributes} className={className} ref={mergedRef}>\n {children}\n {row\n .getVisibleCells()\n // Filter out the row actions cell from rendering in Grouped Row\n .filter(cell => !(isGrouped && cell.column.id === '__actions'))\n .map((cell, cellIndex) => (\n <Cell key={cell.id} cell={cell} index={cellIndex} renderer={CellRenderer} />\n ))}\n </tr>\n {expandedRow ? (\n <tr data-row-parent-id={row.id} ref={expansionRef}>\n <td className=\"col-span-full\">{expandedRow}</td>\n </tr>\n ) : null}\n </>\n );\n })\n) as <TType = unknown>(props: DisplayRowProps<TType> & { ref?: React.Ref<HTMLTableRowElement> }) => React.JSX.Element;\n"],"names":["React","DisplayRow","row"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DisplayRow.js","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport { useResizeObserver } from '@/hooks/useResizeObserver';\nimport { isElementInteractive } from '@/utils/dom';\nimport { useDropTarget } from '@/utils/hooks/useDropTarget';\nimport { mergeRefs } from '@/utils/mergeRefs';\n\nimport type { TableRowWithMetaData } from '../../../../types';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\nimport type { TableRowRendererProps } from '../../../types';\nimport { Cell } from '../../Columns/Cell/Cell';\n\nexport type DisplayRowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n remeasureDependencies?: React.DependencyList;\n };\n\nexport const DisplayRow = React.memo(\n React.forwardRef<HTMLTableRowElement, DisplayRowProps>(function DisplayRow<TType = unknown>(\n props: DisplayRowProps<TType>,\n externalRef: React.Ref<HTMLTableRowElement>\n ) {\n const {\n children,\n cellRenderer: CellRenderer,\n index,\n measureRow,\n row,\n table,\n remeasureDependencies = [],\n ...otherAttributes\n } = props;\n const tableMeta = getTableMeta(table);\n\n const attributes: any = {\n ...otherAttributes,\n 'data-row-id': row.id,\n 'data-row-index': index,\n tabIndex: -1,\n };\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLTableRowElement>) => {\n const clickedElement = event.target as HTMLElement;\n\n if (!event.currentTarget?.contains(event.target as HTMLElement) || isElementInteractive(clickedElement)) {\n return;\n }\n\n tableMeta.rowClick.handleClick(event, row.original);\n },\n [row.original]\n );\n const handlePointerDown = React.useCallback(() => {\n requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(index));\n }, [index]);\n\n // row active\n if (tableMeta.rowActive.isEnabled) {\n attributes['data-row-active'] = tableMeta.rowActive.rowActiveIndex === index ? true : undefined;\n // we use pointerdown because it let's us picks up clicks on components inside the row, e.g. checkboxes\n attributes.onPointerDown = handlePointerDown;\n }\n\n // row click\n if (tableMeta.rowClick.isEnabled(row.original)) {\n attributes.onClick = handleClick;\n }\n\n // row drag\n if (tableMeta.rowDrag.isEnabled) {\n attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];\n attributes.draggable = true;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n attributes.onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (row.getCanSelect()) {\n rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging?.(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'bg-blue-500 text-white rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.append(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n tableMeta.rowDrag.handleRowDrag?.(data, showPlaceholder, setDataTransfer);\n };\n\n attributes.onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging?.({});\n };\n }\n\n // row drop\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => tableMeta.rowDrop.handleDrop?.(event, row.original));\n\n if (tableMeta.rowDrop.isEnabled) {\n attributes.onDragEnter = dropTargetProps?.onDragEnter;\n attributes.onDragLeave = dropTargetProps?.onDragLeave;\n attributes.onDragOver = dropTargetProps?.onDragOver;\n attributes.onDrop = dropTargetProps?.onDrop;\n attributes['data-row-dragged-over'] = isDraggedOver;\n }\n\n // row grouping\n if (table.options.enableGrouping) {\n attributes['data-row-group'] = row.getIsGrouped() ? true : undefined;\n }\n\n // row selection\n if (row.getCanSelect()) {\n attributes['data-row-selected'] = row.getIsSelected() || row.getIsAllSubRowsSelected() ? true : undefined;\n }\n\n // row expansion\n // When grouping is enabled, a group header row also reports getIsExpanded() === true\n // when its children are visible. Skip the renderer in that case — otherwise row.original\n // (the first child's data) gets rendered as expansion content under the header.\n let expandedRow;\n\n if (tableMeta.rowExpansion.isEnabled && row.getIsExpanded() && !row.getIsGrouped()) {\n attributes['data-row-expanded'] = true;\n expandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(row.original)?.();\n }\n\n const rowMeta = (row.original as TableRowWithMetaData<TType>)._meta;\n\n if (rowMeta?.layout) {\n attributes['data-row-meta-layout'] = rowMeta.layout;\n }\n\n const ref = React.useRef<HTMLTableRowElement>(null);\n const expansionRef = React.useRef<HTMLTableRowElement>(null);\n const expandedRowSize = useResizeObserver(expansionRef, !!expandedRow);\n\n React.useEffect(() => {\n const rowHeight = ref.current?.getBoundingClientRect().height ?? 0;\n const expansionHeight = expansionRef.current?.getBoundingClientRect().height ?? 0;\n\n // Deferred a frame — resizeItem can trigger a synchronous flushSync, which React\n // rejects when called straight from this effect while still committing. Cancelled\n // on cleanup so a stale frame can't fire measureRow after this row unmounts or a\n // dep change (e.g. a new remeasure) supersedes it.\n const frameId = requestAnimationFrame(() => {\n measureRow(rowHeight + expansionHeight);\n });\n\n return () => cancelAnimationFrame(frameId);\n }, [expansionRef.current, expandedRowSize?.height, ...remeasureDependencies]);\n\n const className = cn('group/row', otherAttributes.className, {\n 'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',\n 'hover:cursor-pointer': typeof attributes.onClick === 'function',\n });\n\n const isGrouped = row.getIsGrouped();\n\n const mergedRef = mergeRefs([ref, externalRef]);\n\n return (\n <>\n <tr {...attributes} className={className} ref={mergedRef}>\n {children}\n {row\n .getVisibleCells()\n // Filter out the row actions cell from rendering in Grouped Row\n .filter(cell => !(isGrouped && cell.column.id === '__actions'))\n .map((cell, cellIndex) => (\n <Cell key={cell.id} cell={cell} index={cellIndex} renderer={CellRenderer} />\n ))}\n </tr>\n {expandedRow ? (\n <tr data-row-parent-id={row.id} ref={expansionRef}>\n <td className=\"col-span-full\">{expandedRow}</td>\n </tr>\n ) : null}\n </>\n );\n })\n) as <TType = unknown>(props: DisplayRowProps<TType> & { ref?: React.Ref<HTMLTableRowElement> }) => React.JSX.Element;\n"],"names":["React","DisplayRow","row"],"mappings":";;;;;;;;AAkBO,MAAM,aAAaA,eAAM;AAAA,EAC5BA,eAAM,WAAiD,SAASC,YAC5D,OACA,aACF;AACE,UAAM;AAAA,MACF;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,wBAAwB,CAAA;AAAA,MACxB,GAAG;AAAA,IAAA,IACH;AACJ,UAAM,YAAY,aAAa,KAAK;AAEpC,UAAM,aAAkB;AAAA,MACpB,GAAG;AAAA,MACH,eAAe,IAAI;AAAA,MACnB,kBAAkB;AAAA,MAClB,UAAU;AAAA,IAAA;AAGd,UAAM,cAAcD,eAAM;AAAA,MACtB,CAAC,UAAiD;AAC9C,cAAM,iBAAiB,MAAM;AAE7B,YAAI,CAAC,MAAM,eAAe,SAAS,MAAM,MAAqB,KAAK,qBAAqB,cAAc,GAAG;AACrG;AAAA,QACJ;AAEA,kBAAU,SAAS,YAAY,OAAO,IAAI,QAAQ;AAAA,MACtD;AAAA,MACA,CAAC,IAAI,QAAQ;AAAA,IAAA;AAEjB,UAAM,oBAAoBA,eAAM,YAAY,MAAM;AAC9C,4BAAsB,MAAM,UAAU,UAAU,kBAAkB,KAAK,CAAC;AAAA,IAC5E,GAAG,CAAC,KAAK,CAAC;AAGV,QAAI,UAAU,UAAU,WAAW;AAC/B,iBAAW,iBAAiB,IAAI,UAAU,UAAU,mBAAmB,QAAQ,OAAO;AAEtF,iBAAW,gBAAgB;AAAA,IAC/B;AAGA,QAAI,UAAU,SAAS,UAAU,IAAI,QAAQ,GAAG;AAC5C,iBAAW,UAAU;AAAA,IACzB;AAGA,QAAI,UAAU,QAAQ,WAAW;AAC7B,iBAAW,cAAc,IAAI,CAAC,CAAC,UAAU,QAAQ,SAAS,IAAI,EAAE;AAChE,iBAAW,YAAY;AACvB,YAAM,mBAAmB;AAEzB,iBAAW,cAAc,CAAC,UAAiC;AACvD,YAAI,OAAO,CAAC,GAAG;AAEf,YAAI,IAAI,gBAAgB;AACpB,iBAAO,IAAI,kBAAkB,MAAM,oBAAA,EAAsB,OAAO,CAAC,KAAK,GAAG,MAAM,oBAAA,EAAsB,IAAI;AAAA,QAC7G;AAEA,cAAM,OAAO,KAAK,IAAI,CAAAE,SAAOA,KAAI,QAAQ;AAEzC,kBAAU,QAAQ;AAAA,UACd,KAAK,OAAO,CAAC,UAAU,qBAAqB,EAAE,GAAG,UAAU,CAAC,gBAAgB,EAAE,GAAG,KAAA,IAAS,CAAA,CAAE;AAAA,QAAA;AAIhG,cAAM,aAAa,QAAQ,QAAQ,KAAK,UAAU,IAAI,CAAC;AAEvD,cAAM,kBAAkB,CAAC,SAAiB;AACtC,gBAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,gBAAM,KAAK;AACX,gBAAM,YAAY;AAClB,gBAAM,YAAY;AAClB,mBAAS,KAAK,OAAO,KAAK;AAC1B,gBAAM,aAAa,aAAa,OAAO,GAAG,CAAC;AAAA,QAC/C;AAEA,cAAM,kBAAkB,CAAC,SAAiB,MAAM,aAAa,QAAQ,QAAQ,IAAI;AAEjF,kBAAU,QAAQ,gBAAgB,MAAM,iBAAiB,eAAe;AAAA,MAC5E;AAEA,iBAAW,YAAY,MAAY;AAC/B,iBAAS,eAAe,gBAAgB,GAAG,OAAA;AAC3C,kBAAU,QAAQ,cAAc,EAAE;AAAA,MACtC;AAAA,IACJ;AAGA,UAAM,CAAC,eAAe,eAAe,IAAI,cAAc,CAAA,UAAS,UAAU,QAAQ,aAAa,OAAO,IAAI,QAAQ,CAAC;AAEnH,QAAI,UAAU,QAAQ,WAAW;AAC7B,iBAAW,cAAc,iBAAiB;AAC1C,iBAAW,cAAc,iBAAiB;AAC1C,iBAAW,aAAa,iBAAiB;AACzC,iBAAW,SAAS,iBAAiB;AACrC,iBAAW,uBAAuB,IAAI;AAAA,IAC1C;AAGA,QAAI,MAAM,QAAQ,gBAAgB;AAC9B,iBAAW,gBAAgB,IAAI,IAAI,aAAA,IAAiB,OAAO;AAAA,IAC/D;AAGA,QAAI,IAAI,gBAAgB;AACpB,iBAAW,mBAAmB,IAAI,IAAI,cAAA,KAAmB,IAAI,4BAA4B,OAAO;AAAA,IACpG;AAMA,QAAI;AAEJ,QAAI,UAAU,aAAa,aAAa,IAAI,mBAAmB,CAAC,IAAI,gBAAgB;AAChF,iBAAW,mBAAmB,IAAI;AAClC,oBAAc,UAAU,aAAa,uBAAuB,IAAI,QAAQ,IAAA;AAAA,IAC5E;AAEA,UAAM,UAAW,IAAI,SAAyC;AAE9D,QAAI,SAAS,QAAQ;AACjB,iBAAW,sBAAsB,IAAI,QAAQ;AAAA,IACjD;AAEA,UAAM,MAAMF,eAAM,OAA4B,IAAI;AAClD,UAAM,eAAeA,eAAM,OAA4B,IAAI;AAC3D,UAAM,kBAAkB,kBAAkB,cAAc,CAAC,CAAC,WAAW;AAErEA,mBAAM,UAAU,MAAM;AAClB,YAAM,YAAY,IAAI,SAAS,sBAAA,EAAwB,UAAU;AACjE,YAAM,kBAAkB,aAAa,SAAS,sBAAA,EAAwB,UAAU;AAMhF,YAAM,UAAU,sBAAsB,MAAM;AACxC,mBAAW,YAAY,eAAe;AAAA,MAC1C,CAAC;AAED,aAAO,MAAM,qBAAqB,OAAO;AAAA,IAC7C,GAAG,CAAC,aAAa,SAAS,iBAAiB,QAAQ,GAAG,qBAAqB,CAAC;AAE5E,UAAM,YAAY,GAAG,aAAa,gBAAgB,WAAW;AAAA,MACzD,qBAAqB,UAAU,QAAQ,aAAa,OAAO,WAAW,YAAY;AAAA,MAClF,wBAAwB,OAAO,WAAW,YAAY;AAAA,IAAA,CACzD;AAED,UAAM,YAAY,IAAI,aAAA;AAEtB,UAAM,YAAY,UAAU,CAAC,KAAK,WAAW,CAAC;AAE9C,WACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,MAAA,EAAI,GAAG,YAAY,WAAsB,KAAK,UAAA,GAC1C,UACA,IACI,gBAAA,EAEA,OAAO,CAAA,SAAQ,EAAE,aAAa,KAAK,OAAO,OAAO,YAAY,EAC7D,IAAI,CAAC,MAAM,cACRA,+BAAA,cAAC,QAAK,KAAK,KAAK,IAAI,MAAY,OAAO,WAAW,UAAU,aAAA,CAAc,CAC7E,CACT,GACC,cACGA,+BAAA,cAAC,QAAG,sBAAoB,IAAI,IAAI,KAAK,aAAA,GACjCA,+BAAA,cAAC,MAAA,EAAG,WAAU,gBAAA,GAAiB,WAAY,CAC/C,IACA,IACR;AAAA,EAER,CAAC;AACL;"}
|
|
@@ -2,10 +2,11 @@
|
|
|
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 DELAY_BEFORE_LOAD_MS = 150;
|
|
6
7
|
function SkeletonRow(props) {
|
|
7
8
|
const { index, table } = props;
|
|
8
|
-
const tableMeta = table
|
|
9
|
+
const tableMeta = rows.getTableMeta(table);
|
|
9
10
|
if (tableMeta.server.isEnabled) {
|
|
10
11
|
return /* @__PURE__ */ React.createElement(RowWithServerLoading, { ...props });
|
|
11
12
|
}
|
|
@@ -13,7 +14,7 @@ function SkeletonRow(props) {
|
|
|
13
14
|
}
|
|
14
15
|
function RowWithServerLoading(props) {
|
|
15
16
|
const { index, table } = props;
|
|
16
|
-
const tableMeta = table
|
|
17
|
+
const tableMeta = rows.getTableMeta(table);
|
|
17
18
|
const pageIndex = Math.floor(index / tableMeta.server.pageSize) * tableMeta.server.pageSize / tableMeta.server.pageSize;
|
|
18
19
|
React.useEffect(() => {
|
|
19
20
|
let timeout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkeletonRow.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.tsx"],"sourcesContent":["import type { Table as ReactTable
|
|
1
|
+
{"version":3,"file":"SkeletonRow.cjs","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { getHiddenColumns } from '../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\n\nconst DELAY_BEFORE_LOAD_MS = 150;\n\nexport type RowProps<TType = unknown> = {\n index: number;\n table: ReactTable<TType>;\n};\n\nexport function SkeletonRow<TType = unknown>(props: RowProps<TType>) {\n const { index, table } = props;\n const tableMeta = getTableMeta(table);\n\n if (tableMeta.server.isEnabled) {\n return <RowWithServerLoading {...props} />;\n }\n\n return <Skeleton cellsCount={table.getVisibleFlatColumns().length} index={index} />;\n}\n\nfunction RowWithServerLoading<TType = unknown>(props: RowProps<TType>) {\n const { index, table } = props;\n const tableMeta = getTableMeta(table);\n const pageIndex = (Math.floor(index / tableMeta.server.pageSize) * tableMeta.server.pageSize) / tableMeta.server.pageSize;\n\n React.useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (tableMeta.server.isEnabled) {\n const sorting = props.table.getState().sorting;\n const filters = props.table.getState().columnFilters;\n const search = props.table.getState().globalFilter;\n const hiddenColumns = getHiddenColumns(props.table.getState().columnVisibility);\n\n timeout = setTimeout(() => {\n tableMeta.server.loadPage?.(\n pageIndex,\n sorting,\n filters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? search : undefined\n );\n }, DELAY_BEFORE_LOAD_MS);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n\n const groupedCellCount = table.getState()?.grouping.length ?? 0;\n const ungroupedCellCount = table.getVisibleFlatColumns().length - groupedCellCount;\n\n return <Skeleton cellsCount={ungroupedCellCount} index={index} />;\n}\n\nconst Skeleton = React.forwardRef(function Skeleton(\n props: { cellsCount: number; index: number },\n ref: React.Ref<HTMLTableRowElement>\n) {\n const { cellsCount, index } = props;\n\n return (\n <tr data-row-index={index} data-row-id={index} ref={ref} data-taco=\"skeleton-row\">\n {Array.from({ length: cellsCount }).map((_, index) => (\n <td key={index}>\n <span className=\"h-4 w-full bg-gray-100 text-center text-xs text-gray-700\" />\n </td>\n ))}\n </tr>\n );\n});\n"],"names":["getTableMeta","getHiddenColumns","Skeleton","index"],"mappings":";;;;;AAMA,MAAM,uBAAuB;AAOtB,SAAS,YAA6B,OAAwB;AACjE,QAAM,EAAE,OAAO,MAAA,IAAU;AACzB,QAAM,YAAYA,KAAAA,aAAa,KAAK;AAEpC,MAAI,UAAU,OAAO,WAAW;AAC5B,WAAO,sBAAA,cAAC,sBAAA,EAAsB,GAAG,MAAA,CAAO;AAAA,EAC5C;AAEA,6CAAQ,UAAA,EAAS,YAAY,MAAM,sBAAA,EAAwB,QAAQ,OAAc;AACrF;AAEA,SAAS,qBAAsC,OAAwB;AACnE,QAAM,EAAE,OAAO,MAAA,IAAU;AACzB,QAAM,YAAYA,KAAAA,aAAa,KAAK;AACpC,QAAM,YAAa,KAAK,MAAM,QAAQ,UAAU,OAAO,QAAQ,IAAI,UAAU,OAAO,WAAY,UAAU,OAAO;AAEjH,QAAM,UAAU,MAAM;AAClB,QAAI;AAEJ,QAAI,UAAU,OAAO,WAAW;AAC5B,YAAM,UAAU,MAAM,MAAM,SAAA,EAAW;AACvC,YAAM,UAAU,MAAM,MAAM,SAAA,EAAW;AACvC,YAAM,SAAS,MAAM,MAAM,SAAA,EAAW;AACtC,YAAM,gBAAgBC,QAAAA,iBAAiB,MAAM,MAAM,SAAA,EAAW,gBAAgB;AAE9E,gBAAU,WAAW,MAAM;AACvB,kBAAU,OAAO;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU,OAAO,qBAAqB,SAAS;AAAA,QAAA;AAAA,MAEvD,GAAG,oBAAoB;AAAA,IAC3B;AAEA,WAAO,MAAM;AACT,mBAAa,OAAO;AAAA,IACxB;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,QAAM,mBAAmB,MAAM,SAAA,GAAY,SAAS,UAAU;AAC9D,QAAM,qBAAqB,MAAM,sBAAA,EAAwB,SAAS;AAElE,SAAO,sBAAA,cAAC,UAAA,EAAS,YAAY,oBAAoB,OAAc;AACnE;AAEA,MAAM,WAAW,MAAM,WAAW,SAASC,UACvC,OACA,KACF;AACE,QAAM,EAAE,YAAY,MAAA,IAAU;AAE9B,SACI,sBAAA,cAAC,MAAA,EAAG,kBAAgB,OAAO,eAAa,OAAO,KAAU,aAAU,kBAC9D,MAAM,KAAK,EAAE,QAAQ,WAAA,CAAY,EAAE,IAAI,CAAC,GAAGC,WACxC,sBAAA,cAAC,MAAA,EAAG,KAAKA,OAAAA,GACL,sBAAA,cAAC,QAAA,EAAK,WAAU,2DAAA,CAA2D,CAC/E,CACH,CACL;AAER,CAAC;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
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
|
const DELAY_BEFORE_LOAD_MS = 150;
|
|
4
5
|
function SkeletonRow(props) {
|
|
5
6
|
const { index, table } = props;
|
|
6
|
-
const tableMeta = table
|
|
7
|
+
const tableMeta = getTableMeta(table);
|
|
7
8
|
if (tableMeta.server.isEnabled) {
|
|
8
9
|
return /* @__PURE__ */ React__default.createElement(RowWithServerLoading, { ...props });
|
|
9
10
|
}
|
|
@@ -11,7 +12,7 @@ function SkeletonRow(props) {
|
|
|
11
12
|
}
|
|
12
13
|
function RowWithServerLoading(props) {
|
|
13
14
|
const { index, table } = props;
|
|
14
|
-
const tableMeta = table
|
|
15
|
+
const tableMeta = getTableMeta(table);
|
|
15
16
|
const pageIndex = Math.floor(index / tableMeta.server.pageSize) * tableMeta.server.pageSize / tableMeta.server.pageSize;
|
|
16
17
|
React__default.useEffect(() => {
|
|
17
18
|
let timeout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkeletonRow.js","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.tsx"],"sourcesContent":["import type { Table as ReactTable
|
|
1
|
+
{"version":3,"file":"SkeletonRow.js","sources":["../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { getHiddenColumns } from '../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../useTableManager/util/rows';\n\nconst DELAY_BEFORE_LOAD_MS = 150;\n\nexport type RowProps<TType = unknown> = {\n index: number;\n table: ReactTable<TType>;\n};\n\nexport function SkeletonRow<TType = unknown>(props: RowProps<TType>) {\n const { index, table } = props;\n const tableMeta = getTableMeta(table);\n\n if (tableMeta.server.isEnabled) {\n return <RowWithServerLoading {...props} />;\n }\n\n return <Skeleton cellsCount={table.getVisibleFlatColumns().length} index={index} />;\n}\n\nfunction RowWithServerLoading<TType = unknown>(props: RowProps<TType>) {\n const { index, table } = props;\n const tableMeta = getTableMeta(table);\n const pageIndex = (Math.floor(index / tableMeta.server.pageSize) * tableMeta.server.pageSize) / tableMeta.server.pageSize;\n\n React.useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (tableMeta.server.isEnabled) {\n const sorting = props.table.getState().sorting;\n const filters = props.table.getState().columnFilters;\n const search = props.table.getState().globalFilter;\n const hiddenColumns = getHiddenColumns(props.table.getState().columnVisibility);\n\n timeout = setTimeout(() => {\n tableMeta.server.loadPage?.(\n pageIndex,\n sorting,\n filters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? search : undefined\n );\n }, DELAY_BEFORE_LOAD_MS);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n\n const groupedCellCount = table.getState()?.grouping.length ?? 0;\n const ungroupedCellCount = table.getVisibleFlatColumns().length - groupedCellCount;\n\n return <Skeleton cellsCount={ungroupedCellCount} index={index} />;\n}\n\nconst Skeleton = React.forwardRef(function Skeleton(\n props: { cellsCount: number; index: number },\n ref: React.Ref<HTMLTableRowElement>\n) {\n const { cellsCount, index } = props;\n\n return (\n <tr data-row-index={index} data-row-id={index} ref={ref} data-taco=\"skeleton-row\">\n {Array.from({ length: cellsCount }).map((_, index) => (\n <td key={index}>\n <span className=\"h-4 w-full bg-gray-100 text-center text-xs text-gray-700\" />\n </td>\n ))}\n </tr>\n );\n});\n"],"names":["React","Skeleton","index"],"mappings":";;;AAMA,MAAM,uBAAuB;AAOtB,SAAS,YAA6B,OAAwB;AACjE,QAAM,EAAE,OAAO,MAAA,IAAU;AACzB,QAAM,YAAY,aAAa,KAAK;AAEpC,MAAI,UAAU,OAAO,WAAW;AAC5B,WAAOA,+BAAA,cAAC,sBAAA,EAAsB,GAAG,MAAA,CAAO;AAAA,EAC5C;AAEA,sDAAQ,UAAA,EAAS,YAAY,MAAM,sBAAA,EAAwB,QAAQ,OAAc;AACrF;AAEA,SAAS,qBAAsC,OAAwB;AACnE,QAAM,EAAE,OAAO,MAAA,IAAU;AACzB,QAAM,YAAY,aAAa,KAAK;AACpC,QAAM,YAAa,KAAK,MAAM,QAAQ,UAAU,OAAO,QAAQ,IAAI,UAAU,OAAO,WAAY,UAAU,OAAO;AAEjHA,iBAAM,UAAU,MAAM;AAClB,QAAI;AAEJ,QAAI,UAAU,OAAO,WAAW;AAC5B,YAAM,UAAU,MAAM,MAAM,SAAA,EAAW;AACvC,YAAM,UAAU,MAAM,MAAM,SAAA,EAAW;AACvC,YAAM,SAAS,MAAM,MAAM,SAAA,EAAW;AACtC,YAAM,gBAAgB,iBAAiB,MAAM,MAAM,SAAA,EAAW,gBAAgB;AAE9E,gBAAU,WAAW,MAAM;AACvB,kBAAU,OAAO;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU,OAAO,qBAAqB,SAAS;AAAA,QAAA;AAAA,MAEvD,GAAG,oBAAoB;AAAA,IAC3B;AAEA,WAAO,MAAM;AACT,mBAAa,OAAO;AAAA,IACxB;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,QAAM,mBAAmB,MAAM,SAAA,GAAY,SAAS,UAAU;AAC9D,QAAM,qBAAqB,MAAM,sBAAA,EAAwB,SAAS;AAElE,SAAOA,+BAAA,cAAC,UAAA,EAAS,YAAY,oBAAoB,OAAc;AACnE;AAEA,MAAM,WAAWA,eAAM,WAAW,SAASC,UACvC,OACA,KACF;AACE,QAAM,EAAE,YAAY,MAAA,IAAU;AAE9B,SACID,+BAAA,cAAC,MAAA,EAAG,kBAAgB,OAAO,eAAa,OAAO,KAAU,aAAU,kBAC9D,MAAM,KAAK,EAAE,QAAQ,WAAA,CAAY,EAAE,IAAI,CAAC,GAAGE,WACxCF,+BAAA,cAAC,MAAA,EAAG,KAAKE,OAAAA,GACLF,+BAAA,cAAC,QAAA,EAAK,WAAU,2DAAA,CAA2D,CAC/E,CACH,CACL;AAER,CAAC;"}
|
|
@@ -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("./RowContext.cjs");
|
|
5
6
|
function Row(props) {
|
|
6
7
|
const {
|
|
@@ -10,8 +11,7 @@ function Row(props) {
|
|
|
10
11
|
hideRowActions = false,
|
|
11
12
|
...displayRowProps
|
|
12
13
|
} = props;
|
|
13
|
-
const
|
|
14
|
-
const isHovered = tableMeta.rowActive.rowHoverIndex === props.index;
|
|
14
|
+
const isHovered = rows.getTableMeta(props.table).rowActive.rowHoverIndex === props.index;
|
|
15
15
|
const contextValue = React.useMemo(
|
|
16
16
|
() => ({ isHovered, rowIndex: props.index, hideInternalColumns, hideRowActions }),
|
|
17
17
|
[isHovered, props.index, hideInternalColumns, hideRowActions]
|