@vuu-ui/vuu-table 0.13.7 → 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.
Files changed (269) hide show
  1. package/cjs/index.js +5236 -61
  2. package/cjs/index.js.map +1 -1
  3. package/esm/index.js +5205 -26
  4. package/esm/index.js.map +1 -1
  5. package/package.json +10 -10
  6. package/cjs/CellFocusState.js +0 -45
  7. package/cjs/CellFocusState.js.map +0 -1
  8. package/cjs/Row.css.js +0 -6
  9. package/cjs/Row.css.js.map +0 -1
  10. package/cjs/Row.js +0 -151
  11. package/cjs/Row.js.map +0 -1
  12. package/cjs/Table.css.js +0 -6
  13. package/cjs/Table.css.js.map +0 -1
  14. package/cjs/Table.js +0 -433
  15. package/cjs/Table.js.map +0 -1
  16. package/cjs/VirtualColSpan.js +0 -19
  17. package/cjs/VirtualColSpan.js.map +0 -1
  18. package/cjs/bulk-edit/BulkEditDialog.js +0 -57
  19. package/cjs/bulk-edit/BulkEditDialog.js.map +0 -1
  20. package/cjs/bulk-edit/BulkEditPanel.css.js +0 -6
  21. package/cjs/bulk-edit/BulkEditPanel.css.js.map +0 -1
  22. package/cjs/bulk-edit/BulkEditPanel.js +0 -72
  23. package/cjs/bulk-edit/BulkEditPanel.js.map +0 -1
  24. package/cjs/bulk-edit/BulkEditRow.css.js +0 -6
  25. package/cjs/bulk-edit/BulkEditRow.css.js.map +0 -1
  26. package/cjs/bulk-edit/BulkEditRow.js +0 -81
  27. package/cjs/bulk-edit/BulkEditRow.js.map +0 -1
  28. package/cjs/bulk-edit/useBulkEditPanel.js +0 -101
  29. package/cjs/bulk-edit/useBulkEditPanel.js.map +0 -1
  30. package/cjs/bulk-edit/useBulkEditRow.js +0 -144
  31. package/cjs/bulk-edit/useBulkEditRow.js.map +0 -1
  32. package/cjs/cell-block/CellBlock.css.js +0 -6
  33. package/cjs/cell-block/CellBlock.css.js.map +0 -1
  34. package/cjs/cell-block/CellBlock.js +0 -45
  35. package/cjs/cell-block/CellBlock.js.map +0 -1
  36. package/cjs/cell-block/cellblock-utils.js +0 -125
  37. package/cjs/cell-block/cellblock-utils.js.map +0 -1
  38. package/cjs/cell-block/useCellBlockSelection.js +0 -254
  39. package/cjs/cell-block/useCellBlockSelection.js.map +0 -1
  40. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -6
  41. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
  42. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +0 -68
  43. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  44. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -6
  45. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
  46. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -33
  47. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
  48. package/cjs/cell-renderers/input-cell/InputCell.css.js +0 -6
  49. package/cjs/cell-renderers/input-cell/InputCell.css.js.map +0 -1
  50. package/cjs/cell-renderers/input-cell/InputCell.js +0 -52
  51. package/cjs/cell-renderers/input-cell/InputCell.js.map +0 -1
  52. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js +0 -6
  53. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
  54. package/cjs/cell-renderers/toggle-cell/ToggleCell.js +0 -67
  55. package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  56. package/cjs/column-header-pill/ColumnHeaderPill.css.js +0 -6
  57. package/cjs/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
  58. package/cjs/column-header-pill/ColumnHeaderPill.js +0 -53
  59. package/cjs/column-header-pill/ColumnHeaderPill.js.map +0 -1
  60. package/cjs/column-header-pill/GroupColumnPill.css.js +0 -6
  61. package/cjs/column-header-pill/GroupColumnPill.css.js.map +0 -1
  62. package/cjs/column-header-pill/GroupColumnPill.js +0 -29
  63. package/cjs/column-header-pill/GroupColumnPill.js.map +0 -1
  64. package/cjs/column-header-pill/SortIndicator.css.js +0 -6
  65. package/cjs/column-header-pill/SortIndicator.css.js.map +0 -1
  66. package/cjs/column-header-pill/SortIndicator.js +0 -27
  67. package/cjs/column-header-pill/SortIndicator.js.map +0 -1
  68. package/cjs/column-resizing/ColumnResizer.css.js +0 -6
  69. package/cjs/column-resizing/ColumnResizer.css.js.map +0 -1
  70. package/cjs/column-resizing/ColumnResizer.js +0 -82
  71. package/cjs/column-resizing/ColumnResizer.js.map +0 -1
  72. package/cjs/column-resizing/useTableColumnResize.js +0 -55
  73. package/cjs/column-resizing/useTableColumnResize.js.map +0 -1
  74. package/cjs/header-cell/GroupHeaderCell.css.js +0 -6
  75. package/cjs/header-cell/GroupHeaderCell.css.js.map +0 -1
  76. package/cjs/header-cell/GroupHeaderCell.js +0 -127
  77. package/cjs/header-cell/GroupHeaderCell.js.map +0 -1
  78. package/cjs/header-cell/HeaderCell.css.js +0 -6
  79. package/cjs/header-cell/HeaderCell.css.js.map +0 -1
  80. package/cjs/header-cell/HeaderCell.js +0 -120
  81. package/cjs/header-cell/HeaderCell.js.map +0 -1
  82. package/cjs/pagination/PaginationControl.css.js +0 -6
  83. package/cjs/pagination/PaginationControl.css.js.map +0 -1
  84. package/cjs/pagination/PaginationControl.js +0 -38
  85. package/cjs/pagination/PaginationControl.js.map +0 -1
  86. package/cjs/pagination/usePagination.js +0 -36
  87. package/cjs/pagination/usePagination.js.map +0 -1
  88. package/cjs/table-cell/TableCell.css.js +0 -6
  89. package/cjs/table-cell/TableCell.css.js.map +0 -1
  90. package/cjs/table-cell/TableCell.js +0 -95
  91. package/cjs/table-cell/TableCell.js.map +0 -1
  92. package/cjs/table-cell/TableGroupCell.css.js +0 -6
  93. package/cjs/table-cell/TableGroupCell.css.js.map +0 -1
  94. package/cjs/table-cell/TableGroupCell.js +0 -66
  95. package/cjs/table-cell/TableGroupCell.js.map +0 -1
  96. package/cjs/table-config.js +0 -35
  97. package/cjs/table-config.js.map +0 -1
  98. package/cjs/table-dom-utils.js +0 -202
  99. package/cjs/table-dom-utils.js.map +0 -1
  100. package/cjs/table-header/HeaderProvider.js +0 -18
  101. package/cjs/table-header/HeaderProvider.js.map +0 -1
  102. package/cjs/table-header/TableHeader.js +0 -166
  103. package/cjs/table-header/TableHeader.js.map +0 -1
  104. package/cjs/table-header/useTableHeader.js +0 -85
  105. package/cjs/table-header/useTableHeader.js.map +0 -1
  106. package/cjs/useCell.js +0 -28
  107. package/cjs/useCell.js.map +0 -1
  108. package/cjs/useCellEditing.js +0 -79
  109. package/cjs/useCellEditing.js.map +0 -1
  110. package/cjs/useCellFocus.js +0 -115
  111. package/cjs/useCellFocus.js.map +0 -1
  112. package/cjs/useControlledTableNavigation.js +0 -46
  113. package/cjs/useControlledTableNavigation.js.map +0 -1
  114. package/cjs/useDataSource.js +0 -146
  115. package/cjs/useDataSource.js.map +0 -1
  116. package/cjs/useEditableCell.js +0 -32
  117. package/cjs/useEditableCell.js.map +0 -1
  118. package/cjs/useHighlighting.js +0 -33
  119. package/cjs/useHighlighting.js.map +0 -1
  120. package/cjs/useKeyboardNavigation.js +0 -318
  121. package/cjs/useKeyboardNavigation.js.map +0 -1
  122. package/cjs/useMeasuredHeight.js +0 -41
  123. package/cjs/useMeasuredHeight.js.map +0 -1
  124. package/cjs/useRowClassNameGenerators.js +0 -34
  125. package/cjs/useRowClassNameGenerators.js.map +0 -1
  126. package/cjs/useSelection.js +0 -74
  127. package/cjs/useSelection.js.map +0 -1
  128. package/cjs/useTable.js +0 -727
  129. package/cjs/useTable.js.map +0 -1
  130. package/cjs/useTableContextMenu.js +0 -59
  131. package/cjs/useTableContextMenu.js.map +0 -1
  132. package/cjs/useTableModel.js +0 -383
  133. package/cjs/useTableModel.js.map +0 -1
  134. package/cjs/useTableScroll.js +0 -446
  135. package/cjs/useTableScroll.js.map +0 -1
  136. package/cjs/useTableViewport.js +0 -137
  137. package/cjs/useTableViewport.js.map +0 -1
  138. package/esm/CellFocusState.js +0 -43
  139. package/esm/CellFocusState.js.map +0 -1
  140. package/esm/Row.css.js +0 -4
  141. package/esm/Row.css.js.map +0 -1
  142. package/esm/Row.js +0 -148
  143. package/esm/Row.js.map +0 -1
  144. package/esm/Table.css.js +0 -4
  145. package/esm/Table.css.js.map +0 -1
  146. package/esm/Table.js +0 -431
  147. package/esm/Table.js.map +0 -1
  148. package/esm/VirtualColSpan.js +0 -17
  149. package/esm/VirtualColSpan.js.map +0 -1
  150. package/esm/bulk-edit/BulkEditDialog.js +0 -55
  151. package/esm/bulk-edit/BulkEditDialog.js.map +0 -1
  152. package/esm/bulk-edit/BulkEditPanel.css.js +0 -4
  153. package/esm/bulk-edit/BulkEditPanel.css.js.map +0 -1
  154. package/esm/bulk-edit/BulkEditPanel.js +0 -70
  155. package/esm/bulk-edit/BulkEditPanel.js.map +0 -1
  156. package/esm/bulk-edit/BulkEditRow.css.js +0 -4
  157. package/esm/bulk-edit/BulkEditRow.css.js.map +0 -1
  158. package/esm/bulk-edit/BulkEditRow.js +0 -79
  159. package/esm/bulk-edit/BulkEditRow.js.map +0 -1
  160. package/esm/bulk-edit/useBulkEditPanel.js +0 -99
  161. package/esm/bulk-edit/useBulkEditPanel.js.map +0 -1
  162. package/esm/bulk-edit/useBulkEditRow.js +0 -142
  163. package/esm/bulk-edit/useBulkEditRow.js.map +0 -1
  164. package/esm/cell-block/CellBlock.css.js +0 -4
  165. package/esm/cell-block/CellBlock.css.js.map +0 -1
  166. package/esm/cell-block/CellBlock.js +0 -43
  167. package/esm/cell-block/CellBlock.js.map +0 -1
  168. package/esm/cell-block/cellblock-utils.js +0 -116
  169. package/esm/cell-block/cellblock-utils.js.map +0 -1
  170. package/esm/cell-block/useCellBlockSelection.js +0 -252
  171. package/esm/cell-block/useCellBlockSelection.js.map +0 -1
  172. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -4
  173. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
  174. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +0 -66
  175. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  176. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -4
  177. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
  178. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -31
  179. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
  180. package/esm/cell-renderers/input-cell/InputCell.css.js +0 -4
  181. package/esm/cell-renderers/input-cell/InputCell.css.js.map +0 -1
  182. package/esm/cell-renderers/input-cell/InputCell.js +0 -50
  183. package/esm/cell-renderers/input-cell/InputCell.js.map +0 -1
  184. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js +0 -4
  185. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
  186. package/esm/cell-renderers/toggle-cell/ToggleCell.js +0 -65
  187. package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  188. package/esm/column-header-pill/ColumnHeaderPill.css.js +0 -4
  189. package/esm/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
  190. package/esm/column-header-pill/ColumnHeaderPill.js +0 -51
  191. package/esm/column-header-pill/ColumnHeaderPill.js.map +0 -1
  192. package/esm/column-header-pill/GroupColumnPill.css.js +0 -4
  193. package/esm/column-header-pill/GroupColumnPill.css.js.map +0 -1
  194. package/esm/column-header-pill/GroupColumnPill.js +0 -27
  195. package/esm/column-header-pill/GroupColumnPill.js.map +0 -1
  196. package/esm/column-header-pill/SortIndicator.css.js +0 -4
  197. package/esm/column-header-pill/SortIndicator.css.js.map +0 -1
  198. package/esm/column-header-pill/SortIndicator.js +0 -25
  199. package/esm/column-header-pill/SortIndicator.js.map +0 -1
  200. package/esm/column-resizing/ColumnResizer.css.js +0 -4
  201. package/esm/column-resizing/ColumnResizer.css.js.map +0 -1
  202. package/esm/column-resizing/ColumnResizer.js +0 -80
  203. package/esm/column-resizing/ColumnResizer.js.map +0 -1
  204. package/esm/column-resizing/useTableColumnResize.js +0 -53
  205. package/esm/column-resizing/useTableColumnResize.js.map +0 -1
  206. package/esm/header-cell/GroupHeaderCell.css.js +0 -4
  207. package/esm/header-cell/GroupHeaderCell.css.js.map +0 -1
  208. package/esm/header-cell/GroupHeaderCell.js +0 -125
  209. package/esm/header-cell/GroupHeaderCell.js.map +0 -1
  210. package/esm/header-cell/HeaderCell.css.js +0 -4
  211. package/esm/header-cell/HeaderCell.css.js.map +0 -1
  212. package/esm/header-cell/HeaderCell.js +0 -118
  213. package/esm/header-cell/HeaderCell.js.map +0 -1
  214. package/esm/pagination/PaginationControl.css.js +0 -4
  215. package/esm/pagination/PaginationControl.css.js.map +0 -1
  216. package/esm/pagination/PaginationControl.js +0 -36
  217. package/esm/pagination/PaginationControl.js.map +0 -1
  218. package/esm/pagination/usePagination.js +0 -34
  219. package/esm/pagination/usePagination.js.map +0 -1
  220. package/esm/table-cell/TableCell.css.js +0 -4
  221. package/esm/table-cell/TableCell.css.js.map +0 -1
  222. package/esm/table-cell/TableCell.js +0 -93
  223. package/esm/table-cell/TableCell.js.map +0 -1
  224. package/esm/table-cell/TableGroupCell.css.js +0 -4
  225. package/esm/table-cell/TableGroupCell.css.js.map +0 -1
  226. package/esm/table-cell/TableGroupCell.js +0 -64
  227. package/esm/table-cell/TableGroupCell.js.map +0 -1
  228. package/esm/table-config.js +0 -33
  229. package/esm/table-config.js.map +0 -1
  230. package/esm/table-dom-utils.js +0 -184
  231. package/esm/table-dom-utils.js.map +0 -1
  232. package/esm/table-header/HeaderProvider.js +0 -15
  233. package/esm/table-header/HeaderProvider.js.map +0 -1
  234. package/esm/table-header/TableHeader.js +0 -164
  235. package/esm/table-header/TableHeader.js.map +0 -1
  236. package/esm/table-header/useTableHeader.js +0 -83
  237. package/esm/table-header/useTableHeader.js.map +0 -1
  238. package/esm/useCell.js +0 -26
  239. package/esm/useCell.js.map +0 -1
  240. package/esm/useCellEditing.js +0 -77
  241. package/esm/useCellEditing.js.map +0 -1
  242. package/esm/useCellFocus.js +0 -113
  243. package/esm/useCellFocus.js.map +0 -1
  244. package/esm/useControlledTableNavigation.js +0 -43
  245. package/esm/useControlledTableNavigation.js.map +0 -1
  246. package/esm/useDataSource.js +0 -144
  247. package/esm/useDataSource.js.map +0 -1
  248. package/esm/useEditableCell.js +0 -30
  249. package/esm/useEditableCell.js.map +0 -1
  250. package/esm/useHighlighting.js +0 -31
  251. package/esm/useHighlighting.js.map +0 -1
  252. package/esm/useKeyboardNavigation.js +0 -314
  253. package/esm/useKeyboardNavigation.js.map +0 -1
  254. package/esm/useMeasuredHeight.js +0 -39
  255. package/esm/useMeasuredHeight.js.map +0 -1
  256. package/esm/useRowClassNameGenerators.js +0 -32
  257. package/esm/useRowClassNameGenerators.js.map +0 -1
  258. package/esm/useSelection.js +0 -72
  259. package/esm/useSelection.js.map +0 -1
  260. package/esm/useTable.js +0 -725
  261. package/esm/useTable.js.map +0 -1
  262. package/esm/useTableContextMenu.js +0 -56
  263. package/esm/useTableContextMenu.js.map +0 -1
  264. package/esm/useTableModel.js +0 -381
  265. package/esm/useTableModel.js.map +0 -1
  266. package/esm/useTableScroll.js +0 -443
  267. package/esm/useTableScroll.js.map +0 -1
  268. package/esm/useTableViewport.js +0 -135
  269. package/esm/useTableViewport.js.map +0 -1
