@salt-ds/data-grid 1.0.6 → 1.0.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 (217) hide show
  1. package/CHANGELOG.md +228 -0
  2. package/dist-cjs/BaseCell.js +47 -45
  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 +23 -31
  7. package/dist-cjs/CellFrame.js.map +1 -1
  8. package/dist-cjs/ColumnDataContext.js +0 -2
  9. package/dist-cjs/ColumnDataContext.js.map +1 -1
  10. package/dist-cjs/ColumnDragContext.js +0 -2
  11. package/dist-cjs/ColumnDragContext.js.map +1 -1
  12. package/dist-cjs/ColumnGroup.js +1 -5
  13. package/dist-cjs/ColumnGroup.js.map +1 -1
  14. package/dist-cjs/ColumnSortContext.js +0 -2
  15. package/dist-cjs/ColumnSortContext.js.map +1 -1
  16. package/dist-cjs/CornerTag.js +6 -5
  17. package/dist-cjs/CornerTag.js.map +1 -1
  18. package/dist-cjs/CursorContext.js +0 -2
  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 +0 -2
  23. package/dist-cjs/EditorContext.js.map +1 -1
  24. package/dist-cjs/Grid.css.js +1 -1
  25. package/dist-cjs/Grid.js +139 -142
  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 +0 -2
  30. package/dist-cjs/GridContext.js.map +1 -1
  31. package/dist-cjs/GroupHeaderCell.js +27 -28
  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 +85 -81
  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 +5 -8
  47. package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -1
  48. package/dist-cjs/RowSelectionCheckboxColumn.js +11 -10
  49. package/dist-cjs/RowSelectionCheckboxColumn.js.map +1 -1
  50. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js +20 -16
  51. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
  52. package/dist-cjs/RowSelectionRadioCellValue.js +5 -7
  53. package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -1
  54. package/dist-cjs/RowSelectionRadioColumn.js +10 -9
  55. package/dist-cjs/RowSelectionRadioColumn.js.map +1 -1
  56. package/dist-cjs/RowSelectionRadioHeaderCell.js +1 -9
  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 +0 -2
  61. package/dist-cjs/SelectionContext.js.map +1 -1
  62. package/dist-cjs/SizingContext.js +0 -2
  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 +1 -16
  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 +1 -6
  75. package/dist-cjs/internal/ColumnDropTarget.js.map +1 -1
  76. package/dist-cjs/internal/ColumnGhost.js +14 -26
  77. package/dist-cjs/internal/ColumnGhost.js.map +1 -1
  78. package/dist-cjs/internal/Cursor.js +1 -5
  79. package/dist-cjs/internal/Cursor.js.map +1 -1
  80. package/dist-cjs/internal/DefaultCellValue.js +9 -8
  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 +8 -19
  89. package/dist-cjs/internal/GroupHeaderRow.js.map +1 -1
  90. package/dist-cjs/internal/HeaderRow.js +15 -21
  91. package/dist-cjs/internal/HeaderRow.js.map +1 -1
  92. package/dist-cjs/internal/LeftPart.js +17 -23
  93. package/dist-cjs/internal/LeftPart.js.map +1 -1
  94. package/dist-cjs/internal/MiddlePart.js +16 -22
  95. package/dist-cjs/internal/MiddlePart.js.map +1 -1
  96. package/dist-cjs/internal/RightPart.js +18 -23
  97. package/dist-cjs/internal/RightPart.js.map +1 -1
  98. package/dist-cjs/internal/Scrollable.js +10 -11
  99. package/dist-cjs/internal/Scrollable.js.map +1 -1
  100. package/dist-cjs/internal/TableBody.js +11 -13
  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 +81 -73
  105. package/dist-cjs/internal/TableRow.js.map +1 -1
  106. package/dist-cjs/internal/TopLeftPart.js +17 -28
  107. package/dist-cjs/internal/TopLeftPart.js.map +1 -1
  108. package/dist-cjs/internal/TopPart.js +17 -34
  109. package/dist-cjs/internal/TopPart.js.map +1 -1
  110. package/dist-cjs/internal/TopRightPart.js +23 -27
  111. package/dist-cjs/internal/TopRightPart.js.map +1 -1
  112. package/dist-cjs/internal/gridHooks.js +0 -2
  113. package/dist-cjs/internal/gridHooks.js.map +1 -1
  114. package/dist-cjs/internal/utils.js +0 -2
  115. package/dist-cjs/internal/utils.js.map +1 -1
  116. package/dist-es/BaseCell.js +47 -43
  117. package/dist-es/BaseCell.js.map +1 -1
  118. package/dist-es/CellEditor.js.map +1 -1
  119. package/dist-es/CellFrame.js +23 -29
  120. package/dist-es/CellFrame.js.map +1 -1
  121. package/dist-es/ColumnDataContext.js.map +1 -1
  122. package/dist-es/ColumnDragContext.js.map +1 -1
  123. package/dist-es/ColumnGroup.js +1 -3
  124. package/dist-es/ColumnGroup.js.map +1 -1
  125. package/dist-es/ColumnSortContext.js.map +1 -1
  126. package/dist-es/CornerTag.js +6 -3
  127. package/dist-es/CornerTag.js.map +1 -1
  128. package/dist-es/CursorContext.js.map +1 -1
  129. package/dist-es/DropdownCellEditor.js +25 -26
  130. package/dist-es/DropdownCellEditor.js.map +1 -1
  131. package/dist-es/EditorContext.js.map +1 -1
  132. package/dist-es/Grid.css.js +1 -1
  133. package/dist-es/Grid.js +139 -140
  134. package/dist-es/Grid.js.map +1 -1
  135. package/dist-es/GridColumn.js +4 -6
  136. package/dist-es/GridColumn.js.map +1 -1
  137. package/dist-es/GridContext.js.map +1 -1
  138. package/dist-es/GroupHeaderCell.js +27 -26
  139. package/dist-es/GroupHeaderCell.js.map +1 -1
  140. package/dist-es/GroupHeaderCellValue.js +1 -3
  141. package/dist-es/GroupHeaderCellValue.js.map +1 -1
  142. package/dist-es/HeaderCell.js +85 -79
  143. package/dist-es/HeaderCell.js.map +1 -1
  144. package/dist-es/HeaderCellValue.js +1 -4
  145. package/dist-es/HeaderCellValue.js.map +1 -1
  146. package/dist-es/LayoutContext.js.map +1 -1
  147. package/dist-es/NumberRange.js +2 -2
  148. package/dist-es/NumberRange.js.map +1 -1
  149. package/dist-es/NumericColumn.css.js +1 -1
  150. package/dist-es/NumericColumn.js +31 -28
  151. package/dist-es/NumericColumn.js.map +1 -1
  152. package/dist-es/RowSelectionCheckboxCellValue.js +5 -6
  153. package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -1
  154. package/dist-es/RowSelectionCheckboxColumn.js +11 -8
  155. package/dist-es/RowSelectionCheckboxColumn.js.map +1 -1
  156. package/dist-es/RowSelectionCheckboxHeaderCellValue.js +20 -14
  157. package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
  158. package/dist-es/RowSelectionRadioCellValue.js +5 -5
  159. package/dist-es/RowSelectionRadioCellValue.js.map +1 -1
  160. package/dist-es/RowSelectionRadioColumn.js +10 -7
  161. package/dist-es/RowSelectionRadioColumn.js.map +1 -1
  162. package/dist-es/RowSelectionRadioHeaderCell.js +1 -7
  163. package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -1
  164. package/dist-es/SelectionContext.js.map +1 -1
  165. package/dist-es/SizingContext.js.map +1 -1
  166. package/dist-es/TextCellEditor.css.js +1 -1
  167. package/dist-es/TextCellEditor.js +14 -18
  168. package/dist-es/TextCellEditor.js.map +1 -1
  169. package/dist-es/internal/CellMeasure.css.js +1 -1
  170. package/dist-es/internal/CellMeasure.js +1 -14
  171. package/dist-es/internal/CellMeasure.js.map +1 -1
  172. package/dist-es/internal/CellStatusIcons.js +41 -35
  173. package/dist-es/internal/CellStatusIcons.js.map +1 -1
  174. package/dist-es/internal/ColumnDropTarget.js +1 -4
  175. package/dist-es/internal/ColumnDropTarget.js.map +1 -1
  176. package/dist-es/internal/ColumnGhost.js +14 -24
  177. package/dist-es/internal/ColumnGhost.js.map +1 -1
  178. package/dist-es/internal/Cursor.js +1 -3
  179. package/dist-es/internal/Cursor.js.map +1 -1
  180. package/dist-es/internal/DefaultCellValue.js +9 -6
  181. package/dist-es/internal/DefaultCellValue.js.map +1 -1
  182. package/dist-es/internal/FakeCell.js +8 -14
  183. package/dist-es/internal/FakeCell.js.map +1 -1
  184. package/dist-es/internal/FakeGroupCell.js.map +1 -1
  185. package/dist-es/internal/FakeHeaderCell.js +1 -3
  186. package/dist-es/internal/FakeHeaderCell.js.map +1 -1
  187. package/dist-es/internal/GroupHeaderRow.js +8 -17
  188. package/dist-es/internal/GroupHeaderRow.js.map +1 -1
  189. package/dist-es/internal/HeaderRow.js +15 -19
  190. package/dist-es/internal/HeaderRow.js.map +1 -1
  191. package/dist-es/internal/LeftPart.js +17 -21
  192. package/dist-es/internal/LeftPart.js.map +1 -1
  193. package/dist-es/internal/MiddlePart.js +16 -20
  194. package/dist-es/internal/MiddlePart.js.map +1 -1
  195. package/dist-es/internal/RightPart.js +18 -21
  196. package/dist-es/internal/RightPart.js.map +1 -1
  197. package/dist-es/internal/Scrollable.js +10 -9
  198. package/dist-es/internal/Scrollable.js.map +1 -1
  199. package/dist-es/internal/TableBody.js +11 -11
  200. package/dist-es/internal/TableBody.js.map +1 -1
  201. package/dist-es/internal/TableColGroup.js +7 -15
  202. package/dist-es/internal/TableColGroup.js.map +1 -1
  203. package/dist-es/internal/TableRow.js +81 -71
  204. package/dist-es/internal/TableRow.js.map +1 -1
  205. package/dist-es/internal/TopLeftPart.js +17 -26
  206. package/dist-es/internal/TopLeftPart.js.map +1 -1
  207. package/dist-es/internal/TopPart.js +17 -32
  208. package/dist-es/internal/TopPart.js.map +1 -1
  209. package/dist-es/internal/TopRightPart.js +23 -25
  210. package/dist-es/internal/TopRightPart.js.map +1 -1
  211. package/dist-es/internal/gridHooks.js.map +1 -1
  212. package/dist-es/internal/utils.js.map +1 -1
  213. package/package.json +11 -8
  214. package/dist-cjs/internal/FakeCell.css.js +0 -6
  215. package/dist-cjs/internal/FakeCell.css.js.map +0 -1
  216. package/dist-es/internal/FakeCell.css.js +0 -4
  217. package/dist-es/internal/FakeCell.css.js.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,228 @@
