@salt-ds/data-grid 1.0.5 → 1.0.7

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 (277) hide show
  1. package/CHANGELOG.md +216 -0
  2. package/dist-cjs/BaseCell.js +50 -48
  3. package/dist-cjs/BaseCell.js.map +1 -1
  4. package/dist-cjs/CellEditor.js +0 -2
  5. package/dist-cjs/CellEditor.js.map +1 -1
  6. package/dist-cjs/CellFrame.js +25 -33
  7. package/dist-cjs/CellFrame.js.map +1 -1
  8. package/dist-cjs/ColumnDataContext.js +1 -3
  9. package/dist-cjs/ColumnDataContext.js.map +1 -1
  10. package/dist-cjs/ColumnDragContext.js +1 -3
  11. package/dist-cjs/ColumnDragContext.js.map +1 -1
  12. package/dist-cjs/ColumnGroup.js +2 -6
  13. package/dist-cjs/ColumnGroup.js.map +1 -1
  14. package/dist-cjs/ColumnSortContext.js +1 -3
  15. package/dist-cjs/ColumnSortContext.js.map +1 -1
  16. package/dist-cjs/CornerTag.js +7 -6
  17. package/dist-cjs/CornerTag.js.map +1 -1
  18. package/dist-cjs/CursorContext.js +1 -3
  19. package/dist-cjs/CursorContext.js.map +1 -1
  20. package/dist-cjs/DropdownCellEditor.js +25 -28
  21. package/dist-cjs/DropdownCellEditor.js.map +1 -1
  22. package/dist-cjs/EditorContext.js +1 -3
  23. package/dist-cjs/EditorContext.js.map +1 -1
  24. package/dist-cjs/Grid.css.js +1 -1
  25. package/dist-cjs/Grid.js +174 -183
  26. package/dist-cjs/Grid.js.map +1 -1
  27. package/dist-cjs/GridColumn.js +4 -8
  28. package/dist-cjs/GridColumn.js.map +1 -1
  29. package/dist-cjs/GridContext.js +1 -3
  30. package/dist-cjs/GridContext.js.map +1 -1
  31. package/dist-cjs/GroupHeaderCell.js +29 -30
  32. package/dist-cjs/GroupHeaderCell.js.map +1 -1
  33. package/dist-cjs/GroupHeaderCellValue.js +1 -5
  34. package/dist-cjs/GroupHeaderCellValue.js.map +1 -1
  35. package/dist-cjs/HeaderCell.js +94 -90
  36. package/dist-cjs/HeaderCell.js.map +1 -1
  37. package/dist-cjs/HeaderCellValue.js +1 -6
  38. package/dist-cjs/HeaderCellValue.js.map +1 -1
  39. package/dist-cjs/LayoutContext.js +0 -2
  40. package/dist-cjs/LayoutContext.js.map +1 -1
  41. package/dist-cjs/NumberRange.js +2 -4
  42. package/dist-cjs/NumberRange.js.map +1 -1
  43. package/dist-cjs/NumericColumn.css.js +1 -1
  44. package/dist-cjs/NumericColumn.js +31 -30
  45. package/dist-cjs/NumericColumn.js.map +1 -1
  46. package/dist-cjs/RowSelectionCheckboxCellValue.js +7 -10
  47. package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -1
  48. package/dist-cjs/RowSelectionCheckboxColumn.js +14 -13
  49. package/dist-cjs/RowSelectionCheckboxColumn.js.map +1 -1
  50. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js +22 -18
  51. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
  52. package/dist-cjs/RowSelectionRadioCellValue.js +6 -8
  53. package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -1
  54. package/dist-cjs/RowSelectionRadioColumn.js +12 -11
  55. package/dist-cjs/RowSelectionRadioColumn.js.map +1 -1
  56. package/dist-cjs/RowSelectionRadioHeaderCell.js +2 -10
  57. package/dist-cjs/RowSelectionRadioHeaderCell.js.map +1 -1
  58. package/dist-cjs/RowValidationStatus.js +0 -2
  59. package/dist-cjs/RowValidationStatus.js.map +1 -1
  60. package/dist-cjs/SelectionContext.js +1 -3
  61. package/dist-cjs/SelectionContext.js.map +1 -1
  62. package/dist-cjs/SizingContext.js +1 -3
  63. package/dist-cjs/SizingContext.js.map +1 -1
  64. package/dist-cjs/TextCellEditor.css.js +1 -1
  65. package/dist-cjs/TextCellEditor.js +14 -20
  66. package/dist-cjs/TextCellEditor.js.map +1 -1
  67. package/dist-cjs/index.js +0 -2
  68. package/dist-cjs/index.js.map +1 -1
  69. package/dist-cjs/internal/CellMeasure.css.js +1 -1
  70. package/dist-cjs/internal/CellMeasure.js +3 -18
  71. package/dist-cjs/internal/CellMeasure.js.map +1 -1
  72. package/dist-cjs/internal/CellStatusIcons.js +41 -37
  73. package/dist-cjs/internal/CellStatusIcons.js.map +1 -1
  74. package/dist-cjs/internal/ColumnDropTarget.js +3 -8
  75. package/dist-cjs/internal/ColumnDropTarget.js.map +1 -1
  76. package/dist-cjs/internal/ColumnGhost.js +17 -29
  77. package/dist-cjs/internal/ColumnGhost.js.map +1 -1
  78. package/dist-cjs/internal/Cursor.js +3 -7
  79. package/dist-cjs/internal/Cursor.js.map +1 -1
  80. package/dist-cjs/internal/DefaultCellValue.js +11 -10
  81. package/dist-cjs/internal/DefaultCellValue.js.map +1 -1
  82. package/dist-cjs/internal/FakeCell.js +8 -16
  83. package/dist-cjs/internal/FakeCell.js.map +1 -1
  84. package/dist-cjs/internal/FakeGroupCell.js +0 -2
  85. package/dist-cjs/internal/FakeGroupCell.js.map +1 -1
  86. package/dist-cjs/internal/FakeHeaderCell.js +1 -5
  87. package/dist-cjs/internal/FakeHeaderCell.js.map +1 -1
  88. package/dist-cjs/internal/GroupHeaderRow.js +9 -20
  89. package/dist-cjs/internal/GroupHeaderRow.js.map +1 -1
  90. package/dist-cjs/internal/HeaderRow.js +17 -23
  91. package/dist-cjs/internal/HeaderRow.js.map +1 -1
  92. package/dist-cjs/internal/LeftPart.js +21 -27
  93. package/dist-cjs/internal/LeftPart.js.map +1 -1
  94. package/dist-cjs/internal/MiddlePart.js +19 -25
  95. package/dist-cjs/internal/MiddlePart.js.map +1 -1
  96. package/dist-cjs/internal/RightPart.js +21 -26
  97. package/dist-cjs/internal/RightPart.js.map +1 -1
  98. package/dist-cjs/internal/Scrollable.js +12 -13
  99. package/dist-cjs/internal/Scrollable.js.map +1 -1
  100. package/dist-cjs/internal/TableBody.js +17 -19
  101. package/dist-cjs/internal/TableBody.js.map +1 -1
  102. package/dist-cjs/internal/TableColGroup.js +7 -17
  103. package/dist-cjs/internal/TableColGroup.js.map +1 -1
  104. package/dist-cjs/internal/TableRow.js +87 -79
  105. package/dist-cjs/internal/TableRow.js.map +1 -1
  106. package/dist-cjs/internal/TopLeftPart.js +20 -31
  107. package/dist-cjs/internal/TopLeftPart.js.map +1 -1
  108. package/dist-cjs/internal/TopPart.js +20 -37
  109. package/dist-cjs/internal/TopPart.js.map +1 -1
  110. package/dist-cjs/internal/TopRightPart.js +26 -30
  111. package/dist-cjs/internal/TopRightPart.js.map +1 -1
  112. package/dist-cjs/internal/gridHooks.js +23 -25
  113. package/dist-cjs/internal/gridHooks.js.map +1 -1
  114. package/dist-cjs/internal/utils.js +5 -7
  115. package/dist-cjs/internal/utils.js.map +1 -1
  116. package/dist-es/BaseCell.js +50 -46
  117. package/dist-es/BaseCell.js.map +1 -1
  118. package/dist-es/CellEditor.js.map +1 -1
  119. package/dist-es/CellFrame.js +25 -31
  120. package/dist-es/CellFrame.js.map +1 -1
  121. package/dist-es/ColumnDataContext.js +1 -1
  122. package/dist-es/ColumnDataContext.js.map +1 -1
  123. package/dist-es/ColumnDragContext.js +1 -1
  124. package/dist-es/ColumnDragContext.js.map +1 -1
  125. package/dist-es/ColumnGroup.js +2 -4
  126. package/dist-es/ColumnGroup.js.map +1 -1
  127. package/dist-es/ColumnSortContext.js +1 -1
  128. package/dist-es/ColumnSortContext.js.map +1 -1
  129. package/dist-es/CornerTag.js +7 -4
  130. package/dist-es/CornerTag.js.map +1 -1
  131. package/dist-es/CursorContext.js +1 -1
  132. package/dist-es/CursorContext.js.map +1 -1
  133. package/dist-es/DropdownCellEditor.js +25 -26
  134. package/dist-es/DropdownCellEditor.js.map +1 -1
  135. package/dist-es/EditorContext.js +1 -1
  136. package/dist-es/EditorContext.js.map +1 -1
  137. package/dist-es/Grid.css.js +1 -1
  138. package/dist-es/Grid.js +174 -181
  139. package/dist-es/Grid.js.map +1 -1
  140. package/dist-es/GridColumn.js +4 -6
  141. package/dist-es/GridColumn.js.map +1 -1
  142. package/dist-es/GridContext.js +1 -1
  143. package/dist-es/GridContext.js.map +1 -1
  144. package/dist-es/GroupHeaderCell.js +29 -28
  145. package/dist-es/GroupHeaderCell.js.map +1 -1
  146. package/dist-es/GroupHeaderCellValue.js +1 -3
  147. package/dist-es/GroupHeaderCellValue.js.map +1 -1
  148. package/dist-es/HeaderCell.js +94 -88
  149. package/dist-es/HeaderCell.js.map +1 -1
  150. package/dist-es/HeaderCellValue.js +1 -4
  151. package/dist-es/HeaderCellValue.js.map +1 -1
  152. package/dist-es/LayoutContext.js.map +1 -1
  153. package/dist-es/NumberRange.js +2 -2
  154. package/dist-es/NumberRange.js.map +1 -1
  155. package/dist-es/NumericColumn.css.js +1 -1
  156. package/dist-es/NumericColumn.js +31 -28
  157. package/dist-es/NumericColumn.js.map +1 -1
  158. package/dist-es/RowSelectionCheckboxCellValue.js +7 -8
  159. package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -1
  160. package/dist-es/RowSelectionCheckboxColumn.js +14 -11
  161. package/dist-es/RowSelectionCheckboxColumn.js.map +1 -1
  162. package/dist-es/RowSelectionCheckboxHeaderCellValue.js +22 -16
  163. package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
  164. package/dist-es/RowSelectionRadioCellValue.js +6 -6
  165. package/dist-es/RowSelectionRadioCellValue.js.map +1 -1
  166. package/dist-es/RowSelectionRadioColumn.js +12 -9
  167. package/dist-es/RowSelectionRadioColumn.js.map +1 -1
  168. package/dist-es/RowSelectionRadioHeaderCell.js +2 -8
  169. package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -1
  170. package/dist-es/RowValidationStatus.js.map +1 -1
  171. package/dist-es/SelectionContext.js +1 -1
  172. package/dist-es/SelectionContext.js.map +1 -1
  173. package/dist-es/SizingContext.js +1 -1
  174. package/dist-es/SizingContext.js.map +1 -1
  175. package/dist-es/TextCellEditor.css.js +1 -1
  176. package/dist-es/TextCellEditor.js +14 -18
  177. package/dist-es/TextCellEditor.js.map +1 -1
  178. package/dist-es/internal/CellMeasure.css.js +1 -1
  179. package/dist-es/internal/CellMeasure.js +3 -16
  180. package/dist-es/internal/CellMeasure.js.map +1 -1
  181. package/dist-es/internal/CellStatusIcons.js +41 -35
  182. package/dist-es/internal/CellStatusIcons.js.map +1 -1
  183. package/dist-es/internal/ColumnDropTarget.js +3 -6
  184. package/dist-es/internal/ColumnDropTarget.js.map +1 -1
  185. package/dist-es/internal/ColumnGhost.js +17 -27
  186. package/dist-es/internal/ColumnGhost.js.map +1 -1
  187. package/dist-es/internal/Cursor.js +3 -5
  188. package/dist-es/internal/Cursor.js.map +1 -1
  189. package/dist-es/internal/DefaultCellValue.js +11 -8
  190. package/dist-es/internal/DefaultCellValue.js.map +1 -1
  191. package/dist-es/internal/FakeCell.js +8 -14
  192. package/dist-es/internal/FakeCell.js.map +1 -1
  193. package/dist-es/internal/FakeGroupCell.js.map +1 -1
  194. package/dist-es/internal/FakeHeaderCell.js +1 -3
  195. package/dist-es/internal/FakeHeaderCell.js.map +1 -1
  196. package/dist-es/internal/GroupHeaderRow.js +9 -18
  197. package/dist-es/internal/GroupHeaderRow.js.map +1 -1
  198. package/dist-es/internal/HeaderRow.js +17 -21
  199. package/dist-es/internal/HeaderRow.js.map +1 -1
  200. package/dist-es/internal/LeftPart.js +21 -25
  201. package/dist-es/internal/LeftPart.js.map +1 -1
  202. package/dist-es/internal/MiddlePart.js +19 -23
  203. package/dist-es/internal/MiddlePart.js.map +1 -1
  204. package/dist-es/internal/RightPart.js +21 -24
  205. package/dist-es/internal/RightPart.js.map +1 -1
  206. package/dist-es/internal/Scrollable.js +12 -11
  207. package/dist-es/internal/Scrollable.js.map +1 -1
  208. package/dist-es/internal/TableBody.js +17 -17
  209. package/dist-es/internal/TableBody.js.map +1 -1
  210. package/dist-es/internal/TableColGroup.js +7 -15
  211. package/dist-es/internal/TableColGroup.js.map +1 -1
  212. package/dist-es/internal/TableRow.js +87 -77
  213. package/dist-es/internal/TableRow.js.map +1 -1
  214. package/dist-es/internal/TopLeftPart.js +20 -29
  215. package/dist-es/internal/TopLeftPart.js.map +1 -1
  216. package/dist-es/internal/TopPart.js +20 -35
  217. package/dist-es/internal/TopPart.js.map +1 -1
  218. package/dist-es/internal/TopRightPart.js +26 -28
  219. package/dist-es/internal/TopRightPart.js.map +1 -1
  220. package/dist-es/internal/gridHooks.js +23 -23
  221. package/dist-es/internal/gridHooks.js.map +1 -1
  222. package/dist-es/internal/utils.js +5 -5
  223. package/dist-es/internal/utils.js.map +1 -1
  224. package/dist-types/BaseCell.d.ts +3 -3
  225. package/dist-types/CellEditor.d.ts +1 -1
  226. package/dist-types/CellFrame.d.ts +2 -2
  227. package/dist-types/ColumnDragContext.d.ts +1 -1
  228. package/dist-types/ColumnGroup.d.ts +4 -4
  229. package/dist-types/ColumnSortContext.d.ts +5 -5
  230. package/dist-types/CornerTag.d.ts +1 -1
  231. package/dist-types/DropdownCellEditor.d.ts +2 -2
  232. package/dist-types/Grid.d.ts +4 -4
  233. package/dist-types/GridColumn.d.ts +3 -3
  234. package/dist-types/GridContext.d.ts +2 -2
  235. package/dist-types/GroupHeaderCell.d.ts +3 -3
  236. package/dist-types/GroupHeaderCellValue.d.ts +2 -2
  237. package/dist-types/HeaderCell.d.ts +5 -5
  238. package/dist-types/HeaderCellValue.d.ts +2 -2
  239. package/dist-types/NumericColumn.d.ts +6 -6
  240. package/dist-types/RowSelectionCheckboxCellValue.d.ts +2 -2
  241. package/dist-types/RowSelectionCheckboxColumn.d.ts +2 -2
  242. package/dist-types/RowSelectionCheckboxHeaderCellValue.d.ts +2 -2
  243. package/dist-types/RowSelectionRadioCellValue.d.ts +2 -2
  244. package/dist-types/RowSelectionRadioColumn.d.ts +2 -2
  245. package/dist-types/RowSelectionRadioHeaderCell.d.ts +2 -2
  246. package/dist-types/RowValidationStatus.d.ts +2 -2
  247. package/dist-types/SelectionContext.d.ts +1 -1
  248. package/dist-types/SizingContext.d.ts +3 -3
  249. package/dist-types/TextCellEditor.d.ts +2 -2
  250. package/dist-types/internal/CellMeasure.d.ts +1 -1
  251. package/dist-types/internal/CellStatusIcons.d.ts +3 -3
  252. package/dist-types/internal/ColumnDropTarget.d.ts +1 -1
  253. package/dist-types/internal/ColumnGhost.d.ts +3 -3
  254. package/dist-types/internal/Cursor.d.ts +1 -3
  255. package/dist-types/internal/DefaultCellValue.d.ts +2 -2
  256. package/dist-types/internal/FakeCell.d.ts +2 -2
  257. package/dist-types/internal/FakeGroupCell.d.ts +1 -1
  258. package/dist-types/internal/FakeHeaderCell.d.ts +1 -1
  259. package/dist-types/internal/GroupHeaderRow.d.ts +2 -2
  260. package/dist-types/internal/HeaderRow.d.ts +2 -2
  261. package/dist-types/internal/LeftPart.d.ts +4 -4
  262. package/dist-types/internal/MiddlePart.d.ts +4 -4
  263. package/dist-types/internal/RightPart.d.ts +4 -4
  264. package/dist-types/internal/Scrollable.d.ts +2 -2
  265. package/dist-types/internal/TableBody.d.ts +3 -3
  266. package/dist-types/internal/TableColGroup.d.ts +3 -3
  267. package/dist-types/internal/TableRow.d.ts +4 -4
  268. package/dist-types/internal/TopLeftPart.d.ts +2 -2
  269. package/dist-types/internal/TopPart.d.ts +3 -3
  270. package/dist-types/internal/TopRightPart.d.ts +2 -2
  271. package/dist-types/internal/gridHooks.d.ts +13 -13
  272. package/dist-types/internal/utils.d.ts +1 -1
  273. package/package.json +11 -8
  274. package/dist-cjs/internal/FakeCell.css.js +0 -6
  275. package/dist-cjs/internal/FakeCell.css.js.map +0 -1
  276. package/dist-es/internal/FakeCell.css.js +0 -4
  277. package/dist-es/internal/FakeCell.css.js.map +0 -1
