@economic/taco 1.41.0 → 2.0.0-alpha.5
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Icon/components/HeightTall.d.ts +3 -0
- package/dist/components/Icon/components/index.d.ts +1 -1
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Menu/Menu.d.ts +2 -0
- package/dist/components/Menu/components/Item.d.ts +6 -1
- package/dist/components/Menu/components/Link.d.ts +1 -1
- package/dist/components/Menu/components/SubMenu.d.ts +8 -0
- package/dist/components/Navigation2/components/Link.d.ts +1 -1
- package/dist/components/Popover/Popover.d.ts +3 -0
- package/dist/components/Provider/Localization.d.ts +148 -0
- package/dist/components/SearchInput/SearchInput.d.ts +2 -0
- package/dist/components/SearchInput2/SearchInput2.d.ts +23 -0
- package/dist/components/Select2/components/Option.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +1 -1
- package/dist/components/Table2/hooks/useTable.d.ts +1 -1
- package/dist/components/Table3/Table3.d.ts +12 -0
- package/dist/components/Table3/components/columns/cell/Cell.d.ts +6 -0
- package/dist/components/Table3/components/columns/cell/DisplayCell.d.ts +22 -0
- package/dist/components/Table3/components/columns/cell/EditingCell.d.ts +7 -0
- package/dist/components/Table3/components/columns/cell/Indicator.d.ts +17 -0
- package/dist/components/Table3/components/columns/footer/Footer.d.ts +14 -0
- package/dist/components/Table3/components/columns/footer/Summary.d.ts +7 -0
- package/dist/components/Table3/components/columns/header/Goto.d.ts +6 -0
- package/dist/components/Table3/components/columns/header/Header.d.ts +27 -0
- package/dist/components/Table3/components/columns/header/Menu.d.ts +16 -0
- package/dist/components/Table3/components/columns/header/Resizer.d.ts +7 -0
- package/dist/components/Table3/components/columns/header/SortIndicator.d.ts +12 -0
- package/dist/components/Table3/components/columns/internal/Actions.d.ts +4 -0
- package/dist/components/Table3/components/columns/internal/Drag.d.ts +4 -0
- package/dist/components/Table3/components/columns/internal/EditingActions.d.ts +8 -0
- package/dist/components/Table3/components/columns/internal/Expansion.d.ts +4 -0
- package/dist/components/Table3/components/columns/internal/Selection.d.ts +4 -0
- package/dist/components/Table3/components/columns/styles.d.ts +4 -0
- package/dist/components/Table3/components/rows/ExpandedRow.d.ts +8 -0
- package/dist/components/Table3/components/rows/Row.d.ts +21 -0
- package/dist/components/Table3/components/rows/RowContext.d.ts +9 -0
- package/dist/components/Table3/components/rows/SkeletonRow.d.ts +10 -0
- package/dist/components/Table3/components/rows/styles.d.ts +6 -0
- package/dist/components/Table3/components/toolbar/ColumnSettings.d.ts +6 -0
- package/dist/components/Table3/components/toolbar/EditButton.d.ts +7 -0
- package/dist/components/Table3/components/toolbar/Filter/filters/Filters.d.ts +7 -0
- package/dist/components/Table3/components/toolbar/Filter/filters/components/Comparator.d.ts +11 -0
- package/dist/components/Table3/components/toolbar/Filter/filters/components/Filter.d.ts +13 -0
- package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.d.ts +8 -0
- package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.d.ts +7 -0
- package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterValue.d.ts +10 -0
- package/dist/components/Table3/components/toolbar/Filter/filters/components/Placeholder.d.ts +11 -0
- package/dist/components/Table3/components/toolbar/FontSize.d.ts +7 -0
- package/dist/components/Table3/components/toolbar/PrintButton/PrintButton.d.ts +8 -0
- package/dist/components/Table3/components/toolbar/PrintButton/PrintIFrame.d.ts +8 -0
- package/dist/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.d.ts +1 -0
- package/dist/components/Table3/components/toolbar/RowHeight.d.ts +7 -0
- package/dist/components/Table3/components/toolbar/Search.d.ts +8 -0
- package/dist/components/Table3/components/toolbar/Toolbar.d.ts +12 -0
- package/dist/components/Table3/hooks/features/useColumnFreezing.d.ts +12 -0
- package/dist/components/Table3/hooks/features/useColumnOrdering.d.ts +6 -0
- package/dist/components/Table3/hooks/features/useCurrentRow.d.ts +9 -0
- package/dist/components/Table3/hooks/features/useEditing.d.ts +31 -0
- package/dist/components/Table3/hooks/features/useFontSize.d.ts +7 -0
- package/dist/components/Table3/hooks/features/usePauseHoverState.d.ts +6 -0
- package/dist/components/Table3/hooks/features/usePrinting.d.ts +5 -0
- package/dist/components/Table3/hooks/features/useRowClick.d.ts +7 -0
- package/dist/components/Table3/hooks/features/useRowDrag.d.ts +6 -0
- package/dist/components/Table3/hooks/features/useRowDrop.d.ts +5 -0
- package/dist/components/Table3/hooks/features/useRowGoto.d.ts +5 -0
- package/dist/components/Table3/hooks/features/useRowHeight.d.ts +7 -0
- package/dist/components/Table3/hooks/features/useRowSelection.d.ts +6 -0
- package/dist/components/Table3/hooks/features/useSearch.d.ts +16 -0
- package/dist/components/Table3/hooks/listeners/useCurrentRowListener.d.ts +2 -0
- package/dist/components/Table3/hooks/listeners/useEditingStateListener.d.ts +2 -0
- package/dist/components/Table3/hooks/listeners/useFilteringStateListener.d.ts +3 -0
- package/dist/components/Table3/hooks/listeners/useRowSelectionListener.d.ts +3 -0
- package/dist/components/Table3/hooks/listeners/useSearchStateListener.d.ts +3 -0
- package/dist/components/Table3/hooks/listeners/useServerLoadingListener.d.ts +3 -0
- package/dist/components/Table3/hooks/listeners/useSettingsStateListener.d.ts +3 -0
- package/dist/components/Table3/hooks/listeners/useShortcutsListener.d.ts +3 -0
- package/dist/components/Table3/hooks/listeners/useSortingStateListener.d.ts +3 -0
- package/dist/components/Table3/hooks/useConvertChildrenToColumns.d.ts +9 -0
- package/dist/components/Table3/hooks/useCssGrid.d.ts +5 -0
- package/dist/components/Table3/hooks/useCssVars.d.ts +6 -0
- package/dist/components/Table3/hooks/useTable.d.ts +63 -0
- package/dist/components/Table3/hooks/useTableData.d.ts +23 -0
- package/dist/components/Table3/hooks/useTablePreset.d.ts +2 -0
- package/dist/components/Table3/hooks/useTableRefInstanceSetup.d.ts +4 -0
- package/dist/components/Table3/strategies/index.d.ts +4 -0
- package/dist/components/Table3/strategies/virtualised.d.ts +4 -0
- package/dist/components/Table3/types.d.ts +310 -0
- package/dist/components/Table3/util/columns.d.ts +7 -0
- package/dist/components/Table3/util/editing.d.ts +4 -0
- package/dist/components/Table3/util/filtering.d.ts +3 -0
- package/dist/components/Tag/Tag.d.ts +1 -1
- package/dist/esm/index.css +130 -2
- package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js +2 -2
- package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +2 -1
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +4 -1
- package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +1 -1
- package/dist/esm/packages/taco/src/components/Icon/components/FontSize.js +19 -0
- package/dist/esm/packages/taco/src/components/Icon/components/FontSize.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/{DensitySpacious.js → HeightExtraTall.js} +4 -4
- package/dist/esm/packages/taco/src/components/Icon/components/{DensitySpacious.js.map → HeightExtraTall.js.map} +1 -1
- package/dist/esm/packages/taco/src/components/Icon/components/{DensityNormal.js → HeightMedium.js} +4 -4
- package/dist/esm/packages/taco/src/components/Icon/components/HeightMedium.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/{DensityCompact.js → HeightShort.js} +4 -4
- package/dist/esm/packages/taco/src/components/Icon/components/HeightShort.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/{DensityComfortable.js → HeightTall.js} +4 -4
- package/dist/esm/packages/taco/src/components/Icon/components/HeightTall.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/index.js +10 -8
- package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/Menu.js +2 -0
- package/dist/esm/packages/taco/src/components/Menu/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/Item.js +20 -2
- package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/SubMenu.js +22 -0
- package/dist/esm/packages/taco/src/components/Menu/components/SubMenu.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Popover/Popover.js +11 -3
- package/dist/esm/packages/taco/src/components/Popover/Popover.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +145 -0
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +196 -0
- package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Switch/Switch.js +3 -1
- package/dist/esm/packages/taco/src/components/Switch/Switch.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js +13 -1
- package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/Search.js +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +1 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js +145 -0
- package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js +27 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +131 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +286 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Indicator.js +74 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Indicator.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Footer.js +50 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Footer.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js +30 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Goto.js +27 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Goto.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js +134 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +156 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Resizer.js +42 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Resizer.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/SortIndicator.js +38 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/SortIndicator.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js +108 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js +86 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js +124 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Expansion.js +103 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Expansion.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +121 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js +17 -0
- package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/ExpandedRow.js +27 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/ExpandedRow.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js +255 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/RowContext.js +13 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/RowContext.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/SkeletonRow.js +43 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/SkeletonRow.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/styles.js +9 -0
- package/dist/esm/packages/taco/src/components/Table3/components/rows/styles.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +105 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/EditButton.js +45 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/EditButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +148 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +107 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js +28 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +60 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js +89 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js +45 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/FontSize.js +25 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/FontSize.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +99 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +224 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js +88 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/RowHeight.js +26 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/RowHeight.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +137 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js +85 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +87 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnOrdering.js +45 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnOrdering.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useCurrentRow.js +52 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useCurrentRow.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useEditing.js +197 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useEditing.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useFontSize.js +13 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useFontSize.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePauseHoverState.js +19 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePauseHoverState.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePrinting.js +9 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePrinting.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowClick.js +25 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowClick.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowDrag.js +13 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowDrag.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowDrop.js +9 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowDrop.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowGoto.js +9 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowGoto.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowHeight.js +27 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowHeight.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowSelection.js +29 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowSelection.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSearch.js +27 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSearch.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useCurrentRowListener.js +14 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useCurrentRowListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useEditingStateListener.js +24 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useEditingStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useFilteringStateListener.js +19 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useFilteringStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useRowSelectionListener.js +19 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useRowSelectionListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSearchStateListener.js +51 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSearchStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useServerLoadingListener.js +16 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useServerLoadingListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +26 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useShortcutsListener.js +49 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useShortcutsListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSortingStateListener.js +17 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSortingStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +116 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js +56 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useCssVars.js +61 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useCssVars.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +154 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableData.js +128 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableData.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js +98 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableRefInstanceSetup.js +19 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableRefInstanceSetup.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/strategies/index.js +8 -0
- package/dist/esm/packages/taco/src/components/Table3/strategies/index.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/strategies/virtualised.js +113 -0
- package/dist/esm/packages/taco/src/components/Table3/strategies/virtualised.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/types.js +18 -0
- package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/util/columns.js +39 -0
- package/dist/esm/packages/taco/src/components/Table3/util/columns.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/util/editing.js +41 -0
- package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/util/filtering.js +102 -0
- package/dist/esm/packages/taco/src/components/Table3/util/filtering.js.map +1 -0
- package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js +10 -5
- package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -1
- package/dist/esm/packages/taco/src/hooks/useLazyEffect.js +16 -0
- package/dist/esm/packages/taco/src/hooks/useLazyEffect.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +5 -1
- package/dist/esm/packages/taco/src/index.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Button.js +6 -17
- package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js +6 -6
- package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/input.js +14 -1
- package/dist/esm/packages/taco/src/utils/input.js.map +1 -1
- package/dist/hooks/useGlobalKeyDown.d.ts +1 -1
- package/dist/hooks/useLazyEffect.d.ts +2 -0
- package/dist/index.css +130 -2
- package/dist/index.d.ts +3 -0
- package/dist/taco.cjs.development.js +5171 -240
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/dist/utils/input.d.ts +1 -0
- package/package.json +2 -2
- package/types.json +2322 -25
- package/dist/esm/packages/taco/src/components/Icon/components/DensityComfortable.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Icon/components/DensityCompact.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Icon/components/DensityNormal.js.map +0 -1
- /package/dist/components/Icon/components/{DensityComfortable.d.ts → FontSize.d.ts} +0 -0
- /package/dist/components/Icon/components/{DensityCompact.d.ts → HeightExtraTall.d.ts} +0 -0
- /package/dist/components/Icon/components/{DensityNormal.d.ts → HeightMedium.d.ts} +0 -0
- /package/dist/components/Icon/components/{DensitySpacious.d.ts → HeightShort.d.ts} +0 -0
package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Expansion.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Expansion.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Expansion.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3RowExpansionRenderer } from '../../../types';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\n\nexport const COLUMN_ID = '__expansion';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n const isSomeRowsExpanded = context.table.getIsSomeRowsExpanded();\n const handleClick = event => {\n event.stopPropagation();\n context.table.toggleAllRowsExpanded(!isSomeRowsExpanded);\n };\n\n const title = isSomeRowsExpanded ? texts.table3.columns.expansion.collapseAll : texts.table3.columns.expansion.expandAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <IconButton\n appearance=\"discrete\"\n icon={isSomeRowsExpanded ? 'chevron-down-double' : 'chevron-right-double'}\n onClick={handleClick}\n tabIndex={-1}\n title={title}\n />\n </Tooltip>\n </ColumnHeader>\n );\n}\n\ntype MemoedCellProps<TType = unknown> = CellContext<TType, unknown> & {\n expandedRowRenderer: Table3RowExpansionRenderer<TType>;\n isCurrentRow: boolean;\n isExpanded: boolean;\n};\n\nconst MemoedCell = React.memo(function MemoedCell<TType = unknown>(props: MemoedCellProps<TType>) {\n const { expandedRowRenderer, isCurrentRow, isExpanded, row, table } = props;\n const { texts } = useLocalization();\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n const hasExpandedRow = expandedRowRenderer(row.original);\n\n let content;\n\n if (hasExpandedRow) {\n const handleClick = event => {\n event.stopPropagation();\n row.toggleExpanded();\n };\n const title = isExpanded ? texts.table3.columns.expansion.collapse : texts.table3.columns.expansion.expand;\n\n const tabIndex = isCurrentRow && !tableMeta.editing.isEditing ? 0 : -1;\n\n content = (\n <Tooltip title={title}>\n <IconButton\n appearance=\"discrete\"\n icon={isExpanded ? 'chevron-down' : 'chevron-right'}\n onClick={handleClick}\n tabIndex={tabIndex}\n title={title}\n />\n </Tooltip>\n );\n }\n\n return <DisplayCell {...props}>{content}</DisplayCell>;\n}) as <TType = unknown>(props: MemoedCellProps<TType>) => JSX.Element;\n\ntype CellProps<TType = unknown> = CellContext<TType, unknown> & {\n expandedRowRenderer: Table3RowExpansionRenderer<TType>;\n};\n\nfunction Cell<TType = unknown>(props: CellProps<TType>) {\n const { expandedRowRenderer, ...context } = props;\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n return (\n <MemoedCell\n {...context}\n expandedRowRenderer={expandedRowRenderer}\n isCurrentRow={tableMeta.currentRow.currentRowIndex === rowIndex}\n isExpanded={context.row.getIsExpanded()}\n />\n );\n}\n\nexport function createRowExpansionColumn<TType = unknown>(\n expandedRowRenderer: Table3RowExpansionRenderer<TType>\n): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: Header,\n cell: (context: CellContext<TType, unknown>) => <Cell {...context} expandedRowRenderer={expandedRowRenderer} />,\n footer: Footer,\n meta: {\n align: 'center',\n className: 'items-center !p-0',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !p-0',\n },\n // options\n enableResizing: false,\n size: 40,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","isSomeRowsExpanded","table","getIsSomeRowsExpanded","handleClick","event","stopPropagation","toggleAllRowsExpanded","title","table3","columns","expansion","collapseAll","expandAll","React","ColumnHeader","Tooltip","IconButton","appearance","icon","onClick","tabIndex","MemoedCell","memo","props","expandedRowRenderer","isCurrentRow","isExpanded","row","tableMeta","options","meta","hasExpandedRow","original","content","toggleExpanded","collapse","expand","editing","isEditing","DisplayCell","Cell","rowIndex","useContext","RowContext","currentRow","currentRowIndex","getIsExpanded","createRowExpansionColumn","id","header","cell","footer","Footer","align","className","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size"],"mappings":"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"}
|
@@ -0,0 +1,121 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import cn from 'classnames';
|
3
|
+
import { Tooltip } from '../../../../Tooltip/Tooltip.js';
|
4
|
+
import { useLocalization } from '../../../../Provider/Localization.js';
|
5
|
+
import { Checkbox } from '../../../../Checkbox/Checkbox.js';
|
6
|
+
import { getRadioClassnames } from '../../../../RadioGroup/util.js';
|
7
|
+
import { Header as Header$1 } from '../header/Header.js';
|
8
|
+
import { RowContext } from '../../rows/RowContext.js';
|
9
|
+
import { DisplayCell } from '../cell/DisplayCell.js';
|
10
|
+
import { Footer } from '../footer/Footer.js';
|
11
|
+
|
12
|
+
const COLUMN_ID = '__select';
|
13
|
+
function Header(context) {
|
14
|
+
const {
|
15
|
+
texts
|
16
|
+
} = useLocalization();
|
17
|
+
if (context.table.options.enableMultiRowSelection) {
|
18
|
+
const isAllRowsSelected = context.table.getIsAllRowsSelected();
|
19
|
+
const isSomeRowsSelected = context.table.getIsSomeRowsSelected();
|
20
|
+
const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;
|
21
|
+
return /*#__PURE__*/React__default.createElement(Header$1, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Tooltip, {
|
22
|
+
title: title
|
23
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
24
|
+
"aria-label": title,
|
25
|
+
className: "hover:border-blue !mt-0",
|
26
|
+
key: String(`${isAllRowsSelected}_${isSomeRowsSelected}`),
|
27
|
+
checked: isAllRowsSelected,
|
28
|
+
indeterminate: isSomeRowsSelected,
|
29
|
+
onChange: context.table.toggleAllRowsSelected,
|
30
|
+
tabIndex: -1
|
31
|
+
})));
|
32
|
+
} else {
|
33
|
+
return /*#__PURE__*/React__default.createElement(Header$1, Object.assign({}, context));
|
34
|
+
}
|
35
|
+
}
|
36
|
+
const toggleBetween = (fromRowIndex, toRowIndex) => {
|
37
|
+
const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;
|
38
|
+
const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;
|
39
|
+
return [fromIndex, toIndex];
|
40
|
+
};
|
41
|
+
const Cell = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
|
42
|
+
const {
|
43
|
+
texts
|
44
|
+
} = useLocalization();
|
45
|
+
const {
|
46
|
+
rowIndex
|
47
|
+
} = React__default.useContext(RowContext);
|
48
|
+
const tableMeta = context.table.options.meta;
|
49
|
+
const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;
|
50
|
+
const isSelected = context.row.getIsSelected();
|
51
|
+
const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;
|
52
|
+
if (context.table.options.enableMultiRowSelection) {
|
53
|
+
const handleClick = event => {
|
54
|
+
event.stopPropagation();
|
55
|
+
if (event.shiftKey) {
|
56
|
+
var _tableMeta$rowSelecti;
|
57
|
+
const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
|
58
|
+
context.table.getRowModel().rows.slice(fromIndex, toIndex + 1).forEach(row => row.toggleSelected(true));
|
59
|
+
} else {
|
60
|
+
context.row.toggleSelected();
|
61
|
+
}
|
62
|
+
tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
|
63
|
+
};
|
64
|
+
return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Checkbox, {
|
65
|
+
"aria-label": title,
|
66
|
+
className: "!mt-0",
|
67
|
+
checked: isSelected,
|
68
|
+
onClick: handleClick,
|
69
|
+
// this is necessary to remove console spam from eslint
|
70
|
+
onChange: () => false,
|
71
|
+
tabIndex: isCurrentRow ? 0 : -1
|
72
|
+
}));
|
73
|
+
} else {
|
74
|
+
const className = cn('!mt-0', getRadioClassnames());
|
75
|
+
const handleClick = event => {
|
76
|
+
event.stopPropagation();
|
77
|
+
context.row.toggleSelected();
|
78
|
+
tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
|
79
|
+
};
|
80
|
+
return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, context), /*#__PURE__*/React__default.createElement("button", {
|
81
|
+
className: className,
|
82
|
+
"aria-checked": isSelected,
|
83
|
+
onClick: handleClick,
|
84
|
+
role: "radio",
|
85
|
+
tabIndex: -1,
|
86
|
+
type: "button"
|
87
|
+
}, isSelected ? /*#__PURE__*/React__default.createElement("span", {
|
88
|
+
className: "h-2 w-2 rounded-full bg-white"
|
89
|
+
}) : null));
|
90
|
+
}
|
91
|
+
}, function arePropsEqual(oldProps, newProps) {
|
92
|
+
const oldTableMeta = newProps.table.options.meta;
|
93
|
+
const newTableMeta = newProps.table.options.meta;
|
94
|
+
// we memo because we don't want the row re-rendering and removing focus from the checkbox
|
95
|
+
// we can't default to the standard comparison because we need currentRow off the table meta
|
96
|
+
// and we don't really care about re-rendering in any other scenario
|
97
|
+
return newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex && newProps.row.getIsSelected() !== oldProps.row.getIsSelected();
|
98
|
+
});
|
99
|
+
function createRowSelectionColumn(onRowDrag) {
|
100
|
+
return {
|
101
|
+
id: COLUMN_ID,
|
102
|
+
header: Header,
|
103
|
+
cell: Cell,
|
104
|
+
footer: Footer,
|
105
|
+
meta: {
|
106
|
+
align: 'center',
|
107
|
+
className: 'items-center !justify-end !p-0 !pr-0.5',
|
108
|
+
enableOrdering: false,
|
109
|
+
enableSearch: false,
|
110
|
+
enableTruncate: false,
|
111
|
+
header: '',
|
112
|
+
headerClassName: 'items-center !justify-end !p-0 !pr-0.5'
|
113
|
+
},
|
114
|
+
// options
|
115
|
+
enableResizing: false,
|
116
|
+
size: onRowDrag ? 22 : 32
|
117
|
+
};
|
118
|
+
}
|
119
|
+
|
120
|
+
export { COLUMN_ID, createRowSelectionColumn };
|
121
|
+
//# sourceMappingURL=Selection.js.map
|
package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Selection.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3RowDragHandler } from '../../../types';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\nimport { getRadioClassnames } from '../../../../RadioGroup/util';\n\nexport const COLUMN_ID = '__select';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n if (context.table.options.enableMultiRowSelection) {\n const isAllRowsSelected = context.table.getIsAllRowsSelected();\n const isSomeRowsSelected = context.table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !mt-0\"\n key={String(`${isAllRowsSelected}_${isSomeRowsSelected}`)}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected}\n onChange={context.table.toggleAllRowsSelected}\n tabIndex={-1}\n />\n </Tooltip>\n </ColumnHeader>\n );\n } else {\n return <ColumnHeader {...context}></ColumnHeader>;\n }\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nconst Cell = React.memo(\n function MemoedCell<TType = unknown>(context: CellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;\n const isSelected = context.row.getIsSelected();\n const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;\n\n if (context.table.options.enableMultiRowSelection) {\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(\n tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0,\n rowIndex\n );\n\n context.table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n context.row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={isCurrentRow ? 0 : -1}\n />\n </DisplayCell>\n );\n } else {\n const className = cn('!mt-0', getRadioClassnames());\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n context.row.toggleSelected();\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <button\n className={className}\n aria-checked={isSelected}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {isSelected ? <span className=\"h-2 w-2 rounded-full bg-white\" /> : null}\n </button>\n </DisplayCell>\n );\n }\n },\n function arePropsEqual(oldProps: CellContext<unknown, unknown>, newProps: CellContext<unknown, unknown>) {\n const oldTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n const newTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n\n // we memo because we don't want the row re-rendering and removing focus from the checkbox\n // we can't default to the standard comparison because we need currentRow off the table meta\n // and we don't really care about re-rendering in any other scenario\n return (\n newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex &&\n newProps.row.getIsSelected() !== oldProps.row.getIsSelected()\n );\n }\n) as <TType = unknown>(context: CellContext<TType, unknown>) => JSX.Element;\n\nexport function createRowSelectionColumn<TType = unknown>(\n onRowDrag?: Table3RowDragHandler<TType>\n): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: Header,\n cell: Cell,\n footer: Footer,\n meta: {\n align: 'center',\n className: 'items-center !justify-end !p-0 !pr-0.5',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !justify-end !p-0 !pr-0.5',\n },\n // options\n enableResizing: false,\n size: onRowDrag ? 22 : 32,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","table","options","enableMultiRowSelection","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","table3","columns","select","deselectAll","selectAll","React","ColumnHeader","Tooltip","Checkbox","className","key","String","checked","indeterminate","onChange","toggleAllRowsSelected","tabIndex","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","memo","MemoedCell","rowIndex","useContext","RowContext","tableMeta","meta","isCurrentRow","currentRow","currentRowIndex","isSelected","row","getIsSelected","deselect","handleClick","event","stopPropagation","shiftKey","rowSelection","lastSelectedRowIndex","current","getRowModel","rows","slice","forEach","toggleSelected","DisplayCell","onClick","cn","getRadioClassnames","role","type","arePropsEqual","oldProps","newProps","oldTableMeta","newTableMeta","createRowSelectionColumn","onRowDrag","id","header","cell","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size"],"mappings":"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"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import cn from 'classnames';
|
2
|
+
|
3
|
+
const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls
|
4
|
+
const getCellAlignmentClasses = (alignment = 'left') => {
|
5
|
+
return cn({
|
6
|
+
'justify-start text-left': alignment === 'left',
|
7
|
+
'justify-end text-right': alignment === 'right',
|
8
|
+
'justify-center text-center': alignment === 'center'
|
9
|
+
});
|
10
|
+
};
|
11
|
+
// Hiding input number spin buttons
|
12
|
+
const getInputAppearanceClassnames = () => {
|
13
|
+
return cn('[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none');
|
14
|
+
};
|
15
|
+
|
16
|
+
export { MIN_COLUMN_SIZE, getCellAlignmentClasses, getInputAppearanceClassnames };
|
17
|
+
//# sourceMappingURL=styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../../../../src/components/Table3/components/columns/styles.ts"],"sourcesContent":["import cn from 'classnames';\nimport { Table3ColumnAlignment } from '../../types';\n\nexport const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls\n\nexport const getCellAlignmentClasses = (alignment: Table3ColumnAlignment = 'left') => {\n return cn({\n 'justify-start text-left': alignment === 'left',\n 'justify-end text-right': alignment === 'right',\n 'justify-center text-center': alignment === 'center',\n });\n};\n\n// Hiding input number spin buttons\nexport const getInputAppearanceClassnames = () => {\n return cn(\n '[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none'\n );\n};\n"],"names":["MIN_COLUMN_SIZE","getCellAlignmentClasses","alignment","cn","getInputAppearanceClassnames"],"mappings":";;MAGaA,eAAe,GAAG,GAAG;MAErBC,uBAAuB,GAAG,CAACC,YAAmC,MAAM;EAC7E,OAAOC,EAAE,CAAC;IACN,yBAAyB,EAAED,SAAS,KAAK,MAAM;IAC/C,wBAAwB,EAAEA,SAAS,KAAK,OAAO;IAC/C,4BAA4B,EAAEA,SAAS,KAAK;GAC/C,CAAC;AACN;AAEA;MACaE,4BAA4B,GAAG;EACxC,OAAOD,EAAE,CACL,sHAAsH,CACzH;AACL;;;;"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
|
3
|
+
const ExpandedRow = /*#__PURE__*/React__default.memo(function ExpandedRow(props) {
|
4
|
+
var _renderer;
|
5
|
+
const {
|
6
|
+
data,
|
7
|
+
renderer,
|
8
|
+
registerSize
|
9
|
+
} = props;
|
10
|
+
const ref = React__default.useRef(null);
|
11
|
+
React__default.useEffect(() => {
|
12
|
+
if (ref.current && registerSize) {
|
13
|
+
registerSize(ref.current.getBoundingClientRect().height);
|
14
|
+
}
|
15
|
+
}, []);
|
16
|
+
const content = (_renderer = renderer(data)) === null || _renderer === void 0 ? void 0 : _renderer();
|
17
|
+
if (!content) {
|
18
|
+
return null;
|
19
|
+
}
|
20
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
21
|
+
className: "border-grey-300 bg-grey-50 col-span-full border-b p-4",
|
22
|
+
ref: ref
|
23
|
+
}, content);
|
24
|
+
});
|
25
|
+
|
26
|
+
export { ExpandedRow };
|
27
|
+
//# sourceMappingURL=ExpandedRow.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ExpandedRow.js","sources":["../../../../../../../../../src/components/Table3/components/rows/ExpandedRow.tsx"],"sourcesContent":["import React from 'react';\nimport { Table3RowExpansionRenderer } from '../../types';\n\nexport type ExpandedRowProps<TType = unknown> = React.HTMLAttributes<HTMLDivElement> & {\n data: TType;\n renderer: Table3RowExpansionRenderer<TType>;\n registerSize?: (size: number) => void;\n};\n\nexport const ExpandedRow = React.memo(function ExpandedRow<TType = unknown>(props: ExpandedRowProps<TType>) {\n const { data, renderer, registerSize } = props;\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ref.current && registerSize) {\n registerSize(ref.current.getBoundingClientRect().height);\n }\n }, []);\n\n const content = renderer(data)?.();\n\n if (!content) {\n return null;\n }\n\n return (\n <div className=\"border-grey-300 bg-grey-50 col-span-full border-b p-4\" ref={ref}>\n {content}\n </div>\n );\n});\n"],"names":["ExpandedRow","React","memo","props","data","renderer","registerSize","ref","useRef","useEffect","current","getBoundingClientRect","height","content","className"],"mappings":";;MASaA,WAAW,gBAAGC,cAAK,CAACC,IAAI,CAAC,SAASF,WAAW,CAAkBG,KAA8B;;EACtG,MAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC;GAAc,GAAGH,KAAK;EAC9C,MAAMI,GAAG,GAAGN,cAAK,CAACO,MAAM,CAAiB,IAAI,CAAC;EAE9CP,cAAK,CAACQ,SAAS,CAAC;IACZ,IAAIF,GAAG,CAACG,OAAO,IAAIJ,YAAY,EAAE;MAC7BA,YAAY,CAACC,GAAG,CAACG,OAAO,CAACC,qBAAqB,EAAE,CAACC,MAAM,CAAC;;GAE/D,EAAE,EAAE,CAAC;EAEN,MAAMC,OAAO,gBAAGR,QAAQ,CAACD,IAAI,CAAC,8CAAd,WAAkB;EAElC,IAAI,CAACS,OAAO,EAAE;IACV,OAAO,IAAI;;EAGf,oBACIZ;IAAKa,SAAS,EAAC,uDAAuD;IAACP,GAAG,EAAEA;KACvEM,OAAO,CACN;AAEd,CAAC;;;;"}
|
@@ -0,0 +1,255 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import cn from 'classnames';
|
3
|
+
import { useFocusManager } from '@react-aria/focus';
|
4
|
+
import { useDropTarget } from '../../../../utils/hooks/useDropTarget.js';
|
5
|
+
import { RowContext, useRowContext } from './RowContext.js';
|
6
|
+
import { focusableSelector } from '../../util/editing.js';
|
7
|
+
|
8
|
+
function Row(props) {
|
9
|
+
const tableMeta = props.table.options.meta;
|
10
|
+
const isCurrentRow = tableMeta.currentRow.currentRowIndex === props.index;
|
11
|
+
const isDraggingRow = tableMeta.rowDrag.dragging[props.row.id];
|
12
|
+
// we use non-css hovered state to determine whether to render actions or not, for performance
|
13
|
+
const [isHovered, setIsHovered] = React__default.useState(false);
|
14
|
+
// rows are heavily memoized because performance in our table is critical
|
15
|
+
// be careful and selective about props that you pass to the row
|
16
|
+
const memoedProps = {
|
17
|
+
// aria-grabbed is being deprecated but there is no current alternative api, we use it until there is
|
18
|
+
'aria-grabbed': isDraggingRow ? true : tableMeta.rowDrag.isEnabled ? false : undefined,
|
19
|
+
'data-current': isCurrentRow,
|
20
|
+
'data-selected': props.row.getIsSelected(),
|
21
|
+
draggable: tableMeta.rowDrag.isEnabled,
|
22
|
+
index: props.index,
|
23
|
+
onClick: tableMeta.rowClick.handleClick,
|
24
|
+
onDrop: tableMeta.rowDrop.isEnabled ? tableMeta.rowDrop.handleDrop : undefined
|
25
|
+
};
|
26
|
+
let output = /*#__PURE__*/React__default.createElement(MemoedRow, Object.assign({}, props, memoedProps));
|
27
|
+
if (tableMeta.editing.isEditing && (isCurrentRow || isHovered && !tableMeta.hoverState.isPaused)) {
|
28
|
+
output = /*#__PURE__*/React__default.createElement(EditingRow, Object.assign({}, props, memoedProps, {
|
29
|
+
isLastRow: props.isLastRow,
|
30
|
+
setCurrentRowIndex: tableMeta.currentRow.setCurrentRowIndex
|
31
|
+
}));
|
32
|
+
}
|
33
|
+
// we store the row index in context because in a virtualised table the row index and the
|
34
|
+
// react table row index do not match when, for example, sorting is applied
|
35
|
+
const contextValue = React__default.useMemo(() => ({
|
36
|
+
isHovered,
|
37
|
+
setIsHovered,
|
38
|
+
rowIndex: props.index
|
39
|
+
}), [isHovered, props.index]);
|
40
|
+
return /*#__PURE__*/React__default.createElement(RowContext.Provider, {
|
41
|
+
value: contextValue
|
42
|
+
}, output);
|
43
|
+
}
|
44
|
+
// turns out we might need some kind of "state" for the focused column, but it doesn't need to be react state that re-renders
|
45
|
+
let lastIndex;
|
46
|
+
function getColumnIndex(focusedElement) {
|
47
|
+
if (focusedElement) {
|
48
|
+
var _focusedElement$close;
|
49
|
+
return (_focusedElement$close = focusedElement.closest('[role=cell]')) === null || _focusedElement$close === void 0 ? void 0 : _focusedElement$close.getAttribute('data-column-index');
|
50
|
+
}
|
51
|
+
return null;
|
52
|
+
}
|
53
|
+
// This code is needed to avoid multiple rows being hovered at the same time (it happens since we use non-css hovering)
|
54
|
+
let previouslyHoveredIndex;
|
55
|
+
const unhoverPreviousRow = tableRef => {
|
56
|
+
if (previouslyHoveredIndex !== undefined) {
|
57
|
+
var _tableRef$current;
|
58
|
+
const mouseoutEvent = new MouseEvent('mouseout', {
|
59
|
+
view: window,
|
60
|
+
bubbles: true,
|
61
|
+
cancelable: true
|
62
|
+
});
|
63
|
+
const previouslyHovered = tableRef === null || tableRef === void 0 ? void 0 : (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelector(`[data-row-index="${previouslyHoveredIndex}"]`);
|
64
|
+
previouslyHovered === null || previouslyHovered === void 0 ? void 0 : previouslyHovered.dispatchEvent(mouseoutEvent);
|
65
|
+
}
|
66
|
+
};
|
67
|
+
function EditingRow(props) {
|
68
|
+
const {
|
69
|
+
isLastRow,
|
70
|
+
setCurrentRowIndex,
|
71
|
+
virtualiser,
|
72
|
+
...attributes
|
73
|
+
} = props;
|
74
|
+
const focusManager = useFocusManager();
|
75
|
+
const focusManagerOptions = {
|
76
|
+
tabbable: true
|
77
|
+
};
|
78
|
+
const tableMeta = props.table.options.meta;
|
79
|
+
const handleClickCapture = event => {
|
80
|
+
lastIndex = getColumnIndex(event.target);
|
81
|
+
};
|
82
|
+
const handleArrowLeftKey = event => {
|
83
|
+
let focusedElement;
|
84
|
+
if (event.key === 'ArrowLeft' || event.key === 'Tab' && event.shiftKey) {
|
85
|
+
// Need to stop propagation because "Tab" will be handled twice(default browser and programmatic one)
|
86
|
+
// and will lead to looping focus. Also we still need to perform special behaviour when focus reaches the end of the row,
|
87
|
+
// so we don't need default browser behaviour.
|
88
|
+
event.stopPropagation();
|
89
|
+
event.preventDefault();
|
90
|
+
// "CTRL + ArrowLeft" or "META + ArrowLeft" should focus first focusable element of the row
|
91
|
+
if (event.ctrlKey || event.metaKey) {
|
92
|
+
event.target.blur();
|
93
|
+
focusedElement = focusManager.focusFirst(focusManagerOptions);
|
94
|
+
lastIndex = getColumnIndex(focusedElement);
|
95
|
+
} else {
|
96
|
+
// Should focus previous focusable element, if there is one
|
97
|
+
focusedElement = focusManager.focusPrevious(focusManagerOptions);
|
98
|
+
// Should move to prevoius row and select last focusable element in that row,
|
99
|
+
// if there is no previous focusable element in current row
|
100
|
+
if (props.index !== 0 && (!focusedElement || !event.currentTarget.contains(focusedElement))) {
|
101
|
+
tableMeta.hoverState.pause(true);
|
102
|
+
setCurrentRowIndex(props.index - 1);
|
103
|
+
setTimeout(() => {
|
104
|
+
focusedElement = focusManager.focusLast(focusManagerOptions);
|
105
|
+
// Need to update lastIndex when row got changed and last element got selected.
|
106
|
+
lastIndex = getColumnIndex(focusedElement);
|
107
|
+
}, 1);
|
108
|
+
} else {
|
109
|
+
lastIndex = getColumnIndex(focusedElement);
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
};
|
114
|
+
const handleArrowRightKey = event => {
|
115
|
+
let focusedElement;
|
116
|
+
if (event.key === 'ArrowRight' || event.key === 'Tab' && !event.shiftKey) {
|
117
|
+
// Need to stop propagation because "Tab" will be handled twice(default browser and programmatic one)
|
118
|
+
// and will lead to looping focus. Also we still need to perform special behaviour when focus reaches the end of the row,
|
119
|
+
// so we don't need default browser behaviour.
|
120
|
+
event.stopPropagation();
|
121
|
+
event.preventDefault();
|
122
|
+
// "CTRL + ArrowRight" or "META + ArrowRight" should focus last focusable element of the row
|
123
|
+
if (event.ctrlKey || event.metaKey) {
|
124
|
+
event.target.blur();
|
125
|
+
focusedElement = focusManager.focusLast(focusManagerOptions);
|
126
|
+
lastIndex = getColumnIndex(focusedElement);
|
127
|
+
} else {
|
128
|
+
// Should focus next focusable element, if there is one
|
129
|
+
focusedElement = focusManager.focusNext(focusManagerOptions);
|
130
|
+
// Should move to next row and select first focusable element in that row,
|
131
|
+
// if there is no next focusable element in current row
|
132
|
+
if (!isLastRow && (!focusedElement || !event.currentTarget.contains(focusedElement))) {
|
133
|
+
tableMeta.hoverState.pause(true);
|
134
|
+
setCurrentRowIndex(props.index + 1);
|
135
|
+
setTimeout(() => {
|
136
|
+
focusedElement = focusManager.focusFirst(focusManagerOptions);
|
137
|
+
// Need to update lastIndex when row got changed and first element got selected.
|
138
|
+
lastIndex = getColumnIndex(focusedElement);
|
139
|
+
}, 1);
|
140
|
+
} else {
|
141
|
+
lastIndex = getColumnIndex(focusedElement);
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
};
|
146
|
+
React__default.useEffect(() => {
|
147
|
+
// if some row stuck in hovered state, we heed to unhover it when hover state is paused
|
148
|
+
if (tableMeta.hoverState.isPaused) {
|
149
|
+
unhoverPreviousRow(props.tableRef);
|
150
|
+
}
|
151
|
+
}, [tableMeta.hoverState.isPaused]);
|
152
|
+
const handleKeyDown = event => {
|
153
|
+
if (event.isDefaultPrevented() || event.isPropagationStopped() || tableMeta.editing.detailModeEditing) {
|
154
|
+
return;
|
155
|
+
}
|
156
|
+
handleArrowLeftKey(event);
|
157
|
+
handleArrowRightKey(event);
|
158
|
+
};
|
159
|
+
// this ensures we focus either on a field or on the same column when keyboard navigating up/down
|
160
|
+
React__default.useEffect(() => {
|
161
|
+
if (tableMeta.currentRow.currentRowIndex === props.index) {
|
162
|
+
if (lastIndex !== undefined) {
|
163
|
+
var _props$tableRef$curre, _lastIndexCell$queryS;
|
164
|
+
const lastIndexCell = (_props$tableRef$curre = props.tableRef.current) === null || _props$tableRef$curre === void 0 ? void 0 : _props$tableRef$curre.querySelector(`[role="row"][data-current="true"] [data-column-index="${lastIndex}"]`);
|
165
|
+
lastIndexCell === null || lastIndexCell === void 0 ? void 0 : (_lastIndexCell$queryS = lastIndexCell.querySelector(focusableSelector)) === null || _lastIndexCell$queryS === void 0 ? void 0 : _lastIndexCell$queryS.focus();
|
166
|
+
} else {
|
167
|
+
focusManager.focusFirst(focusManagerOptions);
|
168
|
+
}
|
169
|
+
}
|
170
|
+
// Need to subscribe to current row index and check is it a current row,
|
171
|
+
// for a situation where hovered row is the next row after current row...
|
172
|
+
// In this case row will not be re-rendered if user switch to next row, because hovered row also renders EditingRow.
|
173
|
+
}, [tableMeta.currentRow.currentRowIndex]);
|
174
|
+
return /*#__PURE__*/React__default.createElement(MemoedRow, Object.assign({}, attributes, {
|
175
|
+
onClickCapture: handleClickCapture,
|
176
|
+
onKeyDown: handleKeyDown
|
177
|
+
}));
|
178
|
+
}
|
179
|
+
const clickableElements = ['input', 'button', 'a', 'select', 'option', 'label', 'textarea'];
|
180
|
+
const MemoedRow = /*#__PURE__*/React__default.memo(function MemoedRow(props) {
|
181
|
+
const {
|
182
|
+
index,
|
183
|
+
isLastRow: _1,
|
184
|
+
onClick,
|
185
|
+
onClickCapture,
|
186
|
+
onDrop,
|
187
|
+
row,
|
188
|
+
table,
|
189
|
+
tableRef,
|
190
|
+
...attributes
|
191
|
+
} = props;
|
192
|
+
const ref = React__default.useRef(null);
|
193
|
+
const tableMeta = table.options.meta;
|
194
|
+
const {
|
195
|
+
setIsHovered
|
196
|
+
} = useRowContext();
|
197
|
+
// we use capture because it also picks up clicks on e.g. select checkboxes
|
198
|
+
const handleClickCapture = event => {
|
199
|
+
if (typeof onClickCapture === 'function') {
|
200
|
+
onClickCapture(event);
|
201
|
+
}
|
202
|
+
tableMeta.currentRow.setCurrentRowIndex(index);
|
203
|
+
};
|
204
|
+
const handleClick = event => {
|
205
|
+
if (typeof onClick === 'function') {
|
206
|
+
var _ref$current;
|
207
|
+
const clickedElement = event.target;
|
208
|
+
if (!((_ref$current = ref.current) !== null && _ref$current !== void 0 && _ref$current.contains(event.target)) || clickableElements.includes(clickedElement.tagName.toLowerCase()) || clickedElement.closest(clickableElements.map(tag => `[role=row] ${tag}`).join(','))) {
|
209
|
+
return;
|
210
|
+
}
|
211
|
+
onClick(row.original);
|
212
|
+
}
|
213
|
+
};
|
214
|
+
const handleMouseEnter = () => {
|
215
|
+
// When user moving mouse to fast, then some of the rows are getting stuck in hover state,
|
216
|
+
// because mouseleave event never got triggered, to avoid this to happen we're saving the index of last hovered row,
|
217
|
+
// so that we can unhover it when new row got hovered, and saving it in a variable outside of react to save in performance,
|
218
|
+
// since it would be very performance heavy to use state which is bound to mouse events.
|
219
|
+
if (previouslyHoveredIndex !== undefined) {
|
220
|
+
if (previouslyHoveredIndex !== index) {
|
221
|
+
unhoverPreviousRow(tableRef);
|
222
|
+
previouslyHoveredIndex = index;
|
223
|
+
}
|
224
|
+
} else {
|
225
|
+
previouslyHoveredIndex = index;
|
226
|
+
}
|
227
|
+
setIsHovered(true);
|
228
|
+
};
|
229
|
+
const handleMouseLeave = () => {
|
230
|
+
if (previouslyHoveredIndex === index) {
|
231
|
+
previouslyHoveredIndex = undefined;
|
232
|
+
}
|
233
|
+
setIsHovered(false);
|
234
|
+
};
|
235
|
+
const [, dropTargetProps] = useDropTarget(event => onDrop === null || onDrop === void 0 ? void 0 : onDrop(event, row.original));
|
236
|
+
const className = cn('group/row contents',
|
237
|
+
// resizing column requires dragging, which means the mouse might (on rare occasions) move over rows and trigger hover state
|
238
|
+
// that in turn triggers rendering of e.g. row actions, which could cause janky ui - so don't allow mouse interaction when resizing
|
239
|
+
'[[role="table"][data-resizing="true"]_&]:pointer-events-none', {
|
240
|
+
'hover:cursor-pointer': typeof onClick === 'function'
|
241
|
+
});
|
242
|
+
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, onDrop ? dropTargetProps : undefined, {
|
243
|
+
className: className,
|
244
|
+
"data-row-index": index,
|
245
|
+
onClick: handleClick,
|
246
|
+
onClickCapture: handleClickCapture,
|
247
|
+
onMouseEnter: handleMouseEnter,
|
248
|
+
onMouseLeave: handleMouseLeave,
|
249
|
+
role: "row",
|
250
|
+
ref: ref
|
251
|
+
}));
|
252
|
+
});
|
253
|
+
|
254
|
+
export { Row };
|
255
|
+
//# sourceMappingURL=Row.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table3/components/rows/Row.tsx"],"sourcesContent":["import React from 'react';\nimport { Row as RTRow, Table as RTable, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { RowContext, useRowContext } from './RowContext';\nimport { useDropTarget } from '../../../../utils/hooks/useDropTarget';\nimport { Table3RowClickHandler, Table3RowDropHandler } from '../../types';\nimport { useFocusManager } from '@react-aria/focus';\nimport { focusableSelector } from '../../util/editing';\n\ntype RowProps<TType = unknown> = Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'onDrop'> & {\n index: number;\n isLastRow: boolean;\n onClick?: Table3RowClickHandler<TType>;\n onDrop?: Table3RowDropHandler<TType>;\n row: RTRow<TType>;\n table: RTable<TType>;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport function Row<TType = unknown>(props: RowProps<TType>) {\n const tableMeta = props.table.options.meta as TableMeta<TType>;\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === props.index;\n const isDraggingRow = tableMeta.rowDrag.dragging[props.row.id];\n // we use non-css hovered state to determine whether to render actions or not, for performance\n const [isHovered, setIsHovered] = React.useState(false);\n\n // rows are heavily memoized because performance in our table is critical\n // be careful and selective about props that you pass to the row\n const memoedProps = {\n // aria-grabbed is being deprecated but there is no current alternative api, we use it until there is\n 'aria-grabbed': isDraggingRow ? true : tableMeta.rowDrag.isEnabled ? false : undefined,\n 'data-current': isCurrentRow,\n 'data-selected': props.row.getIsSelected(),\n draggable: tableMeta.rowDrag.isEnabled,\n index: props.index,\n onClick: tableMeta.rowClick.handleClick,\n onDrop: tableMeta.rowDrop.isEnabled ? tableMeta.rowDrop.handleDrop : undefined,\n };\n\n let output = <MemoedRow<TType> {...props} {...memoedProps} />;\n\n if (tableMeta.editing.isEditing && (isCurrentRow || (isHovered && !tableMeta.hoverState.isPaused))) {\n output = (\n <EditingRow\n {...props}\n {...memoedProps}\n isLastRow={props.isLastRow}\n setCurrentRowIndex={tableMeta.currentRow.setCurrentRowIndex}\n />\n );\n }\n\n // we store the row index in context because in a virtualised table the row index and the\n // react table row index do not match when, for example, sorting is applied\n const contextValue = React.useMemo(() => ({ isHovered, setIsHovered, rowIndex: props.index }), [isHovered, props.index]);\n\n return <RowContext.Provider value={contextValue}>{output}</RowContext.Provider>;\n}\n\n// turns out we might need some kind of \"state\" for the focused column, but it doesn't need to be react state that re-renders\nlet lastIndex;\n\nfunction getColumnIndex(focusedElement: Element) {\n if (focusedElement) {\n return focusedElement.closest('[role=cell]')?.getAttribute('data-column-index');\n }\n\n return null;\n}\n\n// This code is needed to avoid multiple rows being hovered at the same time (it happens since we use non-css hovering)\nlet previouslyHoveredIndex: number | undefined;\nconst unhoverPreviousRow = (tableRef: React.RefObject<HTMLDivElement>) => {\n if (previouslyHoveredIndex !== undefined) {\n const mouseoutEvent = new MouseEvent('mouseout', { view: window, bubbles: true, cancelable: true });\n const previouslyHovered = tableRef?.current?.querySelector(`[data-row-index=\"${previouslyHoveredIndex}\"]`);\n previouslyHovered?.dispatchEvent(mouseoutEvent);\n }\n};\n\nfunction EditingRow(props) {\n const { isLastRow, setCurrentRowIndex, virtualiser, ...attributes } = props;\n const focusManager = useFocusManager();\n const focusManagerOptions = { tabbable: true };\n const tableMeta = props.table.options.meta as TableMeta<unknown>;\n\n const handleClickCapture = (event: React.FocusEvent) => {\n lastIndex = getColumnIndex(event.target);\n };\n\n const handleArrowLeftKey = event => {\n let focusedElement: Element;\n if (event.key === 'ArrowLeft' || (event.key === 'Tab' && event.shiftKey)) {\n // Need to stop propagation because \"Tab\" will be handled twice(default browser and programmatic one)\n // and will lead to looping focus. Also we still need to perform special behaviour when focus reaches the end of the row,\n // so we don't need default browser behaviour.\n event.stopPropagation();\n event.preventDefault();\n\n // \"CTRL + ArrowLeft\" or \"META + ArrowLeft\" should focus first focusable element of the row\n if (event.ctrlKey || event.metaKey) {\n event.target.blur();\n focusedElement = focusManager.focusFirst(focusManagerOptions);\n lastIndex = getColumnIndex(focusedElement);\n } else {\n // Should focus previous focusable element, if there is one\n focusedElement = focusManager.focusPrevious(focusManagerOptions);\n\n // Should move to prevoius row and select last focusable element in that row,\n // if there is no previous focusable element in current row\n if (props.index !== 0 && (!focusedElement || !event.currentTarget.contains(focusedElement))) {\n tableMeta.hoverState.pause(true);\n setCurrentRowIndex(props.index - 1);\n setTimeout(() => {\n focusedElement = focusManager.focusLast(focusManagerOptions);\n // Need to update lastIndex when row got changed and last element got selected.\n lastIndex = getColumnIndex(focusedElement);\n }, 1);\n } else {\n lastIndex = getColumnIndex(focusedElement);\n }\n }\n }\n };\n\n const handleArrowRightKey = event => {\n let focusedElement: Element;\n if (event.key === 'ArrowRight' || (event.key === 'Tab' && !event.shiftKey)) {\n // Need to stop propagation because \"Tab\" will be handled twice(default browser and programmatic one)\n // and will lead to looping focus. Also we still need to perform special behaviour when focus reaches the end of the row,\n // so we don't need default browser behaviour.\n event.stopPropagation();\n event.preventDefault();\n\n // \"CTRL + ArrowRight\" or \"META + ArrowRight\" should focus last focusable element of the row\n if (event.ctrlKey || event.metaKey) {\n event.target.blur();\n focusedElement = focusManager.focusLast(focusManagerOptions);\n lastIndex = getColumnIndex(focusedElement);\n } else {\n // Should focus next focusable element, if there is one\n focusedElement = focusManager.focusNext(focusManagerOptions);\n\n // Should move to next row and select first focusable element in that row,\n // if there is no next focusable element in current row\n if (!isLastRow && (!focusedElement || !event.currentTarget.contains(focusedElement))) {\n tableMeta.hoverState.pause(true);\n setCurrentRowIndex(props.index + 1);\n setTimeout(() => {\n focusedElement = focusManager.focusFirst(focusManagerOptions);\n // Need to update lastIndex when row got changed and first element got selected.\n\n lastIndex = getColumnIndex(focusedElement);\n }, 1);\n } else {\n lastIndex = getColumnIndex(focusedElement);\n }\n }\n }\n };\n\n React.useEffect(() => {\n // if some row stuck in hovered state, we heed to unhover it when hover state is paused\n if (tableMeta.hoverState.isPaused) {\n unhoverPreviousRow(props.tableRef);\n }\n }, [tableMeta.hoverState.isPaused]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.isDefaultPrevented() || event.isPropagationStopped() || tableMeta.editing.detailModeEditing) {\n return;\n }\n\n handleArrowLeftKey(event);\n handleArrowRightKey(event);\n };\n\n // this ensures we focus either on a field or on the same column when keyboard navigating up/down\n React.useEffect(() => {\n if (tableMeta.currentRow.currentRowIndex === props.index) {\n if (lastIndex !== undefined) {\n const lastIndexCell = props.tableRef.current?.querySelector(\n `[role=\"row\"][data-current=\"true\"] [data-column-index=\"${lastIndex}\"]`\n );\n lastIndexCell?.querySelector(focusableSelector)?.focus();\n } else {\n focusManager.focusFirst(focusManagerOptions);\n }\n }\n // Need to subscribe to current row index and check is it a current row,\n // for a situation where hovered row is the next row after current row...\n // In this case row will not be re-rendered if user switch to next row, because hovered row also renders EditingRow.\n }, [tableMeta.currentRow.currentRowIndex]);\n\n return <MemoedRow {...attributes} onClickCapture={handleClickCapture} onKeyDown={handleKeyDown} />;\n}\n\n// Memoization\n\nexport type MemoedRowProps<TType = unknown> = RowProps<TType> & {\n 'aria-grabbed'?: boolean;\n 'data-current': boolean;\n 'data-selected': boolean;\n draggable: boolean;\n index: number;\n};\n\nconst clickableElements = ['input', 'button', 'a', 'select', 'option', 'label', 'textarea'];\n\nconst MemoedRow = React.memo(function MemoedRow<TType = unknown>(props: MemoedRowProps<TType>) {\n const { index, isLastRow: _1, onClick, onClickCapture, onDrop, row, table, tableRef, ...attributes } = props;\n const ref = React.useRef<HTMLDivElement | null>(null);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const { setIsHovered } = useRowContext();\n\n // we use capture because it also picks up clicks on e.g. select checkboxes\n const handleClickCapture = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (typeof onClickCapture === 'function') {\n onClickCapture(event);\n }\n\n tableMeta.currentRow.setCurrentRowIndex(index);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (typeof onClick === 'function') {\n const clickedElement = event.target as HTMLElement;\n\n if (\n !ref.current?.contains(event.target as HTMLElement) ||\n clickableElements.includes(clickedElement.tagName.toLowerCase()) ||\n clickedElement.closest(clickableElements.map(tag => `[role=row] ${tag}`).join(','))\n ) {\n return;\n }\n\n onClick(row.original);\n }\n };\n\n const handleMouseEnter = () => {\n // When user moving mouse to fast, then some of the rows are getting stuck in hover state,\n // because mouseleave event never got triggered, to avoid this to happen we're saving the index of last hovered row,\n // so that we can unhover it when new row got hovered, and saving it in a variable outside of react to save in performance,\n // since it would be very performance heavy to use state which is bound to mouse events.\n if (previouslyHoveredIndex !== undefined) {\n if (previouslyHoveredIndex !== index) {\n unhoverPreviousRow(tableRef);\n previouslyHoveredIndex = index;\n }\n } else {\n previouslyHoveredIndex = index;\n }\n setIsHovered(true);\n };\n const handleMouseLeave = () => {\n if (previouslyHoveredIndex === index) {\n previouslyHoveredIndex = undefined;\n }\n setIsHovered(false);\n };\n\n const [, dropTargetProps] = useDropTarget(event => onDrop?.(event, row.original));\n\n const className = cn(\n 'group/row contents',\n // resizing column requires dragging, which means the mouse might (on rare occasions) move over rows and trigger hover state\n // that in turn triggers rendering of e.g. row actions, which could cause janky ui - so don't allow mouse interaction when resizing\n '[[role=\"table\"][data-resizing=\"true\"]_&]:pointer-events-none',\n {\n 'hover:cursor-pointer': typeof onClick === 'function',\n }\n );\n\n return (\n <div\n {...attributes}\n {...(onDrop ? dropTargetProps : undefined)}\n className={className}\n data-row-index={index}\n onClick={handleClick}\n onClickCapture={handleClickCapture}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n role=\"row\"\n ref={ref}\n />\n );\n}) as <TType = unknown>(props: MemoedRowProps<TType>) => JSX.Element;\n"],"names":["Row","props","tableMeta","table","options","meta","isCurrentRow","currentRow","currentRowIndex","index","isDraggingRow","rowDrag","dragging","row","id","isHovered","setIsHovered","React","useState","memoedProps","isEnabled","undefined","getIsSelected","draggable","onClick","rowClick","handleClick","onDrop","rowDrop","handleDrop","output","MemoedRow","editing","isEditing","hoverState","isPaused","EditingRow","isLastRow","setCurrentRowIndex","contextValue","useMemo","rowIndex","RowContext","Provider","value","lastIndex","getColumnIndex","focusedElement","closest","getAttribute","previouslyHoveredIndex","unhoverPreviousRow","tableRef","mouseoutEvent","MouseEvent","view","window","bubbles","cancelable","previouslyHovered","current","querySelector","dispatchEvent","virtualiser","attributes","focusManager","useFocusManager","focusManagerOptions","tabbable","handleClickCapture","event","target","handleArrowLeftKey","key","shiftKey","stopPropagation","preventDefault","ctrlKey","metaKey","blur","focusFirst","focusPrevious","currentTarget","contains","pause","setTimeout","focusLast","handleArrowRightKey","focusNext","useEffect","handleKeyDown","isDefaultPrevented","isPropagationStopped","detailModeEditing","lastIndexCell","focusableSelector","focus","onClickCapture","onKeyDown","clickableElements","memo","_1","ref","useRef","useRowContext","clickedElement","includes","tagName","toLowerCase","map","tag","join","original","handleMouseEnter","handleMouseLeave","dropTargetProps","useDropTarget","className","cn","onMouseEnter","onMouseLeave","role"],"mappings":";;;;;;;SAmBgBA,GAAG,CAAkBC,KAAsB;EACvD,MAAMC,SAAS,GAAGD,KAAK,CAACE,KAAK,CAACC,OAAO,CAACC,IAAwB;EAC9D,MAAMC,YAAY,GAAGJ,SAAS,CAACK,UAAU,CAACC,eAAe,KAAKP,KAAK,CAACQ,KAAK;EACzE,MAAMC,aAAa,GAAGR,SAAS,CAACS,OAAO,CAACC,QAAQ,CAACX,KAAK,CAACY,GAAG,CAACC,EAAE,CAAC;;EAE9D,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;;;EAIvD,MAAMC,WAAW,GAAG;;IAEhB,cAAc,EAAET,aAAa,GAAG,IAAI,GAAGR,SAAS,CAACS,OAAO,CAACS,SAAS,GAAG,KAAK,GAAGC,SAAS;IACtF,cAAc,EAAEf,YAAY;IAC5B,eAAe,EAAEL,KAAK,CAACY,GAAG,CAACS,aAAa,EAAE;IAC1CC,SAAS,EAAErB,SAAS,CAACS,OAAO,CAACS,SAAS;IACtCX,KAAK,EAAER,KAAK,CAACQ,KAAK;IAClBe,OAAO,EAAEtB,SAAS,CAACuB,QAAQ,CAACC,WAAW;IACvCC,MAAM,EAAEzB,SAAS,CAAC0B,OAAO,CAACR,SAAS,GAAGlB,SAAS,CAAC0B,OAAO,CAACC,UAAU,GAAGR;GACxE;EAED,IAAIS,MAAM,gBAAGb,6BAACc,SAAS,oBAAY9B,KAAK,EAAMkB,WAAW,EAAI;EAE7D,IAAIjB,SAAS,CAAC8B,OAAO,CAACC,SAAS,KAAK3B,YAAY,IAAKS,SAAS,IAAI,CAACb,SAAS,CAACgC,UAAU,CAACC,QAAS,CAAC,EAAE;IAChGL,MAAM,gBACFb,6BAACmB,UAAU,oBACHnC,KAAK,EACLkB,WAAW;MACfkB,SAAS,EAAEpC,KAAK,CAACoC,SAAS;MAC1BC,kBAAkB,EAAEpC,SAAS,CAACK,UAAU,CAAC+B;OAEhD;;;;EAKL,MAAMC,YAAY,GAAGtB,cAAK,CAACuB,OAAO,CAAC,OAAO;IAAEzB,SAAS;IAAEC,YAAY;IAAEyB,QAAQ,EAAExC,KAAK,CAACQ;GAAO,CAAC,EAAE,CAACM,SAAS,EAAEd,KAAK,CAACQ,KAAK,CAAC,CAAC;EAExH,oBAAOQ,6BAACyB,UAAU,CAACC,QAAQ;IAACC,KAAK,EAAEL;KAAeT,MAAM,CAAuB;AACnF;AAEA;AACA,IAAIe,SAAS;AAEb,SAASC,cAAc,CAACC,cAAuB;EAC3C,IAAIA,cAAc,EAAE;IAAA;IAChB,gCAAOA,cAAc,CAACC,OAAO,CAAC,aAAa,CAAC,0DAArC,sBAAuCC,YAAY,CAAC,mBAAmB,CAAC;;EAGnF,OAAO,IAAI;AACf;AAEA;AACA,IAAIC,sBAA0C;AAC9C,MAAMC,kBAAkB,GAAIC,QAAyC;EACjE,IAAIF,sBAAsB,KAAK7B,SAAS,EAAE;IAAA;IACtC,MAAMgC,aAAa,GAAG,IAAIC,UAAU,CAAC,UAAU,EAAE;MAAEC,IAAI,EAAEC,MAAM;MAAEC,OAAO,EAAE,IAAI;MAAEC,UAAU,EAAE;KAAM,CAAC;IACnG,MAAMC,iBAAiB,GAAGP,QAAQ,aAARA,QAAQ,4CAARA,QAAQ,CAAEQ,OAAO,sDAAjB,kBAAmBC,aAAa,qBAAqBX,0BAA0B,CAAC;IAC1GS,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEG,aAAa,CAACT,aAAa,CAAC;;AAEvD,CAAC;AAED,SAASjB,UAAU,CAACnC,KAAK;EACrB,MAAM;IAAEoC,SAAS;IAAEC,kBAAkB;IAAEyB,WAAW;IAAE,GAAGC;GAAY,GAAG/D,KAAK;EAC3E,MAAMgE,YAAY,GAAGC,eAAe,EAAE;EACtC,MAAMC,mBAAmB,GAAG;IAAEC,QAAQ,EAAE;GAAM;EAC9C,MAAMlE,SAAS,GAAGD,KAAK,CAACE,KAAK,CAACC,OAAO,CAACC,IAA0B;EAEhE,MAAMgE,kBAAkB,GAAIC,KAAuB;IAC/CzB,SAAS,GAAGC,cAAc,CAACwB,KAAK,CAACC,MAAM,CAAC;GAC3C;EAED,MAAMC,kBAAkB,GAAGF,KAAK;IAC5B,IAAIvB,cAAuB;IAC3B,IAAIuB,KAAK,CAACG,GAAG,KAAK,WAAW,IAAKH,KAAK,CAACG,GAAG,KAAK,KAAK,IAAIH,KAAK,CAACI,QAAS,EAAE;;;;MAItEJ,KAAK,CAACK,eAAe,EAAE;MACvBL,KAAK,CAACM,cAAc,EAAE;;MAGtB,IAAIN,KAAK,CAACO,OAAO,IAAIP,KAAK,CAACQ,OAAO,EAAE;QAChCR,KAAK,CAACC,MAAM,CAACQ,IAAI,EAAE;QACnBhC,cAAc,GAAGkB,YAAY,CAACe,UAAU,CAACb,mBAAmB,CAAC;QAC7DtB,SAAS,GAAGC,cAAc,CAACC,cAAc,CAAC;OAC7C,MAAM;;QAEHA,cAAc,GAAGkB,YAAY,CAACgB,aAAa,CAACd,mBAAmB,CAAC;;;QAIhE,IAAIlE,KAAK,CAACQ,KAAK,KAAK,CAAC,KAAK,CAACsC,cAAc,IAAI,CAACuB,KAAK,CAACY,aAAa,CAACC,QAAQ,CAACpC,cAAc,CAAC,CAAC,EAAE;UACzF7C,SAAS,CAACgC,UAAU,CAACkD,KAAK,CAAC,IAAI,CAAC;UAChC9C,kBAAkB,CAACrC,KAAK,CAACQ,KAAK,GAAG,CAAC,CAAC;UACnC4E,UAAU,CAAC;YACPtC,cAAc,GAAGkB,YAAY,CAACqB,SAAS,CAACnB,mBAAmB,CAAC;;YAE5DtB,SAAS,GAAGC,cAAc,CAACC,cAAc,CAAC;WAC7C,EAAE,CAAC,CAAC;SACR,MAAM;UACHF,SAAS,GAAGC,cAAc,CAACC,cAAc,CAAC;;;;GAIzD;EAED,MAAMwC,mBAAmB,GAAGjB,KAAK;IAC7B,IAAIvB,cAAuB;IAC3B,IAAIuB,KAAK,CAACG,GAAG,KAAK,YAAY,IAAKH,KAAK,CAACG,GAAG,KAAK,KAAK,IAAI,CAACH,KAAK,CAACI,QAAS,EAAE;;;;MAIxEJ,KAAK,CAACK,eAAe,EAAE;MACvBL,KAAK,CAACM,cAAc,EAAE;;MAGtB,IAAIN,KAAK,CAACO,OAAO,IAAIP,KAAK,CAACQ,OAAO,EAAE;QAChCR,KAAK,CAACC,MAAM,CAACQ,IAAI,EAAE;QACnBhC,cAAc,GAAGkB,YAAY,CAACqB,SAAS,CAACnB,mBAAmB,CAAC;QAC5DtB,SAAS,GAAGC,cAAc,CAACC,cAAc,CAAC;OAC7C,MAAM;;QAEHA,cAAc,GAAGkB,YAAY,CAACuB,SAAS,CAACrB,mBAAmB,CAAC;;;QAI5D,IAAI,CAAC9B,SAAS,KAAK,CAACU,cAAc,IAAI,CAACuB,KAAK,CAACY,aAAa,CAACC,QAAQ,CAACpC,cAAc,CAAC,CAAC,EAAE;UAClF7C,SAAS,CAACgC,UAAU,CAACkD,KAAK,CAAC,IAAI,CAAC;UAChC9C,kBAAkB,CAACrC,KAAK,CAACQ,KAAK,GAAG,CAAC,CAAC;UACnC4E,UAAU,CAAC;YACPtC,cAAc,GAAGkB,YAAY,CAACe,UAAU,CAACb,mBAAmB,CAAC;;YAG7DtB,SAAS,GAAGC,cAAc,CAACC,cAAc,CAAC;WAC7C,EAAE,CAAC,CAAC;SACR,MAAM;UACHF,SAAS,GAAGC,cAAc,CAACC,cAAc,CAAC;;;;GAIzD;EAED9B,cAAK,CAACwE,SAAS,CAAC;;IAEZ,IAAIvF,SAAS,CAACgC,UAAU,CAACC,QAAQ,EAAE;MAC/BgB,kBAAkB,CAAClD,KAAK,CAACmD,QAAQ,CAAC;;GAEzC,EAAE,CAAClD,SAAS,CAACgC,UAAU,CAACC,QAAQ,CAAC,CAAC;EAEnC,MAAMuD,aAAa,GAAIpB,KAA0B;IAC7C,IAAIA,KAAK,CAACqB,kBAAkB,EAAE,IAAIrB,KAAK,CAACsB,oBAAoB,EAAE,IAAI1F,SAAS,CAAC8B,OAAO,CAAC6D,iBAAiB,EAAE;MACnG;;IAGJrB,kBAAkB,CAACF,KAAK,CAAC;IACzBiB,mBAAmB,CAACjB,KAAK,CAAC;GAC7B;;EAGDrD,cAAK,CAACwE,SAAS,CAAC;IACZ,IAAIvF,SAAS,CAACK,UAAU,CAACC,eAAe,KAAKP,KAAK,CAACQ,KAAK,EAAE;MACtD,IAAIoC,SAAS,KAAKxB,SAAS,EAAE;QAAA;QACzB,MAAMyE,aAAa,4BAAG7F,KAAK,CAACmD,QAAQ,CAACQ,OAAO,0DAAtB,sBAAwBC,aAAa,0DACEhB,aAAa,CACzE;QACDiD,aAAa,aAAbA,aAAa,gDAAbA,aAAa,CAAEjC,aAAa,CAACkC,iBAAiB,CAAC,0DAA/C,sBAAiDC,KAAK,EAAE;OAC3D,MAAM;QACH/B,YAAY,CAACe,UAAU,CAACb,mBAAmB,CAAC;;;;;;GAMvD,EAAE,CAACjE,SAAS,CAACK,UAAU,CAACC,eAAe,CAAC,CAAC;EAE1C,oBAAOS,6BAACc,SAAS,oBAAKiC,UAAU;IAAEiC,cAAc,EAAE5B,kBAAkB;IAAE6B,SAAS,EAAER;KAAiB;AACtG;AAYA,MAAMS,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC;AAE3F,MAAMpE,SAAS,gBAAGd,cAAK,CAACmF,IAAI,CAAC,SAASrE,SAAS,CAAkB9B,KAA4B;EACzF,MAAM;IAAEQ,KAAK;IAAE4B,SAAS,EAAEgE,EAAE;IAAE7E,OAAO;IAAEyE,cAAc;IAAEtE,MAAM;IAAEd,GAAG;IAAEV,KAAK;IAAEiD,QAAQ;IAAE,GAAGY;GAAY,GAAG/D,KAAK;EAC5G,MAAMqG,GAAG,GAAGrF,cAAK,CAACsF,MAAM,CAAwB,IAAI,CAAC;EACrD,MAAMrG,SAAS,GAAGC,KAAK,CAACC,OAAO,CAACC,IAAwB;EACxD,MAAM;IAAEW;GAAc,GAAGwF,aAAa,EAAE;;EAGxC,MAAMnC,kBAAkB,GAAIC,KAAmD;IAC3E,IAAI,OAAO2B,cAAc,KAAK,UAAU,EAAE;MACtCA,cAAc,CAAC3B,KAAK,CAAC;;IAGzBpE,SAAS,CAACK,UAAU,CAAC+B,kBAAkB,CAAC7B,KAAK,CAAC;GACjD;EAED,MAAMiB,WAAW,GAAI4C,KAAuC;IACxD,IAAI,OAAO9C,OAAO,KAAK,UAAU,EAAE;MAAA;MAC/B,MAAMiF,cAAc,GAAGnC,KAAK,CAACC,MAAqB;MAElD,IACI,kBAAC+B,GAAG,CAAC1C,OAAO,yCAAX,aAAauB,QAAQ,CAACb,KAAK,CAACC,MAAqB,CAAC,KACnD4B,iBAAiB,CAACO,QAAQ,CAACD,cAAc,CAACE,OAAO,CAACC,WAAW,EAAE,CAAC,IAChEH,cAAc,CAACzD,OAAO,CAACmD,iBAAiB,CAACU,GAAG,CAACC,GAAG,kBAAkBA,KAAK,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC,EACrF;QACE;;MAGJvF,OAAO,CAACX,GAAG,CAACmG,QAAQ,CAAC;;GAE5B;EAED,MAAMC,gBAAgB,GAAG;;;;;IAKrB,IAAI/D,sBAAsB,KAAK7B,SAAS,EAAE;MACtC,IAAI6B,sBAAsB,KAAKzC,KAAK,EAAE;QAClC0C,kBAAkB,CAACC,QAAQ,CAAC;QAC5BF,sBAAsB,GAAGzC,KAAK;;KAErC,MAAM;MACHyC,sBAAsB,GAAGzC,KAAK;;IAElCO,YAAY,CAAC,IAAI,CAAC;GACrB;EACD,MAAMkG,gBAAgB,GAAG;IACrB,IAAIhE,sBAAsB,KAAKzC,KAAK,EAAE;MAClCyC,sBAAsB,GAAG7B,SAAS;;IAEtCL,YAAY,CAAC,KAAK,CAAC;GACtB;EAED,MAAM,GAAGmG,eAAe,CAAC,GAAGC,aAAa,CAAC9C,KAAK,IAAI3C,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAG2C,KAAK,EAAEzD,GAAG,CAACmG,QAAQ,CAAC,CAAC;EAEjF,MAAMK,SAAS,GAAGC,EAAE,CAChB,oBAAoB;;;EAGpB,8DAA8D,EAC9D;IACI,sBAAsB,EAAE,OAAO9F,OAAO,KAAK;GAC9C,CACJ;EAED,oBACIP,sDACQ+C,UAAU,EACTrC,MAAM,GAAGwF,eAAe,GAAG9F,SAAS;IACzCgG,SAAS,EAAEA,SAAS;sBACJ5G,KAAK;IACrBe,OAAO,EAAEE,WAAW;IACpBuE,cAAc,EAAE5B,kBAAkB;IAClCkD,YAAY,EAAEN,gBAAgB;IAC9BO,YAAY,EAAEN,gBAAgB;IAC9BO,IAAI,EAAC,KAAK;IACVnB,GAAG,EAAEA;KACP;AAEV,CAAC,CAAmE;;;;"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
|
3
|
+
const RowContext = /*#__PURE__*/React__default.createContext({
|
4
|
+
isHovered: false,
|
5
|
+
setIsHovered: () => {
|
6
|
+
/* empty */
|
7
|
+
},
|
8
|
+
rowIndex: 0
|
9
|
+
});
|
10
|
+
const useRowContext = () => React__default.useContext(RowContext);
|
11
|
+
|
12
|
+
export { RowContext, useRowContext };
|
13
|
+
//# sourceMappingURL=RowContext.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"RowContext.js","sources":["../../../../../../../../../src/components/Table3/components/rows/RowContext.tsx"],"sourcesContent":["import React from 'react';\n\ntype RowContextValue = {\n isHovered: boolean;\n setIsHovered: (value: boolean) => void;\n rowIndex: number;\n};\n\nexport const RowContext = React.createContext<RowContextValue>({\n isHovered: false,\n setIsHovered: () => {\n /* empty */\n },\n rowIndex: 0,\n});\n\nexport const useRowContext = () => React.useContext(RowContext);\n"],"names":["RowContext","React","createContext","isHovered","setIsHovered","rowIndex","useRowContext","useContext"],"mappings":";;MAQaA,UAAU,gBAAGC,cAAK,CAACC,aAAa,CAAkB;EAC3DC,SAAS,EAAE,KAAK;EAChBC,YAAY,EAAE;;GAEb;EACDC,QAAQ,EAAE;CACb;MAEYC,aAAa,GAAG,MAAML,cAAK,CAACM,UAAU,CAACP,UAAU;;;;"}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { useInView } from 'react-intersection-observer';
|
3
|
+
|
4
|
+
function SkeletonCell(props) {
|
5
|
+
const {
|
6
|
+
loadPage,
|
7
|
+
pageIndex,
|
8
|
+
table
|
9
|
+
} = props;
|
10
|
+
const {
|
11
|
+
ref,
|
12
|
+
inView
|
13
|
+
} = useInView({
|
14
|
+
threshold: 0,
|
15
|
+
triggerOnce: true,
|
16
|
+
initialInView: pageIndex === 0
|
17
|
+
});
|
18
|
+
React__default.useEffect(() => {
|
19
|
+
if (inView) {
|
20
|
+
loadPage(pageIndex, table.getState().sorting, table.getState().columnFilters, table.getState().globalFilter);
|
21
|
+
}
|
22
|
+
}, [inView]);
|
23
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
24
|
+
className: "border-grey-300 flex h-10 items-center border-b px-2",
|
25
|
+
ref: ref
|
26
|
+
}, /*#__PURE__*/React__default.createElement("span", {
|
27
|
+
className: "bg-grey-100 text-grey-700 h-4 w-full text-center text-xs"
|
28
|
+
}));
|
29
|
+
}
|
30
|
+
function SkeletonRow(props) {
|
31
|
+
const {
|
32
|
+
columns,
|
33
|
+
...otherProps
|
34
|
+
} = props;
|
35
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
36
|
+
className: "contents"
|
37
|
+
}, columns.map(column => /*#__PURE__*/React__default.createElement(SkeletonCell, Object.assign({
|
38
|
+
key: column.id
|
39
|
+
}, otherProps))));
|
40
|
+
}
|
41
|
+
|
42
|
+
export { SkeletonRow };
|
43
|
+
//# sourceMappingURL=SkeletonRow.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SkeletonRow.js","sources":["../../../../../../../../../src/components/Table3/components/rows/SkeletonRow.tsx"],"sourcesContent":["import React from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport { Table3LoadPageHandler } from '../../types';\nimport { Column as RTColumn, Table as RTable } from '@tanstack/react-table';\n\ntype SkeletonCellProps<TType = unknown> = {\n loadPage: Table3LoadPageHandler;\n pageIndex: number;\n table: RTable<TType>;\n};\nfunction SkeletonCell<TType = unknown>(props: SkeletonCellProps<TType>) {\n const { loadPage, pageIndex, table } = props;\n const { ref, inView } = useInView({\n threshold: 0,\n triggerOnce: true,\n initialInView: pageIndex === 0,\n });\n\n React.useEffect(() => {\n if (inView) {\n loadPage(pageIndex, table.getState().sorting, table.getState().columnFilters, table.getState().globalFilter);\n }\n }, [inView]);\n\n return (\n <div className=\"border-grey-300 flex h-10 items-center border-b px-2\" ref={ref}>\n <span className=\"bg-grey-100 text-grey-700 h-4 w-full text-center text-xs\" />\n </div>\n );\n}\n\nexport type SkeletonRowProps<TType = unknown> = {\n columns: RTColumn<TType, unknown>[];\n loadPage: Table3LoadPageHandler;\n pageIndex: number;\n table: RTable<TType>;\n};\n\nexport function SkeletonRow<TType = unknown>(props: SkeletonRowProps<TType>) {\n const { columns, ...otherProps } = props;\n\n return (\n <div className=\"contents\">\n {columns.map(column => (\n <SkeletonCell key={column.id} {...otherProps} />\n ))}\n </div>\n );\n}\n"],"names":["SkeletonCell","props","loadPage","pageIndex","table","ref","inView","useInView","threshold","triggerOnce","initialInView","React","useEffect","getState","sorting","columnFilters","globalFilter","className","SkeletonRow","columns","otherProps","map","column","key","id"],"mappings":";;;AAUA,SAASA,YAAY,CAAkBC,KAA+B;EAClE,MAAM;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;GAAO,GAAGH,KAAK;EAC5C,MAAM;IAAEI,GAAG;IAAEC;GAAQ,GAAGC,SAAS,CAAC;IAC9BC,SAAS,EAAE,CAAC;IACZC,WAAW,EAAE,IAAI;IACjBC,aAAa,EAAEP,SAAS,KAAK;GAChC,CAAC;EAEFQ,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIN,MAAM,EAAE;MACRJ,QAAQ,CAACC,SAAS,EAAEC,KAAK,CAACS,QAAQ,EAAE,CAACC,OAAO,EAAEV,KAAK,CAACS,QAAQ,EAAE,CAACE,aAAa,EAAEX,KAAK,CAACS,QAAQ,EAAE,CAACG,YAAY,CAAC;;GAEnH,EAAE,CAACV,MAAM,CAAC,CAAC;EAEZ,oBACIK;IAAKM,SAAS,EAAC,sDAAsD;IAACZ,GAAG,EAAEA;kBACvEM;IAAMM,SAAS,EAAC;IAA6D,CAC3E;AAEd;SASgBC,WAAW,CAAkBjB,KAA8B;EACvE,MAAM;IAAEkB,OAAO;IAAE,GAAGC;GAAY,GAAGnB,KAAK;EAExC,oBACIU;IAAKM,SAAS,EAAC;KACVE,OAAO,CAACE,GAAG,CAACC,MAAM,iBACfX,6BAACX,YAAY;IAACuB,GAAG,EAAED,MAAM,CAACE;KAAQJ,UAAU,EAC/C,CAAC,CACA;AAEd;;;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../../../../src/components/Table3/components/rows/styles.ts"],"sourcesContent":["export const rowHeightSizeEstimates = {\n short: 33,\n medium: 41,\n tall: 49,\n 'extra-tall': 57,\n};\n"],"names":["rowHeightSizeEstimates","short","medium","tall"],"mappings":"MAAaA,sBAAsB,GAAG;EAClCC,KAAK,EAAE,EAAE;EACTC,MAAM,EAAE,EAAE;EACVC,IAAI,EAAE,EAAE;EACR,YAAY,EAAE;;;;;"}
|