1
+ # @salt-ds/data-grid
2
+
3
+ ## 1.0.8
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [5cf214c]
8
+ - Updated dependencies [bae6882]
9
+ - Updated dependencies [b272497]
10
+ - Updated dependencies [33c8da5]
11
+ - Updated dependencies [e7b0406]
12
+ - @salt-ds/core@1.37.3
13
+ - @salt-ds/lab@1.0.0-alpha.56
14
+
15
+ ## 1.0.7
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies [ae6e5c9]
20
+ - Updated dependencies [b395246]
21
+ - Updated dependencies [3cf8d99]
22
+ - Updated dependencies [aced985]
23
+ - Updated dependencies [7432f62]
24
+ - Updated dependencies [0730eb0]
25
+ - Updated dependencies [91973ac]
26
+ - Updated dependencies [1a29b4e]
27
+ - Updated dependencies [6b1f109]
28
+ - Updated dependencies [26bf747]
29
+ - Updated dependencies [6a08b82]
30
+ - Updated dependencies [dc5b3b3]
31
+ - @salt-ds/core@1.37.2
32
+ - @salt-ds/lab@1.0.0-alpha.55
33
+ - @salt-ds/icons@1.13.0
34
+
35
+ ## 1.0.6
36
+
37
+ ### Patch Changes
38
+
39
+ - bfe0f84: Cleaned up TypeScript types in multiple components.
40
+
41
+ ## 1.0.5
42
+
43
+ ### Patch Changes
44
+
45
+ - 4b35339: Exported `EditorContext` and `CellFrame` to create custom cell and cell editors
46
+
47
+ ## 1.0.4-alpha.10
48
+
49
+ ### Patch Changes
50
+
51
+ - 8ebd9138: Fixed deprecated `--salt-size-accent` references to `--salt-size-bar`. Fixed deprecated `--salt-size-unit` references to `--salt-spacing-100`.
52
+
53
+ ## 1.0.4-alpha.9
54
+
55
+ ### Patch Changes
56
+
57
+ - 51a1e9e7: Fixed text properties not set to use values from Salt theme
58
+
59
+ ## 1.0.4-alpha.8
60
+
61
+ ### Patch Changes
62
+
63
+ - f7fcbd11: Fixed issue where components are not injecting their styles.
64
+
65
+ ## 1.0.4-alpha.7
66
+
67
+ ### Patch Changes
68
+
69
+ - 3a22eefe: Fixed the Data Grid crashing when a user scrolls to the bottom and uses the pagination to navigate to the last page. #2065
70
+
71
+ ## 1.0.4-alpha.6
72
+
73
+ ### Patch Changes
74
+
75
+ - 6a95567c: Fixed overscroll behaviour when reaching end of scroll and hovering over the grid
76
+
77
+ ## 1.0.4-alpha.5
78
+
79
+ ### Patch Changes
80
+
81
+ - abfc4364: Corrected the minimum supported version of React. It has been updated to 16.14.0 due to the support for the new [JSX transform](https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html)
82
+
83
+ ## 1.0.4-alpha.4
84
+
85
+ ### Minor Changes
86
+
87
+ - b636a99c: Condition dropdown in data-grid to only render if the array of options is not empty
88
+
89
+ ### Patch Changes
90
+
91
+ - de5ab33b: Dropdown will now close when the already selected item is selected.
92
+ - f3ebfa48: When using the DropdownCellEditor with the Data Grid, hovering a grid row then hovering over a Dropdown list no longer crashes the Data Grid.
93
+
94
+ ## 1.0.4-alpha.3
95
+
96
+ ### Minor Changes
97
+
98
+ - af22b756: DropdownCellEditor accepts reandonly array
99
+
100
+ ## 1.0.4-alpha.2
101
+
102
+ ### Patch Changes
103
+
104
+ - 1e9ef1a2: Fix duplicate Salt libraries being installed when multiple libraries are installed
105
+
106
+ ## 1.0.4-alpha.1
107
+
108
+ ### Minor Changes
109
+
110
+ - c4c9d4f3: Add column sorting to the Data Grid
111
+
112
+ ```tsx
113
+ <GridColumn
114
+ sortable
115
+ onSortOrderChange={({ sortOrder }) => {}}
116
+ customSort={({ rowData, sortOrder }) => {}}
117
+ />
118
+ ```
119
+
120
+ - 3be48882: Add cell validation.
121
+
122
+ ```tsx
123
+ <GridColumn
124
+ getValidationStatus={({ row }) => validationStatus[row.index].name}
125
+ validationType="strong"
126
+ >
127
+ ```
128
+
129
+ Add row validation.
130
+
131
+ ```tsx
132
+ <Grid getRowValidationStatus={(row) => row.data.status}>
133
+ <RowValidationStatusColumn
134
+ id="status"
135
+ aria-label="Row status"
136
+ defaultWidth={30}
137
+ />
138
+ </Grid>
139
+ ```
140
+
141
+ ## 1.0.4-alpha.0
142
+
143
+ ### Minor Changes
144
+
145
+ - 9bee69f4: Move `Checkbox` from lab to core
146
+
147
+ ### Patch Changes
148
+
149
+ - 102501cb: Fix a bug where the Data Grid cell editor value is dismissed when the user clicks away
150
+ - 3c740de4: Fix a bug where the Data Grid cell editor value is dismissed when the user clicks away
151
+ - 3e7a1b0f: Checkbox
152
+
153
+ Removed `CheckboxBase` and replaced with `Checkbox`
154
+ Added `error` prop for error state styling.
155
+
156
+ CheckboxGroup
157
+
158
+ Removed `legend` and `LegendProps` prop; will be implemented by FormField.
159
+ Replaced `row` prop with `direction` prop.
160
+ Added `wrap` prop.
161
+
162
+ CheckboxIcon
163
+
164
+ Added `error` prop for error state styling.
165
+ Added `disabled` prop for disabled state styling.
166
+
167
+ ## 1.0.3
168
+
169
+ ### Patch Changes
170
+
171
+ - b0e390c5: RadioButton
172
+
173
+ Removed `RadioButtonBase` and replaced with `RadioButton`
174
+ Removed `icon` prop; icon is not customizable any more.
175
+ Added `inputProps` prop to be passed to the radio input.
176
+ Added `error` prop for error state styling.
177
+
178
+ RadioButtonGroup
179
+
180
+ Removed `icon` prop; icon is not customizable any more.
181
+ Removed `legend` prop; will be implemented by FormField.
182
+ Removed `radios` prop; should be the users' responsibility to provide the nested RadioButtons as children.
183
+ Replaced `row` prop with `direction` prop.
184
+ Added `wrap` prop.
185
+
186
+ RadioButtonIcon
187
+
188
+ Added `error` prop for error state styling.
189
+ Added `disabled` prop for disabled state styling.
190
+
191
+ ## 1.0.2
192
+
193
+ ### Patch Changes
194
+
195
+ - 1ad02da3: Deprecated `--salt-overlayable-shadow-scroll-color`, use `--salt-shadow-1-color` instead
196
+
197
+ ## 1.0.1
198
+
199
+ ### Patch Changes
200
+
201
+ - a0724642: Fix SSR support
202
+ - 03a5d0e1: Made Grid dimension measurements more reliable
203
+ - 00b53661: Fixed row selection not being announced by screenreaders
204
+
205
+ ## 1.0.0
206
+
207
+ ### Major Changes
208
+
209
+ - c1bc7479: Salt is the J.P. Morgan design system, an open-source solution for building exceptional products and digital experiences in financial services and other industries. It offers you well-documented, accessible components as well as comprehensive design templates, style libraries and assets.
210
+
211
+ With this initial release we're providing:
212
+
213
+ - AG Grid Theme
214
+ - Border Layout
215
+ - Button
216
+ - Data Grid
217
+ - Flex Layout
218
+ - Flow Layout
219
+ - Grid Layout
220
+ - Icon
221
+ - Link
222
+ - Salt Provider
223
+ - Stack Layout
224
+ - Status Indicator
225
+ - Text
226
+ - Theme
227
+
228
+ And a number of other lab components.
@@ -1,7 +1,5 @@
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 core = require('@salt-ds/core');
7
5
  var styles = require('@salt-ds/styles');