@@ -1,13 +1,11 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var jsxRuntime = require('react/jsx-runtime');
6
- var window = require('@salt-ds/window');
7
- var styles = require('@salt-ds/styles');
8
4
  var core = require('@salt-ds/core');
9
- var TableColGroup = require('./TableColGroup.js');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
10
7
  var TableBody = require('./TableBody.js');
8
+ var TableColGroup = require('./TableColGroup.js');
11
9
  var gridHooks = require('./gridHooks.js');
12
10
  var MiddlePart$1 = require('./MiddlePart.css.js');
13
11
 
@@ -31,21 +29,17 @@ function MiddlePart(props) {
31
29
  window: targetWindow
32
30
  });
33
31
  const tableRef = gridHooks.useActiveOnWheel(onWheel);
34
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
35
- ref: middleRef,
36
- className: withBaseName(),
37
- "data-testid": "grid-middle-part",
38
- children: /* @__PURE__ */ jsxRuntime.jsx("div", {
39
- className: withBaseName("space"),
40
- children: /* @__PURE__ */ jsxRuntime.jsxs("table", {
41
- ref: tableRef,
42
- role: "presentation",
43
- children: [
44
- /* @__PURE__ */ jsxRuntime.jsx(TableColGroup.TableColGroup, {
45
- columns,
46
- gap: midGap
47
- }),
48
- /* @__PURE__ */ jsxRuntime.jsx(TableBody.TableBody, {
32
+ return /* @__PURE__ */ jsxRuntime.jsx(
33
+ "div",
34
+ {
35
+ ref: middleRef,
36
+ className: withBaseName(),
37
+ "data-testid": "grid-middle-part",
38
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("space"), children: /* @__PURE__ */ jsxRuntime.jsxs("table", { ref: tableRef, role: "presentation", children: [
39
+ /* @__PURE__ */ jsxRuntime.jsx(TableColGroup.TableColGroup, { columns, gap: midGap }),
40
+ /* @__PURE__ */ jsxRuntime.jsx(
41
+ TableBody.TableBody,
42
+ {
49
43
  columns,
50
44
  rows,
51
45
  hoverRowKey: hoverOverRowKey,
@@ -53,11 +47,11 @@ function MiddlePart(props) {
53
47
  gap: midGap,
54
48
  zebra,
55
49
  getRowValidationStatus
56
- })
57
- ]
58
- })
59
- })
60
- });
50
+ }
51
+ )
52
+ ] }) })
53
+ }
54
+ );
61
55
  }
