@economic/taco 2.16.0 → 2.17.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Table3/Table3.d.ts +0 -2
- package/dist/components/Table3/components/columns/cell/EditingControl.d.ts +1 -1
- package/dist/components/Table3/components/columns/header/Header.d.ts +1 -1
- package/dist/components/Table3/components/columns/styles.d.ts +2 -2
- package/dist/components/Table3/components/rows/Row.d.ts +3 -1
- package/dist/components/Table3/hooks/features/useSearch.d.ts +1 -3
- package/dist/components/Table3/hooks/useTable.d.ts +21 -20
- package/dist/components/Table3/types.d.ts +15 -18
- package/dist/components/Table3/util/scrolling.d.ts +2 -0
- package/dist/esm/packages/taco/src/components/Banner/Banner.js +2 -2
- package/dist/esm/packages/taco/src/components/Banner/Banner.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Calendar/Calendar.js +4 -4
- package/dist/esm/packages/taco/src/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Combobox/Combobox.js +3 -3
- package/dist/esm/packages/taco/src/components/Combobox/Combobox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +2 -1
- package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +6 -6
- package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +3 -3
- package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +7 -7
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Field/Field.js +2 -2
- package/dist/esm/packages/taco/src/components/Field/Field.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/Agreement/Item.js +2 -2
- package/dist/esm/packages/taco/src/components/Header/components/Agreement/Item.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js +4 -4
- package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/Link.js +2 -2
- package/dist/esm/packages/taco/src/components/Header/components/Link.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Icon/Icon.js +2 -2
- package/dist/esm/packages/taco/src/components/Icon/Icon.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Layout/components/Sidebar.js +2 -2
- package/dist/esm/packages/taco/src/components/Layout/components/Sidebar.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +6 -6
- package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/Item.js +4 -4
- package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Navigation/Navigation.js +2 -2
- package/dist/esm/packages/taco/src/components/Navigation/Navigation.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Navigation2/components/Link.js +3 -3
- package/dist/esm/packages/taco/src/components/Navigation2/components/Link.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Navigation2/components/Section.js +2 -2
- package/dist/esm/packages/taco/src/components/Navigation2/components/Section.js.map +1 -1
- package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js +1 -1
- package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Pagination/PageNumbers.js +2 -2
- package/dist/esm/packages/taco/src/components/Pagination/PageNumbers.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Pagination/Pagination.js +5 -5
- package/dist/esm/packages/taco/src/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Popover/Popover.js +2 -2
- package/dist/esm/packages/taco/src/components/Popover/Popover.js.map +1 -1
- package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +2 -2
- package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +8 -8
- package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select/useSelect.js +2 -2
- package/dist/esm/packages/taco/src/components/Select/useSelect.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/Select2.js +7 -7
- package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +8 -8
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Option.js +5 -5
- package/dist/esm/packages/taco/src/components/Select2/components/Option.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +9 -9
- package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +2 -2
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table/components/BaseTable.js +3 -3
- package/dist/esm/packages/taco/src/components/Table/components/BaseTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js +2 -2
- package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +10 -10
- package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table/util/renderColumn.js +2 -2
- package/dist/esm/packages/taco/src/components/Table/util/renderColumn.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js +32 -30
- package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js +6 -6
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +20 -16
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js +27 -3
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Footer.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Footer.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Group.js +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Group.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js +9 -9
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +37 -6
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js +12 -12
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js +7 -7
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Expansion.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Expansion.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js +2 -13
- package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js +32 -30
- package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/rows/SkeletonRow.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/rows/SkeletonRow.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +8 -6
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +15 -7
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +16 -16
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +1 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +10 -8
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Settings.js +8 -8
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Settings.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSearch.js +1 -2
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSearch.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useEditingStateListener.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useEditingStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +1 -49
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useCssVars.js +0 -2
- package/dist/esm/packages/taco/src/components/Table3/hooks/useCssVars.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +127 -109
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/strategies/virtualised.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/strategies/virtualised.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/util/scrolling.js +53 -0
- package/dist/esm/packages/taco/src/components/Table3/util/scrolling.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Tag/Tag.js +4 -4
- package/dist/esm/packages/taco/src/components/Tag/Tag.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Toast/Toaster.js +2 -2
- package/dist/esm/packages/taco/src/components/Toast/Toaster.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Tour/Tour.js +4 -4
- package/dist/esm/packages/taco/src/components/Tour/Tour.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Treeview/Treeview.js +2 -2
- package/dist/esm/packages/taco/src/components/Treeview/Treeview.js.map +1 -1
- package/dist/esm/packages/taco/src/index.js +2 -1
- package/dist/esm/packages/taco/src/index.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/types.js +10 -0
- package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnOrdering.js +8 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnOrdering.js.map +1 -0
- package/dist/esm/packages/taco/src/{components/Table3/hooks/features/useFontSize.js → primitives/Table/useTable/features/useTableFontSize.js} +3 -3
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableFontSize.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js +14 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActive.js +100 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActive.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowClick.js +30 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowClick.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGoto.js +9 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGoto.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowHeight.js +13 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowHeight.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowSelection.js +32 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowSelection.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableServerLoading.js +11 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableServerLoading.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableDataListener.js +15 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableDataListener.js.map +1 -0
- package/dist/esm/packages/taco/src/{components/Table3/hooks/listeners/useFilteringStateListener.js → primitives/Table/useTable/listeners/useTableFilterListener.js} +3 -3
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableFilterListener.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableFontSizeListener.js +40 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableFontSizeListener.js.map +1 -0
- package/dist/esm/packages/taco/src/{components/Table3/hooks/listeners/useRowSelectionListener.js → primitives/Table/useTable/listeners/useTableRowSelectionListener.js} +5 -6
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableRowSelectionListener.js.map +1 -0
- package/dist/esm/packages/taco/src/{components/Table3/hooks/listeners/useServerLoadingListener.js → primitives/Table/useTable/listeners/useTableServerLoadingListener.js} +3 -3
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableServerLoadingListener.js.map +1 -0
- package/dist/esm/packages/taco/src/{components/Table3/hooks/listeners/useShortcutsListener.js → primitives/Table/useTable/listeners/useTableShortcutsListener.js} +7 -7
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableShortcutsListener.js.map +1 -0
- package/dist/esm/packages/taco/src/{components/Table3/hooks/listeners/useSortingStateListener.js → primitives/Table/useTable/listeners/useTableSortingListener.js} +6 -4
- package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSortingListener.js.map +1 -0
- package/dist/esm/packages/taco/src/{components/Table3/hooks/features/useColumnOrdering.js → primitives/Table/useTable/util/columns.js} +24 -15
- package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js.map +1 -0
- package/dist/esm/packages/taco/src/types.js +6 -0
- package/dist/esm/packages/taco/src/types.js.map +1 -0
- package/dist/esm/packages/taco/src/utils/date.js +0 -1
- package/dist/esm/packages/taco/src/utils/date.js.map +1 -1
- package/dist/primitives/Table/types.d.ts +35 -0
- package/dist/primitives/Table/useTable/features/useTableColumnOrdering.d.ts +3 -0
- package/dist/primitives/Table/useTable/features/useTableFontSize.d.ts +7 -0
- package/dist/primitives/Table/useTable/features/useTablePrinting.d.ts +7 -0
- package/dist/primitives/Table/useTable/features/useTableRowActive.d.ts +12 -0
- package/dist/primitives/Table/useTable/features/useTableRowClick.d.ts +7 -0
- package/dist/primitives/Table/useTable/features/useTableRowGoto.d.ts +5 -0
- package/dist/primitives/Table/useTable/features/useTableRowHeight.d.ts +7 -0
- package/dist/primitives/Table/useTable/features/useTableRowSelection.d.ts +6 -0
- package/dist/primitives/Table/useTable/features/useTableServerLoading.d.ts +6 -0
- package/dist/primitives/Table/useTable/listeners/useTableDataListener.d.ts +2 -0
- package/dist/primitives/Table/useTable/listeners/useTableFilterListener.d.ts +3 -0
- package/dist/primitives/Table/useTable/listeners/useTableFontSizeListener.d.ts +2 -0
- package/dist/primitives/Table/useTable/listeners/useTableRowSelectionListener.d.ts +3 -0
- package/dist/primitives/Table/useTable/listeners/useTableServerLoadingListener.d.ts +3 -0
- package/dist/primitives/Table/useTable/listeners/useTableShortcutsListener.d.ts +3 -0
- package/dist/primitives/Table/useTable/listeners/useTableSortingListener.d.ts +3 -0
- package/dist/primitives/Table/useTable/util/columns.d.ts +4 -0
- package/dist/taco.cjs.development.js +834 -712
- 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/types.d.ts +5 -0
- package/package.json +3 -3
- package/types.json +11267 -13766
- package/dist/components/Table3/hooks/features/useColumnOrdering.d.ts +0 -6
- package/dist/components/Table3/hooks/features/useCurrentRow.d.ts +0 -11
- package/dist/components/Table3/hooks/features/useFontSize.d.ts +0 -7
- package/dist/components/Table3/hooks/features/usePauseHoverState.d.ts +0 -6
- package/dist/components/Table3/hooks/features/usePrinting.d.ts +0 -8
- package/dist/components/Table3/hooks/features/useRowClick.d.ts +0 -6
- package/dist/components/Table3/hooks/features/useRowGoto.d.ts +0 -5
- package/dist/components/Table3/hooks/features/useRowHeight.d.ts +0 -7
- package/dist/components/Table3/hooks/features/useRowSelection.d.ts +0 -6
- package/dist/components/Table3/hooks/listeners/useCurrentRowListener.d.ts +0 -2
- package/dist/components/Table3/hooks/listeners/useFilteringStateListener.d.ts +0 -3
- package/dist/components/Table3/hooks/listeners/useRowSelectionListener.d.ts +0 -3
- package/dist/components/Table3/hooks/listeners/useServerLoadingListener.d.ts +0 -3
- package/dist/components/Table3/hooks/listeners/useShortcutsListener.d.ts +0 -3
- package/dist/components/Table3/hooks/listeners/useSortingStateListener.d.ts +0 -3
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnOrdering.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useCurrentRow.js +0 -93
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useCurrentRow.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useFontSize.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePauseHoverState.js +0 -22
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePauseHoverState.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePrinting.js +0 -14
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePrinting.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowClick.js +0 -25
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowClick.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowGoto.js +0 -9
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowGoto.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowHeight.js +0 -27
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowHeight.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowSelection.js +0 -32
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useRowSelection.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useCurrentRowListener.js +0 -15
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useCurrentRowListener.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useFilteringStateListener.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useRowSelectionListener.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useServerLoadingListener.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useShortcutsListener.js.map +0 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSortingStateListener.js.map +0 -1
@@ -1 +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 { LastCellIndex, focusableSelector, getColumnIndex } from '../../util/editing';\n\nconst FOCUS_MANAGER_OPTIONS = {\n tabbable: true,\n // Filter out all focusable elelemnts which are not in current row\n accept: (element: Element) => !!element.closest('[role=\"row\"][data-current=\"true\"]'),\n};\n\ntype RowProps<TType = unknown> = Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'onDrop'> & {\n index: number;\n isLastRow: boolean;\n measureRef: (el: HTMLElement | null) => void;\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 focusManager = useFocusManager();\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 const isFirstRow = props.index === 0;\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 // tab behaviour is consistent across normal mode and edit mode, handle it here\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.isDefaultPrevented() || event.isPropagationStopped()) {\n return;\n }\n\n if (event.key === 'Tab') {\n tableMeta.hoverState.pause(true);\n let focusedElement: Element;\n\n if (event.shiftKey) {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no previous elements to focus, go up a row or go outside the table\n if (!isFirstRow) {\n event.preventDefault();\n tableMeta.currentRow.setCurrentRowIndex(props.index - 1);\n setTimeout(() => focusManager.focusLast(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow) {\n event.preventDefault();\n tableMeta.currentRow.setCurrentRowIndex(props.index + 1);\n setTimeout(() => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n }\n }\n };\n const hasError = !!Object.keys(tableMeta.validation.errors?.[props.row.id] ?? {}).length;\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 'data-invalid': hasError,\n draggable: tableMeta.rowDrag.isEnabled,\n index: props.index,\n onClick: tableMeta.rowClick.handleClick,\n onDrop: tableMeta.rowDrop.isEnabled ? tableMeta.rowDrop.handleDrop : undefined,\n onKeyDown: handleKeyDown,\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 isFirstRow={isFirstRow}\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(\n () => ({ isHovered, setIsHovered, rowIndex: props.index, hasError }),\n [isHovered, hasError, props.index]\n );\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\nexport const lastCellIndex = new LastCellIndex();\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 { isFirstRow, isLastRow, onKeyDown, setCurrentRowIndex, virtualiser, ...attributes } = props;\n const focusManager = useFocusManager();\n const tableMeta = props.table.options.meta as TableMeta<unknown>;\n\n const handleClickCapture = (event: React.FocusEvent) => {\n lastCellIndex.value = getColumnIndex(event.target);\n };\n\n const handleArrowLeftKey = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowLeft') {\n // We 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 tableMeta.hoverState.pause(true);\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(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no previous elements to focus, go up a row (if there are rows above)\n if (!isFirstRow || !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.hoverState.pause(true);\n tableMeta.currentRow.setCurrentRowIndex(props.index - 1);\n setTimeout(() => {\n focusedElement = focusManager.focusLast(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\n }\n }\n }\n };\n\n const handleArrowRightKey = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowRight') {\n // We 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 tableMeta.hoverState.pause(true);\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(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow && !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.hoverState.pause(true);\n tableMeta.currentRow.setCurrentRowIndex(props.index + 1);\n setTimeout(() => {\n focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\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 (\n event.isDefaultPrevented() ||\n event.isPropagationStopped() ||\n tableMeta.editing.detailModeEditing ||\n tableMeta.shortcutsState.isPaused\n ) {\n return;\n }\n\n onKeyDown(event); // handles tab behaviour\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 // When table in searching state, whe should prevent editing control to be focused, because it will cause search field to loose focus.\n if (tableMeta.currentRow.currentRowIndex === props.index && !tableMeta.search.isSearching) {\n if (lastCellIndex.value !== null) {\n const lastCellElement = props.tableRef.current?.querySelector(\n `[role=\"row\"][data-current=\"true\"] [data-column-index=\"${lastCellIndex.value}\"]`\n );\n const focusableElement = lastCellElement?.querySelector(focusableSelector);\n if (focusableElement) {\n focusableElement.focus();\n // if we found a cell but it doesn't contain focusable element, then we'll focus the first one in a row.\n } else if (lastCellElement) {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n }\n } else {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\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, tableMeta.search.isSearching]);\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, measureRef, 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 measure the first cell (since the row has display: contents) so that the virtualiser height is correct\n React.useEffect(() => {\n const firstCell = ref.current?.querySelector('[role=cell]:first-child');\n\n if (firstCell) {\n measureRef(firstCell as HTMLElement);\n }\n }, [ref.current]);\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 // do this in the next frame, otherwise it remounts the row and prevents row actions on hover from being clickable\n requestAnimationFrame(() => 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 [isDraggedOver, 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 data-dragged-over={isDraggedOver}\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":["FOCUS_MANAGER_OPTIONS","tabbable","accept","element","closest","Row","props","focusManager","useFocusManager","tableMeta","table","options","meta","isCurrentRow","currentRow","currentRowIndex","index","isDraggingRow","rowDrag","dragging","row","id","isFirstRow","isHovered","setIsHovered","React","useState","handleKeyDown","event","isDefaultPrevented","isPropagationStopped","key","hoverState","pause","focusedElement","shiftKey","focusPrevious","preventDefault","setCurrentRowIndex","setTimeout","focusLast","focusNext","isLastRow","focusFirst","hasError","Object","keys","_tableMeta$validation","_tableMeta$validation2","validation","errors","length","memoedProps","isEnabled","undefined","getIsSelected","draggable","onClick","rowClick","handleClick","onDrop","rowDrop","handleDrop","onKeyDown","output","MemoedRow","editing","isEditing","isPaused","EditingRow","contextValue","useMemo","rowIndex","RowContext","Provider","value","lastCellIndex","LastCellIndex","previouslyHoveredIndex","unhoverPreviousRow","tableRef","_tableRef$current","mouseoutEvent","MouseEvent","view","window","bubbles","cancelable","previouslyHovered","current","querySelector","dispatchEvent","virtualiser","attributes","handleClickCapture","getColumnIndex","target","handleArrowLeftKey","stopPropagation","ctrlKey","metaKey","blur","currentTarget","contains","handleArrowRightKey","useEffect","detailModeEditing","shortcutsState","search","isSearching","_props$tableRef$curre","lastCellElement","focusableElement","focusableSelector","focus","onClickCapture","clickableElements","memo","_1","measureRef","ref","useRef","useRowContext","firstCell","_ref$current","requestAnimationFrame","_ref$current2","clickedElement","includes","tagName","toLowerCase","map","tag","join","original","handleMouseEnter","handleMouseLeave","isDraggedOver","dropTargetProps","useDropTarget","className","cn","onMouseEnter","onMouseLeave","role"],"mappings":"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"}
|
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 { LastCellIndex, focusableSelector, getColumnIndex } from '../../util/editing';\n\nconst FOCUS_MANAGER_OPTIONS = {\n tabbable: true,\n // Filter out all focusable elelemnts which are not in current row\n accept: (element: Element) => !!element.closest('[role=\"row\"][data-current=\"true\"]'),\n};\n\ntype RowProps<TType = unknown> = Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'onDrop'> & {\n index: number;\n isLastRow: boolean;\n measureRef: (el: HTMLElement | null) => void;\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 focusManager = useFocusManager();\n const tableMeta = props.table.options.meta as TableMeta<TType>;\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === props.index;\n const isDraggingRow = tableMeta.rowDrag.dragging[props.row.id];\n const isFirstRow = props.index === 0;\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 // tab behaviour is consistent across normal mode and edit mode, handle it here\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.isDefaultPrevented() || event.isPropagationStopped()) {\n return;\n }\n\n if (event.key === 'Tab') {\n tableMeta.rowActive.setHoverStatePaused(true);\n let focusedElement: Element;\n\n if (event.shiftKey) {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no previous elements to focus, go up a row or go outside the table\n if (!isFirstRow) {\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(props.index - 1);\n setTimeout(() => focusManager.focusLast(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow) {\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(props.index + 1);\n setTimeout(() => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n }\n }\n };\n const hasError = !!Object.keys(tableMeta.validation.errors?.[props.row.id] ?? {}).length;\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 data: props.row.original,\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': isActiveRow,\n 'data-selected': props.row.getIsSelected(),\n 'data-invalid': hasError,\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} onKeyDown={handleKeyDown} />;\n\n if (tableMeta.editing.isEditing && (isActiveRow || (isHovered && !tableMeta.rowActive.isHoverStatePaused))) {\n output = (\n <EditingRow\n {...props}\n {...memoedProps}\n isFirstRow={isFirstRow}\n setActiveRowIndex={tableMeta.rowActive.setRowActiveIndex}\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(\n () => ({ isHovered, setIsHovered, rowIndex: props.index, hasError }),\n [isHovered, hasError, props.index]\n );\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\nexport const lastCellIndex = new LastCellIndex();\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 { isFirstRow, isLastRow, onKeyDown, setActiveRowIndex, virtualiser, ...attributes } = props;\n const focusManager = useFocusManager();\n const tableMeta = props.table.options.meta as TableMeta<unknown>;\n\n const handleClickCapture = (event: React.FocusEvent) => {\n lastCellIndex.value = getColumnIndex(event.target);\n };\n\n const handleNavigationBackwards = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowLeft' || (event.key === 'Tab' && event.shiftKey)) {\n // We 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 tableMeta.rowActive.setHoverStatePaused(true);\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(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no previous elements to focus, go up a row (if there are rows above)\n if (!isFirstRow || !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n tableMeta.rowActive.setRowActiveIndex(props.index - 1);\n setTimeout(() => {\n focusedElement = focusManager.focusLast(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\n }\n }\n }\n };\n\n const handleNavigationForward = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowRight' || (event.key === 'Tab' && !event.shiftKey)) {\n // We 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 tableMeta.rowActive.setHoverStatePaused(true);\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(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow && !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n tableMeta.rowActive.setRowActiveIndex(props.index + 1);\n setTimeout(() => {\n focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\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.rowActive.isHoverStatePaused) {\n unhoverPreviousRow(props.tableRef);\n }\n }, [tableMeta.rowActive.isHoverStatePaused]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (\n event.isDefaultPrevented() ||\n event.isPropagationStopped() ||\n tableMeta.editing.detailModeEditing ||\n tableMeta.shortcutsState.isPaused\n ) {\n return;\n }\n\n handleNavigationBackwards(event);\n handleNavigationForward(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 // When table in searching state, whe should prevent editing control to be focused, because it will cause search field to loose focus.\n if (tableMeta.rowActive.rowActiveIndex === props.index && !tableMeta.search.isSearching) {\n if (lastCellIndex.value !== null) {\n const lastCellElement = props.tableRef.current?.querySelector(\n `[role=\"row\"][data-current=\"true\"] [data-column-index=\"${lastCellIndex.value}\"]`\n );\n const focusableElement = lastCellElement?.querySelector(focusableSelector);\n if (focusableElement) {\n focusableElement.focus();\n // if we found a cell but it doesn't contain focusable element, then we'll focus the first one in a row.\n } else if (lastCellElement) {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n }\n } else {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\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.rowActive.rowActiveIndex, tableMeta.search.isSearching]);\n\n return <MemoedRow {...attributes} onClickCapture={handleClickCapture} onKeyDown={handleKeyDown} />;\n}\n\n// Memoization\n\nexport type MemoedRowProps<TType = unknown> = Omit<RowProps<TType>, 'onClick'> & {\n data: TType;\n 'aria-grabbed'?: boolean;\n 'data-current': boolean;\n 'data-selected': boolean;\n draggable: boolean;\n index: number;\n onClick: (event: React.MouseEvent<HTMLDivElement>, data: unknown) => void;\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 {\n data,\n index,\n isLastRow: _1,\n measureRef,\n onClick,\n onClickCapture,\n onDrop,\n row,\n table,\n tableRef,\n ...attributes\n } = 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 measure the first cell (since the row has display: contents) so that the virtualiser height is correct\n React.useEffect(() => {\n const firstCell = ref.current?.querySelector('[role=cell]:first-child');\n\n if (firstCell) {\n measureRef(firstCell as HTMLElement);\n }\n }, [ref.current]);\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 // do this in the next frame, otherwise it remounts the row and prevents row actions on hover from being clickable\n requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(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(event, data);\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 [isDraggedOver, 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 data-dragged-over={isDraggedOver}\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":["FOCUS_MANAGER_OPTIONS","tabbable","accept","element","closest","Row","props","focusManager","useFocusManager","tableMeta","table","options","meta","isActiveRow","rowActive","rowActiveIndex","index","isDraggingRow","rowDrag","dragging","row","id","isFirstRow","isHovered","setIsHovered","React","useState","handleKeyDown","event","isDefaultPrevented","isPropagationStopped","key","setHoverStatePaused","focusedElement","shiftKey","focusPrevious","preventDefault","setRowActiveIndex","setTimeout","focusLast","focusNext","isLastRow","focusFirst","hasError","Object","keys","_tableMeta$validation","_tableMeta$validation2","validation","errors","length","memoedProps","data","original","isEnabled","undefined","getIsSelected","draggable","onClick","rowClick","handleClick","onDrop","rowDrop","handleDrop","output","MemoedRow","onKeyDown","editing","isEditing","isHoverStatePaused","EditingRow","setActiveRowIndex","contextValue","useMemo","rowIndex","RowContext","Provider","value","lastCellIndex","LastCellIndex","previouslyHoveredIndex","unhoverPreviousRow","tableRef","_tableRef$current","mouseoutEvent","MouseEvent","view","window","bubbles","cancelable","previouslyHovered","current","querySelector","dispatchEvent","virtualiser","attributes","handleClickCapture","getColumnIndex","target","handleNavigationBackwards","stopPropagation","ctrlKey","metaKey","blur","currentTarget","contains","handleNavigationForward","useEffect","detailModeEditing","shortcutsState","isPaused","search","isSearching","_props$tableRef$curre","lastCellElement","focusableElement","focusableSelector","focus","onClickCapture","clickableElements","memo","_1","measureRef","ref","useRef","useRowContext","firstCell","_ref$current","requestAnimationFrame","_ref$current2","clickedElement","includes","tagName","toLowerCase","map","tag","join","handleMouseEnter","handleMouseLeave","isDraggedOver","dropTargetProps","useDropTarget","className","cn","onMouseEnter","onMouseLeave","role"],"mappings":"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"}
|
@@ -34,9 +34,9 @@ function SkeletonRow(props) {
|
|
34
34
|
} = props;
|
35
35
|
return /*#__PURE__*/React__default.createElement("div", {
|
36
36
|
className: "contents"
|
37
|
-
}, columns.map(column => /*#__PURE__*/React__default.createElement(SkeletonCell, Object.assign({
|
37
|
+
}, columns.map(column => ( /*#__PURE__*/React__default.createElement(SkeletonCell, Object.assign({
|
38
38
|
key: column.id
|
39
|
-
}, otherProps))));
|
39
|
+
}, otherProps)))));
|
40
40
|
}
|
41
41
|
|
42
42
|
export { SkeletonRow };
|
@@ -1 +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,YAAYA,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,WAAWA,CAAkBjB,KAA8B;EACvE,MAAM;IAAEkB,OAAO;IAAE,GAAGC;GAAY,GAAGnB,KAAK;EAExC,oBACIU;IAAKM,SAAS,EAAC;KACVE,OAAO,CAACE,GAAG,CAACC,MAAM,
|
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,YAAYA,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,WAAWA,CAAkBjB,KAA8B;EACvE,MAAM;IAAEkB,OAAO;IAAE,GAAGC;GAAY,GAAGnB,KAAK;EAExC,oBACIU;IAAKM,SAAS,EAAC;KACVE,OAAO,CAACE,GAAG,CAACC,MAAM,mBACfX,6BAACX,YAAY;IAACuB,GAAG,EAAED,MAAM,CAACE;KAAQJ,UAAU,EAAI,CACnD,CAAC,CACA;AAEd;;;;"}
|
@@ -5,8 +5,10 @@ import { useLocalization } from '../../../Provider/Localization.js';
|
|
5
5
|
import { Checkbox } from '../../../Checkbox/Checkbox.js';
|
6
6
|
import { Input } from '../../../Input/Input.js';
|
7
7
|
import { Popover } from '../../../Popover/Popover.js';
|
8
|
+
import { COLUMN_ID } from '../columns/internal/Actions.js';
|
8
9
|
import { isInternalColumn } from '../../util/columns.js';
|
9
|
-
import { ensureOrdering } from '
|
10
|
+
import { ensureOrdering } from '../../../../primitives/Table/useTable/util/columns.js';
|
11
|
+
import { COLUMN_ID as COLUMN_ID$1 } from '../columns/internal/EditingActions.js';
|
10
12
|
import { Container } from '../../../../primitives/Sortable/components/Container.js';
|
11
13
|
import { arrayMove } from '@dnd-kit/sortable';
|
12
14
|
import { Item } from '../../../../primitives/Sortable/components/Item.js';
|
@@ -69,17 +71,17 @@ function ColumnSettingsPopover(props) {
|
|
69
71
|
})) {
|
70
72
|
return;
|
71
73
|
}
|
72
|
-
table.setColumnOrder(currentOrder => ensureOrdering(allColumns, arrayMove(currentOrder, currentOrder.findIndex(c => c === activeId), currentOrder.findIndex(c => c === overId))));
|
74
|
+
table.setColumnOrder(currentOrder => ensureOrdering(allColumns, [COLUMN_ID, COLUMN_ID$1], arrayMove(currentOrder, currentOrder.findIndex(c => c === activeId), currentOrder.findIndex(c => c === overId))));
|
73
75
|
};
|
74
76
|
return /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
|
75
77
|
anchor: trigger
|
76
78
|
}), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
|
77
79
|
className: "flex max-w-sm flex-col gap-2"
|
78
|
-
}, table.options.enableHiding ? /*#__PURE__*/React__default.createElement(Input, {
|
80
|
+
}, table.options.enableHiding ? ( /*#__PURE__*/React__default.createElement(Input, {
|
79
81
|
onChange: event => setQuery(event.target.value),
|
80
82
|
placeholder: texts.table3.columnSettings.search,
|
81
83
|
value: query
|
82
|
-
}) : null, tableMeta.columnOrdering.isEnabled && columns.length && !(query !== null && query !== void 0 && query.length) ? /*#__PURE__*/React__default.createElement(Container, {
|
84
|
+
})) : null, tableMeta.columnOrdering.isEnabled && columns.length && !(query !== null && query !== void 0 && query.length) ? ( /*#__PURE__*/React__default.createElement(Container, {
|
83
85
|
reorder: handleReorder
|
84
86
|
}, /*#__PURE__*/React__default.createElement(List, {
|
85
87
|
id: "columns",
|
@@ -95,12 +97,12 @@ function ColumnSettingsPopover(props) {
|
|
95
97
|
column: column,
|
96
98
|
draggable: (_column$columnDef$met5 = column.columnDef.meta) === null || _column$columnDef$met5 === void 0 ? void 0 : _column$columnDef$met5.enableOrdering
|
97
99
|
}));
|
98
|
-
}))) : /*#__PURE__*/React__default.createElement("div", {
|
100
|
+
})))) : ( /*#__PURE__*/React__default.createElement("div", {
|
99
101
|
className: listClassName
|
100
102
|
}, columns.length ? columns.map(column => /*#__PURE__*/React__default.createElement(Column, {
|
101
103
|
column: column,
|
102
104
|
key: column.id
|
103
|
-
})) : texts.table3.columnSettings.noResults))));
|
105
|
+
})) : texts.table3.columnSettings.noResults)))));
|
104
106
|
}
|
105
107
|
|
106
108
|
export { ColumnSettingsPopover };
|
package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ColumnSettings.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/ColumnSettings.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { isInternalColumn } from '../../util/columns';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Checkbox } from '../../../Checkbox/Checkbox';\nimport { Popover, PopoverProps } from '../../../Popover/Popover';\nimport { Input } from '../../../Input/Input';\nimport * as SortablePrimitive from '../../../../primitives/Sortable/Sortable';\nimport { Icon } from '../../../Icon/Icon';\nimport { ensureOrdering } from '../../hooks/features/useColumnOrdering';\n\ntype ColumnProps<TType = unknown> = React.HTMLAttributes<HTMLDivElement> & {\n column: RTColumn<TType, unknown>;\n draggable?: boolean;\n};\n\nconst Column = React.forwardRef(function Column<TType = unknown>(props: ColumnProps<TType>, ref: React.Ref<HTMLDivElement>) {\n const { column, draggable = false, ...dragAttributes } = props;\n const canHide = column.getCanHide();\n\n const className = cn('group/column flex items-center gap-x-2 rounded py-1 px-2', {\n 'hover:bg-grey-200': canHide || draggable,\n 'hover:cursor-pointer': canHide,\n 'active:cursor-move active:bg-grey-300': draggable,\n });\n\n const attributes = draggable ? dragAttributes : undefined;\n const isVisible = column.getIsVisible();\n\n const parentText = column.parent ? column.parent?.columnDef.meta?.header : null;\n\n return (\n <div {...attributes} key={column.id} className={className} onClick={() => column.toggleVisibility(!isVisible)} ref={ref}>\n {draggable ? <Icon name=\"drag\" className=\"text-grey-500 group-hover/column:text-grey-700 -mx-2 !h-5\" /> : null}\n <span className=\"flex-grow truncate\">\n {column.columnDef.meta?.header}\n {parentText ? <span className=\"italic\"> ({parentText})</span> : null}\n </span>\n {canHide ? <Checkbox checked={isVisible} onChange={() => column.toggleVisibility(!isVisible)} /> : null}\n </div>\n );\n});\n\nexport type ColumnSettingsProps<TType = unknown> = PopoverProps & {\n table: RTable<TType>;\n};\n\nexport function ColumnSettingsPopover<TType = unknown>(props: ColumnSettingsProps<TType>) {\n const { table, trigger, ...popoverProps } = props;\n const { texts } = useLocalization();\n const [query, setQuery] = React.useState('');\n const allColumns = table.getAllLeafColumns();\n const tableMeta = table.options.meta as TableMeta<TType>;\n const columns = React.useMemo(\n () =>\n allColumns\n .filter(column => !isInternalColumn(column.id))\n .filter(column =>\n query?.length\n ? column.columnDef.meta?.header.toLowerCase().includes(query.toLowerCase()) ||\n column.parent?.columnDef.meta?.header.toLowerCase().includes(query.toLowerCase())\n : true\n ),\n [allColumns, query]\n );\n\n const listClassName = 'flex max-h-64 flex-col gap-y-px overflow-auto';\n\n const handleReorder = (activeId, overId) => {\n if (columns.find(column => column.id === overId && column.columnDef.meta?.enableOrdering === false)) {\n return;\n }\n\n table.setColumnOrder(currentOrder =>\n ensureOrdering(\n allColumns,\n SortablePrimitive.arrayMove(\n currentOrder,\n currentOrder.findIndex(c => c === activeId),\n currentOrder.findIndex(c => c === overId)\n )\n )\n );\n };\n\n return (\n <Popover {...popoverProps} anchor={trigger}>\n <Popover.Content>\n <div className=\"flex max-w-sm flex-col gap-2\">\n {table.options.enableHiding ? (\n <Input\n onChange={event => setQuery(event.target.value)}\n placeholder={texts.table3.columnSettings.search}\n value={query}\n />\n ) : null}\n {tableMeta.columnOrdering.isEnabled && columns.length && !query?.length ? (\n <SortablePrimitive.Container reorder={handleReorder}>\n <SortablePrimitive.List id=\"columns\" className={listClassName}>\n {columns.map(column => (\n <SortablePrimitive.Item\n key={column.id}\n id={column.id}\n disabled={!column.columnDef.meta?.enableOrdering}\n asChild>\n <Column column={column as any} draggable={column.columnDef.meta?.enableOrdering} />\n </SortablePrimitive.Item>\n ))}\n </SortablePrimitive.List>\n </SortablePrimitive.Container>\n ) : (\n <div className={listClassName}>\n {columns.length\n ? columns.map(column => <Column column={column as any} key={column.id} />)\n : texts.table3.columnSettings.noResults}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover>\n );\n}\n"],"names":["Column","React","forwardRef","props","ref","column","draggable","dragAttributes","canHide","getCanHide","className","cn","attributes","undefined","isVisible","getIsVisible","parentText","parent","_column$parent","_column$parent$column","columnDef","meta","header","key","id","onClick","toggleVisibility","Icon","name","_column$columnDef$met","Checkbox","checked","onChange","ColumnSettingsPopover","table","trigger","popoverProps","texts","useLocalization","query","setQuery","useState","allColumns","getAllLeafColumns","tableMeta","options","columns","useMemo","filter","isInternalColumn","_column$columnDef$met2","_column$parent2","_column$parent2$colum","length","toLowerCase","includes","listClassName","handleReorder","activeId","overId","find","_column$columnDef$met3","enableOrdering","setColumnOrder","currentOrder","ensureOrdering","SortablePrimitive","findIndex","c","Popover","anchor","Content","enableHiding","Input","event","target","value","placeholder","table3","columnSettings","search","columnOrdering","isEnabled","reorder","map","_column$columnDef$met4","_column$columnDef$met5","disabled","asChild","noResults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ColumnSettings.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/ColumnSettings.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { isInternalColumn } from '../../util/columns';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Checkbox } from '../../../Checkbox/Checkbox';\nimport { Popover, PopoverProps } from '../../../Popover/Popover';\nimport { Input } from '../../../Input/Input';\nimport * as SortablePrimitive from '../../../../primitives/Sortable/Sortable';\nimport { Icon } from '../../../Icon/Icon';\nimport { ensureOrdering } from '../../../../primitives/Table/useTable/util/columns';\nimport { COLUMN_ID as ACTIONS_COLUMN_ID } from '../../components/columns/internal/Actions';\nimport { COLUMN_ID as EDITING_ACTIONS_COLUMN_ID } from '../../components/columns/internal/EditingActions';\n\ntype ColumnProps<TType = unknown> = React.HTMLAttributes<HTMLDivElement> & {\n column: RTColumn<TType, unknown>;\n draggable?: boolean;\n};\n\nconst Column = React.forwardRef(function Column<TType = unknown>(props: ColumnProps<TType>, ref: React.Ref<HTMLDivElement>) {\n const { column, draggable = false, ...dragAttributes } = props;\n const canHide = column.getCanHide();\n\n const className = cn('group/column flex items-center gap-x-2 rounded py-1 px-2', {\n 'hover:bg-grey-200': canHide || draggable,\n 'hover:cursor-pointer': canHide,\n 'active:cursor-move active:bg-grey-300': draggable,\n });\n\n const attributes = draggable ? dragAttributes : undefined;\n const isVisible = column.getIsVisible();\n\n const parentText = column.parent ? column.parent?.columnDef.meta?.header : null;\n\n return (\n <div {...attributes} key={column.id} className={className} onClick={() => column.toggleVisibility(!isVisible)} ref={ref}>\n {draggable ? <Icon name=\"drag\" className=\"text-grey-500 group-hover/column:text-grey-700 -mx-2 !h-5\" /> : null}\n <span className=\"flex-grow truncate\">\n {column.columnDef.meta?.header}\n {parentText ? <span className=\"italic\"> ({parentText})</span> : null}\n </span>\n {canHide ? <Checkbox checked={isVisible} onChange={() => column.toggleVisibility(!isVisible)} /> : null}\n </div>\n );\n});\n\nexport type ColumnSettingsProps<TType = unknown> = PopoverProps & {\n table: RTable<TType>;\n};\n\nexport function ColumnSettingsPopover<TType = unknown>(props: ColumnSettingsProps<TType>) {\n const { table, trigger, ...popoverProps } = props;\n const { texts } = useLocalization();\n const [query, setQuery] = React.useState('');\n const allColumns = table.getAllLeafColumns();\n const tableMeta = table.options.meta as TableMeta<TType>;\n const columns = React.useMemo(\n () =>\n allColumns\n .filter(column => !isInternalColumn(column.id))\n .filter(column =>\n query?.length\n ? column.columnDef.meta?.header.toLowerCase().includes(query.toLowerCase()) ||\n column.parent?.columnDef.meta?.header.toLowerCase().includes(query.toLowerCase())\n : true\n ),\n [allColumns, query]\n );\n\n const listClassName = 'flex max-h-64 flex-col gap-y-px overflow-auto';\n\n const handleReorder = (activeId, overId) => {\n if (columns.find(column => column.id === overId && column.columnDef.meta?.enableOrdering === false)) {\n return;\n }\n\n table.setColumnOrder(currentOrder =>\n ensureOrdering(\n allColumns,\n [ACTIONS_COLUMN_ID, EDITING_ACTIONS_COLUMN_ID],\n SortablePrimitive.arrayMove(\n currentOrder,\n currentOrder.findIndex(c => c === activeId),\n currentOrder.findIndex(c => c === overId)\n )\n )\n );\n };\n\n return (\n <Popover {...popoverProps} anchor={trigger}>\n <Popover.Content>\n <div className=\"flex max-w-sm flex-col gap-2\">\n {table.options.enableHiding ? (\n <Input\n onChange={event => setQuery(event.target.value)}\n placeholder={texts.table3.columnSettings.search}\n value={query}\n />\n ) : null}\n {tableMeta.columnOrdering.isEnabled && columns.length && !query?.length ? (\n <SortablePrimitive.Container reorder={handleReorder}>\n <SortablePrimitive.List id=\"columns\" className={listClassName}>\n {columns.map(column => (\n <SortablePrimitive.Item\n key={column.id}\n id={column.id}\n disabled={!column.columnDef.meta?.enableOrdering}\n asChild>\n <Column column={column as any} draggable={column.columnDef.meta?.enableOrdering} />\n </SortablePrimitive.Item>\n ))}\n </SortablePrimitive.List>\n </SortablePrimitive.Container>\n ) : (\n <div className={listClassName}>\n {columns.length\n ? columns.map(column => <Column column={column as any} key={column.id} />)\n : texts.table3.columnSettings.noResults}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover>\n );\n}\n"],"names":["Column","React","forwardRef","props","ref","column","draggable","dragAttributes","canHide","getCanHide","className","cn","attributes","undefined","isVisible","getIsVisible","parentText","parent","_column$parent","_column$parent$column","columnDef","meta","header","key","id","onClick","toggleVisibility","Icon","name","_column$columnDef$met","Checkbox","checked","onChange","ColumnSettingsPopover","table","trigger","popoverProps","texts","useLocalization","query","setQuery","useState","allColumns","getAllLeafColumns","tableMeta","options","columns","useMemo","filter","isInternalColumn","_column$columnDef$met2","_column$parent2","_column$parent2$colum","length","toLowerCase","includes","listClassName","handleReorder","activeId","overId","find","_column$columnDef$met3","enableOrdering","setColumnOrder","currentOrder","ensureOrdering","ACTIONS_COLUMN_ID","EDITING_ACTIONS_COLUMN_ID","SortablePrimitive","findIndex","c","Popover","anchor","Content","enableHiding","Input","event","target","value","placeholder","table3","columnSettings","search","columnOrdering","isEnabled","reorder","map","_column$columnDef$met4","_column$columnDef$met5","disabled","asChild","noResults"],"mappings":"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"}
|
package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js
CHANGED
@@ -98,6 +98,12 @@ function FiltersButton(props) {
|
|
98
98
|
setFilters([]);
|
99
99
|
setPlaceholderCount(1);
|
100
100
|
};
|
101
|
+
const handleClose = React__default.useCallback(open => {
|
102
|
+
if (!open) {
|
103
|
+
setFilters(appliedFilters);
|
104
|
+
setPlaceholderCount(appliedFilters.length === 0 ? 1 : 0);
|
105
|
+
}
|
106
|
+
}, [appliedFilters]);
|
101
107
|
// Because filters can be reset from outside
|
102
108
|
React__default.useEffect(() => {
|
103
109
|
if (appliedFilters.length === 0) {
|
@@ -110,7 +116,9 @@ function FiltersButton(props) {
|
|
110
116
|
className: cn({
|
111
117
|
'!wcag-blue-100': appliedFilters.length
|
112
118
|
}),
|
113
|
-
popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps
|
119
|
+
popover: popoverProps => ( /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
|
120
|
+
onChange: handleClose
|
121
|
+
}), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
|
114
122
|
className: "flex w-[40rem] flex-col gap-4"
|
115
123
|
}, /*#__PURE__*/React__default.createElement("div", {
|
116
124
|
className: "flex h-8"
|
@@ -122,7 +130,7 @@ function FiltersButton(props) {
|
|
122
130
|
className: "text-grey-700 mb-0 mr-auto mt-px inline-flex"
|
123
131
|
}, texts.table3.filters.total.replace('[CURRENT]', new Intl.NumberFormat(locale).format(table.getFilteredRowModel().rows.length)).replace('[TOTAL]', new Intl.NumberFormat(locale).format(total))))), /*#__PURE__*/React__default.createElement("div", {
|
124
132
|
className: "flex flex-col gap-2"
|
125
|
-
}, filters.map((filter, index) => /*#__PURE__*/React__default.createElement(Filter, {
|
133
|
+
}, filters.map((filter, index) => ( /*#__PURE__*/React__default.createElement(Filter, {
|
126
134
|
key: `filter_${index}`,
|
127
135
|
allColumns: allColumns,
|
128
136
|
filter: filter,
|
@@ -130,14 +138,14 @@ function FiltersButton(props) {
|
|
130
138
|
position: index,
|
131
139
|
onChange: handleChangeFilter,
|
132
140
|
onRemove: handleRemoveFilter
|
133
|
-
})), [...Array(placeholderCount)].map((_, index) => /*#__PURE__*/React__default.createElement(Placeholder, {
|
141
|
+
}))), [...Array(placeholderCount)].map((_, index) => ( /*#__PURE__*/React__default.createElement(Placeholder, {
|
134
142
|
key: `placeholder_${index}`,
|
135
143
|
allColumns: allColumns,
|
136
144
|
filters: filters,
|
137
145
|
position: filters.length + index,
|
138
146
|
onCreate: handleCreateFilterFromPlaceholder,
|
139
147
|
onRemove: placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined
|
140
|
-
})), /*#__PURE__*/React__default.createElement("div", {
|
148
|
+
}))), /*#__PURE__*/React__default.createElement("div", {
|
141
149
|
className: "justify-start"
|
142
150
|
}, /*#__PURE__*/React__default.createElement(Button, {
|
143
151
|
appearance: "discrete",
|
@@ -149,16 +157,16 @@ function FiltersButton(props) {
|
|
149
157
|
}, "Clear"), /*#__PURE__*/React__default.createElement(Button, {
|
150
158
|
appearance: "primary",
|
151
159
|
onClick: handleApply
|
152
|
-
}, "Apply"))))),
|
160
|
+
}, "Apply")))))),
|
153
161
|
ref,
|
154
|
-
tooltip: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table3.filters.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
|
162
|
+
tooltip: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table3.filters.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
|
155
163
|
className: "ml-2",
|
156
164
|
keys: {
|
157
165
|
key: 'f',
|
158
166
|
meta: true,
|
159
167
|
shift: true
|
160
168
|
}
|
161
|
-
}))
|
169
|
+
})))
|
162
170
|
};
|
163
171
|
if (!isLargeScreen && !appliedFilters.length) {
|
164
172
|
return /*#__PURE__*/React__default.createElement(IconButton, Object.assign({}, buttonProps, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Filters.js","sources":["../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/Filters.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTable, Column as RTColumn } from '@tanstack/react-table';\nimport { Button } from '../../../../../Button/Button';\nimport { Icon } from '../../../../../Icon/Icon';\nimport { Popover } from '../../../../../Popover/Popover';\nimport { Table3FilterValue, Table3FilterComparator, Table3Filter, ColumnFilter } from '../../../../types';\nimport { Shortcut } from '../../../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../../../Provider/Localization';\nimport { isInternalColumn } from '../../../../util/columns';\nimport { Placeholder } from './components/Placeholder';\nimport { Filter } from './components/Filter';\nimport { Group } from '../../../../../Group/Group';\nimport { useIsLargeScreen } from '../../../../../../hooks/useIsLargeScreen';\nimport { IconButton } from '../../../../../IconButton/IconButton';\n\nfunction sortByHeader<TType = unknown>(a: RTColumn<TType>, b: RTColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport type FiltersProps<TType = unknown> = {\n total: number;\n table: RTable<TType>;\n};\n\nexport function FiltersButton<TType = unknown>(props: FiltersProps<TType>) {\n const { total, table } = props;\n const { locale, texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const isLargeScreen = useIsLargeScreen();\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n const appliedFilters = table.getState().columnFilters as Table3Filter[];\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n // state, since we \"apply\" filters\n const [filters, setFilters] = React.useState<Table3Filter[]>(appliedFilters);\n const [placeholderCount, setPlaceholderCount] = React.useState(1);\n\n // filters\n const handleChangeFilter = (currentId: string | null, filter: { id: string | null; value: Table3FilterValue }) => {\n setFilters(currentFilters => {\n const nextFilters = [...currentFilters];\n const index = nextFilters.findIndex(f => f.id === currentId);\n nextFilters[index] = filter;\n return nextFilters;\n });\n };\n\n const handleRemoveFilter = (columnId: string | null) => {\n if (filters.length === 1 && placeholderCount === 0) {\n setPlaceholderCount(count => count + 1);\n }\n\n setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));\n };\n\n // placeholders\n const handleCreateFilterFromPlaceholder = (columnId: string) => {\n setFilters(currentFilters => [\n ...currentFilters,\n {\n id: columnId,\n value: {\n comparator: Table3FilterComparator.Contains,\n value: undefined,\n },\n },\n ]);\n handleRemovePlaceholder();\n };\n\n const handleCreatePlaceholder = () => {\n setPlaceholderCount(count => count + 1);\n };\n\n const handleRemovePlaceholder = () => {\n setPlaceholderCount(count => count - 1);\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(() => {\n const newFilters = filters.filter(f => {\n if (f.id === null) {\n return false;\n }\n\n const controlRenderer = (allColumns.find(c => c.id === f.id) as RTColumn<TType, unknown>)?.columnDef.meta\n ?.control;\n if (\n f.value.comparator === Table3FilterComparator.IsEmpty ||\n f.value.comparator === Table3FilterComparator.IsNotEmpty ||\n controlRenderer === 'switch'\n ) {\n return true;\n }\n return !!f.value.value;\n });\n // Compiler didn't get that we stripped out filters with null ids, so we still need to cast a ColumnFilter type here\n return newFilters as ColumnFilter[];\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([]);\n setPlaceholderCount(1);\n };\n\n // Because filters can be reset from outside\n React.useEffect(() => {\n if (appliedFilters.length === 0) {\n setFilters([]);\n setPlaceholderCount(1);\n }\n }, [appliedFilters]);\n\n const buttonProps = {\n 'aria-label': texts.table3.filters.tooltip,\n className: cn({ '!wcag-blue-100': appliedFilters.length }),\n popover: popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table3.filters.button}</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table3.filters.total\n .replace(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(table.getFilteredRowModel().rows.length)\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(total))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filter={filter}\n filters={filters}\n position={index}\n onChange={handleChangeFilter}\n onRemove={handleRemoveFilter}\n />\n ))}\n {[...Array(placeholderCount)].map((_, index) => (\n <Placeholder\n key={`placeholder_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filters={filters}\n position={filters.length + index}\n onCreate={handleCreateFilterFromPlaceholder as any}\n onRemove={placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined}\n />\n ))}\n <div className=\"justify-start\">\n <Button appearance=\"discrete\" onClick={handleCreatePlaceholder}>\n + {texts.table3.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Group className=\"ml-auto\">\n <Popover.Close>\n <Button>Cancel</Button>\n </Popover.Close>\n <Button onClick={handleClear}>Clear</Button>\n <Button appearance=\"primary\" onClick={handleApply}>\n Apply\n </Button>\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n ),\n ref,\n tooltip: (\n <>\n {texts.table3.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n ),\n };\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <IconButton {...buttonProps} icon=\"filter\" />;\n }\n return (\n <Button {...buttonProps}>\n <Icon className={cn({ '-mr-1.5': !isLargeScreen })} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table3.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </Button>\n );\n}\n"],"names":["sortByHeader","a","b","_a$columnDef$meta","columnDef","meta","_a$columnDef$meta$hea","header","_a$columnDef$meta$hea2","localeCompare","call","_b$columnDef$meta","FiltersButton","props","total","table","locale","texts","useLocalization","ref","React","useRef","isLargeScreen","useIsLargeScreen","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","appliedFilters","getState","columnFilters","useGlobalKeyDown","key","shift","event","preventDefault","_ref$current","current","click","filters","setFilters","useState","placeholderCount","setPlaceholderCount","handleChangeFilter","currentId","currentFilters","nextFilters","index","findIndex","f","handleRemoveFilter","columnId","length","count","handleCreateFilterFromPlaceholder","value","comparator","Table3FilterComparator","Contains","undefined","handleRemovePlaceholder","handleCreatePlaceholder","handleApply","setColumnFilters","newFilters","controlRenderer","_allColumns$find","find","c","_allColumns$find$colu","control","IsEmpty","IsNotEmpty","handleClear","resetColumnFilters","useEffect","buttonProps","table3","tooltip","className","cn","popover","popoverProps","Popover","Content","button","replace","Intl","NumberFormat","format","getFilteredRowModel","rows","map","Filter","position","onChange","onRemove","Array","_","Placeholder","onCreate","Button","appearance","onClick","buttons","addFilter","Group","Close","Shortcut","keys","IconButton","icon","Icon","name"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Filters.js","sources":["../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/Filters.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTable, Column as RTColumn } from '@tanstack/react-table';\nimport { Button } from '../../../../../Button/Button';\nimport { Icon } from '../../../../../Icon/Icon';\nimport { Popover } from '../../../../../Popover/Popover';\nimport { Table3FilterValue, Table3FilterComparator, Table3Filter, ColumnFilter } from '../../../../types';\nimport { Shortcut } from '../../../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../../../Provider/Localization';\nimport { isInternalColumn } from '../../../../util/columns';\nimport { Placeholder } from './components/Placeholder';\nimport { Filter } from './components/Filter';\nimport { Group } from '../../../../../Group/Group';\nimport { useIsLargeScreen } from '../../../../../../hooks/useIsLargeScreen';\nimport { IconButton } from '../../../../../IconButton/IconButton';\n\nfunction sortByHeader<TType = unknown>(a: RTColumn<TType>, b: RTColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport type FiltersProps<TType = unknown> = {\n total: number;\n table: RTable<TType>;\n};\n\nexport function FiltersButton<TType = unknown>(props: FiltersProps<TType>) {\n const { total, table } = props;\n const { locale, texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const isLargeScreen = useIsLargeScreen();\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n const appliedFilters = table.getState().columnFilters as Table3Filter[];\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n // state, since we \"apply\" filters\n const [filters, setFilters] = React.useState<Table3Filter[]>(appliedFilters);\n const [placeholderCount, setPlaceholderCount] = React.useState(1);\n\n // filters\n const handleChangeFilter = (currentId: string | null, filter: { id: string | null; value: Table3FilterValue }) => {\n setFilters(currentFilters => {\n const nextFilters = [...currentFilters];\n const index = nextFilters.findIndex(f => f.id === currentId);\n nextFilters[index] = filter;\n return nextFilters;\n });\n };\n\n const handleRemoveFilter = (columnId: string | null) => {\n if (filters.length === 1 && placeholderCount === 0) {\n setPlaceholderCount(count => count + 1);\n }\n\n setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));\n };\n\n // placeholders\n const handleCreateFilterFromPlaceholder = (columnId: string) => {\n setFilters(currentFilters => [\n ...currentFilters,\n {\n id: columnId,\n value: {\n comparator: Table3FilterComparator.Contains,\n value: undefined,\n },\n },\n ]);\n handleRemovePlaceholder();\n };\n\n const handleCreatePlaceholder = () => {\n setPlaceholderCount(count => count + 1);\n };\n\n const handleRemovePlaceholder = () => {\n setPlaceholderCount(count => count - 1);\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(() => {\n const newFilters = filters.filter(f => {\n if (f.id === null) {\n return false;\n }\n\n const controlRenderer = (allColumns.find(c => c.id === f.id) as RTColumn<TType, unknown>)?.columnDef.meta\n ?.control;\n if (\n f.value.comparator === Table3FilterComparator.IsEmpty ||\n f.value.comparator === Table3FilterComparator.IsNotEmpty ||\n controlRenderer === 'switch'\n ) {\n return true;\n }\n return !!f.value.value;\n });\n // Compiler didn't get that we stripped out filters with null ids, so we still need to cast a ColumnFilter type here\n return newFilters as ColumnFilter[];\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([]);\n setPlaceholderCount(1);\n };\n\n const handleClose = React.useCallback(\n (open: boolean) => {\n if (!open) {\n setFilters(appliedFilters);\n setPlaceholderCount(appliedFilters.length === 0 ? 1 : 0);\n }\n },\n [appliedFilters]\n );\n\n // Because filters can be reset from outside\n React.useEffect(() => {\n if (appliedFilters.length === 0) {\n setFilters([]);\n setPlaceholderCount(1);\n }\n }, [appliedFilters]);\n\n const buttonProps = {\n 'aria-label': texts.table3.filters.tooltip,\n className: cn({ '!wcag-blue-100': appliedFilters.length }),\n popover: popoverProps => (\n <Popover {...popoverProps} onChange={handleClose}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table3.filters.button}</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table3.filters.total\n .replace(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(table.getFilteredRowModel().rows.length)\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(total))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filter={filter}\n filters={filters}\n position={index}\n onChange={handleChangeFilter}\n onRemove={handleRemoveFilter}\n />\n ))}\n {[...Array(placeholderCount)].map((_, index) => (\n <Placeholder\n key={`placeholder_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filters={filters}\n position={filters.length + index}\n onCreate={handleCreateFilterFromPlaceholder as any}\n onRemove={placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined}\n />\n ))}\n <div className=\"justify-start\">\n <Button appearance=\"discrete\" onClick={handleCreatePlaceholder}>\n + {texts.table3.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Group className=\"ml-auto\">\n <Popover.Close>\n <Button>Cancel</Button>\n </Popover.Close>\n <Button onClick={handleClear}>Clear</Button>\n <Button appearance=\"primary\" onClick={handleApply}>\n Apply\n </Button>\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n ),\n ref,\n tooltip: (\n <>\n {texts.table3.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n ),\n };\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <IconButton {...buttonProps} icon=\"filter\" />;\n }\n return (\n <Button {...buttonProps}>\n <Icon className={cn({ '-mr-1.5': !isLargeScreen })} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table3.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </Button>\n );\n}\n"],"names":["sortByHeader","a","b","_a$columnDef$meta","columnDef","meta","_a$columnDef$meta$hea","header","_a$columnDef$meta$hea2","localeCompare","call","_b$columnDef$meta","FiltersButton","props","total","table","locale","texts","useLocalization","ref","React","useRef","isLargeScreen","useIsLargeScreen","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","appliedFilters","getState","columnFilters","useGlobalKeyDown","key","shift","event","preventDefault","_ref$current","current","click","filters","setFilters","useState","placeholderCount","setPlaceholderCount","handleChangeFilter","currentId","currentFilters","nextFilters","index","findIndex","f","handleRemoveFilter","columnId","length","count","handleCreateFilterFromPlaceholder","value","comparator","Table3FilterComparator","Contains","undefined","handleRemovePlaceholder","handleCreatePlaceholder","handleApply","setColumnFilters","newFilters","controlRenderer","_allColumns$find","find","c","_allColumns$find$colu","control","IsEmpty","IsNotEmpty","handleClear","resetColumnFilters","handleClose","useCallback","open","useEffect","buttonProps","table3","tooltip","className","cn","popover","popoverProps","Popover","onChange","Content","button","replace","Intl","NumberFormat","format","getFilteredRowModel","rows","map","Filter","position","onRemove","Array","_","Placeholder","onCreate","Button","appearance","onClick","buttons","addFilter","Group","Close","Shortcut","keys","IconButton","icon","Icon","name"],"mappings":"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"}
|
@@ -34,12 +34,12 @@ function FilterColumn(props) {
|
|
34
34
|
return /*#__PURE__*/React__default.createElement(Select2.Option, {
|
35
35
|
key: column.id,
|
36
36
|
value: column.id,
|
37
|
-
postfix: !column.getIsVisible() ? /*#__PURE__*/React__default.createElement(Tooltip, {
|
37
|
+
postfix: !column.getIsVisible() ? ( /*#__PURE__*/React__default.createElement(Tooltip, {
|
38
38
|
title: texts.table3.filters.hiddenColumn
|
39
39
|
}, /*#__PURE__*/React__default.createElement(Icon, {
|
40
40
|
name: "eye-off",
|
41
41
|
className: "text-grey-500 !h-5 !w-5"
|
42
|
-
})) : undefined,
|
42
|
+
}))) : undefined,
|
43
43
|
disabled: column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))
|
44
44
|
}, ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header) + (column.parent ? ` (${(_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : (_column$parent$column = _column$parent.columnDef.meta) === null || _column$parent$column === void 0 ? void 0 : _column$parent$column.header})` : ''));
|
45
45
|
}))));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FilterColumn.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Icon } from '../../../../../../Icon/Icon';\nimport { Tooltip } from '../../../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../../../Provider/Localization';\nimport { Field } from '../../../../../../Field/Field';\nimport { Table3Filter } from '../../../../../types';\n\nexport type FilterColumnProps<TType = unknown> = Omit<Select2Props, 'children'> & {\n allColumns: RTColumn<TType, unknown>[];\n filters: Table3Filter[];\n};\n\nexport function FilterColumn<TType = unknown>(props: FilterColumnProps<TType>) {\n const { allColumns, filters, onChange: handleChange, value = null, ...attributes } = props;\n const { texts } = useLocalization();\n const selectedColumn = allColumns.find(column => column.id === value);\n const warning = selectedColumn && !selectedColumn.getIsVisible();\n\n return (\n <div className=\"flex flex-col\">\n <Field\n message={warning ? texts.table3.filters.hiddenColumn : undefined}\n warning={warning}\n className=\"min-h-[theme(spacing.8)]\">\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" emptyValue={null} onChange={handleChange} value={value}>\n {allColumns.map(column => (\n <Select2.Option\n key={column.id}\n value={column.id}\n postfix={\n !column.getIsVisible() ? (\n <Tooltip title={texts.table3.filters.hiddenColumn}>\n <Icon name=\"eye-off\" className=\"text-grey-500 !h-5 !w-5\" />\n </Tooltip>\n ) : undefined\n }\n disabled={column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))}>\n {(column.columnDef.meta?.header as string) +\n (column.parent ? ` (${column.parent?.columnDef.meta?.header})` : '')}\n </Select2.Option>\n ))}\n </Select2>\n </Field>\n </div>\n );\n}\n"],"names":["FilterColumn","props","allColumns","filters","onChange","handleChange","value","attributes","texts","useLocalization","selectedColumn","find","column","id","warning","getIsVisible","React","className","Field","message","table3","hiddenColumn","undefined","Select2","emptyValue","map","_column$columnDef$met","_column$parent","_column$parent$column","Option","key","postfix","Tooltip","title","Icon","name","disabled","getCanFilter","f","columnDef","meta","header","parent"],"mappings":";;;;;;;SAcgBA,YAAYA,CAAkBC,KAA+B;EACzE,MAAM;IAAEC,UAAU;IAAEC,OAAO;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,KAAK,GAAG,IAAI;IAAE,GAAGC;GAAY,GAAGN,KAAK;EAC1F,MAAM;IAAEO;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,cAAc,GAAGR,UAAU,CAACS,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACC,EAAE,KAAKP,KAAK,CAAC;EACrE,MAAMQ,OAAO,GAAGJ,cAAc,IAAI,CAACA,cAAc,CAACK,YAAY,EAAE;EAEhE,oBACIC;IAAKC,SAAS,EAAC;kBACXD,6BAACE,KAAK;IACFC,OAAO,EAAEL,OAAO,GAAGN,KAAK,CAACY,MAAM,CAACjB,OAAO,CAACkB,YAAY,GAAGC,SAAS;IAChER,OAAO,EAAEA,OAAO;IAChBG,SAAS,EAAC;kBACVD,6BAACO,OAAO,oBAAKhB,UAAU;IAAEU,SAAS,EAAC,qBAAqB;IAACO,UAAU,EAAE,IAAI;IAAEpB,QAAQ,EAAEC,YAAY;IAAEC,KAAK,EAAEA;MACrGJ,UAAU,CAACuB,GAAG,CAACb,MAAM;IAAA,IAAAc,qBAAA,EAAAC,cAAA,EAAAC,qBAAA;IAAA,oBAClBZ,6BAACO,OAAO,CAACM,MAAM;MACXC,GAAG,EAAElB,MAAM,CAACC,EAAE;MACdP,KAAK,EAAEM,MAAM,CAACC,EAAE;MAChBkB,OAAO,EACH,CAACnB,MAAM,CAACG,YAAY,EAAE,
|
1
|
+
{"version":3,"file":"FilterColumn.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Icon } from '../../../../../../Icon/Icon';\nimport { Tooltip } from '../../../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../../../Provider/Localization';\nimport { Field } from '../../../../../../Field/Field';\nimport { Table3Filter } from '../../../../../types';\n\nexport type FilterColumnProps<TType = unknown> = Omit<Select2Props, 'children'> & {\n allColumns: RTColumn<TType, unknown>[];\n filters: Table3Filter[];\n};\n\nexport function FilterColumn<TType = unknown>(props: FilterColumnProps<TType>) {\n const { allColumns, filters, onChange: handleChange, value = null, ...attributes } = props;\n const { texts } = useLocalization();\n const selectedColumn = allColumns.find(column => column.id === value);\n const warning = selectedColumn && !selectedColumn.getIsVisible();\n\n return (\n <div className=\"flex flex-col\">\n <Field\n message={warning ? texts.table3.filters.hiddenColumn : undefined}\n warning={warning}\n className=\"min-h-[theme(spacing.8)]\">\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" emptyValue={null} onChange={handleChange} value={value}>\n {allColumns.map(column => (\n <Select2.Option\n key={column.id}\n value={column.id}\n postfix={\n !column.getIsVisible() ? (\n <Tooltip title={texts.table3.filters.hiddenColumn}>\n <Icon name=\"eye-off\" className=\"text-grey-500 !h-5 !w-5\" />\n </Tooltip>\n ) : undefined\n }\n disabled={column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))}>\n {(column.columnDef.meta?.header as string) +\n (column.parent ? ` (${column.parent?.columnDef.meta?.header})` : '')}\n </Select2.Option>\n ))}\n </Select2>\n </Field>\n </div>\n );\n}\n"],"names":["FilterColumn","props","allColumns","filters","onChange","handleChange","value","attributes","texts","useLocalization","selectedColumn","find","column","id","warning","getIsVisible","React","className","Field","message","table3","hiddenColumn","undefined","Select2","emptyValue","map","_column$columnDef$met","_column$parent","_column$parent$column","Option","key","postfix","Tooltip","title","Icon","name","disabled","getCanFilter","f","columnDef","meta","header","parent"],"mappings":";;;;;;;SAcgBA,YAAYA,CAAkBC,KAA+B;EACzE,MAAM;IAAEC,UAAU;IAAEC,OAAO;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,KAAK,GAAG,IAAI;IAAE,GAAGC;GAAY,GAAGN,KAAK;EAC1F,MAAM;IAAEO;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,cAAc,GAAGR,UAAU,CAACS,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACC,EAAE,KAAKP,KAAK,CAAC;EACrE,MAAMQ,OAAO,GAAGJ,cAAc,IAAI,CAACA,cAAc,CAACK,YAAY,EAAE;EAEhE,oBACIC;IAAKC,SAAS,EAAC;kBACXD,6BAACE,KAAK;IACFC,OAAO,EAAEL,OAAO,GAAGN,KAAK,CAACY,MAAM,CAACjB,OAAO,CAACkB,YAAY,GAAGC,SAAS;IAChER,OAAO,EAAEA,OAAO;IAChBG,SAAS,EAAC;kBACVD,6BAACO,OAAO,oBAAKhB,UAAU;IAAEU,SAAS,EAAC,qBAAqB;IAACO,UAAU,EAAE,IAAI;IAAEpB,QAAQ,EAAEC,YAAY;IAAEC,KAAK,EAAEA;MACrGJ,UAAU,CAACuB,GAAG,CAACb,MAAM;IAAA,IAAAc,qBAAA,EAAAC,cAAA,EAAAC,qBAAA;IAAA,oBAClBZ,6BAACO,OAAO,CAACM,MAAM;MACXC,GAAG,EAAElB,MAAM,CAACC,EAAE;MACdP,KAAK,EAAEM,MAAM,CAACC,EAAE;MAChBkB,OAAO,EACH,CAACnB,MAAM,CAACG,YAAY,EAAE,kBAClBC,6BAACgB,OAAO;QAACC,KAAK,EAAEzB,KAAK,CAACY,MAAM,CAACjB,OAAO,CAACkB;sBACjCL,6BAACkB,IAAI;QAACC,IAAI,EAAC,SAAS;QAAClB,SAAS,EAAC;QAA4B,CACrD,IACVK,SAAS;MAEjBc,QAAQ,EAAExB,MAAM,CAACC,EAAE,KAAKP,KAAK,KAAK,CAACM,MAAM,CAACyB,YAAY,EAAE,IAAI,CAAC,CAAClC,OAAO,CAACQ,IAAI,CAAC2B,CAAC,IAAIA,CAAC,CAACzB,EAAE,KAAKD,MAAM,CAACC,EAAE,CAAC;OACjG,EAAAa,qBAAA,GAAAd,MAAM,CAAC2B,SAAS,CAACC,IAAI,cAAAd,qBAAA,uBAArBA,qBAAA,CAAuBe,MAAiB,KACrC7B,MAAM,CAAC8B,MAAM,0BAAQ9B,MAAM,CAAC8B,MAAM,cAAAf,cAAA,wBAAAC,qBAAA,GAAbD,cAAA,CAAeY,SAAS,CAACC,IAAI,cAAAZ,qBAAA,uBAA7BA,qBAAA,CAA+Ba,SAAS,GAAG,EAAE,CAAC,CAC3D;GACpB,CAAC,CACI,CACN,CACN;AAEd;;;;"}
|
@@ -24,10 +24,10 @@ function FilterComparator(props) {
|
|
24
24
|
disabled: !column,
|
25
25
|
onChange: handleChange,
|
26
26
|
value: value
|
27
|
-
}), validComparators.map(comparator => /*#__PURE__*/React__default.createElement(Select2.Option, {
|
27
|
+
}), validComparators.map(comparator => ( /*#__PURE__*/React__default.createElement(Select2.Option, {
|
28
28
|
key: comparator,
|
29
29
|
value: comparator
|
30
|
-
}, getComparatorText(comparator, texts, column))));
|
30
|
+
}, getComparatorText(comparator, texts, column)))));
|
31
31
|
}
|
32
32
|
function guessComparatorsBasedOnControl(column) {
|
33
33
|
var _column$columnDef$met;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FilterComparator.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnMeta } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { LocalizationTexts, useLocalization } from '../../../../../../Provider/Localization';\n\nexport type FilterComparatorProps<TType = unknown> = Omit<Select2Props, 'children'> & {\n column?: RTColumn<TType, unknown>;\n};\n\nexport function FilterComparator<TType = unknown>(props: FilterComparatorProps<TType>) {\n const { column, onChange: handleChange, value, ...attributes } = props;\n const { texts } = useLocalization();\n\n const validComparators = guessComparatorsBasedOnControl(column);\n\n React.useEffect(() => {\n if (value === undefined || !validComparators.includes(value as number)) {\n handleChange?.(validComparators[0]);\n }\n }, [validComparators]);\n\n return (\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" disabled={!column} onChange={handleChange} value={value}>\n {validComparators.map(comparator => (\n <Select2.Option key={comparator} value={comparator}>\n {getComparatorText(comparator, texts, column)}\n </Select2.Option>\n ))}\n </Select2>\n );\n}\n\nfunction guessComparatorsBasedOnControl<TType = unknown>(column?: RTColumn<TType, unknown>) {\n const columnMeta = (column?.columnDef.meta ?? {}) as ColumnMeta<TType, unknown>;\n\n if (Array.isArray(columnMeta.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n Table3FilterComparator.HasAnyOf,\n Table3FilterComparator.HasAllOf,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.HasNoneOf,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n if (columnMeta.dataType === 'number') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n Table3FilterComparator.IsLessThanOrEqualTo,\n Table3FilterComparator.IsGreaterThanOrEqualTo,\n ];\n }\n\n if (columnMeta.control === 'switch') {\n return [Table3FilterComparator.IsEqualTo];\n }\n\n return [\n Table3FilterComparator.Contains,\n Table3FilterComparator.DoesNotContain,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n}\n\nfunction getComparatorText<TType = unknown>(\n comparator: Table3FilterComparator,\n texts: LocalizationTexts,\n column?: RTColumn<TType, unknown>\n) {\n const isDate = column?.columnDef?.meta?.control === 'datepicker';\n\n switch (comparator) {\n case Table3FilterComparator.Contains:\n return texts.table3.filters.comparators.contains;\n\n case Table3FilterComparator.DoesNotContain:\n return texts.table3.filters.comparators.doesNotContain;\n\n case Table3FilterComparator.IsEqualTo:\n return texts.table3.filters.comparators.isEqualTo;\n\n case Table3FilterComparator.IsNotEqualTo:\n return texts.table3.filters.comparators.isNotEqualTo;\n\n case Table3FilterComparator.IsGreaterThan:\n return isDate ? texts.table3.filters.comparators.isAfter : texts.table3.filters.comparators.isGreaterThan;\n\n case Table3FilterComparator.IsLessThan:\n return isDate ? texts.table3.filters.comparators.isBefore : texts.table3.filters.comparators.isLessThan;\n\n case Table3FilterComparator.IsBetween:\n return texts.table3.filters.comparators.isBetween;\n\n case Table3FilterComparator.IsEmpty:\n return texts.table3.filters.comparators.isEmpty;\n\n case Table3FilterComparator.IsNotEmpty:\n return texts.table3.filters.comparators.isNotEmpty;\n\n case Table3FilterComparator.IsLessThanOrEqualTo:\n return isDate ? texts.table3.filters.comparators.isOnOrBefore : texts.table3.filters.comparators.isLessThanOrEqualTo;\n\n case Table3FilterComparator.IsGreaterThanOrEqualTo:\n return isDate\n ? texts.table3.filters.comparators.isOnOrAfter\n : texts.table3.filters.comparators.isGreaterThanOrEqualTo;\n\n case Table3FilterComparator.HasAnyOf:\n return texts.table3.filters.comparators.hasAnyOf;\n\n case Table3FilterComparator.HasAllOf:\n return texts.table3.filters.comparators.hasAllOf;\n\n case Table3FilterComparator.HasNoneOf:\n return texts.table3.filters.comparators.hasNoneOf;\n\n default:\n return '';\n }\n}\n"],"names":["FilterComparator","props","column","onChange","handleChange","value","attributes","texts","useLocalization","validComparators","guessComparatorsBasedOnControl","React","useEffect","undefined","includes","Select2","className","disabled","map","comparator","Option","key","getComparatorText","columnMeta","_column$columnDef$met","columnDef","meta","Array","isArray","filters","control","renderedControl","onBlur","onFocus","setValue","readOnly","ref","isValidElement","type","displayName","multiple","Table3FilterComparator","HasAnyOf","HasAllOf","IsEqualTo","HasNoneOf","IsEmpty","IsNotEmpty","IsNotEqualTo","dataType","IsGreaterThan","IsLessThan","IsBetween","IsLessThanOrEqualTo","IsGreaterThanOrEqualTo","Contains","DoesNotContain","isDate","_column$columnDef","_column$columnDef$met2","table3","comparators","contains","doesNotContain","isEqualTo","isNotEqualTo","isAfter","isGreaterThan","isBefore","isLessThan","isBetween","isEmpty","isNotEmpty","isOnOrBefore","isLessThanOrEqualTo","isOnOrAfter","isGreaterThanOrEqualTo","hasAnyOf","hasAllOf","hasNoneOf"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"FilterComparator.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnMeta } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { LocalizationTexts, useLocalization } from '../../../../../../Provider/Localization';\n\nexport type FilterComparatorProps<TType = unknown> = Omit<Select2Props, 'children'> & {\n column?: RTColumn<TType, unknown>;\n};\n\nexport function FilterComparator<TType = unknown>(props: FilterComparatorProps<TType>) {\n const { column, onChange: handleChange, value, ...attributes } = props;\n const { texts } = useLocalization();\n\n const validComparators = guessComparatorsBasedOnControl(column);\n\n React.useEffect(() => {\n if (value === undefined || !validComparators.includes(value as number)) {\n handleChange?.(validComparators[0]);\n }\n }, [validComparators]);\n\n return (\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" disabled={!column} onChange={handleChange} value={value}>\n {validComparators.map(comparator => (\n <Select2.Option key={comparator} value={comparator}>\n {getComparatorText(comparator, texts, column)}\n </Select2.Option>\n ))}\n </Select2>\n );\n}\n\nfunction guessComparatorsBasedOnControl<TType = unknown>(column?: RTColumn<TType, unknown>) {\n const columnMeta = (column?.columnDef.meta ?? {}) as ColumnMeta<TType, unknown>;\n\n if (Array.isArray(columnMeta.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n Table3FilterComparator.HasAnyOf,\n Table3FilterComparator.HasAllOf,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.HasNoneOf,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n if (columnMeta.dataType === 'number') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n Table3FilterComparator.IsLessThanOrEqualTo,\n Table3FilterComparator.IsGreaterThanOrEqualTo,\n ];\n }\n\n if (columnMeta.control === 'switch') {\n return [Table3FilterComparator.IsEqualTo];\n }\n\n return [\n Table3FilterComparator.Contains,\n Table3FilterComparator.DoesNotContain,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n}\n\nfunction getComparatorText<TType = unknown>(\n comparator: Table3FilterComparator,\n texts: LocalizationTexts,\n column?: RTColumn<TType, unknown>\n) {\n const isDate = column?.columnDef?.meta?.control === 'datepicker';\n\n switch (comparator) {\n case Table3FilterComparator.Contains:\n return texts.table3.filters.comparators.contains;\n\n case Table3FilterComparator.DoesNotContain:\n return texts.table3.filters.comparators.doesNotContain;\n\n case Table3FilterComparator.IsEqualTo:\n return texts.table3.filters.comparators.isEqualTo;\n\n case Table3FilterComparator.IsNotEqualTo:\n return texts.table3.filters.comparators.isNotEqualTo;\n\n case Table3FilterComparator.IsGreaterThan:\n return isDate ? texts.table3.filters.comparators.isAfter : texts.table3.filters.comparators.isGreaterThan;\n\n case Table3FilterComparator.IsLessThan:\n return isDate ? texts.table3.filters.comparators.isBefore : texts.table3.filters.comparators.isLessThan;\n\n case Table3FilterComparator.IsBetween:\n return texts.table3.filters.comparators.isBetween;\n\n case Table3FilterComparator.IsEmpty:\n return texts.table3.filters.comparators.isEmpty;\n\n case Table3FilterComparator.IsNotEmpty:\n return texts.table3.filters.comparators.isNotEmpty;\n\n case Table3FilterComparator.IsLessThanOrEqualTo:\n return isDate ? texts.table3.filters.comparators.isOnOrBefore : texts.table3.filters.comparators.isLessThanOrEqualTo;\n\n case Table3FilterComparator.IsGreaterThanOrEqualTo:\n return isDate\n ? texts.table3.filters.comparators.isOnOrAfter\n : texts.table3.filters.comparators.isGreaterThanOrEqualTo;\n\n case Table3FilterComparator.HasAnyOf:\n return texts.table3.filters.comparators.hasAnyOf;\n\n case Table3FilterComparator.HasAllOf:\n return texts.table3.filters.comparators.hasAllOf;\n\n case Table3FilterComparator.HasNoneOf:\n return texts.table3.filters.comparators.hasNoneOf;\n\n default:\n return '';\n }\n}\n"],"names":["FilterComparator","props","column","onChange","handleChange","value","attributes","texts","useLocalization","validComparators","guessComparatorsBasedOnControl","React","useEffect","undefined","includes","Select2","className","disabled","map","comparator","Option","key","getComparatorText","columnMeta","_column$columnDef$met","columnDef","meta","Array","isArray","filters","control","renderedControl","onBlur","onFocus","setValue","readOnly","ref","isValidElement","type","displayName","multiple","Table3FilterComparator","HasAnyOf","HasAllOf","IsEqualTo","HasNoneOf","IsEmpty","IsNotEmpty","IsNotEqualTo","dataType","IsGreaterThan","IsLessThan","IsBetween","IsLessThanOrEqualTo","IsGreaterThanOrEqualTo","Contains","DoesNotContain","isDate","_column$columnDef","_column$columnDef$met2","table3","comparators","contains","doesNotContain","isEqualTo","isNotEqualTo","isAfter","isGreaterThan","isBefore","isLessThan","isBetween","isEmpty","isNotEmpty","isOnOrBefore","isLessThanOrEqualTo","isOnOrAfter","isGreaterThanOrEqualTo","hasAnyOf","hasAllOf","hasNoneOf"],"mappings":";;;;;SAUgBA,gBAAgBA,CAAkBC,KAAmC;EACjF,MAAM;IAAEC,MAAM;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGL,KAAK;EACtE,MAAM;IAAEM;GAAO,GAAGC,eAAe,EAAE;EAEnC,MAAMC,gBAAgB,GAAGC,8BAA8B,CAACR,MAAM,CAAC;EAE/DS,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIP,KAAK,KAAKQ,SAAS,IAAI,CAACJ,gBAAgB,CAACK,QAAQ,CAACT,KAAe,CAAC,EAAE;MACpED,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGK,gBAAgB,CAAC,CAAC,CAAC,CAAC;;GAE1C,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEtB,oBACIE,6BAACI,OAAO,oBAAKT,UAAU;IAAEU,SAAS,EAAC,qBAAqB;IAACC,QAAQ,EAAE,CAACf,MAAM;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,KAAK,EAAEA;MACtGI,gBAAgB,CAACS,GAAG,CAACC,UAAU,mBAC5BR,6BAACI,OAAO,CAACK,MAAM;IAACC,GAAG,EAAEF,UAAU;IAAEd,KAAK,EAAEc;KACnCG,iBAAiB,CAACH,UAAU,EAAEZ,KAAK,EAAEL,MAAM,CAAC,CAChC,CACpB,CAAC,CACI;AAElB;AAEA,SAASQ,8BAA8BA,CAAkBR,MAAiC;;EACtF,MAAMqB,UAAU,IAAAC,qBAAA,GAAItB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEuB,SAAS,CAACC,IAAI,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,EAAiC;EAE/E,IAAIG,KAAK,CAACC,OAAO,CAACL,UAAU,CAACM,OAAO,CAAC,EAAE;IACnC,OAAON,UAAU,CAACM,OAAO;;EAG7B,IAAI,OAAON,UAAU,CAACO,OAAO,KAAK,UAAU,EAAE;IAC1C,MAAMC,eAAe,GAAGR,UAAU,CAACO,OAAO,CAAC;MACvCE,MAAM,EAAEA,MAAMnB,SAAS;MACvBoB,OAAO,EAAEA,MAAMpB,SAAS;MACxBqB,QAAQ,EAAEA,MAAMrB,SAAS;MACzBR,KAAK,EAAEQ,SAAS;MAChBI,QAAQ,EAAE,KAAK;MACfkB,QAAQ,EAAE,KAAK;MACfC,GAAG,EAAEvB;KACR,CAAC;IAEF,kBAAIF,cAAK,CAAC0B,cAAc,CAACN,eAAe,CAAC,EAAE;MACvC,MAAM;QAAE9B,KAAK;QAAEqC;OAAM,GAAGP,eAAsB;MAE9C,IAAIO,IAAI,CAACC,WAAW,KAAK,SAAS,EAAE;QAChC,IAAItC,KAAK,CAACuC,QAAQ,EAAE;UAChB,OAAO,CACHC,sBAAsB,CAACC,QAAQ,EAC/BD,sBAAsB,CAACE,QAAQ,EAC/BF,sBAAsB,CAACG,SAAS,EAChCH,sBAAsB,CAACI,SAAS,EAChCJ,sBAAsB,CAACK,OAAO,EAC9BL,sBAAsB,CAACM,UAAU,CACpC;;QAGL,OAAO,CACHN,sBAAsB,CAACG,SAAS,EAChCH,sBAAsB,CAACO,YAAY,EACnCP,sBAAsB,CAACK,OAAO,EAC9BL,sBAAsB,CAACM,UAAU,CACpC;;;;EAKb,IAAIxB,UAAU,CAAC0B,QAAQ,KAAK,QAAQ,EAAE;IAClC,OAAO,CACHR,sBAAsB,CAACG,SAAS,EAChCH,sBAAsB,CAACO,YAAY,EACnCP,sBAAsB,CAACS,aAAa,EACpCT,sBAAsB,CAACU,UAAU,EACjCV,sBAAsB,CAACW,SAAS,EAChCX,sBAAsB,CAACK,OAAO,EAC9BL,sBAAsB,CAACM,UAAU,CACpC;;EAGL,IAAIxB,UAAU,CAACO,OAAO,KAAK,YAAY,IAAIP,UAAU,CAAC0B,QAAQ,KAAK,UAAU,EAAE;IAC3E,OAAO,CACHR,sBAAsB,CAACG,SAAS,EAChCH,sBAAsB,CAACO,YAAY,EACnCP,sBAAsB,CAACW,SAAS,EAChCX,sBAAsB,CAACU,UAAU,EACjCV,sBAAsB,CAACS,aAAa,EACpCT,sBAAsB,CAACK,OAAO,EAC9BL,sBAAsB,CAACM,UAAU,EACjCN,sBAAsB,CAACY,mBAAmB,EAC1CZ,sBAAsB,CAACa,sBAAsB,CAChD;;EAGL,IAAI/B,UAAU,CAACO,OAAO,KAAK,QAAQ,EAAE;IACjC,OAAO,CAACW,sBAAsB,CAACG,SAAS,CAAC;;EAG7C,OAAO,CACHH,sBAAsB,CAACc,QAAQ,EAC/Bd,sBAAsB,CAACe,cAAc,EACrCf,sBAAsB,CAACG,SAAS,EAChCH,sBAAsB,CAACO,YAAY,EACnCP,sBAAsB,CAACK,OAAO,EAC9BL,sBAAsB,CAACM,UAAU,CACpC;AACL;AAEA,SAASzB,iBAAiBA,CACtBH,UAAkC,EAClCZ,KAAwB,EACxBL,MAAiC;;EAEjC,MAAMuD,MAAM,GAAG,CAAAvD,MAAM,aAANA,MAAM,wBAAAwD,iBAAA,GAANxD,MAAM,CAAEuB,SAAS,cAAAiC,iBAAA,wBAAAC,sBAAA,GAAjBD,iBAAA,CAAmBhC,IAAI,cAAAiC,sBAAA,uBAAvBA,sBAAA,CAAyB7B,OAAO,MAAK,YAAY;EAEhE,QAAQX,UAAU;IACd,KAAKsB,sBAAsB,CAACc,QAAQ;MAChC,OAAOhD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACC,QAAQ;IAEpD,KAAKrB,sBAAsB,CAACe,cAAc;MACtC,OAAOjD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACE,cAAc;IAE1D,KAAKtB,sBAAsB,CAACG,SAAS;MACjC,OAAOrC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACG,SAAS;IAErD,KAAKvB,sBAAsB,CAACO,YAAY;MACpC,OAAOzC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACI,YAAY;IAExD,KAAKxB,sBAAsB,CAACS,aAAa;MACrC,OAAOO,MAAM,GAAGlD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACK,OAAO,GAAG3D,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACM,aAAa;IAE7G,KAAK1B,sBAAsB,CAACU,UAAU;MAClC,OAAOM,MAAM,GAAGlD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACO,QAAQ,GAAG7D,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACQ,UAAU;IAE3G,KAAK5B,sBAAsB,CAACW,SAAS;MACjC,OAAO7C,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACS,SAAS;IAErD,KAAK7B,sBAAsB,CAACK,OAAO;MAC/B,OAAOvC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACU,OAAO;IAEnD,KAAK9B,sBAAsB,CAACM,UAAU;MAClC,OAAOxC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACW,UAAU;IAEtD,KAAK/B,sBAAsB,CAACY,mBAAmB;MAC3C,OAAOI,MAAM,GAAGlD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACY,YAAY,GAAGlE,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACa,mBAAmB;IAExH,KAAKjC,sBAAsB,CAACa,sBAAsB;MAC9C,OAAOG,MAAM,GACPlD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACc,WAAW,GAC5CpE,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACe,sBAAsB;IAEjE,KAAKnC,sBAAsB,CAACC,QAAQ;MAChC,OAAOnC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACgB,QAAQ;IAEpD,KAAKpC,sBAAsB,CAACE,QAAQ;MAChC,OAAOpC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACiB,QAAQ;IAEpD,KAAKrC,sBAAsB,CAACI,SAAS;MACjC,OAAOtC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,WAAW,CAACkB,SAAS;IAErD;MACI,OAAO,EAAE;;AAErB;;;;"}
|