@@ -65,50 +63,54 @@ function BaseCell(props) {
65
63
  const hasValidation = !!validationStatus;
66
64
  const hasValidationMessage = !!validationMessage || hasValidation;
67
65
  const validationMessageId = `${cellId}-statusMessage`;
68
- return /* @__PURE__ */ jsxRuntime.jsxs(CellFrame.CellFrame, {
69
- ref,
70
- id: cellId,
71
- "data-row-index": row.index,
72
- "data-column-index": column.index,
73
- "data-testid": isFocused ? "grid-cell-focused" : void 0,
74
- "aria-colindex": column.index + 1,
75
- role: "gridcell",
76
- separator: column.separator,
77
- isSelected,
78
- isEditable,
79
- className: clsx.clsx(className, {
80
- [withBaseName("hasValidation")]: hasValidation,
81
- [withBaseName(`status-${validationStatus}`)]: validationStatus
82
- }),
83
- style,
84
- tabIndex: isFocused && !isFocusableContent ? 0 : -1,
85
- onFocus,
86
- "aria-invalid": validationStatus === "error" || void 0,
87
- "aria-describedby": hasValidationMessage ? validationMessageId : void 0,
88
- children: [
89
- hasValidationMessage ? /* @__PURE__ */ jsxRuntime.jsx("div", {
90
- id: validationMessageId,
91
- className: "salt-visuallyHidden",
92
- "aria-hidden": true,
93
- role: "status",
94
- children: validationMessage ? validationMessage : `Cell validation state is ${validationStatus}`
95
- }) : null,
96
- /* @__PURE__ */ jsxRuntime.jsx("div", {
97
- className: clsx.clsx(withBaseName("valueContainer")),
98
- children
99
- }),
100
- hasValidation && validationType === "strong" ? /* @__PURE__ */ jsxRuntime.jsx("div", {
101
- className: clsx.clsx(withBaseName("statusContainer"), {
102
- [withBaseName(`statusContainer-align-${align}`)]: align
103
- }),
104
- children: icons[validationStatus]
105
- }) : null,
106
- isFocused && isEditable && /* @__PURE__ */ jsxRuntime.jsx(CornerTag.CornerTag, {
107
- focusOnly: true
66
+ return /* @__PURE__ */ jsxRuntime.jsxs(
67
+ CellFrame.CellFrame,
68
+ {
69
+ ref,
70
+ id: cellId,
71
+ "data-row-index": row.index,
72
+ "data-column-index": column.index,
73
+ "data-testid": isFocused ? "grid-cell-focused" : void 0,
74
+ "aria-colindex": column.index + 1,
75
+ role: "gridcell",
76
+ separator: column.separator,
77
+ isSelected,
78
+ isEditable,
79
+ className: clsx.clsx(className, {
80
+ [withBaseName("hasValidation")]: hasValidation,
81
+ [withBaseName(`status-${validationStatus}`)]: validationStatus
108
82
  }),
109
- isFocused && !isFocusableContent && /* @__PURE__ */ jsxRuntime.jsx(Cursor.Cursor, {})
110
- ]
111
- });
83
+ style,
84
+ tabIndex: isFocused && !isFocusableContent ? 0 : -1,
85
+ onFocus,
86
+ "aria-invalid": validationStatus === "error" || void 0,
87
+ "aria-describedby": hasValidationMessage ? validationMessageId : void 0,
88
+ children: [
89
+ hasValidationMessage ? /* @__PURE__ */ jsxRuntime.jsx(
90
+ "div",
91
+ {
92
+ id: validationMessageId,
93
+ className: "salt-visuallyHidden",
94
+ "aria-hidden": true,
95
+ role: "status",
96
+ children: validationMessage ? validationMessage : `Cell validation state is ${validationStatus}`
97
+ }
98
+ ) : null,
99
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName("valueContainer")), children }),
100
+ hasValidation && validationType === "strong" ? /* @__PURE__ */ jsxRuntime.jsx(
101
+ "div",
102
+ {
103
+ className: clsx.clsx(withBaseName("statusContainer"), {
104
+ [withBaseName(`statusContainer-align-${align}`)]: align
105
+ }),
106
+ children: icons[validationStatus]
107
+ }
108
+ ) : null,
109
+ isFocused && isEditable && /* @__PURE__ */ jsxRuntime.jsx(CornerTag.CornerTag, { focusOnly: true }),
110
+ isFocused && !isFocusableContent && /* @__PURE__ */ jsxRuntime.jsx(Cursor.Cursor, {})
111
+ ]
112
+ }
113
+ );
112
114
  }