62
56
 
63
57
  exports.MiddlePart = MiddlePart;
@@ -1 +1 @@
1
- {"version":3,"file":"MiddlePart.js","sources":["../src/internal/MiddlePart.tsx"],"sourcesContent":["import { RefObject } from \"react\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\nimport { CellValidationState } from \"../GridColumn\";\n\nimport { TableColGroup } from \"./TableColGroup\";\nimport { TableBody } from \"./TableBody\";\nimport { useActiveOnWheel } from \"./gridHooks\";\n\nimport middlePartCss from \"./MiddlePart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridMiddlePart\");\n\nexport interface MiddlePartProps<T> {\n middleRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n midGap: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport function MiddlePart<T>(props: MiddlePartProps<T>) {\n const {\n middleRef,\n onWheel,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n midGap,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-middle-part\",\n css: middlePartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n ref={middleRef}\n className={withBaseName()}\n data-testid=\"grid-middle-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n gap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","middlePartCss","useActiveOnWheel","jsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAgB/C,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,sBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA,CAAA;AAEzC,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,GAAK,EAAA,SAAA;AAAA,IACL,WAAW,YAAa,EAAA;AAAA,IACxB,aAAY,EAAA,kBAAA;AAAA,IAEZ,QAAC,kBAAAA,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAClC,QAAC,kBAAAC,eAAA,CAAA,OAAA,EAAA;AAAA,QAAM,GAAK,EAAA,QAAA;AAAA,QAAU,IAAK,EAAA,cAAA;AAAA,QACzB,QAAA,EAAA;AAAA,0BAACD,cAAA,CAAAE,2BAAA,EAAA;AAAA,YAAc,OAAA;AAAA,YAAkB,GAAK,EAAA,MAAA;AAAA,WAAQ,CAAA;AAAA,0BAC7CF,cAAA,CAAAG,mBAAA,EAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,GAAK,EAAA,MAAA;AAAA,YACL,KAAA;AAAA,YACA,sBAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"MiddlePart.js","sources":["../src/internal/MiddlePart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\n\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { useActiveOnWheel } from \"./gridHooks\";\n\nimport middlePartCss from \"./MiddlePart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridMiddlePart\");\n\nexport interface MiddlePartProps<T> {\n middleRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n midGap: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function MiddlePart<T>(props: MiddlePartProps<T>) {\n const {\n middleRef,\n onWheel,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n midGap,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-middle-part\",\n css: middlePartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n ref={middleRef}\n className={withBaseName()}\n data-testid=\"grid-middle-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n gap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","middlePartCss","useActiveOnWheel","jsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAgB/C,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,SAAA;AAAA,MACL,WAAW,YAAa,EAAA;AAAA,MACxB,aAAY,EAAA,kBAAA;AAAA,MAEZ,QAAA,kBAAAA,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,CAClC,EAAA,QAAA,kBAAAC,eAAA,CAAC,OAAM,EAAA,EAAA,GAAA,EAAK,QAAU,EAAA,IAAA,EAAK,cACzB,EAAA,QAAA,EAAA;AAAA,wBAACD,cAAA,CAAAE,2BAAA,EAAA,EAAc,OAAkB,EAAA,GAAA,EAAK,MAAQ,EAAA,CAAA;AAAA,wBAC9CF,cAAA;AAAA,UAACG,mBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,GAAK,EAAA,MAAA;AAAA,YACL,KAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF,CACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -1,15 +1,13 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var jsxRuntime = require('react/jsx-runtime');
6
- var clsx = require('clsx');
7
4
  var core = require('@salt-ds/core');
8
5
  var styles = require('@salt-ds/styles');
9
6
  var window = require('@salt-ds/window');
10
- var gridHooks = require('./gridHooks.js');
11
- var TableColGroup = require('./TableColGroup.js');
7
+ var clsx = require('clsx');
12
8
  var TableBody = require('./TableBody.js');
9
+ var TableColGroup = require('./TableColGroup.js');
10
+ var gridHooks = require('./gridHooks.js');
13
11
  var RightPart$1 = require('./RightPart.css.js');
14
12
 
15
13
  const withBaseName = core.makePrefixer("saltGridRightPart");
@@ -35,33 +33,30 @@ function RightPart(props) {
35
33
  if (columns.length === 0) {
36
34
  return null;
37
35
  }
38
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
39
- ref: rightRef,
40
- className: clsx.clsx(withBaseName(), {
41
- [withBaseName("leftShadow")]: leftShadow
42
- }),
43
- "data-testid": "grid-right-part",
44
- children: /* @__PURE__ */ jsxRuntime.jsx("div", {
45
- className: withBaseName("space"),
46
- children: /* @__PURE__ */ jsxRuntime.jsxs("table", {
47
- ref: tableRef,
48
- role: "presentation",
49
- children: [
50
- /* @__PURE__ */ jsxRuntime.jsx(TableColGroup.TableColGroup, {
51
- columns
52
- }),
53
- /* @__PURE__ */ jsxRuntime.jsx(TableBody.TableBody, {
36
+ return /* @__PURE__ */ jsxRuntime.jsx(
37
+ "div",
38
+ {
39
+ ref: rightRef,
40
+ className: clsx.clsx(withBaseName(), {
41
+ [withBaseName("leftShadow")]: leftShadow
42
+ }),
43
+ "data-testid": "grid-right-part",
44
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("space"), children: /* @__PURE__ */ jsxRuntime.jsxs("table", { ref: tableRef, role: "presentation", children: [
45
+ /* @__PURE__ */ jsxRuntime.jsx(TableColGroup.TableColGroup, { columns }),
46
+ /* @__PURE__ */ jsxRuntime.jsx(
47
+ TableBody.TableBody,
48
+ {
54
49
  columns,
55
50
  rows,
56
51
  hoverRowKey: hoverOverRowKey,
57
52
  setHoverRowKey: setHoverOverRowKey,
58
53
  zebra,
59
54
  getRowValidationStatus
60
- })
61
- ]
62
- })
63
- })
64
- });
55
+ }
56
+ )
57
+ ] }) })
58
+ }
59
+ );
65
60
  }