@@ -1,50 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { registerComponent } from '@vuu-ui/vuu-utils';
3
- import { Input } from '@salt-ds/core';
4
- import { useEditableText } from '@vuu-ui/vuu-ui-controls';
5
- import { useComponentCssInjection } from '@salt-ds/styles';
6
- import { useWindow } from '@salt-ds/window';
7
- import cx from 'clsx';
8
- import inputCellCss from './InputCell.css.js';
9
-
10
- const classBase = "vuuTableInputCell";
11
- const InputCell = ({
12
- column,
13
- columnMap,
14
- onEdit,
15
- row
16
- }) => {
17
- const targetWindow = useWindow();
18
- useComponentCssInjection({
19
- testId: "vuu-input-cell",
20
- css: inputCellCss,
21
- window: targetWindow
22
- });
23
- const dataIdx = columnMap[column.name];
24
- const dataValue = row[dataIdx];
25
- const { align = "left", clientSideEditValidationCheck } = column;
26
- const { warningMessage, ...editProps } = useEditableText({
27
- value: dataValue,
28
- onEdit,
29
- clientSideEditValidationCheck
30
- });
31
- const endAdornment = warningMessage && align === "left" ? /* @__PURE__ */ jsx("span", { className: `${classBase}-icon`, "data-icon": "error" }) : void 0;
32
- const startAdornment = warningMessage && align === "right" ? /* @__PURE__ */ jsx("span", { className: `${classBase}-icon`, "data-icon": "error" }) : void 0;
33
- return /* @__PURE__ */ jsx(
34
- Input,
35
- {
36
- ...editProps,
37
- className: cx(classBase, {
38
- [`${classBase}-error`]: warningMessage !== void 0
39
- }),
40
- endAdornment,
41
- startAdornment
42
- }
43
- );
44
- };
45
- registerComponent("input-cell", InputCell, "cell-renderer", {
46
- userCanAssign: false
47
- });
48
-
49
- export { InputCell };
50
- //# sourceMappingURL=InputCell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputCell.js","sources":["../../../src/cell-renderers/input-cell/InputCell.tsx"],"sourcesContent":["import { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { Input } from \"@salt-ds/core\";\nimport { useEditableText } from \"@vuu-ui/vuu-ui-controls\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\n\nimport inputCellCss from \"./InputCell.css\";\n\nconst classBase = \"vuuTableInputCell\";\n\nexport const InputCell = ({\n column,\n columnMap,\n onEdit,\n row,\n}: TableCellRendererProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-input-cell\",\n css: inputCellCss,\n window: targetWindow,\n });\n\n const dataIdx = columnMap[column.name];\n const dataValue = row[dataIdx] as number | string;\n const { align = \"left\", clientSideEditValidationCheck } = column;\n\n const { warningMessage, ...editProps } = useEditableText({\n value: dataValue,\n onEdit,\n clientSideEditValidationCheck,\n });\n\n const endAdornment =\n warningMessage && align === \"left\" ? (\n <span className={`${classBase}-icon`} data-icon=\"error\" />\n ) : undefined;\n\n const startAdornment =\n warningMessage && align === \"right\" ? (\n <span className={`${classBase}-icon`} data-icon=\"error\" />\n ) : undefined;\n\n return (\n <Input\n {...editProps}\n className={cx(classBase, {\n [`${classBase}-error`]: warningMessage !== undefined,\n })}\n endAdornment={endAdornment}\n startAdornment={startAdornment}\n />\n );\n};\n\nregisterComponent(\"input-cell\", InputCell, \"cell-renderer\", {\n userCanAssign: false,\n});\n"],"names":[],"mappings":";;;;;;;;;AAUA,MAAM,SAAY,GAAA,mBAAA;AAEX,MAAM,YAAY,CAAC;AAAA,EACxB,MAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAA8B,KAAA;AAC5B,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAA,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,OAAA,GAAU,SAAU,CAAA,MAAA,CAAO,IAAI,CAAA;AACrC,EAAM,MAAA,SAAA,GAAY,IAAI,OAAO,CAAA;AAC7B,EAAA,MAAM,EAAE,KAAA,GAAQ,MAAQ,EAAA,6BAAA,EAAkC,GAAA,MAAA;AAE1D,EAAA,MAAM,EAAE,cAAA,EAAgB,GAAG,SAAA,KAAc,eAAgB,CAAA;AAAA,IACvD,KAAO,EAAA,SAAA;AAAA,IACP,MAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,YACJ,GAAA,cAAA,IAAkB,KAAU,KAAA,MAAA,mBACzB,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,CAAA,EAAG,SAAS,CAAA,KAAA,CAAA,EAAS,WAAU,EAAA,OAAA,EAAQ,CACtD,GAAA,KAAA,CAAA;AAEN,EAAA,MAAM,cACJ,GAAA,cAAA,IAAkB,KAAU,KAAA,OAAA,mBACzB,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,CAAA,EAAG,SAAS,CAAA,KAAA,CAAA,EAAS,WAAU,EAAA,OAAA,EAAQ,CACtD,GAAA,KAAA,CAAA;AAEN,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,SAAA;AAAA,MACJ,SAAA,EAAW,GAAG,SAAW,EAAA;AAAA,QACvB,CAAC,CAAA,EAAG,SAAS,CAAA,MAAA,CAAQ,GAAG,cAAmB,KAAA,KAAA;AAAA,OAC5C,CAAA;AAAA,MACD,YAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;AAEA,iBAAkB,CAAA,YAAA,EAAc,WAAW,eAAiB,EAAA;AAAA,EAC1D,aAAe,EAAA;AACjB,CAAC,CAAA;;;;"}
@@ -1,4 +0,0 @@
1
- var toggleCellCss = "\n.vuuTableToggleCell {\n --saltButton-borderRadius: 4px;\n --saltButton-height: 16px;\n font-weight: 500;\n position: relative;\n top: 1px;;\n}\n.vuuTableToggleCell-side {\n --saltButton-minWidth: 40px;\n}\n.vuuTableToggleCell.vuuCycleStateButton-buy {\n background-color: var(--vuu-color-green-50);\n}\n\n.vuuTableToggleCell.vuuCycleStateButton-sell {\n background-color: var(--vuu-color-red-50);\n\n}\n\n.vuuTableCell .vuuTableToggleCell:focus {\n /* TODO fix use of important */\n border: solid 2px var(--vuu-color-purple-10) !important;\n color: white !important;\n height: 18px !important;\n top: 0px !important;\n}\n\n\n\n\n\n";
2
-
3
- export { toggleCellCss as default };
4
- //# sourceMappingURL=ToggleCell.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToggleCell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,65 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { dispatchCustomEvent, dataColumnAndKeyUnchanged, registerComponent, isTypeDescriptor, isValueListRenderer } from '@vuu-ui/vuu-utils';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import cx from 'clsx';
6
- import { memo, useCallback } from 'react';
7
- import { CycleStateButton } from '@vuu-ui/vuu-ui-controls';
8
- import toggleCellCss from './ToggleCell.css.js';
9
-
10
- const classBase = "vuuTableToggleCell";
11
- const getValueList = ({ name, type }) => {
12
- if (isTypeDescriptor(type) && isValueListRenderer(type.renderer)) {
13
- return type.renderer.values;
14
- } else {
15
- throw Error(
16
- `useLookupValues column ${name} has not been configured with a values list`
17
- );
18
- }
19
- };
20
- const ToggleCell = memo(function ToggleCell2({
21
- column,
22
- columnMap,
23
- onEdit,
24
- row
25
- }) {
26
- const targetWindow = useWindow();
27
- useComponentCssInjection({
28
- testId: "vuu-toggle-cell",
29
- css: toggleCellCss,
30
- window: targetWindow
31
- });
32
- const values = getValueList(column);
33
- const dataIdx = columnMap[column.name];
34
- const value = row[dataIdx];
35
- const handleCommit = useCallback(
36
- async (evt, newValue) => {
37
- const res = await onEdit?.(
38
- { previousValue: value, value: newValue },
39
- "commit"
40
- );
41
- if (res === true) {
42
- dispatchCustomEvent(evt.target, "vuu-commit");
43
- }
44
- return res;
45
- },
46
- [onEdit, value]
47
- );
48
- return /* @__PURE__ */ jsx(
49
- CycleStateButton,
50
- {
51
- className: cx(classBase, `${classBase}-${column.name}`),
52
- onCommit: handleCommit,
53
- value,
54
- values,
55
- variant: "cta",
56
- children: value
57
- }
58
- );
59
- }, dataColumnAndKeyUnchanged);
60
- registerComponent("toggle-cell", ToggleCell, "cell-renderer", {
61
- userCanAssign: false
62
- });
63
-
64
- export { ToggleCell };
65
- //# sourceMappingURL=ToggleCell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToggleCell.js","sources":["../../../src/cell-renderers/toggle-cell/ToggleCell.tsx"],"sourcesContent":["import {\n ColumnDescriptor,\n TableCellRendererProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n CommitHandler,\n dataColumnAndKeyUnchanged,\n dispatchCustomEvent,\n isTypeDescriptor,\n isValueListRenderer,\n registerComponent,\n} from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\n\nimport { memo, useCallback } from \"react\";\nimport { CycleStateButton } from \"@vuu-ui/vuu-ui-controls\";\n\nimport toggleCellCss from \"./ToggleCell.css\";\n\nconst classBase = \"vuuTableToggleCell\";\n\nconst getValueList = ({ name, type }: ColumnDescriptor) => {\n if (isTypeDescriptor(type) && isValueListRenderer(type.renderer)) {\n return type.renderer.values;\n } else {\n throw Error(\n `useLookupValues column ${name} has not been configured with a values list`,\n );\n }\n};\n\nexport const ToggleCell = memo(function ToggleCell({\n column,\n columnMap,\n onEdit,\n row,\n}: TableCellRendererProps) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-toggle-cell\",\n css: toggleCellCss,\n window: targetWindow,\n });\n\n const values = getValueList(column);\n const dataIdx = columnMap[column.name];\n const value = row[dataIdx] as string;\n\n const handleCommit = useCallback<CommitHandler<HTMLButtonElement>>(\n async (evt, newValue) => {\n const res = await onEdit?.(\n { previousValue: value, value: newValue },\n \"commit\",\n );\n if (res === true) {\n dispatchCustomEvent(evt.target as HTMLElement, \"vuu-commit\");\n }\n return res;\n },\n [onEdit, value],\n );\n\n return (\n <CycleStateButton\n className={cx(classBase, `${classBase}-${column.name}`)}\n onCommit={handleCommit}\n value={value}\n values={values}\n variant=\"cta\"\n >\n {value}\n </CycleStateButton>\n );\n}, dataColumnAndKeyUnchanged);\n\nregisterComponent(\"toggle-cell\", ToggleCell, \"cell-renderer\", {\n userCanAssign: false,\n});\n"],"names":["ToggleCell"],"mappings":";;;;;;;;;AAqBA,MAAM,SAAY,GAAA,oBAAA;AAElB,MAAM,YAAe,GAAA,CAAC,EAAE,IAAA,EAAM,MAA6B,KAAA;AACzD,EAAA,IAAI,iBAAiB,IAAI,CAAA,IAAK,mBAAoB,CAAA,IAAA,CAAK,QAAQ,CAAG,EAAA;AAChE,IAAA,OAAO,KAAK,QAAS,CAAA,MAAA;AAAA,GAChB,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,0BAA0B,IAAI,CAAA,2CAAA;AAAA,KAChC;AAAA;AAEJ,CAAA;AAEa,MAAA,UAAA,GAAa,IAAK,CAAA,SAASA,WAAW,CAAA;AAAA,EACjD,MAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAA2B,EAAA;AACzB,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAA,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAClC,EAAM,MAAA,OAAA,GAAU,SAAU,CAAA,MAAA,CAAO,IAAI,CAAA;AACrC,EAAM,MAAA,KAAA,GAAQ,IAAI,OAAO,CAAA;AAEzB,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,OAAO,KAAK,QAAa,KAAA;AACvB,MAAA,MAAM,MAAM,MAAM,MAAA;AAAA,QAChB,EAAE,aAAA,EAAe,KAAO,EAAA,KAAA,EAAO,QAAS,EAAA;AAAA,QACxC;AAAA,OACF;AACA,MAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,QAAoB,mBAAA,CAAA,GAAA,CAAI,QAAuB,YAAY,CAAA;AAAA;AAE7D,MAAO,OAAA,GAAA;AAAA,KACT;AAAA,IACA,CAAC,QAAQ,KAAK;AAAA,GAChB;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,SAAW,EAAA,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,MAAA,CAAO,IAAI,CAAE,CAAA,CAAA;AAAA,MACtD,QAAU,EAAA,YAAA;AAAA,MACV,KAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAQ,EAAA,KAAA;AAAA,MAEP,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA,EAAG,yBAAyB;AAE5B,iBAAkB,CAAA,aAAA,EAAe,YAAY,eAAiB,EAAA;AAAA,EAC5D,aAAe,EAAA;AACjB,CAAC,CAAA;;;;"}
@@ -1,4 +0,0 @@
1
- var columnHeaderPillCss = ".vuuColumnHeaderPill {\n --vuu-icon-size: 14px;\n --menu-item-icon-color: black;\n --vuu-icon-color: var(--salt-actionable-bold-foreground);\n --vuu-icon-height: 12px;\n --vuu-icon-width: 12px;\n align-items: center;\n background: var(--salt-actionable-bold-background);\n color: var(--salt-actionable-bold-foreground);\n border-radius: 4px;\n flex: var(--vuuColumnHeaderPill-flex, none);\n font-size: 11px;\n gap: 4px;\n height: 16px;\n display: flex;\n margin: var(--vuuColumnHeaderPill-margin, 0);\n padding: 0 6px;\n position: relative;\n}\n\n.vuuColumnHeaderPill:hover {\n --vuu-icon-color: var(--salt-actionable-bold-foreground-hover);\n background-color: var(--salt-actionable-bold-background-hover);\n color: var(--salt-actionable-bold-foreground-hover);\n}\n\n.vuuColumnHeaderPill-removeButton {\n cursor: pointer;\n}\n";
2
-
3
- export { columnHeaderPillCss as default };
4
- //# sourceMappingURL=ColumnHeaderPill.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnHeaderPill.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,51 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import cx from 'clsx';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import { useCallback } from 'react';
6
- import columnHeaderPillCss from './ColumnHeaderPill.css.js';
7
-
8
- const classBase = "vuuColumnHeaderPill";
9
- const ColumnHeaderPill = ({
10
- children,
11
- className,
12
- column,
13
- onRemove,
14
- removable,
15
- ...htmlAttributes
16
- }) => {
17
- const targetWindow = useWindow();
18
- useComponentCssInjection({
19
- testId: "vuu-column-header-pill",
20
- css: columnHeaderPillCss,
21
- window: targetWindow
22
- });
23
- if (removable && typeof onRemove !== "function") {
24
- throw Error(
25
- "ColumnHeaderPill onRemove prop must be provided if Pill is removable"
26
- );
27
- }
28
- const handleClickRemove = useCallback(
29
- (evt) => {
30
- evt.preventDefault();
31
- evt.stopPropagation();
32
- onRemove?.(column);
33
- },
34
- [column, onRemove]
35
- );
36
- return /* @__PURE__ */ jsxs("div", { ...htmlAttributes, className: cx(classBase, className), tabIndex: -1, children: [
37
- children,
38
- removable ? /* @__PURE__ */ jsx(
39
- "span",
40
- {
41
- className: `${classBase}-removeButton`,
42
- role: "button",
43
- "data-icon": "cross",
44
- onClick: handleClickRemove
45
- }
46
- ) : null
47
- ] });
48
- };
49
-
50
- export { ColumnHeaderPill };
51
- //# sourceMappingURL=ColumnHeaderPill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnHeaderPill.js","sources":["../../src/column-header-pill/ColumnHeaderPill.tsx"],"sourcesContent":["import cx from \"clsx\";\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, MouseEvent, useCallback } from \"react\";\n\nimport columnHeaderPillCss from \"./ColumnHeaderPill.css\";\n\nexport interface ColumnHeaderPillProps extends HTMLAttributes<HTMLDivElement> {\n column: RuntimeColumnDescriptor;\n removable?: boolean;\n onRemove?: (column: RuntimeColumnDescriptor) => void;\n}\n\nconst classBase = \"vuuColumnHeaderPill\";\n\nexport const ColumnHeaderPill = ({\n children,\n className,\n column,\n onRemove,\n removable,\n ...htmlAttributes\n}: ColumnHeaderPillProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-header-pill\",\n css: columnHeaderPillCss,\n window: targetWindow,\n });\n\n if (removable && typeof onRemove !== \"function\") {\n throw Error(\n \"ColumnHeaderPill onRemove prop must be provided if Pill is removable\",\n );\n }\n\n const handleClickRemove = useCallback(\n (evt: MouseEvent<HTMLSpanElement>) => {\n evt.preventDefault();\n evt.stopPropagation();\n onRemove?.(column);\n },\n [column, onRemove],\n );\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)} tabIndex={-1}>\n {children}\n {removable ? (\n <span\n className={`${classBase}-removeButton`}\n role=\"button\"\n data-icon=\"cross\"\n onClick={handleClickRemove}\n />\n ) : null}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAcA,MAAM,SAAY,GAAA,qBAAA;AAEX,MAAM,mBAAmB,CAAC;AAAA,EAC/B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAA6B,KAAA;AAC3B,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAA,mBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,SAAA,IAAa,OAAO,QAAA,KAAa,UAAY,EAAA;AAC/C,IAAM,MAAA,KAAA;AAAA,MACJ;AAAA,KACF;AAAA;AAGF,EAAA,MAAM,iBAAoB,GAAA,WAAA;AAAA,IACxB,CAAC,GAAqC,KAAA;AACpC,MAAA,GAAA,CAAI,cAAe,EAAA;AACnB,MAAA,GAAA,CAAI,eAAgB,EAAA;AACpB,MAAA,QAAA,GAAW,MAAM,CAAA;AAAA,KACnB;AAAA,IACA,CAAC,QAAQ,QAAQ;AAAA,GACnB;AAEA,EACE,uBAAA,IAAA,CAAC,KAAK,EAAA,EAAA,GAAG,cAAgB,EAAA,SAAA,EAAW,GAAG,SAAW,EAAA,SAAS,CAAG,EAAA,QAAA,EAAU,CACrE,CAAA,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,SACC,mBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,SAAS,CAAA,aAAA,CAAA;AAAA,QACvB,IAAK,EAAA,QAAA;AAAA,QACL,WAAU,EAAA,OAAA;AAAA,QACV,OAAS,EAAA;AAAA;AAAA,KAET,GAAA;AAAA,GACN,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +0,0 @@
1
- var groupColumnPillCss = "\n.vuuSortPosition {\n font-size: 11px;\n font-weight: 700;\n padding-top: 1px;\n}\n\n";
2
-
3
- export { groupColumnPillCss as default };
4
- //# sourceMappingURL=GroupColumnPill.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupColumnPill.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,27 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useComponentCssInjection } from '@salt-ds/styles';
3
- import { useWindow } from '@salt-ds/window';
4
- import { ColumnHeaderPill } from './ColumnHeaderPill.js';
5
- import groupColumnPillCss from './GroupColumnPill.css.js';
6
-
7
- const GroupColumnPill = ({
8
- column,
9
- ...columnHeaderProps
10
- }) => {
11
- const targetWindow = useWindow();
12
- useComponentCssInjection({
13
- testId: "vuu-group-column-pill",
14
- css: groupColumnPillCss,
15
- window: targetWindow
16
- });
17
- const { name, sorted } = column;
18
- const icon = typeof sorted === "number" ? sorted < 0 ? "arrow-down" : "arrow-up" : sorted === "A" ? "arrow-up" : sorted === "D" ? "arrow-down" : void 0;
19
- return /* @__PURE__ */ jsxs(ColumnHeaderPill, { ...columnHeaderProps, column, children: [
20
- /* @__PURE__ */ jsx("span", { className: "vuuGroupColumnPill-label", children: name }),
21
- icon !== void 0 ? /* @__PURE__ */ jsx("span", { "data-icon": icon }) : null,
22
- typeof sorted === "number" ? /* @__PURE__ */ jsx("span", { className: "vuuSortPosition", children: Math.abs(sorted) }) : null
23
- ] });
24
- };
25
-
26
- export { GroupColumnPill };
27
- //# sourceMappingURL=GroupColumnPill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupColumnPill.js","sources":["../../src/column-header-pill/GroupColumnPill.tsx"],"sourcesContent":["import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport { ColumnHeaderPill, ColumnHeaderPillProps } from \"./ColumnHeaderPill\";\n\nimport groupColumnPillCss from \"./GroupColumnPill.css\";\n\nexport interface GroupColumnPillProps extends ColumnHeaderPillProps {\n column: RuntimeColumnDescriptor;\n}\n\nexport const GroupColumnPill = ({\n column,\n ...columnHeaderProps\n}: GroupColumnPillProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-group-column-pill\",\n css: groupColumnPillCss,\n window: targetWindow,\n });\n\n const { name, sorted } = column;\n const icon =\n typeof sorted === \"number\"\n ? sorted < 0\n ? \"arrow-down\"\n : \"arrow-up\"\n : sorted === \"A\"\n ? \"arrow-up\"\n : sorted === \"D\"\n ? \"arrow-down\"\n : undefined;\n\n return (\n <ColumnHeaderPill {...columnHeaderProps} column={column}>\n <span className=\"vuuGroupColumnPill-label\">{name}</span>\n {icon !== undefined ? <span data-icon={icon} /> : null}\n {typeof sorted === \"number\" ? (\n <span className={\"vuuSortPosition\"}>{Math.abs(sorted)}</span>\n ) : null}\n </ColumnHeaderPill>\n );\n};\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,MAAA;AAAA,EACA,GAAG;AACL,CAA4B,KAAA;AAC1B,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uBAAA;AAAA,IACR,GAAK,EAAA,kBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,EAAE,IAAM,EAAA,MAAA,EAAW,GAAA,MAAA;AACzB,EAAA,MAAM,IACJ,GAAA,OAAO,MAAW,KAAA,QAAA,GACd,MAAS,GAAA,CAAA,GACP,YACA,GAAA,UAAA,GACF,MAAW,KAAA,GAAA,GACT,UACA,GAAA,MAAA,KAAW,MACT,YACA,GAAA,KAAA,CAAA;AAEV,EAAA,uBACG,IAAA,CAAA,gBAAA,EAAA,EAAkB,GAAG,iBAAA,EAAmB,MACvC,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,0BAAA,EAA4B,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA,IAChD,SAAS,KAAY,CAAA,mBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,WAAA,EAAW,MAAM,CAAK,GAAA,IAAA;AAAA,IACjD,OAAO,MAAW,KAAA,QAAA,mBAChB,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,iBAAA,EAAoB,QAAK,EAAA,IAAA,CAAA,GAAA,CAAI,MAAM,CAAA,EAAE,CACpD,GAAA;AAAA,GACN,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +0,0 @@
1
- var sortIndicatorCss = "\n.vuuSortPosition {\n font-size: 11px;\n font-weight: 700;\n padding-top: 1px;\n}\n\n";
2
-
3
- export { sortIndicatorCss as default };
4
- //# sourceMappingURL=SortIndicator.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SortIndicator.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,25 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useComponentCssInjection } from '@salt-ds/styles';
3
- import { useWindow } from '@salt-ds/window';
4
- import { ColumnHeaderPill } from './ColumnHeaderPill.js';
5
- import sortIndicatorCss from './SortIndicator.css.js';
6
-
7
- const SortIndicator = ({ column }) => {
8
- const targetWindow = useWindow();
9
- useComponentCssInjection({
10
- testId: "vuu-table-sort-indicator",
11
- css: sortIndicatorCss,
12
- window: targetWindow
13
- });
14
- if (!column.sorted) {
15
- return null;
16
- }
17
- const icon = typeof column.sorted === "number" ? column.sorted < 0 ? "arrow-down" : "arrow-up" : column.sorted === "A" ? "arrow-up" : "arrow-down";
18
- return /* @__PURE__ */ jsxs(ColumnHeaderPill, { column, children: [
19
- /* @__PURE__ */ jsx("span", { "data-icon": icon }),
20
- typeof column.sorted === "number" ? /* @__PURE__ */ jsx("span", { className: "vuuSortPosition", children: Math.abs(column.sorted) }) : null
21
- ] });
22
- };
23
-
24
- export { SortIndicator };
25
- //# sourceMappingURL=SortIndicator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SortIndicator.js","sources":["../../src/column-header-pill/SortIndicator.tsx"],"sourcesContent":["import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { ColumnHeaderPill } from \"./ColumnHeaderPill\";\n\nimport sortIndicatorCss from \"./SortIndicator.css\";\n\nexport interface SortIndicatorProps {\n column: RuntimeColumnDescriptor;\n}\n\nexport const SortIndicator = ({ column }: SortIndicatorProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-table-sort-indicator\",\n css: sortIndicatorCss,\n window: targetWindow,\n });\n\n if (!column.sorted) {\n return null;\n }\n\n const icon =\n typeof column.sorted === \"number\"\n ? column.sorted < 0\n ? \"arrow-down\"\n : \"arrow-up\"\n : column.sorted === \"A\"\n ? \"arrow-up\"\n : \"arrow-down\";\n\n return (\n <ColumnHeaderPill column={column}>\n <span data-icon={icon} />\n {typeof column.sorted === \"number\" ? (\n <span className={\"vuuSortPosition\"}>{Math.abs(column.sorted)}</span>\n ) : null}\n </ColumnHeaderPill>\n );\n};\n"],"names":[],"mappings":";;;;;;AAWO,MAAM,aAAgB,GAAA,CAAC,EAAE,MAAA,EAAiC,KAAA;AAC/D,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAA,gBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,CAAC,OAAO,MAAQ,EAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,IACJ,GAAA,OAAO,MAAO,CAAA,MAAA,KAAW,QACrB,GAAA,MAAA,CAAO,MAAS,GAAA,CAAA,GACd,YACA,GAAA,UAAA,GACF,MAAO,CAAA,MAAA,KAAW,MAChB,UACA,GAAA,YAAA;AAER,EACE,uBAAA,IAAA,CAAC,oBAAiB,MAChB,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,MAAA,EAAA,EAAK,aAAW,IAAM,EAAA,CAAA;AAAA,IACtB,OAAO,MAAA,CAAO,MAAW,KAAA,QAAA,mBACvB,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,iBAAA,EAAoB,QAAK,EAAA,IAAA,CAAA,GAAA,CAAI,MAAO,CAAA,MAAM,GAAE,CAC3D,GAAA;AAAA,GACN,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +0,0 @@
1
- var columnResizerCss = ".vuuColumnResizer {\n cursor: col-resize;\n height: var(--vuu-table-col-header-height);\n margin-left: var(--columnResizer-left, auto);\n position: absolute;\n right: -5px;\n width: 8px;\n z-index: 1;\n}\n\n.vuuTableHeaderCell:not(.vuuTableHeaderCell-resizing) {\n .vuuColumnResizer:hover {\n --columnResizer-color: var(--salt-selectable-background-selected);\n }\n}\n\n.vuuColumnResizer:after {\n background-color: var(\n --columnResizer-color,\n var(--salt-separable-tertiary-borderColor)\n );\n bottom: 0;\n content: \"\";\n position: absolute;\n top: 0;\n right: 3px;\n height: var(--columnResizer-height, 0);\n width: 2px;\n z-index: 1;\n}\n";
2
-
3
- export { columnResizerCss as default };
4
- //# sourceMappingURL=ColumnResizer.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnResizer.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,80 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useComponentCssInjection } from '@salt-ds/styles';
3
- import { useWindow } from '@salt-ds/window';
4
- import { useRef, useCallback } from 'react';
5
- import columnResizerCss from './ColumnResizer.css.js';
6
-
7
- const NOOP = () => void 0;
8
- const baseClass = "vuuColumnResizer";
9
- const ColumnResizer = ({
10
- onDrag,
11
- onDragEnd = NOOP,
12
- onDragStart = NOOP
13
- }) => {
14
- const targetWindow = useWindow();
15
- useComponentCssInjection({
16
- testId: "vuu-column-resizer",
17
- css: columnResizerCss,
18
- window: targetWindow
19
- });
20
- const positionRef = useRef({ start: 0, now: 0 });
21
- const elementRef = useRef(void 0);
22
- const onPointerMove = useCallback(
23
- (e) => {
24
- if (e.stopPropagation) {
25
- e.stopPropagation();
26
- }
27
- if (e.preventDefault) {
28
- e.preventDefault();
29
- }
30
- const { current: position } = positionRef;
31
- const x = Math.round(e.clientX);
32
- const moveBy = x - position.now;
33
- const distanceMoved = position.now - position.start;
34
- positionRef.current.now = x;
35
- if (moveBy !== 0) {
36
- onDrag(e, moveBy, distanceMoved);
37
- }
38
- },
39
- [onDrag]
40
- );
41
- const onPointerUp = useCallback(
42
- (e) => {
43
- window.removeEventListener("pointerup", onPointerUp);
44
- window.removeEventListener("pointermove", onPointerMove);
45
- const { current: position } = positionRef;
46
- const distanceMoved = position.now - position.start;
47
- onDragEnd(e, distanceMoved);
48
- },
49
- [onDragEnd, onPointerMove]
50
- );
51
- const handlePointerDown = useCallback(
52
- (e) => {
53
- const { current: position } = positionRef;
54
- onDragStart(e);
55
- position.now = position.start = Math.round(e.clientX);
56
- window.addEventListener("pointerup", onPointerUp);
57
- window.addEventListener("pointermove", onPointerMove);
58
- if (e.stopPropagation) {
59
- e.stopPropagation();
60
- }
61
- if (e.preventDefault) {
62
- e.preventDefault();
63
- }
64
- },
65
- [onDragStart, onPointerMove, onPointerUp]
66
- );
67
- const setRef = useCallback(
68
- (el) => {
69
- if (el && elementRef.current === void 0) {
70
- el.addEventListener("pointerdown", handlePointerDown);
71
- elementRef.current = el;
72
- }
73
- },
74
- [handlePointerDown]
75
- );
76
- return /* @__PURE__ */ jsx("div", { className: baseClass, ref: setRef });
77
- };
78
-
79
- export { ColumnResizer };
80
- //# sourceMappingURL=ColumnResizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnResizer.js","sources":["../../src/column-resizing/ColumnResizer.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { RefCallback, useCallback, useRef } from \"react\";\n\nimport columnResizerCss from \"./ColumnResizer.css\";\n\nconst NOOP = () => undefined;\n\nconst baseClass = \"vuuColumnResizer\";\nexport interface TableColumnResizerProps {\n onDrag: (evt: MouseEvent, moveBy: number, totalDistanceMoved: number) => void;\n onDragEnd: (evt: MouseEvent, totalDistanceMoved: number) => void;\n /**\n *\n * @param evt DOM MouseEvent\n * @returns\n */\n onDragStart: (evt: MouseEvent) => void;\n}\n\nexport const ColumnResizer = ({\n onDrag,\n onDragEnd = NOOP,\n onDragStart = NOOP,\n}: TableColumnResizerProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-resizer\",\n css: columnResizerCss,\n window: targetWindow,\n });\n const positionRef = useRef({ start: 0, now: 0 });\n const elementRef = useRef<HTMLDivElement | undefined>(undefined);\n\n const onPointerMove = useCallback(\n (e: MouseEvent) => {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n const { current: position } = positionRef;\n\n const x = Math.round(e.clientX);\n const moveBy = x - position.now;\n const distanceMoved = position.now - position.start;\n\n positionRef.current.now = x;\n\n if (moveBy !== 0) {\n onDrag(e, moveBy, distanceMoved);\n }\n },\n [onDrag],\n );\n\n const onPointerUp = useCallback(\n (e: MouseEvent) => {\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointermove\", onPointerMove);\n\n const { current: position } = positionRef;\n const distanceMoved = position.now - position.start;\n onDragEnd(e, distanceMoved);\n },\n [onDragEnd, onPointerMove],\n );\n\n const handlePointerDown = useCallback(\n (e: MouseEvent) => {\n const { current: position } = positionRef;\n onDragStart(e);\n position.now = position.start = Math.round(e.clientX);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointermove\", onPointerMove);\n\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n },\n [onDragStart, onPointerMove, onPointerUp],\n );\n\n const setRef = useCallback<RefCallback<HTMLDivElement>>(\n (el) => {\n if (el && elementRef.current === undefined) {\n el.addEventListener(\"pointerdown\", handlePointerDown);\n elementRef.current = el;\n }\n },\n [handlePointerDown],\n );\n\n return <div className={baseClass} ref={setRef} />;\n};\n"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- import { useRef, useState, useCallback } from 'react';
2
-
3
- const useTableColumnResize = ({
4
- column,
5
- onResize,
6
- rootRef
7
- }) => {
8
- const widthRef = useRef({ start: 0, now: 0 });
9
- const [isResizing, setResizing] = useState(false);
10
- const { name } = column;
11
- const handleResizeStart = useCallback(() => {
12
- if (onResize && rootRef.current) {
13
- const { current: width } = widthRef;
14
- const { width: measuredWidth } = rootRef.current.getBoundingClientRect();
15
- width.start = width.now = Math.round(measuredWidth);
16
- setResizing(true);
17
- onResize?.("begin", name);
18
- }
19
- }, [name, onResize, rootRef]);
20
- const handleResize = useCallback(
21
- (_evt, moveBy, totalDistanceMoved) => {
22
- if (rootRef.current) {
23
- if (onResize) {
24
- const { current: width } = widthRef;
25
- const newWidth = width.start + totalDistanceMoved;
26
- if (newWidth !== width.now && newWidth > 0) {
27
- onResize("resize", name, newWidth);
28
- width.now = newWidth;
29
- }
30
- }
31
- }
32
- },
33
- [name, onResize, rootRef]
34
- );
35
- const handleResizeEnd = useCallback(() => {
36
- if (onResize) {
37
- const { current: width } = widthRef;
38
- onResize("end", name, width.now);
39
- setTimeout(() => {
40
- setResizing(false);
41
- }, 80);
42
- }
43
- }, [name, onResize]);
44
- return {
45
- isResizing,
46
- onDrag: handleResize,
47
- onDragStart: handleResizeStart,
48
- onDragEnd: handleResizeEnd
49
- };
50
- };
51
-
52
- export { useTableColumnResize };
53
- //# sourceMappingURL=useTableColumnResize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTableColumnResize.js","sources":["../../src/column-resizing/useTableColumnResize.tsx"],"sourcesContent":["import {\n ColumnDescriptor,\n Heading,\n ResizePhase,\n} from \"@vuu-ui/vuu-table-types\";\nimport { RefObject, useCallback, useRef, useState } from \"react\";\n\nexport type ResizeHandler = (evt: MouseEvent, moveBy: number) => void;\nexport interface CellResizeHookProps {\n column: ColumnDescriptor | Heading;\n onResize?: (phase: ResizePhase, columnName: string, width?: number) => void;\n rootRef: RefObject<HTMLDivElement | null>;\n}\n\nexport interface CellResizeHookResult {\n isResizing: boolean;\n onDrag: (evt: MouseEvent, moveBy: number, totalDistanceMoved: number) => void;\n onDragStart: (evt: MouseEvent) => void;\n onDragEnd: (evt: MouseEvent) => void;\n}\n\nexport const useTableColumnResize = ({\n column,\n onResize,\n rootRef,\n}: CellResizeHookProps): CellResizeHookResult => {\n const widthRef = useRef({ start: 0, now: 0 });\n\n const [isResizing, setResizing] = useState(false);\n const { name } = column;\n\n const handleResizeStart = useCallback(() => {\n if (onResize && rootRef.current) {\n const { current: width } = widthRef;\n const { width: measuredWidth } = rootRef.current.getBoundingClientRect();\n width.start = width.now = Math.round(measuredWidth);\n setResizing(true);\n onResize?.(\"begin\", name);\n }\n }, [name, onResize, rootRef]);\n\n const handleResize = useCallback(\n (_evt: MouseEvent, moveBy: number, totalDistanceMoved: number) => {\n if (rootRef.current) {\n if (onResize) {\n const { current: width } = widthRef;\n const newWidth = width.start + totalDistanceMoved;\n if (newWidth !== width.now && newWidth > 0) {\n onResize(\"resize\", name, newWidth);\n width.now = newWidth;\n }\n }\n }\n },\n [name, onResize, rootRef],\n );\n\n const handleResizeEnd = useCallback(() => {\n if (onResize) {\n const { current: width } = widthRef;\n onResize(\"end\", name, width.now);\n setTimeout(() => {\n // clickHandler in HeaderCell checks isResizing before firing. Because onMouseUp\n // fires before click, we need to delay setting isResizing back to false, just\n // long enough that the click ghandler will have fired.\n setResizing(false);\n }, 80);\n }\n }, [name, onResize]);\n\n return {\n isResizing,\n onDrag: handleResize,\n onDragStart: handleResizeStart,\n onDragEnd: handleResizeEnd,\n };\n};\n"],"names":[],"mappings":";;AAqBO,MAAM,uBAAuB,CAAC;AAAA,EACnC,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAiD,KAAA;AAC/C,EAAA,MAAM,WAAW,MAAO,CAAA,EAAE,OAAO,CAAG,EAAA,GAAA,EAAK,GAAG,CAAA;AAE5C,EAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAM,MAAA,EAAE,MAAS,GAAA,MAAA;AAEjB,EAAM,MAAA,iBAAA,GAAoB,YAAY,MAAM;AAC1C,IAAI,IAAA,QAAA,IAAY,QAAQ,OAAS,EAAA;AAC/B,MAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,QAAA;AAC3B,MAAA,MAAM,EAAE,KAAO,EAAA,aAAA,EAAkB,GAAA,OAAA,CAAQ,QAAQ,qBAAsB,EAAA;AACvE,MAAA,KAAA,CAAM,KAAQ,GAAA,KAAA,CAAM,GAAM,GAAA,IAAA,CAAK,MAAM,aAAa,CAAA;AAClD,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,QAAA,GAAW,SAAS,IAAI,CAAA;AAAA;AAC1B,GACC,EAAA,CAAC,IAAM,EAAA,QAAA,EAAU,OAAO,CAAC,CAAA;AAE5B,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,IAAkB,EAAA,MAAA,EAAgB,kBAA+B,KAAA;AAChE,MAAA,IAAI,QAAQ,OAAS,EAAA;AACnB,QAAA,IAAI,QAAU,EAAA;AACZ,UAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,QAAA;AAC3B,UAAM,MAAA,QAAA,GAAW,MAAM,KAAQ,GAAA,kBAAA;AAC/B,UAAA,IAAI,QAAa,KAAA,KAAA,CAAM,GAAO,IAAA,QAAA,GAAW,CAAG,EAAA;AAC1C,YAAS,QAAA,CAAA,QAAA,EAAU,MAAM,QAAQ,CAAA;AACjC,YAAA,KAAA,CAAM,GAAM,GAAA,QAAA;AAAA;AACd;AACF;AACF,KACF;AAAA,IACA,CAAC,IAAM,EAAA,QAAA,EAAU,OAAO;AAAA,GAC1B;AAEA,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,IAAI,QAAU,EAAA;AACZ,MAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,QAAA;AAC3B,MAAS,QAAA,CAAA,KAAA,EAAO,IAAM,EAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,UAAA,CAAW,MAAM;AAIf,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA,SAChB,EAAE,CAAA;AAAA;AACP,GACC,EAAA,CAAC,IAAM,EAAA,QAAQ,CAAC,CAAA;AAEnB,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,MAAQ,EAAA,YAAA;AAAA,IACR,WAAa,EAAA,iBAAA;AAAA,IACb,SAAW,EAAA;AAAA,GACb;AACF;;;;"}
@@ -1,4 +0,0 @@
1
- var headerCellCss = ".vuu-theme {\n --svg-spinner: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><path fill=\"rgb(38, 112, 169)\" d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\"><animateTransform attributeName=\"transform\" attributeType=\"XML\" type=\"rotate\" dur=\"1s\" from=\"0 50 50\" to=\"360 50 50\" repeatCount=\"indefinite\" /></path></svg>');\n}\n\n.vuuTableGroupHeaderCell {\n --vuuColumnHeaderPill-margin: 0;\n --cell-align: \"flex-start\";\n text-align: left;\n cursor: default;\n /* ensure header row sits atop everything else when scrolling down */\n\n --vuuColumnHeaderPill-margin: 0;\n --vuuColumnHeaderPill-flex: 0 0 24px;\n\n align-items: center;\n background-color: var(\n --vuuTableHeaderCell-background,\n var(--table-background)\n );\n border-bottom: none;\n border-right-color: var(--cell-borderColor);\n border-right-style: solid;\n border-right-width: 1px;\n box-sizing: border-box;\n display: inline-flex;\n gap: 4px;\n height: 100%;\n padding: 0 12px 0 4px;\n position: relative;\n vertical-align: top;\n\n &.vuuPinLeft,\n &.vuuPinRight {\n background-color: var(\n --vuuTableHeaderCell-background,\n var(--table-background)\n );\n }\n}\n\n.vuuTableGroupHeaderCell-inner {\n align-items: center;\n display: flex;\n gap: 4px;\n height: 100%;\n padding-left: 1px;\n}\n\n.vuuTableGroupHeaderCell-col {\n align-items: center;\n background-color: inherit;\n display: inline-flex;\n flex: 0 1 auto;\n height: calc(var(--vuuTableHeaderHeight) - 2px);\n justify-content: space-between;\n padding-right: 8px;\n position: relative;\n}\n\n.vuuTableGroupHeaderCell-label {\n align-items: center;\n display: flex;\n flex: 0 0 auto;\n}\n\n.vuuTableGroupHeaderCell-close {\n --vuu-icon-height: 18px;\n --vuu-icon-width: 18px;\n cursor: pointer;\n left: 3px;\n}\n\n.vuuTableGroupHeaderCell-resizing {\n --columnResizer-color: var(--salt-color-blue-500);\n --columnResizer-height: var(--table-height);\n --columnResizer-width: 2px;\n}\n.vuuTableGroupHeaderCell-pending {\n --pending-content: \"\";\n}\n\n.vuuTableGroupHeaderCell-col:has(+ .vuuColumnResizer):after {\n content: var(--pending-content);\n width: 24px;\n height: 24px;\n background-image: var(--svg-spinner);\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.vuuTableGroupHeaderCell:focus {\n outline: var(\n --vuuTableCell-outline,\n solid var(--salt-focused-outlineColor) 2px\n );\n outline-offset: -2px;\n /** This is to achieve a white background to outline dashes */\n box-shadow: inset 0 0 0 var(--cell-outline-width) white;\n border-bottom: none;\n}\n";
2
-
3
- export { headerCellCss as default };
4
- //# sourceMappingURL=GroupHeaderCell.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupHeaderCell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,125 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useRef, useState, useCallback, createElement } from 'react';
3
- import { OverflowContainer } from '@vuu-ui/vuu-ui-controls';
4
- import { useLayoutEffectSkipFirst } from '@vuu-ui/vuu-utils';
5
- import { useComponentCssInjection } from '@salt-ds/styles';
6
- import { useWindow } from '@salt-ds/window';
7
- import cx from 'clsx';
8
- import { ColumnHeaderPill } from '../column-header-pill/ColumnHeaderPill.js';
9
- import { GroupColumnPill } from '../column-header-pill/GroupColumnPill.js';
10
- import { ColumnResizer } from '../column-resizing/ColumnResizer.js';
11
- import { useTableColumnResize } from '../column-resizing/useTableColumnResize.js';
12
- import { useCell } from '../useCell.js';
13
- import headerCellCss from './GroupHeaderCell.css.js';
14
-
15
- const classBase = "vuuTableGroupHeaderCell";
16
- const switchIfChanged = (columns, newColumns) => {
17
- if (columns === newColumns) {
18
- return columns;
19
- } else {
20
- return newColumns;
21
- }
22
- };
23
- const GroupHeaderCell = ({
24
- column: groupColumn,
25
- className: classNameProp,
26
- onMoveColumn,
27
- onRemoveColumn,
28
- onResize,
29
- ...htmlAttributes
30
- }) => {
31
- const targetWindow = useWindow();
32
- useComponentCssInjection({
33
- testId: "vuu-group-header-cell",
34
- css: headerCellCss,
35
- window: targetWindow
36
- });
37
- const rootRef = useRef(null);
38
- const { isResizing, ...resizeProps } = useTableColumnResize({
39
- column: groupColumn,
40
- onResize,
41
- rootRef
42
- });
43
- const [columns, setColumns] = useState(groupColumn.columns);
44
- const { className, style } = useCell(groupColumn, classBase, true);
45
- const columnPillProps = columns.length > 1 ? {
46
- removable: true,
47
- onRemove: onRemoveColumn
48
- } : void 0;
49
- const handleMoveItem = useCallback(
50
- (fromIndex, toIndex) => {
51
- setColumns((cols) => {
52
- const newCols = cols.slice();
53
- const [tab] = newCols.splice(fromIndex, 1);
54
- if (toIndex === -1) {
55
- const result = newCols.concat(tab);
56
- requestAnimationFrame(() => onMoveColumn?.(result));
57
- return result;
58
- } else {
59
- newCols.splice(toIndex, 0, tab);
60
- requestAnimationFrame(() => onMoveColumn?.(newCols));
61
- return newCols;
62
- }
63
- });
64
- },
65
- [onMoveColumn]
66
- );
67
- useLayoutEffectSkipFirst(() => {
68
- setColumns((cols) => switchIfChanged(cols, groupColumn.columns));
69
- }, [groupColumn.columns]);
70
- const handleClick = useCallback(() => {
71
- console.log("click");
72
- }, []);
73
- const handleKeyDown = useCallback(() => {
74
- console.log("keydown");
75
- }, []);
76
- return /* @__PURE__ */ jsxs(
77
- "div",
78
- {
79
- ...htmlAttributes,
80
- "aria-colindex": groupColumn.ariaColIndex,
81
- className: cx(className, classNameProp, {
82
- [`${classBase}-pending`]: groupColumn.groupConfirmed === false
83
- }),
84
- ref: rootRef,
85
- role: "columnheader",
86
- style,
87
- children: [
88
- /* @__PURE__ */ jsx(
89
- OverflowContainer,
90
- {
91
- allowDragDrop: true,
92
- className: `${classBase}-inner`,
93
- onMoveItem: handleMoveItem,
94
- overflowPosition: "start",
95
- children: columns.map((column) => {
96
- return /* @__PURE__ */ createElement(
97
- GroupColumnPill,
98
- {
99
- ...columnPillProps,
100
- column,
101
- key: column.name,
102
- onClick: handleClick,
103
- onKeyDown: handleKeyDown
104
- }
105
- );
106
- })
107
- }
108
- ),
109
- /* @__PURE__ */ jsx(
110
- ColumnHeaderPill,
111
- {
112
- className: `${classBase}-removeAll`,
113
- column: groupColumn,
114
- removable: true,
115
- onRemove: onRemoveColumn
116
- }
117
- ),
118
- groupColumn.resizeable !== false ? /* @__PURE__ */ jsx(ColumnResizer, { ...resizeProps }) : null
119
- ]
120
- }
121
- );
122
- };
123
-
124
- export { GroupHeaderCell };
125
- //# sourceMappingURL=GroupHeaderCell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupHeaderCell.js","sources":["../../src/header-cell/GroupHeaderCell.tsx"],"sourcesContent":["import {\n ColumnDescriptor,\n GroupColumnDescriptor,\n HeaderCellProps,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { OverflowContainer } from \"@vuu-ui/vuu-ui-controls\";\nimport { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport {\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { ColumnHeaderPill, GroupColumnPill } from \"../column-header-pill\";\nimport { ColumnResizer, useTableColumnResize } from \"../column-resizing\";\nimport { useCell } from \"../useCell\";\n\nimport headerCellCss from \"./GroupHeaderCell.css\";\n\nconst classBase = \"vuuTableGroupHeaderCell\";\n\nconst switchIfChanged = (\n columns: RuntimeColumnDescriptor[],\n newColumns: RuntimeColumnDescriptor[],\n) => {\n if (columns === newColumns) {\n return columns;\n } else {\n return newColumns;\n }\n};\n\nexport interface GroupHeaderCellProps\n extends Omit<\n HeaderCellProps,\n \"id\" | \"index\" | \"onDragStart\" | \"onDrag\" | \"onDragEnd\"\n > {\n column: GroupColumnDescriptor;\n id?: string;\n onMoveColumn?: (columns: ColumnDescriptor[]) => void;\n onRemoveColumn: (column: RuntimeColumnDescriptor) => void;\n}\n\nexport const GroupHeaderCell = ({\n column: groupColumn,\n className: classNameProp,\n onMoveColumn,\n onRemoveColumn,\n onResize,\n ...htmlAttributes\n}: GroupHeaderCellProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-group-header-cell\",\n css: headerCellCss,\n window: targetWindow,\n });\n\n const rootRef = useRef<HTMLTableCellElement>(null);\n const { isResizing, ...resizeProps } = useTableColumnResize({\n column: groupColumn,\n onResize,\n rootRef,\n });\n\n const [columns, setColumns] = useState(groupColumn.columns);\n const { className, style } = useCell(groupColumn, classBase, true);\n const columnPillProps =\n columns.length > 1\n ? {\n removable: true,\n onRemove: onRemoveColumn,\n }\n : undefined;\n\n const handleMoveItem = useCallback(\n (fromIndex: number, toIndex: number) => {\n setColumns((cols) => {\n const newCols = cols.slice();\n const [tab] = newCols.splice(fromIndex, 1);\n if (toIndex === -1) {\n const result = newCols.concat(tab);\n requestAnimationFrame(() => onMoveColumn?.(result));\n return result;\n } else {\n newCols.splice(toIndex, 0, tab);\n requestAnimationFrame(() => onMoveColumn?.(newCols));\n return newCols;\n }\n });\n },\n [onMoveColumn],\n );\n\n useLayoutEffectSkipFirst(() => {\n setColumns((cols) => switchIfChanged(cols, groupColumn.columns));\n }, [groupColumn.columns]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLSpanElement>>(() => {\n console.log(\"click\");\n }, []);\n const handleKeyDown = useCallback<\n KeyboardEventHandler<HTMLSpanElement>\n >(() => {\n console.log(\"keydown\");\n }, []);\n\n return (\n <div\n {...htmlAttributes}\n aria-colindex={groupColumn.ariaColIndex}\n className={cx(className, classNameProp, {\n [`${classBase}-pending`]: groupColumn.groupConfirmed === false,\n })}\n ref={rootRef}\n role=\"columnheader\"\n style={style}\n >\n <OverflowContainer\n allowDragDrop\n className={`${classBase}-inner`}\n onMoveItem={handleMoveItem}\n overflowPosition=\"start\"\n >\n {columns.map((column) => {\n return (\n <GroupColumnPill\n {...columnPillProps}\n column={column}\n key={column.name}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n />\n );\n })}\n </OverflowContainer>\n <ColumnHeaderPill\n className={`${classBase}-removeAll`}\n column={groupColumn}\n removable\n onRemove={onRemoveColumn}\n />\n\n {groupColumn.resizeable !== false ? (\n <ColumnResizer {...resizeProps} />\n ) : null}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}