113
115
 
114
116
  exports.BaseCell = BaseCell;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCell.js","sources":["../src/BaseCell.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\n\nimport { CellFrame } from \"./CellFrame\";\nimport { CornerTag } from \"./CornerTag\";\nimport type { GridColumnModel } from \"./Grid\";\nimport type { GridCellProps } from \"./GridColumn\";\nimport { Cursor, useFocusableContent } from \"./internal\";\nimport {\n CellErrorIcon,\n CellSuccessIcon,\n CellWarningIcon,\n} from \"./internal/CellStatusIcons\";\n\nimport baseCellCss from \"./BaseCell.css\";\n\nconst withBaseName = makePrefixer(\"saltGridBaseCell\");\n\nexport function getCellId<T>(rowKey: string, column: GridColumnModel<T>) {\n return `R${rowKey}C${column.info.props.id}`;\n}\n\nconst icons = {\n warning: CellWarningIcon,\n error: CellErrorIcon,\n success: CellSuccessIcon,\n};\n\n// Default component for grid cells. Provides selection, on-hover highlighting,\n// cursor etc.\nexport function BaseCell<T>(props: GridCellProps<T>) {\n const {\n column,\n className,\n row,\n style,\n isFocused,\n isSelected,\n isEditable,\n children,\n validationStatus,\n validationMessage,\n validationType = \"light\",\n align,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-base-cell\",\n css: baseCellCss,\n window: targetWindow,\n });\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableCellElement>();\n const cellId = getCellId(row.key, column);\n const hasValidation = !!validationStatus;\n const hasValidationMessage = !!validationMessage || hasValidation;\n const validationMessageId = `${cellId}-statusMessage`;\n return (\n <CellFrame\n ref={ref}\n id={cellId}\n data-row-index={row.index}\n data-column-index={column.index}\n data-testid={isFocused ? \"grid-cell-focused\" : undefined}\n // aria-colindex uses one-based array indexing\n aria-colindex={column.index + 1}\n role=\"gridcell\"\n separator={column.separator}\n isSelected={isSelected}\n isEditable={isEditable}\n className={clsx(className, {\n [withBaseName(\"hasValidation\")]: hasValidation,\n [withBaseName(`status-${validationStatus as string}`)]:\n validationStatus,\n })}\n style={style}\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n aria-invalid={validationStatus === \"error\" || undefined}\n aria-describedby={hasValidationMessage ? validationMessageId : undefined}\n >\n {hasValidationMessage ? (\n <div\n id={validationMessageId}\n className=\"salt-visuallyHidden\"\n aria-hidden\n role=\"status\"\n >\n {validationMessage\n ? validationMessage\n : `Cell validation state is ${validationStatus as string}`}\n </div>\n ) : null}\n <div className={clsx(withBaseName(\"valueContainer\"))}>{children}</div>\n {hasValidation && validationType === \"strong\" ? (\n <div\n className={clsx(withBaseName(\"statusContainer\"), {\n [withBaseName(`statusContainer-align-${align as string}`)]: align,\n })}\n >\n {icons[validationStatus]}\n </div>\n ) : null}\n {isFocused && isEditable && <CornerTag focusOnly={true} />}\n {isFocused && !isFocusableContent && <Cursor />}\n </CellFrame>\n );\n}\n"],"names":["makePrefixer","CellWarningIcon","CellErrorIcon","CellSuccessIcon","useWindow","useComponentCssInjection","baseCellCss","useFocusableContent","jsxs","CellFrame","clsx","jsx","CornerTag","Cursor"],"mappings":"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"}