66
61
 
67
62
  exports.RightPart = RightPart;
@@ -1 +1 @@
1
- {"version":3,"file":"RightPart.js","sources":["../src/internal/RightPart.tsx"],"sourcesContent":["import { RefObject } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport { CellValidationState } from \"../GridColumn\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\n\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { TableBody } from \"./TableBody\";\n\nimport rightPartCss from \"./RightPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridRightPart\");\n\nexport interface RightPartProps<T> {\n rightRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n leftShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport function RightPart<T>(props: RightPartProps<T>) {\n const {\n rightRef,\n onWheel,\n columns,\n leftShadow,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-right-part\",\n css: rightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={rightRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n })}\n data-testid=\"grid-right-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","rightPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;;;;AAeA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAgB9C,SAAS,UAAa,KAA0B,EAAA;AACrD,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,KAAA;AAAA,IACA,sBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAC,WAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,GAAK,EAAA,QAAA;AAAA,IACL,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,UAAA;AAAA,KAC/B,CAAA;AAAA,IACD,aAAY,EAAA,iBAAA;AAAA,IAEZ,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAClC,QAAC,kBAAAE,eAAA,CAAA,OAAA,EAAA;AAAA,QAAM,GAAK,EAAA,QAAA;AAAA,QAAU,IAAK,EAAA,cAAA;AAAA,QACzB,QAAA,EAAA;AAAA,0BAACF,cAAA,CAAAG,2BAAA,EAAA;AAAA,YAAc,OAAA;AAAA,WAAkB,CAAA;AAAA,0BAChCH,cAAA,CAAAI,mBAAA,EAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,KAAA;AAAA,YACA,sBAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RightPart.js","sources":["../src/internal/RightPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\n\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { useActiveOnWheel } from \"./gridHooks\";\n\nimport rightPartCss from \"./RightPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridRightPart\");\n\nexport interface RightPartProps<T> {\n rightRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n leftShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function RightPart<T>(props: RightPartProps<T>) {\n const {\n rightRef,\n onWheel,\n columns,\n leftShadow,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-right-part\",\n css: rightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={rightRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n })}\n data-testid=\"grid-right-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","rightPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;;AAeA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAgB9C,SAAS,UAAa,KAA0B,EAAA;AACrD,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAC,WAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,QAAA;AAAA,MACL,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,QAC9B,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG;AAAA,OAC/B,CAAA;AAAA,MACD,aAAY,EAAA,iBAAA;AAAA,MAEZ,QAAA,kBAAAD,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,CAClC,EAAA,QAAA,kBAAAE,eAAA,CAAC,OAAM,EAAA,EAAA,GAAA,EAAK,QAAU,EAAA,IAAA,EAAK,cACzB,EAAA,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,+BAAc,OAAkB,EAAA,CAAA;AAAA,wBACjCH,cAAA;AAAA,UAACI,mBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,KAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF,CACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -1,12 +1,10 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var jsxRuntime = require('react/jsx-runtime');
6
- var react = require('react');
7
4
  var core = require('@salt-ds/core');
8
- var window = require('@salt-ds/window');
9
5
  var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var react = require('react');
10
8
  var Scrollable$1 = require('./Scrollable.css.js');
11
9
 
12
10
  const withBaseName = core.makePrefixer("saltGridScrollable");
@@ -88,15 +86,16 @@ function Scrollable(props) {
88
86
  }
89
87
  }
90
88
  }, [scrollLeft, scrollTop, scrollSource, scrollerRef]);
91
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
92
- ref: scrollerRef,
93
- className: withBaseName(),
94
- onScroll,
95
- "data-testid": "grid-scrollable",
96
- children: /* @__PURE__ */ jsxRuntime.jsx("div", {
97
- className: withBaseName("space")
98
- })
99
- });
89
+ return /* @__PURE__ */ jsxRuntime.jsx(
90
+ "div",
91
+ {
92
+ ref: scrollerRef,
93
+ className: withBaseName(),
94
+ onScroll,
95
+ "data-testid": "grid-scrollable",
96
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("space") })
97
+ }
98
+ );
100
99
  }
