@vuu-ui/vuu-table 2.1.18 → 2.1.19-beta.2

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 (372) hide show
  1. package/package.json +13 -16
  2. package/src/CellFocusState.mjs +25 -0
  3. package/src/Row.mjs +83 -0
  4. package/src/Table.css.js +441 -0
  5. package/src/Table.mjs +297 -0
  6. package/src/VirtualColSpan.mjs +12 -0
  7. package/src/applyHighlighting.mjs +28 -0
  8. package/src/bulk-edit/BulkEditPanel.css.js +27 -0
  9. package/src/bulk-edit/BulkEditPanel.mjs +77 -0
  10. package/src/bulk-edit/ColumnCascadingUpdateEditor.css.js +86 -0
  11. package/src/bulk-edit/ColumnCascadingUpdateEditor.mjs +59 -0
  12. package/src/bulk-edit/InsertNewRowEditor.css.js +86 -0
  13. package/src/bulk-edit/InsertNewRowEditor.mjs +59 -0
  14. package/src/bulk-edit/useBulkEditPanel.mjs +61 -0
  15. package/src/bulk-edit/useColumnCascadingEditor.mjs +124 -0
  16. package/src/cell-block/CellBlock.css.js +95 -0
  17. package/src/cell-block/CellBlock.mjs +32 -0
  18. package/src/cell-block/cellblock-utils.mjs +114 -0
  19. package/src/cell-block/useCellBlockSelection.mjs +245 -0
  20. package/src/cell-renderers/checkbox-cell/CheckboxCell.css.js +16 -0
  21. package/src/cell-renderers/checkbox-cell/CheckboxCell.mjs +56 -0
  22. package/src/cell-renderers/checkbox-cell/index.mjs +1 -0
  23. package/src/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +19 -0
  24. package/src/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.mjs +34 -0
  25. package/src/cell-renderers/checkbox-row-selector/index.mjs +1 -0
  26. package/src/cell-renderers/index.mjs +4 -0
  27. package/src/cell-renderers/input-cell/InputCell.css.js +81 -0
  28. package/src/cell-renderers/input-cell/InputCell.mjs +73 -0
  29. package/src/cell-renderers/input-cell/index.mjs +1 -0
  30. package/src/cell-renderers/input-cell/useInputCell.mjs +199 -0
  31. package/src/cell-renderers/toggle-cell/ToggleCell.css.js +31 -0
  32. package/src/cell-renderers/toggle-cell/ToggleCell.mjs +47 -0
  33. package/src/cell-renderers/toggle-cell/index.mjs +1 -0
  34. package/src/column-header-pill/ColumnHeaderPill.css.js +34 -0
  35. package/src/column-header-pill/ColumnHeaderPill.mjs +39 -0
  36. package/src/column-header-pill/GroupColumnPill.css.js +10 -0
  37. package/src/column-header-pill/GroupColumnPill.mjs +33 -0
  38. package/src/column-header-pill/SortIndicator.css.js +15 -0
  39. package/src/column-header-pill/SortIndicator.mjs +29 -0
  40. package/src/column-header-pill/index.mjs +3 -0
  41. package/src/column-resizing/ColumnResizer.css.js +32 -0
  42. package/src/column-resizing/ColumnResizer.mjs +69 -0
  43. package/src/column-resizing/index.mjs +2 -0
  44. package/src/column-resizing/useTableColumnResize.mjs +57 -0
  45. package/src/data-row/DataRow.mjs +298 -0
  46. package/src/header-cell/GroupHeaderCell.css.js +91 -0
  47. package/src/header-cell/GroupHeaderCell.mjs +98 -0
  48. package/src/header-cell/HeaderCell.css.js +182 -0
  49. package/src/header-cell/HeaderCell.mjs +126 -0
  50. package/src/header-cell/index.mjs +2 -0
  51. package/src/index.mjs +20 -0
  52. package/src/pagination/PaginationControl.css.js +18 -0
  53. package/src/pagination/PaginationControl.mjs +34 -0
  54. package/src/pagination/index.mjs +1 -0
  55. package/src/pagination/usePagination.mjs +29 -0
  56. package/src/table-cell/TableCell.css.js +67 -0
  57. package/src/table-cell/TableCell.mjs +54 -0
  58. package/src/table-cell/TableGroupCell.css.js +91 -0
  59. package/src/table-cell/TableGroupCell.mjs +61 -0
  60. package/src/table-cell/index.mjs +2 -0
  61. package/src/table-config/useTableConfig.mjs +49 -0
  62. package/src/table-config.mjs +38 -0
  63. package/src/table-data-source/DataRowMovingWindow.mjs +66 -0
  64. package/src/table-data-source/useDataSource.mjs +177 -0
  65. package/src/table-dom-utils.mjs +162 -0
  66. package/src/table-header/HeaderProvider.mjs +14 -0
  67. package/src/table-header/TableHeader.mjs +182 -0
  68. package/src/table-header/index.mjs +2 -0
  69. package/src/table-header/useTableHeader.mjs +69 -0
  70. package/src/useCell.mjs +22 -0
  71. package/src/useCellEditing.mjs +58 -0
  72. package/src/useCellFocus.mjs +112 -0
  73. package/src/useControlledTableNavigation.mjs +34 -0
  74. package/src/useEditableCell.mjs +18 -0
  75. package/src/useInitialValue.mjs +6 -0
  76. package/src/useKeyboardNavigation.mjs +275 -0
  77. package/src/useMeasuredHeight.mjs +44 -0
  78. package/src/useResizeObserver.mjs +118 -0
  79. package/src/useRowClassNameGenerators.mjs +21 -0
  80. package/src/useSelection.mjs +101 -0
  81. package/src/useTable.mjs +588 -0
  82. package/src/useTableContextMenu.mjs +54 -0
  83. package/src/useTableModel.mjs +344 -0
  84. package/src/useTableScroll.mjs +382 -0
  85. package/src/useTableViewport.mjs +120 -0
  86. package/types/VirtualColSpan.d.ts +2 -2
  87. package/types/cell-renderers/toggle-cell/ToggleCell.d.ts +1 -1
  88. package/types/useTable.d.ts +3 -3
  89. package/cjs/CellFocusState.js +0 -45
  90. package/cjs/CellFocusState.js.map +0 -1
  91. package/cjs/Row.js +0 -116
  92. package/cjs/Row.js.map +0 -1
  93. package/cjs/Table.css.js +0 -6
  94. package/cjs/Table.css.js.map +0 -1
  95. package/cjs/Table.js +0 -455
  96. package/cjs/Table.js.map +0 -1
  97. package/cjs/VirtualColSpan.js +0 -19
  98. package/cjs/VirtualColSpan.js.map +0 -1
  99. package/cjs/applyHighlighting.js +0 -33
  100. package/cjs/applyHighlighting.js.map +0 -1
  101. package/cjs/bulk-edit/BulkEditPanel.css.js +0 -6
  102. package/cjs/bulk-edit/BulkEditPanel.css.js.map +0 -1
  103. package/cjs/bulk-edit/BulkEditPanel.js +0 -107
  104. package/cjs/bulk-edit/BulkEditPanel.js.map +0 -1
  105. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.css.js +0 -6
  106. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.css.js.map +0 -1
  107. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.js +0 -80
  108. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.js.map +0 -1
  109. package/cjs/bulk-edit/InsertNewRowEditor.css.js +0 -6
  110. package/cjs/bulk-edit/InsertNewRowEditor.css.js.map +0 -1
  111. package/cjs/bulk-edit/InsertNewRowEditor.js +0 -80
  112. package/cjs/bulk-edit/InsertNewRowEditor.js.map +0 -1
  113. package/cjs/bulk-edit/useBulkEditPanel.js +0 -70
  114. package/cjs/bulk-edit/useBulkEditPanel.js.map +0 -1
  115. package/cjs/bulk-edit/useColumnCascadingEditor.js +0 -143
  116. package/cjs/bulk-edit/useColumnCascadingEditor.js.map +0 -1
  117. package/cjs/cell-block/CellBlock.css.js +0 -6
  118. package/cjs/cell-block/CellBlock.css.js.map +0 -1
  119. package/cjs/cell-block/CellBlock.js +0 -45
  120. package/cjs/cell-block/CellBlock.js.map +0 -1
  121. package/cjs/cell-block/cellblock-utils.js +0 -125
  122. package/cjs/cell-block/cellblock-utils.js.map +0 -1
  123. package/cjs/cell-block/useCellBlockSelection.js +0 -257
  124. package/cjs/cell-block/useCellBlockSelection.js.map +0 -1
  125. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -6
  126. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
  127. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +0 -67
  128. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  129. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -6
  130. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
  131. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -51
  132. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
  133. package/cjs/cell-renderers/input-cell/InputCell.css.js +0 -6
  134. package/cjs/cell-renderers/input-cell/InputCell.css.js.map +0 -1
  135. package/cjs/cell-renderers/input-cell/InputCell.js +0 -63
  136. package/cjs/cell-renderers/input-cell/InputCell.js.map +0 -1
  137. package/cjs/cell-renderers/input-cell/useInputCell.js +0 -211
  138. package/cjs/cell-renderers/input-cell/useInputCell.js.map +0 -1
  139. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js +0 -6
  140. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
  141. package/cjs/cell-renderers/toggle-cell/ToggleCell.js +0 -66
  142. package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  143. package/cjs/column-header-pill/ColumnHeaderPill.css.js +0 -6
  144. package/cjs/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
  145. package/cjs/column-header-pill/ColumnHeaderPill.js +0 -53
  146. package/cjs/column-header-pill/ColumnHeaderPill.js.map +0 -1
  147. package/cjs/column-header-pill/GroupColumnPill.css.js +0 -6
  148. package/cjs/column-header-pill/GroupColumnPill.css.js.map +0 -1
  149. package/cjs/column-header-pill/GroupColumnPill.js +0 -29
  150. package/cjs/column-header-pill/GroupColumnPill.js.map +0 -1
  151. package/cjs/column-header-pill/SortIndicator.css.js +0 -6
  152. package/cjs/column-header-pill/SortIndicator.css.js.map +0 -1
  153. package/cjs/column-header-pill/SortIndicator.js +0 -27
  154. package/cjs/column-header-pill/SortIndicator.js.map +0 -1
  155. package/cjs/column-resizing/ColumnResizer.css.js +0 -6
  156. package/cjs/column-resizing/ColumnResizer.css.js.map +0 -1
  157. package/cjs/column-resizing/ColumnResizer.js +0 -82
  158. package/cjs/column-resizing/ColumnResizer.js.map +0 -1
  159. package/cjs/column-resizing/useTableColumnResize.js +0 -55
  160. package/cjs/column-resizing/useTableColumnResize.js.map +0 -1
  161. package/cjs/data-row/DataRow.js +0 -262
  162. package/cjs/data-row/DataRow.js.map +0 -1
  163. package/cjs/header-cell/GroupHeaderCell.css.js +0 -6
  164. package/cjs/header-cell/GroupHeaderCell.css.js.map +0 -1
  165. package/cjs/header-cell/GroupHeaderCell.js +0 -127
  166. package/cjs/header-cell/GroupHeaderCell.js.map +0 -1
  167. package/cjs/header-cell/HeaderCell.css.js +0 -6
  168. package/cjs/header-cell/HeaderCell.css.js.map +0 -1
  169. package/cjs/header-cell/HeaderCell.js +0 -139
  170. package/cjs/header-cell/HeaderCell.js.map +0 -1
  171. package/cjs/index.js +0 -64
  172. package/cjs/index.js.map +0 -1
  173. package/cjs/pagination/PaginationControl.css.js +0 -6
  174. package/cjs/pagination/PaginationControl.css.js.map +0 -1
  175. package/cjs/pagination/PaginationControl.js +0 -38
  176. package/cjs/pagination/PaginationControl.js.map +0 -1
  177. package/cjs/pagination/usePagination.js +0 -36
  178. package/cjs/pagination/usePagination.js.map +0 -1
  179. package/cjs/table-cell/TableCell.css.js +0 -6
  180. package/cjs/table-cell/TableCell.css.js.map +0 -1
  181. package/cjs/table-cell/TableCell.js +0 -75
  182. package/cjs/table-cell/TableCell.js.map +0 -1
  183. package/cjs/table-cell/TableGroupCell.css.js +0 -6
  184. package/cjs/table-cell/TableGroupCell.css.js.map +0 -1
  185. package/cjs/table-cell/TableGroupCell.js +0 -65
  186. package/cjs/table-cell/TableGroupCell.js.map +0 -1
  187. package/cjs/table-config/useTableConfig.js +0 -67
  188. package/cjs/table-config/useTableConfig.js.map +0 -1
  189. package/cjs/table-config.js +0 -35
  190. package/cjs/table-config.js.map +0 -1
  191. package/cjs/table-data-source/DataRowMovingWindow.js +0 -99
  192. package/cjs/table-data-source/DataRowMovingWindow.js.map +0 -1
  193. package/cjs/table-data-source/useDataSource.js +0 -236
  194. package/cjs/table-data-source/useDataSource.js.map +0 -1
  195. package/cjs/table-dom-utils.js +0 -206
  196. package/cjs/table-dom-utils.js.map +0 -1
  197. package/cjs/table-header/HeaderProvider.js +0 -18
  198. package/cjs/table-header/HeaderProvider.js.map +0 -1
  199. package/cjs/table-header/TableHeader.js +0 -180
  200. package/cjs/table-header/TableHeader.js.map +0 -1
  201. package/cjs/table-header/useTableHeader.js +0 -87
  202. package/cjs/table-header/useTableHeader.js.map +0 -1
  203. package/cjs/useCell.js +0 -26
  204. package/cjs/useCell.js.map +0 -1
  205. package/cjs/useCellEditing.js +0 -77
  206. package/cjs/useCellEditing.js.map +0 -1
  207. package/cjs/useCellFocus.js +0 -119
  208. package/cjs/useCellFocus.js.map +0 -1
  209. package/cjs/useControlledTableNavigation.js +0 -46
  210. package/cjs/useControlledTableNavigation.js.map +0 -1
  211. package/cjs/useEditableCell.js +0 -27
  212. package/cjs/useEditableCell.js.map +0 -1
  213. package/cjs/useKeyboardNavigation.js +0 -323
  214. package/cjs/useKeyboardNavigation.js.map +0 -1
  215. package/cjs/useMeasuredHeight.js +0 -51
  216. package/cjs/useMeasuredHeight.js.map +0 -1
  217. package/cjs/useRowClassNameGenerators.js +0 -34
  218. package/cjs/useRowClassNameGenerators.js.map +0 -1
  219. package/cjs/useSelection.js +0 -130
  220. package/cjs/useSelection.js.map +0 -1
  221. package/cjs/useTable.js +0 -742
  222. package/cjs/useTable.js.map +0 -1
  223. package/cjs/useTableContextMenu.js +0 -76
  224. package/cjs/useTableContextMenu.js.map +0 -1
  225. package/cjs/useTableModel.js +0 -421
  226. package/cjs/useTableModel.js.map +0 -1
  227. package/cjs/useTableScroll.js +0 -464
  228. package/cjs/useTableScroll.js.map +0 -1
  229. package/cjs/useTableViewport.js +0 -137
  230. package/cjs/useTableViewport.js.map +0 -1
  231. package/esm/CellFocusState.js +0 -43
  232. package/esm/CellFocusState.js.map +0 -1
  233. package/esm/Row.js +0 -114
  234. package/esm/Row.js.map +0 -1
  235. package/esm/Table.css.js +0 -4
  236. package/esm/Table.css.js.map +0 -1
  237. package/esm/Table.js +0 -453
  238. package/esm/Table.js.map +0 -1
  239. package/esm/VirtualColSpan.js +0 -17
  240. package/esm/VirtualColSpan.js.map +0 -1
  241. package/esm/applyHighlighting.js +0 -31
  242. package/esm/applyHighlighting.js.map +0 -1
  243. package/esm/bulk-edit/BulkEditPanel.css.js +0 -4
  244. package/esm/bulk-edit/BulkEditPanel.css.js.map +0 -1
  245. package/esm/bulk-edit/BulkEditPanel.js +0 -105
  246. package/esm/bulk-edit/BulkEditPanel.js.map +0 -1
  247. package/esm/bulk-edit/ColumnCascadingUpdateEditor.css.js +0 -4
  248. package/esm/bulk-edit/ColumnCascadingUpdateEditor.css.js.map +0 -1
  249. package/esm/bulk-edit/ColumnCascadingUpdateEditor.js +0 -78
  250. package/esm/bulk-edit/ColumnCascadingUpdateEditor.js.map +0 -1
  251. package/esm/bulk-edit/InsertNewRowEditor.css.js +0 -4
  252. package/esm/bulk-edit/InsertNewRowEditor.css.js.map +0 -1
  253. package/esm/bulk-edit/InsertNewRowEditor.js +0 -78
  254. package/esm/bulk-edit/InsertNewRowEditor.js.map +0 -1
  255. package/esm/bulk-edit/useBulkEditPanel.js +0 -68
  256. package/esm/bulk-edit/useBulkEditPanel.js.map +0 -1
  257. package/esm/bulk-edit/useColumnCascadingEditor.js +0 -141
  258. package/esm/bulk-edit/useColumnCascadingEditor.js.map +0 -1
  259. package/esm/cell-block/CellBlock.css.js +0 -4
  260. package/esm/cell-block/CellBlock.css.js.map +0 -1
  261. package/esm/cell-block/CellBlock.js +0 -43
  262. package/esm/cell-block/CellBlock.js.map +0 -1
  263. package/esm/cell-block/cellblock-utils.js +0 -116
  264. package/esm/cell-block/cellblock-utils.js.map +0 -1
  265. package/esm/cell-block/useCellBlockSelection.js +0 -255
  266. package/esm/cell-block/useCellBlockSelection.js.map +0 -1
  267. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -4
  268. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
  269. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +0 -65
  270. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  271. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -4
  272. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
  273. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -49
  274. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
  275. package/esm/cell-renderers/input-cell/InputCell.css.js +0 -4
  276. package/esm/cell-renderers/input-cell/InputCell.css.js.map +0 -1
  277. package/esm/cell-renderers/input-cell/InputCell.js +0 -61
  278. package/esm/cell-renderers/input-cell/InputCell.js.map +0 -1
  279. package/esm/cell-renderers/input-cell/useInputCell.js +0 -209
  280. package/esm/cell-renderers/input-cell/useInputCell.js.map +0 -1
  281. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js +0 -4
  282. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
  283. package/esm/cell-renderers/toggle-cell/ToggleCell.js +0 -64
  284. package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  285. package/esm/column-header-pill/ColumnHeaderPill.css.js +0 -4
  286. package/esm/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
  287. package/esm/column-header-pill/ColumnHeaderPill.js +0 -51
  288. package/esm/column-header-pill/ColumnHeaderPill.js.map +0 -1
  289. package/esm/column-header-pill/GroupColumnPill.css.js +0 -4
  290. package/esm/column-header-pill/GroupColumnPill.css.js.map +0 -1
  291. package/esm/column-header-pill/GroupColumnPill.js +0 -27
  292. package/esm/column-header-pill/GroupColumnPill.js.map +0 -1
  293. package/esm/column-header-pill/SortIndicator.css.js +0 -4
  294. package/esm/column-header-pill/SortIndicator.css.js.map +0 -1
  295. package/esm/column-header-pill/SortIndicator.js +0 -25
  296. package/esm/column-header-pill/SortIndicator.js.map +0 -1
  297. package/esm/column-resizing/ColumnResizer.css.js +0 -4
  298. package/esm/column-resizing/ColumnResizer.css.js.map +0 -1
  299. package/esm/column-resizing/ColumnResizer.js +0 -80
  300. package/esm/column-resizing/ColumnResizer.js.map +0 -1
  301. package/esm/column-resizing/useTableColumnResize.js +0 -53
  302. package/esm/column-resizing/useTableColumnResize.js.map +0 -1
  303. package/esm/data-row/DataRow.js +0 -260
  304. package/esm/data-row/DataRow.js.map +0 -1
  305. package/esm/header-cell/GroupHeaderCell.css.js +0 -4
  306. package/esm/header-cell/GroupHeaderCell.css.js.map +0 -1
  307. package/esm/header-cell/GroupHeaderCell.js +0 -125
  308. package/esm/header-cell/GroupHeaderCell.js.map +0 -1
  309. package/esm/header-cell/HeaderCell.css.js +0 -4
  310. package/esm/header-cell/HeaderCell.css.js.map +0 -1
  311. package/esm/header-cell/HeaderCell.js +0 -137
  312. package/esm/header-cell/HeaderCell.js.map +0 -1
  313. package/esm/index.js +0 -27
  314. package/esm/index.js.map +0 -1
  315. package/esm/pagination/PaginationControl.css.js +0 -4
  316. package/esm/pagination/PaginationControl.css.js.map +0 -1
  317. package/esm/pagination/PaginationControl.js +0 -36
  318. package/esm/pagination/PaginationControl.js.map +0 -1
  319. package/esm/pagination/usePagination.js +0 -34
  320. package/esm/pagination/usePagination.js.map +0 -1
  321. package/esm/table-cell/TableCell.css.js +0 -4
  322. package/esm/table-cell/TableCell.css.js.map +0 -1
  323. package/esm/table-cell/TableCell.js +0 -73
  324. package/esm/table-cell/TableCell.js.map +0 -1
  325. package/esm/table-cell/TableGroupCell.css.js +0 -4
  326. package/esm/table-cell/TableGroupCell.css.js.map +0 -1
  327. package/esm/table-cell/TableGroupCell.js +0 -63
  328. package/esm/table-cell/TableGroupCell.js.map +0 -1
  329. package/esm/table-config/useTableConfig.js +0 -65
  330. package/esm/table-config/useTableConfig.js.map +0 -1
  331. package/esm/table-config.js +0 -33
  332. package/esm/table-config.js.map +0 -1
  333. package/esm/table-data-source/DataRowMovingWindow.js +0 -97
  334. package/esm/table-data-source/DataRowMovingWindow.js.map +0 -1
  335. package/esm/table-data-source/useDataSource.js +0 -234
  336. package/esm/table-data-source/useDataSource.js.map +0 -1
  337. package/esm/table-dom-utils.js +0 -188
  338. package/esm/table-dom-utils.js.map +0 -1
  339. package/esm/table-header/HeaderProvider.js +0 -15
  340. package/esm/table-header/HeaderProvider.js.map +0 -1
  341. package/esm/table-header/TableHeader.js +0 -178
  342. package/esm/table-header/TableHeader.js.map +0 -1
  343. package/esm/table-header/useTableHeader.js +0 -85
  344. package/esm/table-header/useTableHeader.js.map +0 -1
  345. package/esm/useCell.js +0 -24
  346. package/esm/useCell.js.map +0 -1
  347. package/esm/useCellEditing.js +0 -75
  348. package/esm/useCellEditing.js.map +0 -1
  349. package/esm/useCellFocus.js +0 -117
  350. package/esm/useCellFocus.js.map +0 -1
  351. package/esm/useControlledTableNavigation.js +0 -43
  352. package/esm/useControlledTableNavigation.js.map +0 -1
  353. package/esm/useEditableCell.js +0 -25
  354. package/esm/useEditableCell.js.map +0 -1
  355. package/esm/useKeyboardNavigation.js +0 -319
  356. package/esm/useKeyboardNavigation.js.map +0 -1
  357. package/esm/useMeasuredHeight.js +0 -49
  358. package/esm/useMeasuredHeight.js.map +0 -1
  359. package/esm/useRowClassNameGenerators.js +0 -32
  360. package/esm/useRowClassNameGenerators.js.map +0 -1
  361. package/esm/useSelection.js +0 -128
  362. package/esm/useSelection.js.map +0 -1
  363. package/esm/useTable.js +0 -740
  364. package/esm/useTable.js.map +0 -1
  365. package/esm/useTableContextMenu.js +0 -73
  366. package/esm/useTableContextMenu.js.map +0 -1
  367. package/esm/useTableModel.js +0 -419
  368. package/esm/useTableModel.js.map +0 -1
  369. package/esm/useTableScroll.js +0 -461
  370. package/esm/useTableScroll.js.map +0 -1
  371. package/esm/useTableViewport.js +0 -135
  372. package/esm/useTableViewport.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useComponentCssInjection } from "@salt-ds/styles";