1
+ {"version":3,"file":"BaseCell.js","sources":["../src/BaseCell.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\n\nimport { CellFrame } from \"./CellFrame\";\nimport { CornerTag } from \"./CornerTag\";\nimport type { GridColumnModel } from \"./Grid\";\nimport type { GridCellProps } from \"./GridColumn\";\nimport { Cursor, useFocusableContent } from \"./internal\";\nimport {\n CellErrorIcon,\n CellSuccessIcon,\n CellWarningIcon,\n} from \"./internal/CellStatusIcons\";\n\nimport baseCellCss from \"./BaseCell.css\";\n\nconst withBaseName = makePrefixer(\"saltGridBaseCell\");\n\nexport function getCellId<T>(rowKey: string, column: GridColumnModel<T>) {\n return `R${rowKey}C${column.info.props.id}`;\n}\n\nconst icons = {\n warning: CellWarningIcon,\n error: CellErrorIcon,\n success: CellSuccessIcon,\n};\n\n// Default component for grid cells. Provides selection, on-hover highlighting,\n// cursor etc.\nexport function BaseCell<T>(props: GridCellProps<T>) {\n const {\n column,\n className,\n row,\n style,\n isFocused,\n isSelected,\n isEditable,\n children,\n validationStatus,\n validationMessage,\n validationType = \"light\",\n align,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-base-cell\",\n css: baseCellCss,\n window: targetWindow,\n });\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableCellElement>();\n const cellId = getCellId(row.key, column);\n const hasValidation = !!validationStatus;\n const hasValidationMessage = !!validationMessage || hasValidation;\n const validationMessageId = `${cellId}-statusMessage`;\n return (\n <CellFrame\n ref={ref}\n id={cellId}\n data-row-index={row.index}\n data-column-index={column.index}\n data-testid={isFocused ? \"grid-cell-focused\" : undefined}\n // aria-colindex uses one-based array indexing\n aria-colindex={column.index + 1}\n role=\"gridcell\"\n separator={column.separator}\n isSelected={isSelected}\n isEditable={isEditable}\n className={clsx(className, {\n [withBaseName(\"hasValidation\")]: hasValidation,\n [withBaseName(`status-${validationStatus as string}`)]:\n validationStatus,\n })}\n style={style}\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n aria-invalid={validationStatus === \"error\" || undefined}\n aria-describedby={hasValidationMessage ? validationMessageId : undefined}\n >\n {hasValidationMessage ? (\n <div\n id={validationMessageId}\n className=\"salt-visuallyHidden\"\n aria-hidden\n role=\"status\"\n >\n {validationMessage\n ? validationMessage\n : `Cell validation state is ${validationStatus as string}`}\n </div>\n ) : null}\n <div className={clsx(withBaseName(\"valueContainer\"))}>{children}</div>\n {hasValidation && validationType === \"strong\" ? (\n <div\n className={clsx(withBaseName(\"statusContainer\"), {\n [withBaseName(`statusContainer-align-${align as string}`)]: align,\n })}\n >\n {icons[validationStatus]}\n </div>\n ) : null}\n {isFocused && isEditable && <CornerTag focusOnly={true} />}\n {isFocused && !isFocusableContent && <Cursor />}\n </CellFrame>\n );\n}\n"],"names":["makePrefixer","CellWarningIcon","CellErrorIcon","CellSuccessIcon","useWindow","useComponentCssInjection","baseCellCss","useFocusableContent","jsxs","CellFrame","clsx","jsx","CornerTag","Cursor"],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var react = require('react');
6
4
  var GridContext = require('./GridContext.js');
7
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"CellEditor.js","sources":["../src/CellEditor.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useMemo } from \"react\";\nimport { useGridContext } from \"./GridContext\";\n\nexport interface CellEditorInfo<T> {\n columnId: string;\n children: ReactNode;\n}\n\nexport interface CellEditorProps<T> {\n columnId?: string;\n children: ReactNode;\n}\n\n// Non-rendered component. Used as a child of GridColumn. Children prop is\n// expected to be a specific implementation of cell editor (text, dropdown etc)\n// Registers the editor in the grid. The grid then renders the editor when\n// edit mode is activated.\n// TODO This feature is experimental.\nexport function CellEditor<T>(props: CellEditorProps<T>) {\n const { children } = props;\n const columnId = props.columnId!;\n const grid = useGridContext();\n\n const info = useMemo(\n () => ({\n columnId,\n children,\n }),\n [columnId, children],\n );\n\n useEffect(() => {\n grid.onEditorAdded(info);\n return () => {\n grid.onEditorRemoved(info);\n };\n }, [info]);\n\n return null;\n}\n"],"names":["useGridContext","useMemo","useEffect"],"mappings":";;;;;;;AAkBO,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAM,MAAA,EAAE,UAAa,GAAA,KAAA,CAAA;AACrB,EAAA,MAAM,WAAW,KAAM,CAAA,QAAA,CAAA;AACvB,EAAA,MAAM,OAAOA,0BAAe,EAAA,CAAA;AAE5B,EAAA,MAAM,IAAO,GAAAC,aAAA;AAAA,IACX,OAAO;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,UAAU,QAAQ,CAAA;AAAA,GACrB,CAAA;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAA,CAAK,cAAc,IAAI,CAAA,CAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,gBAAgB,IAAI,CAAA,CAAA;AAAA,KAC3B,CAAA;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAET,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"CellEditor.js","sources":["../src/CellEditor.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useMemo } from \"react\";\nimport { useGridContext } from \"./GridContext\";\n\nexport interface CellEditorInfo<T> {\n columnId: string;\n children: ReactNode;\n}\n\nexport interface CellEditorProps<T> {\n columnId?: string;\n children: ReactNode;\n}\n\n// Non-rendered component. Used as a child of GridColumn. Children prop is\n// expected to be a specific implementation of cell editor (text, dropdown etc)\n// Registers the editor in the grid. The grid then renders the editor when\n// edit mode is activated.\n// TODO This feature is experimental.\nexport function CellEditor<T>(props: CellEditorProps<T>) {\n const { children } = props;\n const columnId = props.columnId!;\n const grid = useGridContext();\n\n const info = useMemo(\n () => ({\n columnId,\n children,\n }),\n [columnId, children],\n );\n\n useEffect(() => {\n grid.onEditorAdded(info);\n return () => {\n grid.onEditorRemoved(info);\n };\n }, [info]);\n\n return null;\n}\n"],"names":["useGridContext","useMemo","useEffect"],"mappings":";;;;;AAkBO,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAM,MAAA,EAAE,UAAa,GAAA,KAAA;AACrB,EAAA,MAAM,WAAW,KAAM,CAAA,QAAA;AACvB,EAAA,MAAM,OAAOA,0BAAe,EAAA;AAE5B,EAAA,MAAM,IAAO,GAAAC,aAAA;AAAA,IACX,OAAO;AAAA,MACL,QAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,UAAU,QAAQ;AAAA,GACrB;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAA,CAAK,cAAc,IAAI,CAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAAA,KAC3B;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAO,OAAA,IAAA;AACT;;;;"}
@@ -1,7 +1,5 @@
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 core = require('@salt-ds/core');
7
5
  var styles = require('@salt-ds/styles');
@@ -27,35 +25,29 @@ const CellFrame = react.forwardRef(
27
25
  css: CellFrame$1,
28
26
  window: targetWindow
29
27
  });
30
- return /* @__PURE__ */ jsxRuntime.jsxs("td", {
31
- ref,
32
- className: clsx.clsx(
33
- withBaseName(),
34
- {
35
- [withBaseName("selected")]: isSelected,
36
- [withBaseName("editable")]: isEditable,
37
- [withBaseName("regularSeparator")]: separator === "regular" || separator === "groupEdge",
38
- [withBaseName("pinnedSeparator")]: separator === "pinned"
39
- },
40
- className
41
- ),
42
- ...tdProps,
43
- children: [
44
- /* @__PURE__ */ jsxRuntime.jsx("div", {
45
- className: withBaseName("body"),
46
- children
47
- }),
48
- /* @__PURE__ */ jsxRuntime.jsx("div", {
49
- className: withBaseName("columnSeparator")
50
- }),
51
- /* @__PURE__ */ jsxRuntime.jsx("div", {
52
- className: withBaseName("rowSeparator")
53
- }),
54
- /* @__PURE__ */ jsxRuntime.jsx("div", {
55
- className: withBaseName("topSeparator")
56
- })
57
- ]
58
- });
28
+ return /* @__PURE__ */ jsxRuntime.jsxs(
29
+ "td",
30
+ {
31
+ ref,
32
+ className: clsx.clsx(
33
+ withBaseName(),
34
+ {
35
+ [withBaseName("selected")]: isSelected,
36
+ [withBaseName("editable")]: isEditable,
37
+ [withBaseName("regularSeparator")]: separator === "regular" || separator === "groupEdge",
38
+ [withBaseName("pinnedSeparator")]: separator === "pinned"
39
+ },
40
+ className
41
+ ),
42
+ ...tdProps,
43
+ children: [
44
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("body"), children }),
45
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("columnSeparator") }),
46
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("rowSeparator") }),
47
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: withBaseName("topSeparator") })
48
+ ]
49
+ }
50
+ );
59
51
  }
60
52
  );
61
53
 