101
100
 
102
101
  exports.Scrollable = Scrollable;
@@ -1 +1 @@
1
- {"version":3,"file":"Scrollable.js","sources":["../src/internal/Scrollable.tsx"],"sourcesContent":["import { RefObject, UIEventHandler, useEffect } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport scrollableCss from \"./Scrollable.css\";\n\nconst withBaseName = makePrefixer(\"saltGridScrollable\");\n\nexport interface ScrollableProps<T> {\n resizeClient: (params: {\n clientWidth: number;\n clientHeight: number;\n scrollBarWidth: number;\n scrollBarHeight: number;\n }) => void;\n\n scrollLeft: number;\n scrollTop: number;\n scrollSource: \"user\" | \"table\";\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void;\n\n scrollerRef: RefObject<HTMLDivElement>;\n middleRef: RefObject<HTMLDivElement>;\n topRef: RefObject<HTMLDivElement>;\n leftRef: RefObject<HTMLDivElement>;\n rightRef: RefObject<HTMLDivElement>;\n bottomRef: RefObject<HTMLDivElement>;\n}\n\n// Provides scrollbars for the grid. Synchronizes scrolling across all parts\n// (pinned and unpinned).\nexport function Scrollable<T>(props: ScrollableProps<T>) {\n const {\n scrollerRef,\n middleRef,\n topRef,\n leftRef,\n rightRef,\n bottomRef,\n resizeClient,\n scrollLeft,\n scrollTop,\n scrollSource,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-scrollable\",\n css: scrollableCss,\n window: targetWindow,\n });\n\n const onScroll: UIEventHandler<HTMLDivElement> = (event) => {\n if (!scrollerRef.current) {\n return;\n }\n const { scrollLeft, scrollTop } = scrollerRef.current;\n const top = topRef.current;\n if (top) {\n top.scrollLeft = scrollLeft;\n }\n const bottom = bottomRef.current;\n if (bottom) {\n bottom.scrollLeft = scrollLeft;\n }\n const left = leftRef.current;\n if (left) {\n left.scrollTop = scrollTop;\n }\n const right = rightRef.current;\n if (right) {\n right.scrollTop = scrollTop;\n }\n const middle = middleRef.current;\n if (middle) {\n middle.scrollTop = scrollTop;\n middle.scrollLeft = scrollLeft;\n }\n props.scroll(scrollLeft, scrollTop, \"user\");\n };\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { offsetWidth, offsetHeight, clientWidth, clientHeight } =\n entry.target as HTMLDivElement;\n const scrollBarWidth = offsetWidth - clientWidth;\n const scrollBarHeight = offsetHeight - clientHeight;\n resizeClient({\n clientWidth,\n clientHeight,\n scrollBarWidth,\n scrollBarHeight,\n });\n });\n\n resizeObserver.observe(scrollerRef.current);\n return () => resizeObserver.disconnect();\n }, [resizeClient, scrollerRef]);\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n if (scrollSource === \"table\") {\n if (scrollLeft !== scrollerRef.current.scrollLeft) {\n scrollerRef.current.scrollLeft = scrollLeft;\n }\n if (scrollTop !== scrollerRef.current.scrollTop) {\n scrollerRef.current.scrollTop = scrollTop;\n }\n }\n }, [scrollLeft, scrollTop, scrollSource, scrollerRef]);\n\n return (\n <div\n ref={scrollerRef}\n className={withBaseName()}\n onScroll={onScroll}\n data-testid=\"grid-scrollable\"\n >\n <div className={withBaseName(\"space\")} />\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","scrollableCss","scrollLeft","scrollTop","useEffect","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Scrollable.js","sources":["../src/internal/Scrollable.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { type RefObject, type UIEventHandler, useEffect } from \"react\";\n\nimport scrollableCss from \"./Scrollable.css\";\n\nconst withBaseName = makePrefixer(\"saltGridScrollable\");\n\nexport interface ScrollableProps<T> {\n resizeClient: (params: {\n clientWidth: number;\n clientHeight: number;\n scrollBarWidth: number;\n scrollBarHeight: number;\n }) => void;\n\n scrollLeft: number;\n scrollTop: number;\n scrollSource: \"user\" | \"table\";\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void;\n\n scrollerRef: RefObject<HTMLDivElement>;\n middleRef: RefObject<HTMLDivElement>;\n topRef: RefObject<HTMLDivElement>;\n leftRef: RefObject<HTMLDivElement>;\n rightRef: RefObject<HTMLDivElement>;\n bottomRef: RefObject<HTMLDivElement>;\n}\n\n// Provides scrollbars for the grid. Synchronizes scrolling across all parts\n// (pinned and unpinned).\nexport function Scrollable<T>(props: ScrollableProps<T>) {\n const {\n scrollerRef,\n middleRef,\n topRef,\n leftRef,\n rightRef,\n bottomRef,\n resizeClient,\n scrollLeft,\n scrollTop,\n scrollSource,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-scrollable\",\n css: scrollableCss,\n window: targetWindow,\n });\n\n const onScroll: UIEventHandler<HTMLDivElement> = (event) => {\n if (!scrollerRef.current) {\n return;\n }\n const { scrollLeft, scrollTop } = scrollerRef.current;\n const top = topRef.current;\n if (top) {\n top.scrollLeft = scrollLeft;\n }\n const bottom = bottomRef.current;\n if (bottom) {\n bottom.scrollLeft = scrollLeft;\n }\n const left = leftRef.current;\n if (left) {\n left.scrollTop = scrollTop;\n }\n const right = rightRef.current;\n if (right) {\n right.scrollTop = scrollTop;\n }\n const middle = middleRef.current;\n if (middle) {\n middle.scrollTop = scrollTop;\n middle.scrollLeft = scrollLeft;\n }\n props.scroll(scrollLeft, scrollTop, \"user\");\n };\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { offsetWidth, offsetHeight, clientWidth, clientHeight } =\n entry.target as HTMLDivElement;\n const scrollBarWidth = offsetWidth - clientWidth;\n const scrollBarHeight = offsetHeight - clientHeight;\n resizeClient({\n clientWidth,\n clientHeight,\n scrollBarWidth,\n scrollBarHeight,\n });\n });\n\n resizeObserver.observe(scrollerRef.current);\n return () => resizeObserver.disconnect();\n }, [resizeClient, scrollerRef]);\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n if (scrollSource === \"table\") {\n if (scrollLeft !== scrollerRef.current.scrollLeft) {\n scrollerRef.current.scrollLeft = scrollLeft;\n }\n if (scrollTop !== scrollerRef.current.scrollTop) {\n scrollerRef.current.scrollTop = scrollTop;\n }\n }\n }, [scrollLeft, scrollTop, scrollSource, scrollerRef]);\n\n return (\n <div\n ref={scrollerRef}\n className={withBaseName()}\n onScroll={onScroll}\n data-testid=\"grid-scrollable\"\n >\n <div className={withBaseName(\"space\")} />\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","scrollableCss","scrollLeft","scrollTop","useEffect","jsx"],"mappings":"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"}
@@ -1,14 +1,12 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var jsxRuntime = require('react/jsx-runtime');
6
4
  var react = require('react');
5
+ var CursorContext = require('../CursorContext.js');
6
+ var EditorContext = require('../EditorContext.js');
7
+ var SelectionContext = require('../SelectionContext.js');
7
8
  var TableRow = require('./TableRow.js');
8
9
  var utils = require('./utils.js');
9
- var SelectionContext = require('../SelectionContext.js');
10
- var EditorContext = require('../EditorContext.js');
11
- var CursorContext = require('../CursorContext.js');
12
10
 
13
11
  function TableBody(props) {
14
12
  const {
@@ -42,20 +40,19 @@ function TableBody(props) {
42
40
  const rowKey = utils.getRowKeyAttribute(target);
43
41
  setHoverRowKey(rowKey);
44
42
  };
45
- const onMouseLeave = (event) => {
43
+ const onMouseLeave = () => {
46
44
  setHoverRowKey(void 0);
47
45
  };
48
- const onDoubleClick = (event) => {
46
+ const onDoubleClick = () => {
49
47
  startEditMode();
50
48
  };
51
- return /* @__PURE__ */ jsxRuntime.jsx("tbody", {
52
- onMouseLeave,
53
- onDoubleClick,
54
- children: rows.map((row) => {
55
- const isSelected = selRowIdxs.has(row.index);
56
- const cursorIdx = focusedPart === "body" && cursorRowIdx === row.index ? cursorColIdx : void 0;
57
- const editorColIdx = editMode ? cursorIdx : void 0;
58
- return /* @__PURE__ */ jsxRuntime.jsx(TableRow.TableRow, {
49
+ return /* @__PURE__ */ jsxRuntime.jsx("tbody", { onMouseLeave, onDoubleClick, children: rows.map((row) => {
50
+ const isSelected = selRowIdxs.has(row.index);
51
+ const cursorIdx = focusedPart === "body" && cursorRowIdx === row.index ? cursorColIdx : void 0;
52
+ const editorColIdx = editMode ? cursorIdx : void 0;
53
+ return /* @__PURE__ */ jsxRuntime.jsx(
54
+ TableRow.TableRow,
55
+ {
59
56
  row,
60
57
  onMouseEnter: onRowMouseEnter,
61
58
  columns,
@@ -63,14 +60,15 @@ function TableBody(props) {
63
60
  isSelected,
64
61
  cursorColIdx: cursorIdx,
65
62
  gap,
66
- zebra: zebra && row.index % 2 == 0,
63
+ zebra: zebra && row.index % 2 === 0,
67
64
  editorColIdx,
68
65
  isCellSelected: isCellInSelectedRange,
69
66
  headerIsFocusable,
70
67
  validationStatus: getRowValidationStatus ? getRowValidationStatus(row) : void 0
71
- }, row.key);
72
- })
73
- });
68
+ },
69
+ row.key
70
+ );
71
+ }) });
74
72
  }
75
73
 
76
74
  exports.TableBody = TableBody;
@@ -1 +1 @@
1
- {"version":3,"file":"TableBody.js","sources":["../src/internal/TableBody.tsx"],"sourcesContent":["import { MouseEventHandler, useCallback, useMemo } from \"react\";\nimport { TableRow } from \"./TableRow\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\nimport { getRowKeyAttribute } from \"./utils\";\nimport { useSelectionContext } from \"../SelectionContext\";\nimport { useEditorContext } from \"../EditorContext\";\nimport { useCursorContext } from \"../CursorContext\";\nimport { CellValidationState } from \"../GridColumn\";\n\nexport interface TableBodyProps<T> {\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverRowKey?: string;\n setHoverRowKey: (key: string | undefined) => void;\n gap?: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport function TableBody<T>(props: TableBodyProps<T>) {\n const {\n columns,\n rows,\n hoverRowKey,\n setHoverRowKey,\n gap,\n zebra,\n getRowValidationStatus,\n } = props;\n const { selRowIdxs, selectedCellRange } = useSelectionContext();\n\n const isCellInSelectedRange = useCallback(\n (rowIdx: number, colIdx: number) => {\n if (!selectedCellRange) {\n return false;\n }\n const { start, end } = selectedCellRange;\n const minRowIdx = Math.min(start.rowIdx, end.rowIdx);\n const maxRowIdx = Math.max(start.rowIdx, end.rowIdx);\n const minColIdx = Math.min(start.colIdx, end.colIdx);\n const maxColIdx = Math.max(start.colIdx, end.colIdx);\n return (\n rowIdx >= minRowIdx &&\n rowIdx <= maxRowIdx &&\n colIdx >= minColIdx &&\n colIdx <= maxColIdx\n );\n },\n [selectedCellRange]\n );\n\n const { cursorRowIdx, cursorColIdx, focusedPart, headerIsFocusable } =\n useCursorContext();\n\n const { editMode, startEditMode } = useEditorContext();\n\n const onRowMouseEnter: MouseEventHandler<HTMLTableRowElement> = (event) => {\n const target = event.currentTarget as HTMLElement;\n const rowKey = getRowKeyAttribute(target);\n setHoverRowKey(rowKey);\n };\n\n const onMouseLeave: MouseEventHandler<HTMLTableSectionElement> = (event) => {\n setHoverRowKey(undefined);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableSectionElement> = (event) => {\n startEditMode();\n };\n\n return (\n <tbody onMouseLeave={onMouseLeave} onDoubleClick={onDoubleClick}>\n {rows.map((row) => {\n const isSelected = selRowIdxs.has(row.index);\n const cursorIdx =\n focusedPart === \"body\" && cursorRowIdx === row.index\n ? cursorColIdx\n : undefined;\n const editorColIdx = editMode ? cursorIdx : undefined;\n return (\n <TableRow\n key={row.key}\n row={row}\n onMouseEnter={onRowMouseEnter}\n columns={columns}\n isHoverOver={row.key === hoverRowKey}\n isSelected={isSelected}\n cursorColIdx={cursorIdx}\n gap={gap}\n zebra={zebra && row.index % 2 == 0}\n editorColIdx={editorColIdx}\n isCellSelected={isCellInSelectedRange}\n headerIsFocusable={headerIsFocusable}\n validationStatus={\n getRowValidationStatus ? getRowValidationStatus(row) : undefined\n }\n />\n );\n })}\n </tbody>\n );\n}\n"],"names":["useSelectionContext","useCallback","useCursorContext","useEditorContext","getRowKeyAttribute","jsx","TableRow"],"mappings":"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"}
1
+ {"version":3,"file":"TableBody.js","sources":["../src/internal/TableBody.tsx"],"sourcesContent":["import { type MouseEventHandler, useCallback } from \"react\";\nimport { useCursorContext } from \"../CursorContext\";\nimport { useEditorContext } from \"../EditorContext\";\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useSelectionContext } from \"../SelectionContext\";\nimport { TableRow } from \"./TableRow\";\nimport { getRowKeyAttribute } from \"./utils\";\n\nexport interface TableBodyProps<T> {\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverRowKey?: string;\n setHoverRowKey: (key: string | undefined) => void;\n gap?: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function TableBody<T>(props: TableBodyProps<T>) {\n const {\n columns,\n rows,\n hoverRowKey,\n setHoverRowKey,\n gap,\n zebra,\n getRowValidationStatus,\n } = props;\n const { selRowIdxs, selectedCellRange } = useSelectionContext();\n\n const isCellInSelectedRange = useCallback(\n (rowIdx: number, colIdx: number) => {\n if (!selectedCellRange) {\n return false;\n }\n const { start, end } = selectedCellRange;\n const minRowIdx = Math.min(start.rowIdx, end.rowIdx);\n const maxRowIdx = Math.max(start.rowIdx, end.rowIdx);\n const minColIdx = Math.min(start.colIdx, end.colIdx);\n const maxColIdx = Math.max(start.colIdx, end.colIdx);\n return (\n rowIdx >= minRowIdx &&\n rowIdx <= maxRowIdx &&\n colIdx >= minColIdx &&\n colIdx <= maxColIdx\n );\n },\n [selectedCellRange],\n );\n\n const { cursorRowIdx, cursorColIdx, focusedPart, headerIsFocusable } =\n useCursorContext();\n\n const { editMode, startEditMode } = useEditorContext();\n\n const onRowMouseEnter: MouseEventHandler<HTMLTableRowElement> = (event) => {\n const target = event.currentTarget as HTMLElement;\n const rowKey = getRowKeyAttribute(target);\n setHoverRowKey(rowKey);\n };\n\n const onMouseLeave: MouseEventHandler<HTMLTableSectionElement> = () => {\n setHoverRowKey(undefined);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableSectionElement> = () => {\n startEditMode();\n };\n\n return (\n <tbody onMouseLeave={onMouseLeave} onDoubleClick={onDoubleClick}>\n {rows.map((row) => {\n const isSelected = selRowIdxs.has(row.index);\n const cursorIdx =\n focusedPart === \"body\" && cursorRowIdx === row.index\n ? cursorColIdx\n : undefined;\n const editorColIdx = editMode ? cursorIdx : undefined;\n return (\n <TableRow\n key={row.key}\n row={row}\n onMouseEnter={onRowMouseEnter}\n columns={columns}\n isHoverOver={row.key === hoverRowKey}\n isSelected={isSelected}\n cursorColIdx={cursorIdx}\n gap={gap}\n zebra={zebra && row.index % 2 === 0}\n editorColIdx={editorColIdx}\n isCellSelected={isCellInSelectedRange}\n headerIsFocusable={headerIsFocusable}\n validationStatus={\n getRowValidationStatus ? getRowValidationStatus(row) : undefined\n }\n />\n );\n })}\n </tbody>\n );\n}\n"],"names":["useSelectionContext","useCallback","useCursorContext","useEditorContext","getRowKeyAttribute","jsx","TableRow"],"mappings":"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"}
@@ -1,24 +1,16 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var jsxRuntime = require('react/jsx-runtime');
6
4
  var react = require('react');
7
5
 
8
6
  function TableColGroup(props) {
9
7
  const { columns, gap } = props;
10
- return /* @__PURE__ */ jsxRuntime.jsxs("colgroup", {
11
- children: [
12
- columns.map((column) => {
13
- return /* @__PURE__ */ jsxRuntime.jsx(TableCol, {
14
- width: column.info.width
15
- }, column.info.props.id);
16
- }),
17
- gap !== void 0 && gap > 0 ? /* @__PURE__ */ jsxRuntime.jsx(TableCol, {
18
- width: gap
19
- }, "__gap") : null
20
- ]
21
- });
8
+ return /* @__PURE__ */ jsxRuntime.jsxs("colgroup", { children: [
9
+ columns.map((column) => {
10
+ return /* @__PURE__ */ jsxRuntime.jsx(TableCol, { width: column.info.width }, column.info.props.id);
11
+ }),
12
+ gap !== void 0 && gap > 0 ? /* @__PURE__ */ jsxRuntime.jsx(TableCol, { width: gap }, "__gap") : null
13
+ ] });
22
14
  }
23
15
  function TableCol(props) {
24
16
  const { width } = props;
@@ -27,9 +19,7 @@ function TableCol(props) {
27
19
  width: `${width}px`
28
20
  };
29
21
  }, [width]);
30
- return /* @__PURE__ */ jsxRuntime.jsx("col", {
31
- style
32
- });
22
+ return /* @__PURE__ */ jsxRuntime.jsx("col", { style });
33
23
  }
34
24
 
35
25
  exports.TableCol = TableCol;
@@ -1 +1 @@
1
- {"version":3,"file":"TableColGroup.js","sources":["../src/internal/TableColGroup.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { GridColumnModel } from \"../Grid\";\n\nexport interface TableColGroupProps<T> {\n columns: GridColumnModel<T>[];\n gap?: number;\n}\n\nexport interface TableColProps<T> {\n width: number;\n}\n\n// Controls column widths.\nexport function TableColGroup<T>(props: TableColGroupProps<T>) {\n const { columns, gap } = props;\n return (\n <colgroup>\n {columns.map((column) => {\n return (\n <TableCol key={column.info.props.id} width={column.info.width} />\n );\n })}\n {gap !== undefined && gap > 0 ? (\n <TableCol key=\"__gap\" width={gap} />\n ) : null}\n </colgroup>\n );\n}\n\nexport function TableCol<T>(props: TableColProps<T>) {\n const { width } = props;\n const style = useMemo(() => {\n return {\n width: `${width}px`,\n };\n }, [width]);\n return <col style={style} />;\n}\n"],"names":["jsxs","jsx","useMemo"],"mappings":";;;;;;;AAaO,SAAS,cAAiB,KAA8B,EAAA;AAC7D,EAAM,MAAA,EAAE,OAAS,EAAA,GAAA,EAAQ,GAAA,KAAA,CAAA;AACzB,EAAA,uBACGA,eAAA,CAAA,UAAA,EAAA;AAAA,IACE,QAAA,EAAA;AAAA,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACvB,QAAA,uBACGC,cAAA,CAAA,QAAA,EAAA;AAAA,UAAoC,KAAA,EAAO,OAAO,IAAK,CAAA,KAAA;AAAA,SAAzC,EAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,EAA8B,CAAA,CAAA;AAAA,OAElE,CAAA;AAAA,MACA,GAAQ,KAAA,KAAA,CAAA,IAAa,GAAM,GAAA,CAAA,mBACzBA,cAAA,CAAA,QAAA,EAAA;AAAA,QAAqB,KAAO,EAAA,GAAA;AAAA,OAAA,EAAf,OAAoB,CAChC,GAAA,IAAA;AAAA,KAAA;AAAA,GACN,CAAA,CAAA;AAEJ,CAAA;AAEO,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA,CAAA;AAClB,EAAM,MAAA,KAAA,GAAQC,cAAQ,MAAM;AAC1B,IAAO,OAAA;AAAA,MACL,OAAO,CAAG,EAAA,KAAA,CAAA,EAAA,CAAA;AAAA,KACZ,CAAA;AAAA,GACF,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AACV,EAAA,uBAAQD,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,KAAA;AAAA,GAAc,CAAA,CAAA;AAC5B;;;;;"}
1
+ {"version":3,"file":"TableColGroup.js","sources":["../src/internal/TableColGroup.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { GridColumnModel } from \"../Grid\";\n\nexport interface TableColGroupProps<T> {\n columns: GridColumnModel<T>[];\n gap?: number;\n}\n\nexport interface TableColProps<T> {\n width: number;\n}\n\n// Controls column widths.\nexport function TableColGroup<T>(props: TableColGroupProps<T>) {\n const { columns, gap } = props;\n return (\n <colgroup>\n {columns.map((column) => {\n return (\n <TableCol key={column.info.props.id} width={column.info.width} />\n );\n })}\n {gap !== undefined && gap > 0 ? (\n <TableCol key=\"__gap\" width={gap} />\n ) : null}\n </colgroup>\n );\n}\n\nexport function TableCol<T>(props: TableColProps<T>) {\n const { width } = props;\n const style = useMemo(() => {\n return {\n width: `${width}px`,\n };\n }, [width]);\n return <col style={style} />;\n}\n"],"names":["jsx","useMemo"],"mappings":";;;;;AAaO,SAAS,cAAiB,KAA8B,EAAA;AAC7D,EAAM,MAAA,EAAE,OAAS,EAAA,GAAA,EAAQ,GAAA,KAAA;AACzB,EAAA,uCACG,UACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAQ,OAAA,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACvB,MACE,uBAAAA,cAAA,CAAC,YAAoC,KAAO,EAAA,MAAA,CAAO,KAAK,KAAzC,EAAA,EAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,EAA8B,CAAA;AAAA,KAElE,CAAA;AAAA,IACA,GAAA,KAAQ,UAAa,GAAM,GAAA,CAAA,kCACzB,QAAqB,EAAA,EAAA,KAAA,EAAO,GAAf,EAAA,EAAA,OAAoB,CAChC,GAAA;AAAA,GACN,EAAA,CAAA;AAEJ;AAEO,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA;AAClB,EAAM,MAAA,KAAA,GAAQC,cAAQ,MAAM;AAC1B,IAAO,OAAA;AAAA,MACL,KAAA,EAAO,GAAG,KAAK,CAAA,EAAA;AAAA,KACjB;AAAA,GACF,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAO,uBAAAD,cAAA,CAAC,SAAI,KAAc,EAAA,CAAA;AAC5B;;;;;"}
@@ -1,18 +1,16 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var jsxRuntime = require('react/jsx-runtime');
6
- var react = require('react');
7
- var clsx = require('clsx');
8
- var window = require('@salt-ds/window');
9
- var styles = require('@salt-ds/styles');
10
4
  var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var clsx = require('clsx');
8
+ var react = require('react');
11
9
  var BaseCell = require('../BaseCell.js');
12
10
  var GridContext = require('../GridContext.js');
13
11
  var RowValidationStatus = require('../RowValidationStatus.js');
14
- var FakeCell = require('./FakeCell.js');
15
12
  var DefaultCellValue = require('./DefaultCellValue.js');
13
+ var FakeCell = require('./FakeCell.js');
16
14
  var TableRow$1 = require('./TableRow.css.js');
17
15
 
18
16
  const withBaseName = core.makePrefixer("saltGridTableRow");
@@ -40,85 +38,95 @@ function TableRow(props) {
40
38
  });
41
39
  const grid = GridContext.useGridContext();
42
40
  if (!row.key) {
43
- throw new Error(`Invalid row`);
41
+ throw new Error("Invalid row");
44
42
  }
45
43
  const ariaRowIndex = headerIsFocusable ? row.index + 2 : row.index + 1;
46
- return /* @__PURE__ */ jsxRuntime.jsxs("tr", {
47
- "aria-rowindex": ariaRowIndex,
48
- "aria-selected": isSelected ? true : void 0,
49
- className: clsx.clsx(withBaseName(), {
50
- [withBaseName("zebra")]: zebra,
51
- [withBaseName("hover")]: isHoverOver,
52
- [withBaseName("selected")]: isSelected,
53
- [withBaseName("first")]: row.index === 0,
54
- [withBaseName(`validationStatus-${rowValidationStatus}`)]: rowValidationStatus
55
- }),
56
- onMouseEnter,
57
- onMouseLeave,
58
- "data-row-index": row.index,
59
- "data-row-key": row.key,
60
- role: "row",
61
- children: [
62
- columns.map((column, i) => {
63
- var _a, _b, _c, _d;
64
- const colKey = column.info.props.id;
65
- const editorInfo = grid.getEditor(column.info.props.id);
66
- const isEditable = !!editorInfo;
67
- if (editorColIdx === column.index) {
68
- if (isEditable) {
69
- if (react.isValidElement(editorInfo.children)) {
70
- const editorElement = react.Children.only(editorInfo.children);
71
- return react.cloneElement(editorElement, {
72
- key: colKey,
73
- row,
74
- column
75
- });
44
+ return /* @__PURE__ */ jsxRuntime.jsxs(
45
+ "tr",
46
+ {
47
+ "aria-rowindex": ariaRowIndex,
48
+ "aria-selected": isSelected ? true : void 0,
49
+ className: clsx.clsx(withBaseName(), {
50
+ [withBaseName("zebra")]: zebra,
51
+ [withBaseName("hover")]: isHoverOver,
52
+ [withBaseName("selected")]: isSelected,
53
+ [withBaseName("first")]: row.index === 0,
54
+ [withBaseName(`validationStatus-${rowValidationStatus}`)]: rowValidationStatus
55
+ }),
56
+ onMouseEnter,
57
+ onMouseLeave,
58
+ "data-row-index": row.index,
59
+ "data-row-key": row.key,
60
+ children: [
61
+ columns.map((column, i) => {
62
+ var _a, _b, _c, _d;
63
+ const colKey = column.info.props.id;
64
+ const editorInfo = grid.getEditor(column.info.props.id);
65
+ const isEditable = !!editorInfo;
66
+ if (editorColIdx === column.index) {
67
+ if (isEditable) {
68
+ if (react.isValidElement(editorInfo.children)) {
69
+ const editorElement = react.Children.only(editorInfo.children);
70
+ return react.cloneElement(editorElement, {
71
+ key: colKey,
72
+ row,
73
+ column
74
+ });
75
+ }
76
76
  }
77
77
  }
78
- }
79
- const Cell = column.info.props.cellComponent || BaseCell.BaseCell;
80
- const CellValue = column.info.props.cellValueComponent || DefaultCellValue.DefaultCellValue;
81
- const value = column.info.props.getValue && row.data ? column.info.props.getValue(row.data) : null;
82
- const isFocused = cursorColIdx === column.index;
83
- const isSelected2 = isCellSelected && isCellSelected(row.index, column.index);
84
- const validationFnArg = {
85
- row,
86
- column,
87
- isFocused,
88
- value
89
- };
90
- const validationStatus = (_b = (_a = column.info.props).getValidationStatus) == null ? void 0 : _b.call(_a, validationFnArg);
91
- const validationMessage = validationStatus && ((_d = (_c = column.info.props).getValidationMessage) == null ? void 0 : _d.call(_c, validationFnArg));
92
- return /* @__PURE__ */ jsxRuntime.jsx(RowValidationStatus.RowValidationStatusContext.Provider, {
93
- value: { status: rowValidationStatus },
94
- children: /* @__PURE__ */ jsxRuntime.jsx(Cell, {
78
+ const Cell = column.info.props.cellComponent || BaseCell.BaseCell;
79
+ const CellValue = column.info.props.cellValueComponent || DefaultCellValue.DefaultCellValue;
80
+ const value = column.info.props.getValue && row.data ? column.info.props.getValue(row.data) : null;
81
+ const isFocused = cursorColIdx === column.index;
82
+ const isSelected2 = isCellSelected == null ? void 0 : isCellSelected(row.index, column.index);
83
+ const validationFnArg = {
95
84
  row,
96
85
  column,
97
86
  isFocused,
98
- isSelected: isSelected2,
99
- isEditable,
100
- validationStatus,
101
- validationMessage,
102
- validationType: column.info.props.validationType,
103
- value,
104
- align: column.info.props.align,
105
- children: /* @__PURE__ */ jsxRuntime.jsx(CellValue, {
106
- column,
107
- row,
108
- value,
109
- isFocused,
110
- validationStatus,
111
- validationMessage,
112
- validationType: column.info.props.validationType
113
- })
114
- })
115
- }, colKey);
116
- }),
117
- gap !== void 0 && gap > 0 ? /* @__PURE__ */ jsxRuntime.jsx(FakeCell.FakeCell, {
118
- row
119
- }) : null
120
- ]
121
- });
87
+ value
88
+ };
89
+ const validationStatus = (_b = (_a = column.info.props).getValidationStatus) == null ? void 0 : _b.call(_a, validationFnArg);
90
+ const validationMessage = validationStatus && ((_d = (_c = column.info.props).getValidationMessage) == null ? void 0 : _d.call(_c, validationFnArg));
91
+ return /* @__PURE__ */ jsxRuntime.jsx(
92
+ RowValidationStatus.RowValidationStatusContext.Provider,
93
+ {
94
+ value: { status: rowValidationStatus },
95
+ children: /* @__PURE__ */ jsxRuntime.jsx(
96
+ Cell,
97
+ {
98
+ row,
99
+ column,
100
+ isFocused,
101
+ isSelected: isSelected2,
102
+ isEditable,
103
+ validationStatus,
104
+ validationMessage,
105
+ validationType: column.info.props.validationType,
106
+ value,
107
+ align: column.info.props.align,
108
+ children: /* @__PURE__ */ jsxRuntime.jsx(
109
+ CellValue,
110
+ {
111
+ column,
112
+ row,
113
+ value,
114
+ isFocused,
115
+ validationStatus,
116
+ validationMessage,
117
+ validationType: column.info.props.validationType
118
+ }
119
+ )
120
+ }
121
+ )
122
+ },
123
+ colKey
124
+ );
125
+ }),
126
+ gap !== void 0 && gap > 0 ? /* @__PURE__ */ jsxRuntime.jsx(FakeCell.FakeCell, { row }) : null
127
+ ]
128
+ }
129
+ );
122
130
  }
123
131
 
124
132
  exports.TableRow = TableRow;