@vuu-ui/vuu-table 0.13.6 → 0.13.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +5236 -61
- package/cjs/index.js.map +1 -1
- package/esm/index.js +5205 -26
- package/esm/index.js.map +1 -1
- package/package.json +10 -10
- package/types/Table.d.ts +0 -1
- package/types/column-resizing/ColumnResizer.d.ts +6 -1
- package/types/column-resizing/useTableColumnResize.d.ts +3 -3
- package/types/header-cell/GroupHeaderCell.d.ts +2 -1
- package/types/header-cell/HeaderCell.d.ts +1 -1
- package/types/table-dom-utils.d.ts +1 -0
- package/types/table-header/TableHeader.d.ts +2 -2
- package/types/table-header/useTableHeader.d.ts +11 -7
- package/types/useTable.d.ts +2 -2
- package/cjs/CellFocusState.js +0 -45
- package/cjs/CellFocusState.js.map +0 -1
- package/cjs/Row.css.js +0 -6
- package/cjs/Row.css.js.map +0 -1
- package/cjs/Row.js +0 -151
- package/cjs/Row.js.map +0 -1
- package/cjs/Table.css.js +0 -6
- package/cjs/Table.css.js.map +0 -1
- package/cjs/Table.js +0 -433
- package/cjs/Table.js.map +0 -1
- package/cjs/VirtualColSpan.js +0 -19
- package/cjs/VirtualColSpan.js.map +0 -1
- package/cjs/bulk-edit/BulkEditDialog.js +0 -57
- package/cjs/bulk-edit/BulkEditDialog.js.map +0 -1
- package/cjs/bulk-edit/BulkEditPanel.css.js +0 -6
- package/cjs/bulk-edit/BulkEditPanel.css.js.map +0 -1
- package/cjs/bulk-edit/BulkEditPanel.js +0 -72
- package/cjs/bulk-edit/BulkEditPanel.js.map +0 -1
- package/cjs/bulk-edit/BulkEditRow.css.js +0 -6
- package/cjs/bulk-edit/BulkEditRow.css.js.map +0 -1
- package/cjs/bulk-edit/BulkEditRow.js +0 -81
- package/cjs/bulk-edit/BulkEditRow.js.map +0 -1
- package/cjs/bulk-edit/useBulkEditPanel.js +0 -101
- package/cjs/bulk-edit/useBulkEditPanel.js.map +0 -1
- package/cjs/bulk-edit/useBulkEditRow.js +0 -144
- package/cjs/bulk-edit/useBulkEditRow.js.map +0 -1
- package/cjs/cell-block/CellBlock.css.js +0 -6
- package/cjs/cell-block/CellBlock.css.js.map +0 -1
- package/cjs/cell-block/CellBlock.js +0 -45
- package/cjs/cell-block/CellBlock.js.map +0 -1
- package/cjs/cell-block/cellblock-utils.js +0 -125
- package/cjs/cell-block/cellblock-utils.js.map +0 -1
- package/cjs/cell-block/useCellBlockSelection.js +0 -254
- package/cjs/cell-block/useCellBlockSelection.js.map +0 -1
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -6
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +0 -68
- package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
- package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -6
- package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
- package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -33
- package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
- package/cjs/cell-renderers/input-cell/InputCell.css.js +0 -6
- package/cjs/cell-renderers/input-cell/InputCell.css.js.map +0 -1
- package/cjs/cell-renderers/input-cell/InputCell.js +0 -52
- package/cjs/cell-renderers/input-cell/InputCell.js.map +0 -1
- package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js +0 -6
- package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
- package/cjs/cell-renderers/toggle-cell/ToggleCell.js +0 -67
- package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
- package/cjs/column-header-pill/ColumnHeaderPill.css.js +0 -6
- package/cjs/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
- package/cjs/column-header-pill/ColumnHeaderPill.js +0 -53
- package/cjs/column-header-pill/ColumnHeaderPill.js.map +0 -1
- package/cjs/column-header-pill/GroupColumnPill.css.js +0 -6
- package/cjs/column-header-pill/GroupColumnPill.css.js.map +0 -1
- package/cjs/column-header-pill/GroupColumnPill.js +0 -29
- package/cjs/column-header-pill/GroupColumnPill.js.map +0 -1
- package/cjs/column-header-pill/SortIndicator.css.js +0 -6
- package/cjs/column-header-pill/SortIndicator.css.js.map +0 -1
- package/cjs/column-header-pill/SortIndicator.js +0 -27
- package/cjs/column-header-pill/SortIndicator.js.map +0 -1
- package/cjs/column-resizing/ColumnResizer.css.js +0 -6
- package/cjs/column-resizing/ColumnResizer.css.js.map +0 -1
- package/cjs/column-resizing/ColumnResizer.js +0 -72
- package/cjs/column-resizing/ColumnResizer.js.map +0 -1
- package/cjs/column-resizing/useTableColumnResize.js +0 -55
- package/cjs/column-resizing/useTableColumnResize.js.map +0 -1
- package/cjs/header-cell/GroupHeaderCell.css.js +0 -6
- package/cjs/header-cell/GroupHeaderCell.css.js.map +0 -1
- package/cjs/header-cell/GroupHeaderCell.js +0 -127
- package/cjs/header-cell/GroupHeaderCell.js.map +0 -1
- package/cjs/header-cell/HeaderCell.css.js +0 -6
- package/cjs/header-cell/HeaderCell.css.js.map +0 -1
- package/cjs/header-cell/HeaderCell.js +0 -107
- package/cjs/header-cell/HeaderCell.js.map +0 -1
- package/cjs/pagination/PaginationControl.css.js +0 -6
- package/cjs/pagination/PaginationControl.css.js.map +0 -1
- package/cjs/pagination/PaginationControl.js +0 -38
- package/cjs/pagination/PaginationControl.js.map +0 -1
- package/cjs/pagination/usePagination.js +0 -36
- package/cjs/pagination/usePagination.js.map +0 -1
- package/cjs/table-cell/TableCell.css.js +0 -6
- package/cjs/table-cell/TableCell.css.js.map +0 -1
- package/cjs/table-cell/TableCell.js +0 -95
- package/cjs/table-cell/TableCell.js.map +0 -1
- package/cjs/table-cell/TableGroupCell.css.js +0 -6
- package/cjs/table-cell/TableGroupCell.css.js.map +0 -1
- package/cjs/table-cell/TableGroupCell.js +0 -66
- package/cjs/table-cell/TableGroupCell.js.map +0 -1
- package/cjs/table-config.js +0 -35
- package/cjs/table-config.js.map +0 -1
- package/cjs/table-dom-utils.js +0 -198
- package/cjs/table-dom-utils.js.map +0 -1
- package/cjs/table-header/HeaderProvider.js +0 -18
- package/cjs/table-header/HeaderProvider.js.map +0 -1
- package/cjs/table-header/TableHeader.js +0 -154
- package/cjs/table-header/TableHeader.js.map +0 -1
- package/cjs/table-header/useTableHeader.js +0 -87
- package/cjs/table-header/useTableHeader.js.map +0 -1
- package/cjs/useCell.js +0 -28
- package/cjs/useCell.js.map +0 -1
- package/cjs/useCellEditing.js +0 -79
- package/cjs/useCellEditing.js.map +0 -1
- package/cjs/useCellFocus.js +0 -115
- package/cjs/useCellFocus.js.map +0 -1
- package/cjs/useControlledTableNavigation.js +0 -46
- package/cjs/useControlledTableNavigation.js.map +0 -1
- package/cjs/useDataSource.js +0 -146
- package/cjs/useDataSource.js.map +0 -1
- package/cjs/useEditableCell.js +0 -32
- package/cjs/useEditableCell.js.map +0 -1
- package/cjs/useHighlighting.js +0 -33
- package/cjs/useHighlighting.js.map +0 -1
- package/cjs/useKeyboardNavigation.js +0 -318
- package/cjs/useKeyboardNavigation.js.map +0 -1
- package/cjs/useMeasuredHeight.js +0 -41
- package/cjs/useMeasuredHeight.js.map +0 -1
- package/cjs/useRowClassNameGenerators.js +0 -34
- package/cjs/useRowClassNameGenerators.js.map +0 -1
- package/cjs/useSelection.js +0 -74
- package/cjs/useSelection.js.map +0 -1
- package/cjs/useTable.js +0 -714
- package/cjs/useTable.js.map +0 -1
- package/cjs/useTableContextMenu.js +0 -59
- package/cjs/useTableContextMenu.js.map +0 -1
- package/cjs/useTableModel.js +0 -383
- package/cjs/useTableModel.js.map +0 -1
- package/cjs/useTableScroll.js +0 -446
- package/cjs/useTableScroll.js.map +0 -1
- package/cjs/useTableViewport.js +0 -137
- package/cjs/useTableViewport.js.map +0 -1
- package/esm/CellFocusState.js +0 -43
- package/esm/CellFocusState.js.map +0 -1
- package/esm/Row.css.js +0 -4
- package/esm/Row.css.js.map +0 -1
- package/esm/Row.js +0 -148
- package/esm/Row.js.map +0 -1
- package/esm/Table.css.js +0 -4
- package/esm/Table.css.js.map +0 -1
- package/esm/Table.js +0 -431
- package/esm/Table.js.map +0 -1
- package/esm/VirtualColSpan.js +0 -17
- package/esm/VirtualColSpan.js.map +0 -1
- package/esm/bulk-edit/BulkEditDialog.js +0 -55
- package/esm/bulk-edit/BulkEditDialog.js.map +0 -1
- package/esm/bulk-edit/BulkEditPanel.css.js +0 -4
- package/esm/bulk-edit/BulkEditPanel.css.js.map +0 -1
- package/esm/bulk-edit/BulkEditPanel.js +0 -70
- package/esm/bulk-edit/BulkEditPanel.js.map +0 -1
- package/esm/bulk-edit/BulkEditRow.css.js +0 -4
- package/esm/bulk-edit/BulkEditRow.css.js.map +0 -1
- package/esm/bulk-edit/BulkEditRow.js +0 -79
- package/esm/bulk-edit/BulkEditRow.js.map +0 -1
- package/esm/bulk-edit/useBulkEditPanel.js +0 -99
- package/esm/bulk-edit/useBulkEditPanel.js.map +0 -1
- package/esm/bulk-edit/useBulkEditRow.js +0 -142
- package/esm/bulk-edit/useBulkEditRow.js.map +0 -1
- package/esm/cell-block/CellBlock.css.js +0 -4
- package/esm/cell-block/CellBlock.css.js.map +0 -1
- package/esm/cell-block/CellBlock.js +0 -43
- package/esm/cell-block/CellBlock.js.map +0 -1
- package/esm/cell-block/cellblock-utils.js +0 -116
- package/esm/cell-block/cellblock-utils.js.map +0 -1
- package/esm/cell-block/useCellBlockSelection.js +0 -252
- package/esm/cell-block/useCellBlockSelection.js.map +0 -1
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -4
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +0 -66
- package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
- package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -4
- package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
- package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -31
- package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
- package/esm/cell-renderers/input-cell/InputCell.css.js +0 -4
- package/esm/cell-renderers/input-cell/InputCell.css.js.map +0 -1
- package/esm/cell-renderers/input-cell/InputCell.js +0 -50
- package/esm/cell-renderers/input-cell/InputCell.js.map +0 -1
- package/esm/cell-renderers/toggle-cell/ToggleCell.css.js +0 -4
- package/esm/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
- package/esm/cell-renderers/toggle-cell/ToggleCell.js +0 -65
- package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
- package/esm/column-header-pill/ColumnHeaderPill.css.js +0 -4
- package/esm/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
- package/esm/column-header-pill/ColumnHeaderPill.js +0 -51
- package/esm/column-header-pill/ColumnHeaderPill.js.map +0 -1
- package/esm/column-header-pill/GroupColumnPill.css.js +0 -4
- package/esm/column-header-pill/GroupColumnPill.css.js.map +0 -1
- package/esm/column-header-pill/GroupColumnPill.js +0 -27
- package/esm/column-header-pill/GroupColumnPill.js.map +0 -1
- package/esm/column-header-pill/SortIndicator.css.js +0 -4
- package/esm/column-header-pill/SortIndicator.css.js.map +0 -1
- package/esm/column-header-pill/SortIndicator.js +0 -25
- package/esm/column-header-pill/SortIndicator.js.map +0 -1
- package/esm/column-resizing/ColumnResizer.css.js +0 -4
- package/esm/column-resizing/ColumnResizer.css.js.map +0 -1
- package/esm/column-resizing/ColumnResizer.js +0 -70
- package/esm/column-resizing/ColumnResizer.js.map +0 -1
- package/esm/column-resizing/useTableColumnResize.js +0 -53
- package/esm/column-resizing/useTableColumnResize.js.map +0 -1
- package/esm/header-cell/GroupHeaderCell.css.js +0 -4
- package/esm/header-cell/GroupHeaderCell.css.js.map +0 -1
- package/esm/header-cell/GroupHeaderCell.js +0 -125
- package/esm/header-cell/GroupHeaderCell.js.map +0 -1
- package/esm/header-cell/HeaderCell.css.js +0 -4
- package/esm/header-cell/HeaderCell.css.js.map +0 -1
- package/esm/header-cell/HeaderCell.js +0 -105
- package/esm/header-cell/HeaderCell.js.map +0 -1
- package/esm/pagination/PaginationControl.css.js +0 -4
- package/esm/pagination/PaginationControl.css.js.map +0 -1
- package/esm/pagination/PaginationControl.js +0 -36
- package/esm/pagination/PaginationControl.js.map +0 -1
- package/esm/pagination/usePagination.js +0 -34
- package/esm/pagination/usePagination.js.map +0 -1
- package/esm/table-cell/TableCell.css.js +0 -4
- package/esm/table-cell/TableCell.css.js.map +0 -1
- package/esm/table-cell/TableCell.js +0 -93
- package/esm/table-cell/TableCell.js.map +0 -1
- package/esm/table-cell/TableGroupCell.css.js +0 -4
- package/esm/table-cell/TableGroupCell.css.js.map +0 -1
- package/esm/table-cell/TableGroupCell.js +0 -64
- package/esm/table-cell/TableGroupCell.js.map +0 -1
- package/esm/table-config.js +0 -33
- package/esm/table-config.js.map +0 -1
- package/esm/table-dom-utils.js +0 -181
- package/esm/table-dom-utils.js.map +0 -1
- package/esm/table-header/HeaderProvider.js +0 -15
- package/esm/table-header/HeaderProvider.js.map +0 -1
- package/esm/table-header/TableHeader.js +0 -152
- package/esm/table-header/TableHeader.js.map +0 -1
- package/esm/table-header/useTableHeader.js +0 -85
- package/esm/table-header/useTableHeader.js.map +0 -1
- package/esm/useCell.js +0 -26
- package/esm/useCell.js.map +0 -1
- package/esm/useCellEditing.js +0 -77
- package/esm/useCellEditing.js.map +0 -1
- package/esm/useCellFocus.js +0 -113
- package/esm/useCellFocus.js.map +0 -1
- package/esm/useControlledTableNavigation.js +0 -43
- package/esm/useControlledTableNavigation.js.map +0 -1
- package/esm/useDataSource.js +0 -144
- package/esm/useDataSource.js.map +0 -1
- package/esm/useEditableCell.js +0 -30
- package/esm/useEditableCell.js.map +0 -1
- package/esm/useHighlighting.js +0 -31
- package/esm/useHighlighting.js.map +0 -1
- package/esm/useKeyboardNavigation.js +0 -314
- package/esm/useKeyboardNavigation.js.map +0 -1
- package/esm/useMeasuredHeight.js +0 -39
- package/esm/useMeasuredHeight.js.map +0 -1
- package/esm/useRowClassNameGenerators.js +0 -32
- package/esm/useRowClassNameGenerators.js.map +0 -1
- package/esm/useSelection.js +0 -72
- package/esm/useSelection.js.map +0 -1
- package/esm/useTable.js +0 -712
- package/esm/useTable.js.map +0 -1
- package/esm/useTableContextMenu.js +0 -56
- package/esm/useTableContextMenu.js.map +0 -1
- package/esm/useTableModel.js +0 -381
- package/esm/useTableModel.js.map +0 -1
- package/esm/useTableScroll.js +0 -443
- package/esm/useTableScroll.js.map +0 -1
- package/esm/useTableViewport.js +0 -135
- package/esm/useTableViewport.js.map +0 -1
package/cjs/useTable.js
DELETED
|
@@ -1,714 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var vuuTableExtras = require('@vuu-ui/vuu-table-extras');
|
|
4
|
-
var vuuUiControls = require('@vuu-ui/vuu-ui-controls');
|
|
5
|
-
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
6
|
-
var react = require('react');
|
|
7
|
-
var useCellBlockSelection = require('./cell-block/useCellBlockSelection.js');
|
|
8
|
-
var CellFocusState = require('./CellFocusState.js');
|
|
9
|
-
var tableConfig = require('./table-config.js');
|
|
10
|
-
var tableDomUtils = require('./table-dom-utils.js');
|
|
11
|
-
var useCellEditing = require('./useCellEditing.js');
|
|
12
|
-
var useCellFocus = require('./useCellFocus.js');
|
|
13
|
-
var useDataSource = require('./useDataSource.js');
|
|
14
|
-
var useKeyboardNavigation = require('./useKeyboardNavigation.js');
|
|
15
|
-
var useRowClassNameGenerators = require('./useRowClassNameGenerators.js');
|
|
16
|
-
var useSelection = require('./useSelection.js');
|
|
17
|
-
var useTableContextMenu = require('./useTableContextMenu.js');
|
|
18
|
-
var useTableModel = require('./useTableModel.js');
|
|
19
|
-
var useTableScroll = require('./useTableScroll.js');
|
|
20
|
-
var useTableViewport = require('./useTableViewport.js');
|
|
21
|
-
|
|
22
|
-
const nullHeaderState = {
|
|
23
|
-
height: -1,
|
|
24
|
-
count: -1
|
|
25
|
-
};
|
|
26
|
-
const zeroHeaderState = {
|
|
27
|
-
height: 0,
|
|
28
|
-
count: 0
|
|
29
|
-
};
|
|
30
|
-
const stripInternalProperties = (tableConfig) => {
|
|
31
|
-
return tableConfig;
|
|
32
|
-
};
|
|
33
|
-
const { KEY, IS_EXPANDED, IS_LEAF } = vuuUtils.metadataKeys;
|
|
34
|
-
const NULL_DRAG_DROP = {
|
|
35
|
-
draggable: void 0,
|
|
36
|
-
onMouseDown: void 0
|
|
37
|
-
};
|
|
38
|
-
const useNullDragDrop = () => NULL_DRAG_DROP;
|
|
39
|
-
const addColumn = (tableConfig, column) => ({
|
|
40
|
-
...tableConfig,
|
|
41
|
-
columns: tableConfig.columns.concat(column)
|
|
42
|
-
});
|
|
43
|
-
const useTable = ({
|
|
44
|
-
allowCellBlockSelection,
|
|
45
|
-
allowDragDrop = false,
|
|
46
|
-
availableColumns,
|
|
47
|
-
config,
|
|
48
|
-
containerRef,
|
|
49
|
-
dataSource,
|
|
50
|
-
defaultSelectedIndexValues,
|
|
51
|
-
defaultSelectedKeyValues,
|
|
52
|
-
disableFocus,
|
|
53
|
-
highlightedIndex: highlightedIndexProp,
|
|
54
|
-
id,
|
|
55
|
-
navigationStyle = "cell",
|
|
56
|
-
onAvailableColumnsChange,
|
|
57
|
-
onConfigChange,
|
|
58
|
-
onDataEdited: onDataEditedProp,
|
|
59
|
-
onDragStart,
|
|
60
|
-
onDrop,
|
|
61
|
-
onHighlight,
|
|
62
|
-
onRowClick: onRowClickProp,
|
|
63
|
-
onSelect,
|
|
64
|
-
onSelectCellBlock,
|
|
65
|
-
onSelectionChange,
|
|
66
|
-
renderBufferSize = 0,
|
|
67
|
-
revealSelected,
|
|
68
|
-
rowHeight = 20,
|
|
69
|
-
rowToObject = vuuUtils.asDataSourceRowObject,
|
|
70
|
-
scrollingApiRef,
|
|
71
|
-
selectionBookendWidth = 4,
|
|
72
|
-
selectionModel,
|
|
73
|
-
showColumnHeaderMenus = true,
|
|
74
|
-
showColumnHeaders,
|
|
75
|
-
showPaginationControls,
|
|
76
|
-
size
|
|
77
|
-
}) => {
|
|
78
|
-
const tableConfigRef = react.useRef(config);
|
|
79
|
-
const requestScrollRef = react.useRef(void 0);
|
|
80
|
-
react.useMemo(() => {
|
|
81
|
-
tableConfigRef.current = config;
|
|
82
|
-
}, [config]);
|
|
83
|
-
const initialState = react.useMemo(() => new CellFocusState.CellFocusState(), []);
|
|
84
|
-
const cellFocusStateRef = react.useRef(initialState);
|
|
85
|
-
const focusCellRef = react.useRef(void 0);
|
|
86
|
-
const [headerState, setHeaderState] = react.useState(
|
|
87
|
-
showColumnHeaders ? nullHeaderState : zeroHeaderState
|
|
88
|
-
);
|
|
89
|
-
const [rowCount, setRowCount] = react.useState(dataSource.size);
|
|
90
|
-
if (dataSource === void 0) {
|
|
91
|
-
throw Error("no data source provided to Vuu Table");
|
|
92
|
-
}
|
|
93
|
-
const onDataRowcountChange = react.useCallback((size2) => {
|
|
94
|
-
setRowCount(size2);
|
|
95
|
-
}, []);
|
|
96
|
-
const virtualContentHeight = rowHeight * rowCount;
|
|
97
|
-
const viewportBodyHeight = size.height - (headerState.height === -1 ? 0 : headerState.height);
|
|
98
|
-
const verticalScrollbarWidth = virtualContentHeight > viewportBodyHeight ? 10 : 0;
|
|
99
|
-
const availableWidth = size.width - (verticalScrollbarWidth + 2 * selectionBookendWidth);
|
|
100
|
-
const rowClassNameGenerator = useRowClassNameGenerators.useRowClassNameGenerators(config);
|
|
101
|
-
const useRowDragDrop = allowDragDrop ? vuuUiControls.useDragDrop : useNullDragDrop;
|
|
102
|
-
const {
|
|
103
|
-
columns,
|
|
104
|
-
dispatchTableModelAction,
|
|
105
|
-
headings,
|
|
106
|
-
tableAttributes,
|
|
107
|
-
tableConfig: tableConfig$1
|
|
108
|
-
} = useTableModel.useTableModel({ config, dataSource, selectionModel, availableWidth });
|
|
109
|
-
vuuUtils.useLayoutEffectSkipFirst(() => {
|
|
110
|
-
dispatchTableModelAction({
|
|
111
|
-
availableWidth,
|
|
112
|
-
type: "init",
|
|
113
|
-
tableConfig: tableConfigRef.current,
|
|
114
|
-
dataSource
|
|
115
|
-
});
|
|
116
|
-
}, [availableWidth, config, dataSource, dispatchTableModelAction]);
|
|
117
|
-
const applyTableConfigChange = react.useCallback(
|
|
118
|
-
(config2) => {
|
|
119
|
-
dispatchTableModelAction({
|
|
120
|
-
availableWidth,
|
|
121
|
-
type: "init",
|
|
122
|
-
tableConfig: config2,
|
|
123
|
-
dataSource
|
|
124
|
-
});
|
|
125
|
-
tableConfigRef.current = config2;
|
|
126
|
-
onConfigChange?.(stripInternalProperties(config2));
|
|
127
|
-
},
|
|
128
|
-
[availableWidth, dataSource, dispatchTableModelAction, onConfigChange]
|
|
129
|
-
);
|
|
130
|
-
const columnMap = react.useMemo(
|
|
131
|
-
() => vuuUtils.buildColumnMap(dataSource.columns),
|
|
132
|
-
[dataSource.columns]
|
|
133
|
-
);
|
|
134
|
-
const onSubscribed = react.useCallback(
|
|
135
|
-
({ tableSchema }) => {
|
|
136
|
-
if (tableSchema) {
|
|
137
|
-
dispatchTableModelAction({
|
|
138
|
-
type: "setTableSchema",
|
|
139
|
-
tableSchema
|
|
140
|
-
});
|
|
141
|
-
} else {
|
|
142
|
-
console.log("subscription message with no schema");
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
[dispatchTableModelAction]
|
|
146
|
-
);
|
|
147
|
-
const {
|
|
148
|
-
getRowAtPosition,
|
|
149
|
-
getRowOffset,
|
|
150
|
-
setInSituRowOffset: viewportHookSetInSituRowOffset,
|
|
151
|
-
setScrollTop: viewportHookSetScrollTop,
|
|
152
|
-
...viewportMeasurements
|
|
153
|
-
} = useTableViewport.useTableViewport({
|
|
154
|
-
columns,
|
|
155
|
-
headerHeight: headerState.height,
|
|
156
|
-
rowCount,
|
|
157
|
-
rowHeight,
|
|
158
|
-
selectionEndSize: selectionBookendWidth,
|
|
159
|
-
size,
|
|
160
|
-
showPaginationControls
|
|
161
|
-
});
|
|
162
|
-
const { data, dataRef, getSelectedRows, range, setRange } = useDataSource.useDataSource({
|
|
163
|
-
dataSource,
|
|
164
|
-
defaultSelectedIndexValues,
|
|
165
|
-
defaultSelectedKeyValues,
|
|
166
|
-
renderBufferSize,
|
|
167
|
-
revealSelected,
|
|
168
|
-
onSizeChange: onDataRowcountChange,
|
|
169
|
-
onSubscribed
|
|
170
|
-
});
|
|
171
|
-
const { requestScroll, ...scrollProps } = useTableScroll.useTableScroll({
|
|
172
|
-
cellFocusStateRef,
|
|
173
|
-
columns,
|
|
174
|
-
focusCell: focusCellRef.current,
|
|
175
|
-
getRowAtPosition,
|
|
176
|
-
rowHeight,
|
|
177
|
-
scrollingApiRef,
|
|
178
|
-
setRange,
|
|
179
|
-
showPaginationControls,
|
|
180
|
-
onVerticalScroll: viewportHookSetScrollTop,
|
|
181
|
-
onVerticalScrollInSitu: viewportHookSetInSituRowOffset,
|
|
182
|
-
viewportMeasurements
|
|
183
|
-
});
|
|
184
|
-
requestScrollRef.current = requestScroll;
|
|
185
|
-
const handleConfigEditedInSettingsPanel = react.useCallback(
|
|
186
|
-
(tableConfig2) => {
|
|
187
|
-
dispatchTableModelAction({
|
|
188
|
-
availableWidth,
|
|
189
|
-
dataSource,
|
|
190
|
-
tableConfig: tableConfig2,
|
|
191
|
-
type: "init"
|
|
192
|
-
});
|
|
193
|
-
tableConfigRef.current = tableConfig2;
|
|
194
|
-
onConfigChange?.(stripInternalProperties(tableConfig2));
|
|
195
|
-
},
|
|
196
|
-
[availableWidth, dataSource, dispatchTableModelAction, onConfigChange]
|
|
197
|
-
);
|
|
198
|
-
const handleDataSourceConfigChanged = react.useCallback(
|
|
199
|
-
(dataSourceConfig) => {
|
|
200
|
-
dataSource.config = {
|
|
201
|
-
...dataSource.config,
|
|
202
|
-
...dataSourceConfig
|
|
203
|
-
};
|
|
204
|
-
},
|
|
205
|
-
[dataSource]
|
|
206
|
-
);
|
|
207
|
-
const handleConfigChange = react.useCallback(
|
|
208
|
-
(config2, range2, confirmed, changes) => {
|
|
209
|
-
const scrollSensitiveChanges = changes?.filterChanged || changes?.groupByChanged;
|
|
210
|
-
if (scrollSensitiveChanges && range2.from > 0) {
|
|
211
|
-
requestScrollRef.current?.({
|
|
212
|
-
type: "scroll-end",
|
|
213
|
-
direction: "home"
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
dispatchTableModelAction({
|
|
217
|
-
type: "tableConfig",
|
|
218
|
-
...config2,
|
|
219
|
-
confirmed
|
|
220
|
-
});
|
|
221
|
-
},
|
|
222
|
-
[dispatchTableModelAction]
|
|
223
|
-
);
|
|
224
|
-
react.useEffect(() => {
|
|
225
|
-
dataSource.on("config", handleConfigChange);
|
|
226
|
-
return () => {
|
|
227
|
-
dataSource.removeListener("config", handleConfigChange);
|
|
228
|
-
};
|
|
229
|
-
}, [dataSource, dispatchTableModelAction, handleConfigChange]);
|
|
230
|
-
const handleCreateCalculatedColumn = react.useCallback(
|
|
231
|
-
(column) => {
|
|
232
|
-
dataSource.columns = dataSource.columns.concat(column.name);
|
|
233
|
-
applyTableConfigChange(addColumn(tableConfig$1, column));
|
|
234
|
-
},
|
|
235
|
-
[dataSource, tableConfig$1, applyTableConfigChange]
|
|
236
|
-
);
|
|
237
|
-
const hideColumns = react.useCallback(
|
|
238
|
-
(action) => {
|
|
239
|
-
const { columns: columns2 } = action;
|
|
240
|
-
const hiddenColumns = columns2.map((c) => c.name);
|
|
241
|
-
const newTableConfig = {
|
|
242
|
-
...tableConfig$1,
|
|
243
|
-
columns: tableConfig$1.columns.map(
|
|
244
|
-
(col) => hiddenColumns.includes(col.name) ? { ...col, hidden: true } : col
|
|
245
|
-
)
|
|
246
|
-
};
|
|
247
|
-
applyTableConfigChange(newTableConfig);
|
|
248
|
-
},
|
|
249
|
-
[tableConfig$1, applyTableConfigChange]
|
|
250
|
-
);
|
|
251
|
-
const pinColumn = react.useCallback(
|
|
252
|
-
(action) => {
|
|
253
|
-
applyTableConfigChange({
|
|
254
|
-
...tableConfig$1,
|
|
255
|
-
columns: vuuUtils.updateColumn(tableConfig$1.columns, {
|
|
256
|
-
...action.column,
|
|
257
|
-
pin: action.pin
|
|
258
|
-
})
|
|
259
|
-
});
|
|
260
|
-
},
|
|
261
|
-
[tableConfig$1, applyTableConfigChange]
|
|
262
|
-
);
|
|
263
|
-
const { showColumnSettingsPanel, showTableSettingsPanel } = vuuTableExtras.useTableAndColumnSettings({
|
|
264
|
-
availableColumns: availableColumns ?? tableConfig$1.columns.map(({ name, serverDataType = "string" }) => ({
|
|
265
|
-
name,
|
|
266
|
-
serverDataType
|
|
267
|
-
})),
|
|
268
|
-
onAvailableColumnsChange,
|
|
269
|
-
onConfigChange: handleConfigEditedInSettingsPanel,
|
|
270
|
-
onCreateCalculatedColumn: handleCreateCalculatedColumn,
|
|
271
|
-
onDataSourceConfigChange: handleDataSourceConfigChanged,
|
|
272
|
-
settingsPermissions: {
|
|
273
|
-
allowColumnSettings: vuuTableExtras.columnSettingsFromColumnMenuPermissions(
|
|
274
|
-
showColumnHeaderMenus
|
|
275
|
-
),
|
|
276
|
-
allowTableSettings: vuuTableExtras.tableSettingsFromColumnMenuPermissions(
|
|
277
|
-
showColumnHeaderMenus
|
|
278
|
-
)
|
|
279
|
-
},
|
|
280
|
-
tableConfig: tableConfig$1
|
|
281
|
-
});
|
|
282
|
-
const handleColumnDisplayAction = react.useCallback(
|
|
283
|
-
(action) => {
|
|
284
|
-
const { type } = action;
|
|
285
|
-
switch (type) {
|
|
286
|
-
case "hideColumn":
|
|
287
|
-
return hideColumns({
|
|
288
|
-
type: "hideColumns",
|
|
289
|
-
columns: [action.column]
|
|
290
|
-
});
|
|
291
|
-
case "pinColumn":
|
|
292
|
-
return pinColumn(action);
|
|
293
|
-
default:
|
|
294
|
-
vuuUtils.logUnhandledMessage(type, "[vuu-table] handleColumnDisplayAction");
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
[hideColumns, pinColumn]
|
|
298
|
-
);
|
|
299
|
-
const handleDisplaySettingsAction = react.useCallback(
|
|
300
|
-
(action) => {
|
|
301
|
-
if (action.type === "column-settings") {
|
|
302
|
-
showColumnSettingsPanel(action);
|
|
303
|
-
} else {
|
|
304
|
-
showTableSettingsPanel();
|
|
305
|
-
}
|
|
306
|
-
},
|
|
307
|
-
[showColumnSettingsPanel, showTableSettingsPanel]
|
|
308
|
-
);
|
|
309
|
-
const handleColumnAction = vuuTableExtras.useColumnActions({
|
|
310
|
-
dataSource,
|
|
311
|
-
onColumnDisplayAction: handleColumnDisplayAction,
|
|
312
|
-
onDisplaySettingsAction: handleDisplaySettingsAction
|
|
313
|
-
});
|
|
314
|
-
const handleSort = react.useCallback(
|
|
315
|
-
(column, extendSort = false, sortType) => {
|
|
316
|
-
if (dataSource) {
|
|
317
|
-
dataSource.sort = vuuUtils.toggleOrApplySort(
|
|
318
|
-
dataSource.sort,
|
|
319
|
-
column,
|
|
320
|
-
extendSort,
|
|
321
|
-
sortType
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
},
|
|
325
|
-
[dataSource]
|
|
326
|
-
);
|
|
327
|
-
const resizeCells = react.useRef(void 0);
|
|
328
|
-
const onResizeColumn = react.useCallback(
|
|
329
|
-
(phase, columnName, width) => {
|
|
330
|
-
const column = columns.find((column2) => column2.name === columnName);
|
|
331
|
-
if (column) {
|
|
332
|
-
if (phase === "resize") {
|
|
333
|
-
resizeCells.current?.forEach((cell) => {
|
|
334
|
-
cell.style.width = `${width}px`;
|
|
335
|
-
});
|
|
336
|
-
} else if (phase === "end") {
|
|
337
|
-
resizeCells.current = void 0;
|
|
338
|
-
if (vuuUtils.isValidNumber(width)) {
|
|
339
|
-
dispatchTableModelAction({
|
|
340
|
-
type: "resizeColumn",
|
|
341
|
-
phase,
|
|
342
|
-
column,
|
|
343
|
-
width
|
|
344
|
-
});
|
|
345
|
-
onConfigChange?.(
|
|
346
|
-
stripInternalProperties(
|
|
347
|
-
tableConfig.updateTableConfig(tableConfig$1, {
|
|
348
|
-
type: "col-size",
|
|
349
|
-
column,
|
|
350
|
-
columns,
|
|
351
|
-
width
|
|
352
|
-
})
|
|
353
|
-
)
|
|
354
|
-
);
|
|
355
|
-
}
|
|
356
|
-
} else {
|
|
357
|
-
const byColIndex = `[aria-colindex='${column.ariaColIndex}']`;
|
|
358
|
-
resizeCells.current = Array.from(
|
|
359
|
-
containerRef.current?.querySelectorAll(
|
|
360
|
-
`.vuuTableCell${byColIndex},.vuuTableHeaderCell${byColIndex}`
|
|
361
|
-
) ?? []
|
|
362
|
-
);
|
|
363
|
-
dispatchTableModelAction({
|
|
364
|
-
type: "resizeColumn",
|
|
365
|
-
phase,
|
|
366
|
-
column,
|
|
367
|
-
width
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
} else {
|
|
371
|
-
throw Error(
|
|
372
|
-
`useDataTable.handleColumnResize, column ${columnName} not found`
|
|
373
|
-
);
|
|
374
|
-
}
|
|
375
|
-
},
|
|
376
|
-
[
|
|
377
|
-
columns,
|
|
378
|
-
dispatchTableModelAction,
|
|
379
|
-
onConfigChange,
|
|
380
|
-
tableConfig$1,
|
|
381
|
-
containerRef
|
|
382
|
-
]
|
|
383
|
-
);
|
|
384
|
-
const onToggleGroup = react.useCallback(
|
|
385
|
-
(row, column) => {
|
|
386
|
-
const isJson = vuuUtils.isJsonGroup(column, row, columnMap);
|
|
387
|
-
const key = row[KEY];
|
|
388
|
-
if (row[IS_EXPANDED]) {
|
|
389
|
-
dataSource.closeTreeNode(key, true);
|
|
390
|
-
if (isJson) {
|
|
391
|
-
const idx = columns.indexOf(column);
|
|
392
|
-
const rows = dataSource.getRowsAtDepth?.(idx + 1);
|
|
393
|
-
if (rows && !rows.some((row2) => row2[IS_EXPANDED] || row2[IS_LEAF])) {
|
|
394
|
-
dispatchTableModelAction({
|
|
395
|
-
type: "hideColumns",
|
|
396
|
-
columns: columns.slice(idx + 2)
|
|
397
|
-
});
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
} else {
|
|
401
|
-
dataSource.openTreeNode(key);
|
|
402
|
-
if (isJson) {
|
|
403
|
-
const childRows = dataSource.getChildRows?.(key);
|
|
404
|
-
const idx = columns.indexOf(column) + 1;
|
|
405
|
-
const columnsToShow = [columns[idx]];
|
|
406
|
-
if (childRows && childRows.some((row2) => row2[IS_LEAF])) {
|
|
407
|
-
columnsToShow.push(columns[idx + 1]);
|
|
408
|
-
}
|
|
409
|
-
if (columnsToShow.some((col) => col.hidden)) {
|
|
410
|
-
dispatchTableModelAction({
|
|
411
|
-
type: "showColumns",
|
|
412
|
-
columns: columnsToShow
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
},
|
|
418
|
-
[columnMap, columns, dataSource, dispatchTableModelAction]
|
|
419
|
-
);
|
|
420
|
-
const handleToggleGroup = react.useCallback(
|
|
421
|
-
(treeNodeOperation, rowIdx) => {
|
|
422
|
-
if (treeNodeOperation === "expand") {
|
|
423
|
-
dataSource.openTreeNode(rowIdx);
|
|
424
|
-
} else {
|
|
425
|
-
dataSource.closeTreeNode(rowIdx);
|
|
426
|
-
}
|
|
427
|
-
},
|
|
428
|
-
[dataSource]
|
|
429
|
-
);
|
|
430
|
-
const {
|
|
431
|
-
focusCell,
|
|
432
|
-
focusCellPlaceholderKeyDown,
|
|
433
|
-
focusCellPlaceholderRef,
|
|
434
|
-
setTableBodyRef: tableBodyRef
|
|
435
|
-
} = useCellFocus.useCellFocus({
|
|
436
|
-
cellFocusStateRef,
|
|
437
|
-
containerRef,
|
|
438
|
-
disableFocus,
|
|
439
|
-
requestScroll
|
|
440
|
-
});
|
|
441
|
-
focusCellRef.current = focusCell;
|
|
442
|
-
const columnCount = columns.filter((c) => c.hidden !== true).length;
|
|
443
|
-
const {
|
|
444
|
-
highlightedIndexRef,
|
|
445
|
-
navigateCell: navigate,
|
|
446
|
-
onFocus: navigationFocus,
|
|
447
|
-
onKeyDown: navigationKeyDown,
|
|
448
|
-
...containerProps
|
|
449
|
-
} = useKeyboardNavigation.useKeyboardNavigation({
|
|
450
|
-
cellFocusStateRef,
|
|
451
|
-
columnCount,
|
|
452
|
-
containerRef,
|
|
453
|
-
disableFocus,
|
|
454
|
-
focusCell,
|
|
455
|
-
headerCount: headerState.count,
|
|
456
|
-
highlightedIndex: highlightedIndexProp,
|
|
457
|
-
navigationStyle,
|
|
458
|
-
requestScroll,
|
|
459
|
-
rowCount,
|
|
460
|
-
onHighlight,
|
|
461
|
-
onToggleGroup: handleToggleGroup,
|
|
462
|
-
viewportRange: range,
|
|
463
|
-
viewportRowCount: viewportMeasurements.rowCount
|
|
464
|
-
});
|
|
465
|
-
const {
|
|
466
|
-
onBlur: editingBlur,
|
|
467
|
-
onDoubleClick: editingDoubleClick,
|
|
468
|
-
onKeyDown: editingKeyDown,
|
|
469
|
-
onFocus: editingFocus
|
|
470
|
-
} = useCellEditing.useCellEditing({
|
|
471
|
-
navigate
|
|
472
|
-
});
|
|
473
|
-
const handleFocus = react.useCallback(
|
|
474
|
-
(e) => {
|
|
475
|
-
navigationFocus();
|
|
476
|
-
if (!e.defaultPrevented) {
|
|
477
|
-
editingFocus(e);
|
|
478
|
-
}
|
|
479
|
-
},
|
|
480
|
-
[editingFocus, navigationFocus]
|
|
481
|
-
);
|
|
482
|
-
const onContextMenu = useTableContextMenu.useTableContextMenu({
|
|
483
|
-
columns,
|
|
484
|
-
data,
|
|
485
|
-
dataSource,
|
|
486
|
-
getSelectedRows,
|
|
487
|
-
headerCount: headerState.count
|
|
488
|
-
});
|
|
489
|
-
const onMoveGroupColumn = react.useCallback(
|
|
490
|
-
(columns2) => {
|
|
491
|
-
dataSource.groupBy = columns2.map((col) => col.name);
|
|
492
|
-
},
|
|
493
|
-
[dataSource]
|
|
494
|
-
);
|
|
495
|
-
const onRemoveGroupColumn = react.useCallback(
|
|
496
|
-
(column) => {
|
|
497
|
-
if (vuuUtils.isGroupColumn(column)) {
|
|
498
|
-
dataSource.groupBy = [];
|
|
499
|
-
} else {
|
|
500
|
-
if (dataSource && dataSource.groupBy?.includes(column.name)) {
|
|
501
|
-
dataSource.groupBy = dataSource.groupBy.filter(
|
|
502
|
-
(columnName) => columnName !== column.name
|
|
503
|
-
);
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
},
|
|
507
|
-
[dataSource]
|
|
508
|
-
);
|
|
509
|
-
const handleSelectionChange = react.useCallback(
|
|
510
|
-
(selected) => {
|
|
511
|
-
dataSource.select(selected);
|
|
512
|
-
onSelectionChange?.(selected);
|
|
513
|
-
},
|
|
514
|
-
[dataSource, onSelectionChange]
|
|
515
|
-
);
|
|
516
|
-
const handleSelect = react.useCallback(
|
|
517
|
-
(row) => {
|
|
518
|
-
if (onSelect) {
|
|
519
|
-
onSelect(row === null ? null : rowToObject(row, columnMap));
|
|
520
|
-
}
|
|
521
|
-
},
|
|
522
|
-
[columnMap, onSelect, rowToObject]
|
|
523
|
-
);
|
|
524
|
-
const {
|
|
525
|
-
onKeyDown: selectionHookKeyDown,
|
|
526
|
-
onRowClick: selectionHookOnRowClick
|
|
527
|
-
} = useSelection.useSelection({
|
|
528
|
-
containerRef,
|
|
529
|
-
defaultSelectedIndexValues,
|
|
530
|
-
highlightedIndexRef,
|
|
531
|
-
onSelect: handleSelect,
|
|
532
|
-
onSelectionChange: handleSelectionChange,
|
|
533
|
-
selectionModel
|
|
534
|
-
});
|
|
535
|
-
const handleSelectCellBlock = react.useCallback(
|
|
536
|
-
(cellBlock2) => {
|
|
537
|
-
handleSelectionChange([]);
|
|
538
|
-
onSelectCellBlock?.(cellBlock2);
|
|
539
|
-
},
|
|
540
|
-
[handleSelectionChange, onSelectCellBlock]
|
|
541
|
-
);
|
|
542
|
-
const {
|
|
543
|
-
onMouseDown: cellBlockHookMouseDown,
|
|
544
|
-
cellBlock,
|
|
545
|
-
onKeyDown: cellBlockSelectionKeyDown
|
|
546
|
-
} = useCellBlockSelection.useCellBlockSelection({
|
|
547
|
-
allowCellBlockSelection,
|
|
548
|
-
columnCount,
|
|
549
|
-
containerRef,
|
|
550
|
-
onSelectCellBlock: handleSelectCellBlock,
|
|
551
|
-
rowCount
|
|
552
|
-
});
|
|
553
|
-
const handleRowClick = react.useCallback(
|
|
554
|
-
(evt, row, rangeSelect, keepExistingSelection) => {
|
|
555
|
-
selectionHookOnRowClick(evt, row, rangeSelect, keepExistingSelection);
|
|
556
|
-
onRowClickProp?.(evt, rowToObject(row, columnMap));
|
|
557
|
-
},
|
|
558
|
-
[columnMap, onRowClickProp, rowToObject, selectionHookOnRowClick]
|
|
559
|
-
);
|
|
560
|
-
const handleKeyDown = react.useCallback(
|
|
561
|
-
(e) => {
|
|
562
|
-
cellBlockSelectionKeyDown?.(e);
|
|
563
|
-
if (!e.defaultPrevented) {
|
|
564
|
-
navigationKeyDown(e);
|
|
565
|
-
}
|
|
566
|
-
if (!e.defaultPrevented) {
|
|
567
|
-
editingKeyDown(e);
|
|
568
|
-
}
|
|
569
|
-
if (!e.defaultPrevented) {
|
|
570
|
-
selectionHookKeyDown(e);
|
|
571
|
-
}
|
|
572
|
-
},
|
|
573
|
-
[
|
|
574
|
-
cellBlockSelectionKeyDown,
|
|
575
|
-
navigationKeyDown,
|
|
576
|
-
editingKeyDown,
|
|
577
|
-
selectionHookKeyDown
|
|
578
|
-
]
|
|
579
|
-
);
|
|
580
|
-
const onMoveColumn = react.useCallback(
|
|
581
|
-
(columns2) => {
|
|
582
|
-
const newTableConfig = {
|
|
583
|
-
...tableConfig$1,
|
|
584
|
-
columns: columns2
|
|
585
|
-
};
|
|
586
|
-
tableConfigRef.current = newTableConfig;
|
|
587
|
-
console.log(`useTable [onMoveColumn]`);
|
|
588
|
-
dispatchTableModelAction({
|
|
589
|
-
availableWidth,
|
|
590
|
-
type: "init",
|
|
591
|
-
tableConfig: newTableConfig,
|
|
592
|
-
dataSource
|
|
593
|
-
});
|
|
594
|
-
onConfigChange?.(stripInternalProperties(newTableConfig));
|
|
595
|
-
},
|
|
596
|
-
[
|
|
597
|
-
availableWidth,
|
|
598
|
-
dataSource,
|
|
599
|
-
dispatchTableModelAction,
|
|
600
|
-
onConfigChange,
|
|
601
|
-
tableConfig$1
|
|
602
|
-
]
|
|
603
|
-
);
|
|
604
|
-
const handleDropRow = react.useCallback(
|
|
605
|
-
// TODO - this should be GlobalDropHandler
|
|
606
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
607
|
-
(dragDropState) => {
|
|
608
|
-
onDrop?.(dragDropState);
|
|
609
|
-
},
|
|
610
|
-
[onDrop]
|
|
611
|
-
);
|
|
612
|
-
const handleDataEdited = react.useCallback(
|
|
613
|
-
async (editState) => {
|
|
614
|
-
const {
|
|
615
|
-
editType = "commit",
|
|
616
|
-
isValid = true,
|
|
617
|
-
row,
|
|
618
|
-
columnName,
|
|
619
|
-
value
|
|
620
|
-
} = editState;
|
|
621
|
-
let result = void 0;
|
|
622
|
-
if (editType === "commit" && isValid) {
|
|
623
|
-
result = await dataSource.applyEdit(
|
|
624
|
-
row[KEY],
|
|
625
|
-
columnName,
|
|
626
|
-
value
|
|
627
|
-
);
|
|
628
|
-
onDataEditedProp?.({ ...editState, isValid: result === true });
|
|
629
|
-
return result;
|
|
630
|
-
} else {
|
|
631
|
-
onDataEditedProp?.(editState);
|
|
632
|
-
}
|
|
633
|
-
},
|
|
634
|
-
[dataSource, onDataEditedProp]
|
|
635
|
-
);
|
|
636
|
-
const handleDragStartRow = react.useCallback(
|
|
637
|
-
(dragDropState) => {
|
|
638
|
-
const { initialDragElement } = dragDropState;
|
|
639
|
-
const rowIndex = tableDomUtils.getAriaRowIndex(initialDragElement) - headerState.count - 1;
|
|
640
|
-
const row = dataRef.current.find((row2) => row2[0] === rowIndex);
|
|
641
|
-
if (row) {
|
|
642
|
-
dragDropState.setPayload(row);
|
|
643
|
-
}
|
|
644
|
-
onDragStart?.(dragDropState);
|
|
645
|
-
},
|
|
646
|
-
[dataRef, headerState.count, onDragStart]
|
|
647
|
-
);
|
|
648
|
-
const onHeaderHeightMeasured = react.useCallback(
|
|
649
|
-
(height, count) => {
|
|
650
|
-
setHeaderState({ height, count });
|
|
651
|
-
},
|
|
652
|
-
[]
|
|
653
|
-
);
|
|
654
|
-
const { onMouseDown: rowDragMouseDown, draggable: draggableRow } = useRowDragDrop({
|
|
655
|
-
allowDragDrop,
|
|
656
|
-
containerRef,
|
|
657
|
-
draggableClassName: `vuuTable`,
|
|
658
|
-
id,
|
|
659
|
-
onDragStart: handleDragStartRow,
|
|
660
|
-
onDrop: handleDropRow,
|
|
661
|
-
orientation: "vertical",
|
|
662
|
-
itemQuery: ".vuuTableRow"
|
|
663
|
-
});
|
|
664
|
-
const handleMouseDown = react.useCallback(
|
|
665
|
-
(evt) => {
|
|
666
|
-
rowDragMouseDown?.(evt);
|
|
667
|
-
if (!evt.isPropagationStopped()) {
|
|
668
|
-
cellBlockHookMouseDown?.(evt);
|
|
669
|
-
}
|
|
670
|
-
},
|
|
671
|
-
[rowDragMouseDown, cellBlockHookMouseDown]
|
|
672
|
-
);
|
|
673
|
-
return {
|
|
674
|
-
...containerProps,
|
|
675
|
-
"aria-rowcount": dataSource.size,
|
|
676
|
-
cellBlock,
|
|
677
|
-
columnMap,
|
|
678
|
-
columns,
|
|
679
|
-
data,
|
|
680
|
-
draggableRow,
|
|
681
|
-
focusCellPlaceholderKeyDown,
|
|
682
|
-
focusCellPlaceholderRef,
|
|
683
|
-
getRowOffset,
|
|
684
|
-
handleColumnAction,
|
|
685
|
-
headerState,
|
|
686
|
-
headings,
|
|
687
|
-
highlightedIndex: highlightedIndexRef.current,
|
|
688
|
-
onBlur: editingBlur,
|
|
689
|
-
onDoubleClick: editingDoubleClick,
|
|
690
|
-
onFocus: handleFocus,
|
|
691
|
-
onKeyDown: handleKeyDown,
|
|
692
|
-
onMouseDown: handleMouseDown,
|
|
693
|
-
onContextMenu,
|
|
694
|
-
onDataEdited: handleDataEdited,
|
|
695
|
-
onHeaderHeightMeasured,
|
|
696
|
-
onMoveColumn,
|
|
697
|
-
onMoveGroupColumn,
|
|
698
|
-
onRemoveGroupColumn,
|
|
699
|
-
onRowClick: handleRowClick,
|
|
700
|
-
onSortColumn: handleSort,
|
|
701
|
-
onResizeColumn,
|
|
702
|
-
onToggleGroup,
|
|
703
|
-
rowClassNameGenerator,
|
|
704
|
-
scrollProps,
|
|
705
|
-
// TODO don't think we need these ...
|
|
706
|
-
tableAttributes,
|
|
707
|
-
tableBodyRef,
|
|
708
|
-
tableConfig: tableConfig$1,
|
|
709
|
-
viewportMeasurements
|
|
710
|
-
};
|
|
711
|
-
};
|
|
712
|
-
|
|
713
|
-
exports.useTable = useTable;
|
|
714
|
-
//# sourceMappingURL=useTable.js.map
|