@@ -1 +1 @@
1
- {"version":3,"file":"CellFrame.js","sources":["../src/CellFrame.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 HTMLAttributes, forwardRef } from \"react\";\n\nimport type { ColumnSeparatorType } from \"./Grid\";\n\nimport cellCss from \"./CellFrame.css\";\n\nexport interface CellProps extends HTMLAttributes<HTMLTableCellElement> {\n isSelected?: boolean;\n isEditable?: boolean;\n separator?: ColumnSeparatorType;\n}\n\n// TODO: rename the prefix in next major version to match component name.\nconst withBaseName = makePrefixer(\"saltGridCell\");\n\n/** Cell frame used for creating custom cells and editors */\nexport const CellFrame = forwardRef<HTMLTableCellElement, CellProps>(\n function CellFrame(props, ref) {\n const {\n children,\n separator,\n isSelected,\n isEditable,\n className,\n ...tdProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-cell\",\n css: cellCss,\n window: targetWindow,\n });\n\n return (\n <td\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"editable\")]: isEditable,\n [withBaseName(\"regularSeparator\")]:\n separator === \"regular\" || separator === \"groupEdge\",\n [withBaseName(\"pinnedSeparator\")]: separator === \"pinned\",\n },\n className,\n )}\n {...tdProps}\n >\n <div className={withBaseName(\"body\")}>{children}</div>\n <div className={withBaseName(\"columnSeparator\")} />\n <div className={withBaseName(\"rowSeparator\")} />\n <div className={withBaseName(\"topSeparator\")} />\n </td>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","CellFrame","useWindow","useComponentCssInjection","cellCss","jsxs","clsx","jsx"],"mappings":";;;;;;;;;;;;AAiBA,MAAM,YAAA,GAAeA,kBAAa,cAAc,CAAA,CAAA;AAGzC,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACG,GAAA,OAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,WAAA;AAAA,MACR,GAAK,EAAAC,WAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,uBACGC,eAAA,CAAA,IAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,UAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,UAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,kBAAkB,CAC9B,GAAA,SAAA,KAAc,aAAa,SAAc,KAAA,WAAA;AAAA,UAC3C,CAAC,YAAA,CAAa,iBAAiB,CAAA,GAAI,SAAc,KAAA,QAAA;AAAA,SACnD;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACC,GAAG,OAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAACC,cAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAAI,QAAA;AAAA,SAAS,CAAA;AAAA,wBAC/CA,cAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,SAAG,CAAA;AAAA,wBAChDA,cAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,SAAG,CAAA;AAAA,wBAC7CA,cAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,SAAG,CAAA;AAAA,OAAA;AAAA,KAChD,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"CellFrame.js","sources":["../src/CellFrame.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 HTMLAttributes, forwardRef } from \"react\";\n\nimport type { ColumnSeparatorType } from \"./Grid\";\n\nimport cellCss from \"./CellFrame.css\";\n\nexport interface CellProps extends HTMLAttributes<HTMLTableCellElement> {\n isSelected?: boolean;\n isEditable?: boolean;\n separator?: ColumnSeparatorType;\n}\n\n// TODO: rename the prefix in next major version to match component name.\nconst withBaseName = makePrefixer(\"saltGridCell\");\n\n/** Cell frame used for creating custom cells and editors */\nexport const CellFrame = forwardRef<HTMLTableCellElement, CellProps>(\n function CellFrame(props, ref) {\n const {\n children,\n separator,\n isSelected,\n isEditable,\n className,\n ...tdProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-cell\",\n css: cellCss,\n window: targetWindow,\n });\n\n return (\n <td\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"editable\")]: isEditable,\n [withBaseName(\"regularSeparator\")]:\n separator === \"regular\" || separator === \"groupEdge\",\n [withBaseName(\"pinnedSeparator\")]: separator === \"pinned\",\n },\n className,\n )}\n {...tdProps}\n >\n <div className={withBaseName(\"body\")}>{children}</div>\n <div className={withBaseName(\"columnSeparator\")} />\n <div className={withBaseName(\"rowSeparator\")} />\n <div className={withBaseName(\"topSeparator\")} />\n </td>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","CellFrame","useWindow","useComponentCssInjection","cellCss","jsxs","clsx","jsx"],"mappings":";;;;;;;;;;AAiBA,MAAM,YAAA,GAAeA,kBAAa,cAAc,CAAA;AAGzC,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,WAAA;AAAA,MACR,GAAK,EAAAC,WAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IACE,uBAAAC,eAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,UAAA;AAAA,YAC5B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,UAAA;AAAA,YAC5B,CAAC,YAAa,CAAA,kBAAkB,CAAC,GAC/B,SAAA,KAAc,aAAa,SAAc,KAAA,WAAA;AAAA,YAC3C,CAAC,YAAA,CAAa,iBAAiB,CAAC,GAAG,SAAc,KAAA;AAAA,WACnD;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,OAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,MAAM,GAAI,QAAS,EAAA,CAAA;AAAA,0BAC/CA,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,YAAA,CAAa,iBAAiB,CAAG,EAAA,CAAA;AAAA,0BAChDA,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,YAAA,CAAa,cAAc,CAAG,EAAA,CAAA;AAAA,0BAC7CA,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,YAAA,CAAa,cAAc,CAAG,EAAA;AAAA;AAAA;AAAA,KAChD;AAAA;AAGN;;;;"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var react = require('react');
6
4
 
7
5
  const ColumnDataContext = react.createContext(void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnDataContext.js","sources":["../src/ColumnDataContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { GridColumnModel } from \"./Grid\";\n\nexport interface ColumnDataContext<T> {\n getColById: (id: string) => GridColumnModel<T> | undefined;\n}\n\nexport const ColumnDataContext = createContext<\n ColumnDataContext<any> | undefined\n>(undefined);\n\nexport const useColumnDataContext = () => {\n const c = useContext(ColumnDataContext);\n if (!c) {\n throw new Error(\"useColumnDataContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAOa,MAAA,iBAAA,GAAoBA,oBAE/B,KAAS,CAAA,EAAA;AAEJ,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAIC,iBAAW,iBAAiB,CAAA,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA,CAAA;AAAA,GAClE;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;;"}
