@vuu-ui/vuu-table 2.1.17 → 2.1.19-beta.1

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