3
+ import { useWindow } from "@salt-ds/window";
4
+ import { getDataItemEditControl } from "@vuu-ui/vuu-data-react";
5
+ import clsx from "clsx";
6
+ import { VirtualColSpan } from "../VirtualColSpan.mjs";
7
+ import { useHeaderProps } from "../table-header/index.mjs";
8
+ import { useBulkEditRow } from "./useColumnCascadingEditor.mjs";
9
+ import { isNotHidden } from "@vuu-ui/vuu-utils";
10
+ import InsertNewRowEditor from "./InsertNewRowEditor.css";
11
+ const classBase = "vuuBulkEditRow";
12
+ const InsertNewRowEditor_InsertNewRowEditor = ({ ariaRole, onBulkChange, onRowChange, ...htmlAttributes })=>{
13
+ const targetWindow = useWindow();
14
+ useComponentCssInjection({
15
+ testId: "vuu-bulk-edit-row",
16
+ css: InsertNewRowEditor,
17
+ window: targetWindow
18
+ });
19
+ const { columns, virtualColSpan = 0 } = useHeaderProps();
20
+ const { errorMessages, formFieldsContainerRef, InputProps, onCommit, onFocus, onKeyDown } = useBulkEditRow({
21
+ descriptors: columns,
22
+ onBulkChange,
23
+ onRowChange
24
+ });
25
+ return /*#__PURE__*/ jsxs("div", {
26
+ ...htmlAttributes,
27
+ className: classBase,
28
+ onFocus: onFocus,
29
+ onKeyDown: onKeyDown,
30
+ ref: formFieldsContainerRef,
31
+ role: ariaRole,
32
+ children: [
33
+ /*#__PURE__*/ jsx(VirtualColSpan, {
34
+ width: virtualColSpan
35
+ }),
36
+ columns.filter(isNotHidden).map((column, i)=>{
37
+ const errorMessage = errorMessages[column.name];
38
+ return /*#__PURE__*/ jsx("div", {
39
+ "aria-colindex": i + 1,
40
+ className: clsx(`${classBase}Cell`, "vuuTableCell", {
41
+ "vuuTableCell-right": "right" === column.align
42
+ }),
43
+ "data-field": column.name,
44
+ role: "cell",
45
+ style: {
46
+ width: column.width
47
+ },
48
+ children: column.editable ? getDataItemEditControl({
49
+ InputProps,
50
+ dataDescriptor: column,
51
+ errorMessage,
52
+ onCommit
53
+ }) : null
54
+ }, column.name);
55
+ })
56
+ ]
57
+ });
58
+ };
59
+ export { InsertNewRowEditor_InsertNewRowEditor as InsertNewRowEditor };
@@ -0,0 +1,61 @@
1
+ import { buildValidationChecker } from "@vuu-ui/vuu-data-react";
2
+ import { hasValidationRules, isTypeDescriptor } from "@vuu-ui/vuu-utils";
3
+ import { useCallback, useMemo, useState } from "react";
4
+ const addRenderer = (colType, rendererName)=>({
5
+ name: colType.name,
6
+ rules: colType.rules,
7
+ formatting: colType.formatting,
8
+ renderer: {
9
+ name: rendererName
10
+ }
11
+ });
12
+ const useBulkEditPanel = ({ columns, sessionDs: dataSource })=>{
13
+ const [rowState, setRowState] = useState(true);
14
+ const tableConfig = useMemo(()=>({
15
+ columns: columns ? columns.map((col)=>({
16
+ editable: "bulk" === col.editableBulk,
17
+ hidden: false === col.editableBulk,
18
+ name: col.name,
19
+ serverDataType: col.serverDataType ?? "string",
20
+ type: isTypeDescriptor(col.type) ? addRenderer(col.type, "input-cell") : "string",
21
+ clientSideEditValidationCheck: hasValidationRules(col.type) ? buildValidationChecker(col.type.rules) : void 0,
22
+ width: 120
23
+ })) : dataSource.columns.map((name)=>({
24
+ editable: true,
25
+ name,
26
+ serverDataType: "string"
27
+ })),
28
+ columnLayout: "fit",
29
+ columnDefaultWidth: 100,
30
+ rowSeparators: true
31
+ }), [
32
+ columns,
33
+ dataSource.columns
34
+ ]);
35
+ const handleRowChange = useCallback((isValid)=>{
36
+ if (isValid !== rowState) setRowState(isValid);
37
+ }, [
38
+ rowState
39
+ ]);
40
+ const handleBulkChange = useCallback(async (column, value)=>{
41
+ const response = await dataSource.rpcRequest?.({
42
+ params: {
43
+ column: column.name,
44
+ value
45
+ },
46
+ rpcName: "VP_BULK_EDIT_COLUMN_CELLS_RPC",
47
+ type: "RPC_REQUEST"
48
+ });
49
+ console.log({
50
+ response
51
+ });
52
+ }, [
53
+ dataSource
54
+ ]);
55
+ return {
56
+ tableConfig,
57
+ onBulkChange: handleBulkChange,
58
+ onRowChange: handleRowChange
59
+ };
60
+ };
61
+ export { useBulkEditPanel };
@@ -0,0 +1,124 @@
1
+ import { buildValidationChecker, getEditValidationRules } from "@vuu-ui/vuu-data-react";
2
+ import { getTypedValue, queryClosest } from "@vuu-ui/vuu-utils";
3
+ import { useCallback, useMemo, useRef, useState } from "react";
4
+ import { useEditableCell } from "../useEditableCell.mjs";
5
+ const getValidationChecker = (descriptor, editPhase)=>{
6
+ const rules = getEditValidationRules(descriptor, editPhase);
7
+ return buildValidationChecker(rules);
8
+ };
9
+ const nextValidationState = (state, dataDescriptor, value)=>{
10
+ const check = getValidationChecker(dataDescriptor, "change");
11
+ const result = check(value, "change");
12
+ const { name } = dataDescriptor;
13
+ const { ok: wasOk, messages: existingMessages } = state;
14
+ if (!result.ok) return {
15
+ ok: false,
16
+ messages: {
17
+ ...existingMessages,
18
+ [name]: result.messages.join("\n")
19
+ }
20
+ };
21
+ if (!wasOk) {
22
+ const fieldsInError = Object.keys(existingMessages);
23
+ if (fieldsInError.includes(name)) if (1 === fieldsInError.length) return {
24
+ ok: true,
25
+ messages: {}
26
+ };
27
+ else {
28
+ const messages = {
29
+ ...existingMessages
30
+ };
31
+ delete messages[name];
32
+ return {
33
+ ok: false,
34
+ messages
35
+ };
36
+ }
37
+ }
38
+ return state;
39
+ };
40
+ function find(descriptors, fieldname) {
41
+ const d = descriptors.find(({ name })=>name === fieldname);
42
+ if (d) return d;
43
+ throw Error(`DataValueDescriptor not found for field ${fieldname}`);
44
+ }
45
+ const getField = (target)=>{
46
+ const fieldElement = queryClosest(target, "[data-field]");
47
+ if (fieldElement) return fieldElement.dataset.field;
48
+ throw Error("no field ");
49
+ };
50
+ const useBulkEditRow = ({ descriptors, onBulkChange, onRowChange })=>{
51
+ const formFieldsContainerRef = useRef(null);
52
+ const focusedFieldRef = useRef("");
53
+ const [, forceUpdate] = useState({});
54
+ const validationStateRef = useRef({
55
+ ok: true,
56
+ messages: {}
57
+ });
58
+ const bulkRowValidationState = useCallback((state)=>{
59
+ validationStateRef.current = state;
60
+ onRowChange(state.ok);
61
+ forceUpdate({});
62
+ }, [
63
+ onRowChange
64
+ ]);
65
+ const handleFocus = useCallback((evt)=>{
66
+ if (formFieldsContainerRef.current?.contains(evt.target)) {
67
+ const fieldName = getField(evt.target);
68
+ if (fieldName) {
69
+ if (fieldName) focusedFieldRef.current = fieldName;
70
+ }
71
+ }
72
+ }, []);
73
+ const handleChange = useCallback((evt)=>{
74
+ const { current: fieldName } = focusedFieldRef;
75
+ if (fieldName) {
76
+ const input = queryClosest(evt.target, "input", true);
77
+ const dataDescriptor = find(descriptors, fieldName);
78
+ const value = input.value;
79
+ const { current: state } = validationStateRef;
80
+ const newState = nextValidationState(state, dataDescriptor, value);
81
+ if (newState !== state) bulkRowValidationState(newState);
82
+ }
83
+ }, [
84
+ descriptors,
85
+ bulkRowValidationState
86
+ ]);
87
+ const { current: { messages: errorMessages } } = validationStateRef;
88
+ const handleCommit = useCallback((evt, value)=>{
89
+ if ("string" == typeof value && "" !== value.trim()) {
90
+ const columnName = focusedFieldRef.current;
91
+ if (columnName) {
92
+ const column = descriptors.find((c)=>c.name === columnName);
93
+ if (column && void 0 === errorMessages[columnName]) {
94
+ const { serverDataType = "string" } = column;
95
+ const typedValue = getTypedValue(value, serverDataType, true);
96
+ onBulkChange(column, typedValue);
97
+ }
98
+ }
99
+ }
100
+ }, [
101
+ descriptors,
102
+ errorMessages,
103
+ onBulkChange
104
+ ]);
105
+ const InputProps = useMemo(()=>({
106
+ inputProps: {
107
+ placeholder: "Enter value"
108
+ },
109
+ onChange: handleChange,
110
+ variant: "primary"
111
+ }), [
112
+ handleChange
113
+ ]);
114
+ const onKeyDown = useEditableCell();
115
+ return {
116
+ errorMessages,
117
+ formFieldsContainerRef,
118
+ InputProps,
119
+ onCommit: handleCommit,
120
+ onFocus: handleFocus,
121
+ onKeyDown
122
+ };
123
+ };
124
+ export { useBulkEditRow };
@@ -0,0 +1,95 @@
1
+ const css = `
2
+ .vuuCellBlock {
3
+ opacity: .3;
4
+ bottom: anchor(--cellblock-start bottom);
5
+ left: anchor(--cellblock-start left);
6
+ right: anchor(--cellblock-start right);
7
+ top: anchor(--cellblock-start top);
8
+ background-color: #00bdff;
9
+ border: 1px solid #00f;
10
+ position: absolute;
11
+
12
+ &.cellblock-direction-n {
13
+ bottom: anchor(--cellblock-start bottom);
14
+ left: anchor(--cellblock-start left);
15
+ right: anchor(--cellblock-start right);
16
+ top: anchor(--cellblock-end top);
17
+ }
18
+
19
+ &.cellblock-direction-ne {
20
+ bottom: anchor(--cellblock-start bottom);
21
+ left: anchor(--cellblock-start left);
22
+ right: anchor(--cellblock-end right);
23
+ top: anchor(--cellblock-end top);
24
+ }
25
+
26
+ &.cellblock-direction-e {
27
+ bottom: anchor(--cellblock-start bottom);
28
+ left: anchor(--cellblock-start left);
29
+ right: anchor(--cellblock-end right);
30
+ top: anchor(--cellblock-start top);
31
+ }
32
+
33
+ &.cellblock-direction-se {
34
+ bottom: anchor(--cellblock-end bottom);
35
+ left: anchor(--cellblock-start left);
36
+ right: anchor(--cellblock-end right);
37
+ top: anchor(--cellblock-start top);
38
+ }
39
+
40
+ &.cellblock-direction-s {
41
+ bottom: anchor(--cellblock-end bottom);
42
+ left: anchor(--cellblock-start left);
43
+ right: anchor(--cellblock-start right);
44
+ top: anchor(--cellblock-start top);
45
+ }
46
+
47
+ &.cellblock-direction-sw {
48
+ bottom: anchor(--cellblock-end bottom);
49
+ left: anchor(--cellblock-end left);
50
+ right: anchor(--cellblock-start right);
51
+ top: anchor(--cellblock-start top);
52
+ }
53
+
54
+ &.cellblock-direction-w {
55
+ bottom: anchor(--cellblock-start bottom);
56
+ left: anchor(--cellblock-end left);
57
+ right: anchor(--cellblock-start right);
58
+ top: anchor(--cellblock-start top);
59
+ }
60
+
61
+ &.cellblock-direction-nw {
62
+ bottom: anchor(--cellblock-start bottom);
63
+ left: anchor(--cellblock-end left);
64
+ right: anchor(--cellblock-start right);
65
+ top: anchor(--cellblock-end top);
66
+ }
67
+ }
68
+
69
+ .vuu-cellblock-start {
70
+ anchor-name: --cellblock-start;
71
+ }
72
+
73
+ .vuuTable.vuu-cellblock-select-in-progress-keyboard {
74
+ & .vuuTableCell:focus {
75
+ anchor-name: --cellblock-end;
76
+ }
77
+
78
+ & .vuuCellBlock {
79
+ pointer-events: none;
80
+ }
81
+ }
82
+
83
+ .vuuTable.vuu-cellblock-select-in-progress-mouse {
84
+ & .vuuCellBlock {
85
+ pointer-events: none;
86
+ }
87
+ }
88
+
89
+ .vuu-cellblock-end {
90
+ anchor-name: --cellblock-end;
91
+ }
92
+
93
+
94
+ `;
95
+ export default css;
@@ -0,0 +1,32 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef, useCallback } from "react";
3
+ import clsx from "clsx";
4
+ import { useComponentCssInjection } from "@salt-ds/styles";
5
+ import { useWindow } from "@salt-ds/window";
6
+ import CellBlock_0 from "./CellBlock.css";
7
+ const classBase = "vuuCellBlock";
8
+ const CellBlock_CellBlock = /*#__PURE__*/ forwardRef(function({ className, onCopy, ...htmlAttributes }, forwardedRef) {
9
+ const targetWindow = useWindow();
10
+ useComponentCssInjection({
11
+ testId: "vuu-cell-block",
12
+ css: CellBlock_0,
13
+ window: targetWindow
14
+ });
15
+ const handleKeyDown = useCallback(async (evt)=>{
16
+ if (evt.metaKey && "c" === evt.key) onCopy?.();
17
+ }, [
18
+ onCopy
19
+ ]);
20
+ const onContextMenu = useCallback(()=>{
21
+ console.log("on cvontext menu");
22
+ }, []);
23
+ return /*#__PURE__*/ jsx("div", {
24
+ ...htmlAttributes,
25
+ className: clsx(classBase, className),
26
+ ref: forwardedRef,
27
+ onContextMenu: onContextMenu,
28
+ onKeyDown: handleKeyDown,
29
+ tabIndex: 0
30
+ });
31
+ });
32
+ export { CellBlock_CellBlock as CellBlock };
@@ -0,0 +1,114 @@
1
+ import { getAriaColIndex, getAriaRowIndex, queryClosest } from "@vuu-ui/vuu-utils";
2
+ import { getAriaCellPos } from "../table-dom-utils.mjs";
3
+ const isNullCellBox = ({ bottom, left, right, top })=>-1 === bottom && -1 === left && -1 === right && -1 === top;
4
+ const Hi = Number.MAX_SAFE_INTEGER;
5
+ const getEndCellDirection = (startBox, endBox)=>{
6
+ const { bottom: sBottom, left: sLeft, right: sRight, top: sTop } = startBox;
7
+ const { bottom: eBottom, left: eLeft, right: eRight, top: eTop } = endBox;
8
+ const north = eTop < sTop;
9
+ const east = eRight > sRight;
10
+ const south = eBottom > sBottom;
11
+ const west = eLeft < sLeft;
12
+ if (north && east) return "ne";
13
+ if (south && east) return "se";
14
+ if (south && west) return "sw";
15
+ if (north && west) return "nw";
16
+ if (north) return "n";
17
+ else if (east) return "e";
18
+ else if (south) return "s";
19
+ else if (west) return "w";
20
+ else return "self";
21
+ };
22
+ const setElementBox = (el, box)=>{
23
+ const { bottom, left, right, top } = el.getBoundingClientRect();
24
+ box.bottom = bottom;
25
+ box.left = left;
26
+ box.right = right;
27
+ box.top = top;
28
+ };
29
+ const outsideBox = ({ bottom, left, right, top }, x, y)=>x < left || x > right || y < top || y > bottom;
30
+ const getRowIndex = (cell)=>getAriaRowIndex(queryClosest(cell, ".vuuTableRow"));
31
+ const getTableCellBlock = (startCell, endCell)=>{
32
+ const colStart = getAriaColIndex(startCell);
33
+ const colEnd = getAriaColIndex(endCell);
34
+ const rowStart = getRowIndex(startCell);
35
+ const rowEnd = getRowIndex(endCell);
36
+ const columnRange = {
37
+ from: Math.min(colStart, colEnd),
38
+ to: Math.max(colStart, colEnd)
39
+ };
40
+ const rowRange = {
41
+ from: Math.min(rowStart, rowEnd),
42
+ to: Math.max(rowStart, rowEnd)
43
+ };
44
+ return {
45
+ columnRange,
46
+ rowRange
47
+ };
48
+ };
49
+ const refState = {
50
+ cellBlock: null,
51
+ cellBlockClassName: "",
52
+ dragState: "pending",
53
+ endBox: {
54
+ bottom: -1,
55
+ left: Hi,
56
+ right: -1,
57
+ top: Hi
58
+ },
59
+ endCell: null,
60
+ endPos: [
61
+ -1,
62
+ -1
63
+ ],
64
+ mousePosX: -1,
65
+ mousePosY: -1,
66
+ mouseStartX: -1,
67
+ mouseStartY: -1,
68
+ startBox: {
69
+ bottom: -1,
70
+ left: -1,
71
+ right: -1,
72
+ top: -1
73
+ },
74
+ startCell: null,
75
+ startPos: [
76
+ -1,
77
+ -1
78
+ ]
79
+ };
80
+ const updateCellBlockClassName = (state)=>{
81
+ const { cellBlock, cellBlockClassName, startBox, endBox } = state;
82
+ const endBlockDirection = getEndCellDirection(startBox, endBox);
83
+ const newCellBlockClassName = `cellblock-direction-${endBlockDirection}`;
84
+ if (newCellBlockClassName !== cellBlockClassName) {
85
+ if (cellBlockClassName) cellBlock?.classList.replace(cellBlockClassName, newCellBlockClassName);
86
+ else cellBlock?.classList.add(newCellBlockClassName);
87
+ state.cellBlockClassName = newCellBlockClassName;
88
+ }
89
+ };
90
+ const getTextFromCells = (startCell, endCell)=>{
91
+ const tableBody = queryClosest(startCell, ".vuuTable-body", true);
92
+ const [startRow, startCol] = getAriaCellPos(startCell);
93
+ const [endRow, endCol] = getAriaCellPos(endCell);
94
+ const rowRange = {
95
+ from: Math.min(startRow, endRow),
96
+ to: Math.max(startRow, endRow)
97
+ };
98
+ const colRange = {
99
+ from: Math.min(startCol, endCol),
100
+ to: Math.max(startCol, endCol)
101
+ };
102
+ const results = [];
103
+ for(let rowIdx = rowRange.from; rowIdx <= rowRange.to; rowIdx++){
104
+ const row = tableBody.querySelector(`.vuuTableRow[aria-rowindex='${rowIdx}']`);
105
+ const rowData = [];
106
+ for(let colIdx = colRange.from; colIdx <= colRange.to; colIdx++){
107
+ const cell = row?.querySelector(`.vuuTableCell[aria-colindex='${colIdx}']`);
108
+ if (cell) rowData.push(cell.textContent ?? "");
109
+ }
110
+ results.push(rowData);
111
+ }
112
+ return results.map((r)=>r.join("\t")).join("\n");
113
+ };
114
+ export { getEndCellDirection, getTableCellBlock, getTextFromCells, isNullCellBox, outsideBox, refState, setElementBox, updateCellBlockClassName };