1
+ {"version":3,"file":"ColumnDataContext.js","sources":["../src/ColumnDataContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { GridColumnModel } from \"./Grid\";\n\nexport interface ColumnDataContext<T> {\n getColById: (id: string) => GridColumnModel<T> | undefined;\n}\n\nexport const ColumnDataContext = createContext<\n ColumnDataContext<any> | undefined\n>(undefined);\n\nexport const useColumnDataContext = () => {\n const c = useContext(ColumnDataContext);\n if (!c) {\n throw new Error(\"useColumnDataContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AAOa,MAAA,iBAAA,GAAoBA,oBAE/B,KAAS,CAAA;AAEJ,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAIC,iBAAW,iBAAiB,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAAA;AAElE,EAAO,OAAA,CAAA;AACT;;;;;"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var react = require('react');
6
4
 
7
5
  const ColumnDragContext = react.createContext(
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnDragContext.js","sources":["../src/ColumnDragContext.ts"],"sourcesContent":["import { type MouseEventHandler, createContext, useContext } from \"react\";\n\nexport interface ColumnDragContext {\n columnMove?: boolean;\n onColumnMoveHandleMouseDown: MouseEventHandler<HTMLDivElement>;\n}\n\nexport const ColumnDragContext = createContext<ColumnDragContext | undefined>(\n undefined,\n);\n\nexport const useColumnDragContext = () => {\n const c = useContext(ColumnDragContext);\n if (!c) {\n throw new Error(\"useColumnDragContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAOO,MAAM,iBAAoB,GAAAA,mBAAA;AAAA,EAC/B,KAAA,CAAA;AACF,EAAA;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAIC,iBAAW,iBAAiB,CAAA,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA,CAAA;AAAA,GAClE;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;;"}
1
+ {"version":3,"file":"ColumnDragContext.js","sources":["../src/ColumnDragContext.ts"],"sourcesContent":["import { type MouseEventHandler, createContext, useContext } from \"react\";\n\nexport interface ColumnDragContext {\n columnMove?: boolean;\n onColumnMoveHandleMouseDown: MouseEventHandler<HTMLDivElement>;\n}\n\nexport const ColumnDragContext = createContext<ColumnDragContext | undefined>(\n undefined,\n);\n\nexport const useColumnDragContext = () => {\n const c = useContext(ColumnDragContext);\n if (!c) {\n throw new Error(\"useColumnDragContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AAOO,MAAM,iBAAoB,GAAAA,mBAAA;AAAA,EAC/B,KAAA;AACF;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAIC,iBAAW,iBAAiB,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAAA;AAElE,EAAO,OAAA,CAAA;AACT;;;;;"}
@@ -1,7 +1,5 @@
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
  var GridContext = require('./GridContext.js');
@@ -23,9 +21,7 @@ function ColumnGroup(props) {
23
21
  }
24
22
  return child;
25
23
  });
26
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
27
- children: childrenWithPinnedOverridden
28
- });
24
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: childrenWithPinnedOverridden });
29
25
  }
30
26
 
31
27
  exports.ColumnGroup = ColumnGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnGroup.js","sources":["../src/ColumnGroup.tsx"],"sourcesContent":["import {\n Children,\n type ComponentType,\n type ReactNode,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n} from \"react\";\nimport type { GridColumnGroupModel } from \"./Grid\";\nimport type { GridColumnPin } from \"./GridColumn\";\nimport { useGridContext } from \"./GridContext\";\n\nexport interface ColumnGroupCellProps {\n group: GridColumnGroupModel;\n}\n\nexport interface ColumnGroupCellValueProps {\n group: GridColumnGroupModel;\n}\n\nexport interface ColumnGroupProps {\n children: ReactNode;\n name: string;\n id: string;\n pinned?: GridColumnPin;\n headerComponent?: ComponentType<ColumnGroupCellProps>;\n headerValueComponent?: ComponentType<ColumnGroupCellValueProps>;\n}\n\nexport function ColumnGroup(props: ColumnGroupProps) {\n const pinned = props.pinned || null;\n const indexRef = useRef<number>();\n const grid = useGridContext();\n useEffect(() => {\n indexRef.current = grid.getChildIndex(props.id);\n grid.onColumnGroupAdded(props);\n return () => {\n grid.onColumnGroupRemoved(indexRef.current!, props);\n };\n });\n const childrenWithPinnedOverridden = Children.map(props.children, (child) => {\n if (isValidElement(child)) {\n return cloneElement(child, { pinned });\n }\n return child;\n });\n return <>{childrenWithPinnedOverridden}</>;\n}\n"],"names":["useRef","useGridContext","useEffect","Children","isValidElement","cloneElement","jsx","Fragment"],"mappings":";;;;;;;;AA8BO,SAAS,YAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,MAAA,GAAS,MAAM,MAAU,IAAA,IAAA,CAAA;AAC/B,EAAA,MAAM,WAAWA,YAAe,EAAA,CAAA;AAChC,EAAA,MAAM,OAAOC,0BAAe,EAAA,CAAA;AAC5B,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAU,GAAA,IAAA,CAAK,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AAC9C,IAAA,IAAA,CAAK,mBAAmB,KAAK,CAAA,CAAA;AAC7B,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA,oBAAA,CAAqB,QAAS,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAAA,KACpD,CAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,+BAA+BC,cAAS,CAAA,GAAA,CAAI,KAAM,CAAA,QAAA,EAAU,CAAC,KAAU,KAAA;AAC3E,IAAI,IAAAC,oBAAA,CAAe,KAAK,CAAG,EAAA;AACzB,MAAA,OAAOC,kBAAa,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,CAAA;AAAA,KACvC;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACD,EAAO,uBAAAC,cAAA,CAAAC,mBAAA,EAAA;AAAA,IAAG,QAAA,EAAA,4BAAA;AAAA,GAA6B,CAAA,CAAA;AACzC;;;;"}
1
+ {"version":3,"file":"ColumnGroup.js","sources":["../src/ColumnGroup.tsx"],"sourcesContent":["import {\n Children,\n type ComponentType,\n type ReactNode,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n} from \"react\";\nimport type { GridColumnGroupModel } from \"./Grid\";\nimport type { GridColumnPin } from \"./GridColumn\";\nimport { useGridContext } from \"./GridContext\";\n\nexport interface ColumnGroupCellProps {\n group: GridColumnGroupModel;\n}\n\nexport interface ColumnGroupCellValueProps {\n group: GridColumnGroupModel;\n}\n\nexport interface ColumnGroupProps {\n children: ReactNode;\n name: string;\n id: string;\n pinned?: GridColumnPin;\n headerComponent?: ComponentType<ColumnGroupCellProps>;\n headerValueComponent?: ComponentType<ColumnGroupCellValueProps>;\n}\n\nexport function ColumnGroup(props: ColumnGroupProps) {\n const pinned = props.pinned || null;\n const indexRef = useRef<number>();\n const grid = useGridContext();\n useEffect(() => {\n indexRef.current = grid.getChildIndex(props.id);\n grid.onColumnGroupAdded(props);\n return () => {\n grid.onColumnGroupRemoved(indexRef.current!, props);\n };\n });\n const childrenWithPinnedOverridden = Children.map(props.children, (child) => {\n if (isValidElement(child)) {\n return cloneElement(child, { pinned });\n }\n return child;\n });\n return <>{childrenWithPinnedOverridden}</>;\n}\n"],"names":["useRef","useGridContext","useEffect","Children","isValidElement","cloneElement"],"mappings":";;;;;;AA8BO,SAAS,YAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,MAAA,GAAS,MAAM,MAAU,IAAA,IAAA;AAC/B,EAAA,MAAM,WAAWA,YAAe,EAAA;AAChC,EAAA,MAAM,OAAOC,0BAAe,EAAA;AAC5B,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAU,GAAA,IAAA,CAAK,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA;AAC9C,IAAA,IAAA,CAAK,mBAAmB,KAAK,CAAA;AAC7B,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA,oBAAA,CAAqB,QAAS,CAAA,OAAA,EAAU,KAAK,CAAA;AAAA,KACpD;AAAA,GACD,CAAA;AACD,EAAA,MAAM,+BAA+BC,cAAS,CAAA,GAAA,CAAI,KAAM,CAAA,QAAA,EAAU,CAAC,KAAU,KAAA;AAC3E,IAAI,IAAAC,oBAAA,CAAe,KAAK,CAAG,EAAA;AACzB,MAAA,OAAOC,kBAAa,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA;AAAA;AAEvC,IAAO,OAAA,KAAA;AAAA,GACR,CAAA;AACD,EAAA,6DAAU,QAA6B,EAAA,4BAAA,EAAA,CAAA;AACzC;;;;"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var react = require('react');
6
4
 
7
5
  const ColumnSortContext = react.createContext(
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSortContext.js","sources":["../src/ColumnSortContext.ts"],"sourcesContent":["import type { SetStateAction } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport type { SortOrder } from \"./Grid\";\nimport type { GridColumnProps } from \"./GridColumn\";\n\nexport interface ColumnSortContext {\n sortByColumnId?: GridColumnProps[\"id\"];\n setSortByColumnId: (c: SetStateAction<GridColumnProps[\"id\"]>) => void;\n sortOrder: SortOrder;\n setSortOrder: (o: SortOrder) => void;\n onClickSortColumn: (colHeaderId: GridColumnProps[\"id\"]) => void;\n}\n\nexport const ColumnSortContext = createContext<ColumnSortContext | undefined>(\n undefined,\n);\n\nexport const useColumnSortContext = () => {\n const c = useContext(ColumnSortContext);\n if (!c) {\n throw new Error(\"useColumnSortContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAaO,MAAM,iBAAoB,GAAAA,mBAAA;AAAA,EAC/B,KAAA,CAAA;AACF,EAAA;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAIC,iBAAW,iBAAiB,CAAA,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA,CAAA;AAAA,GAClE;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;;"}
1
+ {"version":3,"file":"ColumnSortContext.js","sources":["../src/ColumnSortContext.ts"],"sourcesContent":["import type { SetStateAction } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport type { SortOrder } from \"./Grid\";\nimport type { GridColumnProps } from \"./GridColumn\";\n\nexport interface ColumnSortContext {\n sortByColumnId?: GridColumnProps[\"id\"];\n setSortByColumnId: (c: SetStateAction<GridColumnProps[\"id\"]>) => void;\n sortOrder: SortOrder;\n setSortOrder: (o: SortOrder) => void;\n onClickSortColumn: (colHeaderId: GridColumnProps[\"id\"]) => void;\n}\n\nexport const ColumnSortContext = createContext<ColumnSortContext | undefined>(\n undefined,\n);\n\nexport const useColumnSortContext = () => {\n const c = useContext(ColumnSortContext);\n if (!c) {\n throw new Error(\"useColumnSortContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AAaO,MAAM,iBAAoB,GAAAA,mBAAA;AAAA,EAC/B,KAAA;AACF;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,CAAA,GAAIC,iBAAW,iBAAiB,CAAA;AACtC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAAA;AAElE,EAAO,OAAA,CAAA;AACT;;;;;"}
@@ -1,7 +1,5 @@
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 styles = require('@salt-ds/styles');
7
5
  var window = require('@salt-ds/window');
@@ -14,9 +12,12 @@ function CornerTag(props) {
14
12
  css: CornerTag$1,
15
13
  window: targetWindow
16
14
  });
17
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
18
- className: props.focusOnly ? "saltGridCornerTag-focusOnly" : "saltGridCornerTag"
19
- });
15
+ return /* @__PURE__ */ jsxRuntime.jsx(
16
+ "div",
17
+ {
18
+ className: props.focusOnly ? "saltGridCornerTag-focusOnly" : "saltGridCornerTag"
19
+ }
20
+ );
20
21
  }
21
22
 
22
23
  exports.CornerTag = CornerTag;
@@ -1 +1 @@
1
- {"version":3,"file":"CornerTag.js","sources":["../src/CornerTag.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport cornerTagCss from \"./CornerTag.css\";\n\nexport interface CornerTagProps {\n focusOnly?: boolean; // Show when the parent is focused, hide when not\n}\n\nexport function CornerTag(props: CornerTagProps) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-corner-tag\",\n css: cornerTagCss,\n window: targetWindow,\n });\n\n return (\n <div\n className={\n props.focusOnly ? \"saltGridCornerTag-focusOnly\" : \"saltGridCornerTag\"\n }\n />\n );\n}\n"],"names":["useWindow","useComponentCssInjection","cornerTagCss","jsx"],"mappings":";;;;;;;;;AASO,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAA,MAAM,eAAeA,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,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EACE,KAAM,CAAA,SAAA,GAAY,6BAAgC,GAAA,mBAAA;AAAA,GAEtD,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CornerTag.js","sources":["../src/CornerTag.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport cornerTagCss from \"./CornerTag.css\";\n\nexport interface CornerTagProps {\n focusOnly?: boolean; // Show when the parent is focused, hide when not\n}\n\nexport function CornerTag(props: CornerTagProps) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-corner-tag\",\n css: cornerTagCss,\n window: targetWindow,\n });\n\n return (\n <div\n className={\n props.focusOnly ? \"saltGridCornerTag-focusOnly\" : \"saltGridCornerTag\"\n }\n />\n );\n}\n"],"names":["useWindow","useComponentCssInjection","cornerTagCss","jsx"],"mappings":";;;;;;;AASO,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAA,MAAM,eAAeA,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,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EACE,KAAM,CAAA,SAAA,GAAY,6BAAgC,GAAA;AAAA;AAAA,GAEtD;AAEJ;;;;"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var react = require('react');
6
4
 
7
5
  const CursorContext = react.createContext(
@@ -1 +1 @@
1
- {"version":3,"file":"CursorContext.js","sources":["../src/CursorContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type FocusedPart = \"header\" | \"body\";\n\nexport interface CursorContext {\n isFocused: boolean;\n cursorRowIdx: number | undefined;\n cursorColIdx: number | undefined;\n moveCursor: (part: FocusedPart, rowIdx: number, colIdx: number) => void;\n focusedPart: FocusedPart;\n headerIsFocusable: boolean;\n}\n\nexport const CursorContext = createContext<CursorContext | undefined>(\n undefined,\n);\nexport const useCursorContext = () => {\n const c = useContext(CursorContext);\n if (!c) {\n throw new Error(\"useCursorContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAaO,MAAM,aAAgB,GAAAA,mBAAA;AAAA,EAC3B,KAAA,CAAA;AACF,EAAA;AACO,MAAM,mBAAmB,MAAM;AACpC,EAAM,MAAA,CAAA,GAAIC,iBAAW,aAAa,CAAA,CAAA;AAClC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,4CAA4C,CAAA,CAAA;AAAA,GAC9D;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;;"}
1
+ {"version":3,"file":"CursorContext.js","sources":["../src/CursorContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type FocusedPart = \"header\" | \"body\";\n\nexport interface CursorContext {\n isFocused: boolean;\n cursorRowIdx: number | undefined;\n cursorColIdx: number | undefined;\n moveCursor: (part: FocusedPart, rowIdx: number, colIdx: number) => void;\n focusedPart: FocusedPart;\n headerIsFocusable: boolean;\n}\n\nexport const CursorContext = createContext<CursorContext | undefined>(\n undefined,\n);\nexport const useCursorContext = () => {\n const c = useContext(CursorContext);\n if (!c) {\n throw new Error(\"useCursorContext invoked outside of a Grid\");\n }\n return c;\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AAaO,MAAM,aAAgB,GAAAA,mBAAA;AAAA,EAC3B,KAAA;AACF;AACO,MAAM,mBAAmB,MAAM;AACpC,EAAM,MAAA,CAAA,GAAIC,iBAAW,aAAa,CAAA;AAClC,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAM,MAAA,IAAI,MAAM,4CAA4C,CAAA;AAAA;AAE9D,EAAO,OAAA,CAAA;AACT;;;;;"}