@cdx-ui/data-grid 0.3.11 → 0.3.13

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 (96) hide show
  1. package/README.md +3 -1
  2. package/coverage.svg +1 -1
  3. package/lib/commonjs/DataGrid.js +490 -81
  4. package/lib/commonjs/DataGrid.js.map +1 -1
  5. package/lib/commonjs/DataGridFilterPanel.js +547 -0
  6. package/lib/commonjs/DataGridFilterPanel.js.map +1 -0
  7. package/lib/commonjs/adapter/columnTypes.js +256 -0
  8. package/lib/commonjs/adapter/columnTypes.js.map +1 -0
  9. package/lib/commonjs/adapter/columns.js +140 -4
  10. package/lib/commonjs/adapter/columns.js.map +1 -1
  11. package/lib/commonjs/adapter/filterOperators.js +422 -0
  12. package/lib/commonjs/adapter/filterOperators.js.map +1 -0
  13. package/lib/commonjs/adapter/pinning.js +105 -0
  14. package/lib/commonjs/adapter/pinning.js.map +1 -0
  15. package/lib/commonjs/adapter/selectColumn.js +11 -0
  16. package/lib/commonjs/adapter/selectColumn.js.map +1 -1
  17. package/lib/commonjs/adapter/treeData.js +195 -0
  18. package/lib/commonjs/adapter/treeData.js.map +1 -0
  19. package/lib/commonjs/index.js +26 -0
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/numberCells.js +280 -0
  22. package/lib/commonjs/numberCells.js.map +1 -0
  23. package/lib/commonjs/styles.js +107 -1
  24. package/lib/commonjs/styles.js.map +1 -1
  25. package/lib/commonjs/types.js +39 -1
  26. package/lib/commonjs/types.js.map +1 -1
  27. package/lib/commonjs/useDataGridTable.js +234 -18
  28. package/lib/commonjs/useDataGridTable.js.map +1 -1
  29. package/lib/module/DataGrid.js +497 -88
  30. package/lib/module/DataGrid.js.map +1 -1
  31. package/lib/module/DataGridFilterPanel.js +540 -0
  32. package/lib/module/DataGridFilterPanel.js.map +1 -0
  33. package/lib/module/adapter/columnTypes.js +240 -0
  34. package/lib/module/adapter/columnTypes.js.map +1 -0
  35. package/lib/module/adapter/columns.js +137 -4
  36. package/lib/module/adapter/columns.js.map +1 -1
  37. package/lib/module/adapter/filterOperators.js +406 -0
  38. package/lib/module/adapter/filterOperators.js.map +1 -0
  39. package/lib/module/adapter/pinning.js +94 -0
  40. package/lib/module/adapter/pinning.js.map +1 -0
  41. package/lib/module/adapter/selectColumn.js +11 -1
  42. package/lib/module/adapter/selectColumn.js.map +1 -1
  43. package/lib/module/adapter/treeData.js +187 -0
  44. package/lib/module/adapter/treeData.js.map +1 -0
  45. package/lib/module/index.js +2 -0
  46. package/lib/module/index.js.map +1 -1
  47. package/lib/module/numberCells.js +275 -0
  48. package/lib/module/numberCells.js.map +1 -0
  49. package/lib/module/styles.js +106 -0
  50. package/lib/module/styles.js.map +1 -1
  51. package/lib/module/types.js +38 -0
  52. package/lib/module/types.js.map +1 -1
  53. package/lib/module/useDataGridTable.js +238 -22
  54. package/lib/module/useDataGridTable.js.map +1 -1
  55. package/lib/typescript/DataGrid.d.ts.map +1 -1
  56. package/lib/typescript/DataGridFilterPanel.d.ts +52 -0
  57. package/lib/typescript/DataGridFilterPanel.d.ts.map +1 -0
  58. package/lib/typescript/adapter/columnTypes.d.ts +32 -0
  59. package/lib/typescript/adapter/columnTypes.d.ts.map +1 -0
  60. package/lib/typescript/adapter/columns.d.ts +14 -5
  61. package/lib/typescript/adapter/columns.d.ts.map +1 -1
  62. package/lib/typescript/adapter/filterOperators.d.ts +43 -0
  63. package/lib/typescript/adapter/filterOperators.d.ts.map +1 -0
  64. package/lib/typescript/adapter/pinning.d.ts +26 -0
  65. package/lib/typescript/adapter/pinning.d.ts.map +1 -0
  66. package/lib/typescript/adapter/selectColumn.d.ts +8 -0
  67. package/lib/typescript/adapter/selectColumn.d.ts.map +1 -1
  68. package/lib/typescript/adapter/treeData.d.ts +36 -0
  69. package/lib/typescript/adapter/treeData.d.ts.map +1 -0
  70. package/lib/typescript/index.d.ts +4 -1
  71. package/lib/typescript/index.d.ts.map +1 -1
  72. package/lib/typescript/numberCells.d.ts +46 -0
  73. package/lib/typescript/numberCells.d.ts.map +1 -0
  74. package/lib/typescript/styles.d.ts +32 -0
  75. package/lib/typescript/styles.d.ts.map +1 -1
  76. package/lib/typescript/types.d.ts +154 -7
  77. package/lib/typescript/types.d.ts.map +1 -1
  78. package/lib/typescript/useDataGridTable.d.ts +40 -4
  79. package/lib/typescript/useDataGridTable.d.ts.map +1 -1
  80. package/package.json +5 -5
  81. package/src/DataGrid.tsx +745 -95
  82. package/src/DataGridFilterPanel.tsx +648 -0
  83. package/src/adapter/columnTypes.ts +327 -0
  84. package/src/adapter/columns.test.ts +75 -1
  85. package/src/adapter/columns.ts +192 -3
  86. package/src/adapter/filterOperators.test.ts +292 -0
  87. package/src/adapter/filterOperators.ts +524 -0
  88. package/src/adapter/pinning.ts +134 -0
  89. package/src/adapter/selectColumn.ts +12 -1
  90. package/src/adapter/treeData.ts +228 -0
  91. package/src/index.ts +19 -0
  92. package/src/numberCells.tsx +379 -0
  93. package/src/styles.ts +131 -0
  94. package/src/types.ts +190 -7
  95. package/src/useDataGridTable.test.ts +69 -0
  96. package/src/useDataGridTable.ts +338 -17
@@ -0,0 +1,547 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DataGridFilterPanel = DataGridFilterPanel;
7
+ exports.createDefaultFilterItem = createDefaultFilterItem;
8
+ exports.filterPlaceholder = filterPlaceholder;
9
+ exports.useDataGridFilterPanel = useDataGridFilterPanel;
10
+ var _react = require("react");
11
+ var _reactNative = require("react-native");
12
+ var _primitives = require("@cdx-ui/primitives");
13
+ var _utils = require("@cdx-ui/utils");
14
+ var _components = require("@cdx-ui/components");
15
+ var _icons = require("@cdx-ui/icons");
16
+ var _filterOperators = require("./adapter/filterOperators");
17
+ var _styles = require("./styles");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ const LOGIC_OPERATORS = [{
20
+ value: 'and',
21
+ label: 'And'
22
+ }, {
23
+ value: 'or',
24
+ label: 'Or'
25
+ }];
26
+ const BOOLEAN_FILTER_VALUES = [{
27
+ value: 'any',
28
+ label: 'any'
29
+ }, {
30
+ value: 'true',
31
+ label: 'true'
32
+ }, {
33
+ value: 'false',
34
+ label: 'false'
35
+ }];
36
+ function booleanSelectValue(value) {
37
+ if (value === true || value === 'true') {
38
+ return 'true';
39
+ }
40
+ if (value === false || value === 'false') {
41
+ return 'false';
42
+ }
43
+ return 'any';
44
+ }
45
+ function booleanFilterItem(field, operator, next) {
46
+ if (next === 'true') {
47
+ return {
48
+ field,
49
+ operator,
50
+ value: true
51
+ };
52
+ }
53
+ if (next === 'false') {
54
+ return {
55
+ field,
56
+ operator,
57
+ value: false
58
+ };
59
+ }
60
+ return {
61
+ field,
62
+ operator
63
+ };
64
+ }
65
+ function logicOperatorLabel(operator) {
66
+ return operator === 'or' ? 'Or' : 'And';
67
+ }
68
+ function filterPlaceholder(col, operator) {
69
+ if (operator === 'isAnyOf') {
70
+ return 'a, b';
71
+ }
72
+ switch (col?.type) {
73
+ case 'number':
74
+ return '0';
75
+ case 'date':
76
+ case 'dateTime':
77
+ return 'YYYY-MM-DD';
78
+ case 'boolean':
79
+ return 'true';
80
+ default:
81
+ return 'Filter value';
82
+ }
83
+ }
84
+ function isDateColumn(col) {
85
+ return col?.type === 'date' || col?.type === 'dateTime';
86
+ }
87
+ function padDatePart(value) {
88
+ return String(value).padStart(2, '0');
89
+ }
90
+
91
+ /** `DatePicker` speaks `YYYY-MM-DD`. The filter model keeps a local `Date`. */
92
+ function dateValueToPickerValue(value) {
93
+ let wire;
94
+ if (value instanceof Date && Number.isFinite(value.getTime())) {
95
+ wire = `${String(value.getFullYear())}-${padDatePart(value.getMonth() + 1)}-${padDatePart(value.getDate())}`;
96
+ } else if (typeof value === 'string' && pickerValueToDate(value.slice(0, 10))) {
97
+ wire = value.slice(0, 10);
98
+ }
99
+ return wire;
100
+ }
101
+ function pickerValueToDate(value) {
102
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
103
+ if (!match) {
104
+ return undefined;
105
+ }
106
+ const year = Number(match[1]);
107
+ const month = Number(match[2]);
108
+ const day = Number(match[3]);
109
+ const date = new Date(year, month - 1, day);
110
+ return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day ? date : undefined;
111
+ }
112
+ function FilterDateValue({
113
+ value,
114
+ accessibilityLabel,
115
+ onChange
116
+ }) {
117
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.DatePicker, {
118
+ value: dateValueToPickerValue(value),
119
+ onValueChange: next => onChange(next === undefined ? undefined : pickerValueToDate(next)),
120
+ className: "w-full gap-0",
121
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.DateField.Group, {
122
+ size: "small",
123
+ fullWidth: true,
124
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DateField.Input, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DateField.Suffix, {
125
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DatePicker.Trigger, {
126
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DatePicker.TriggerIndicator, {})
127
+ })
128
+ })]
129
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DatePicker.Popover, {
130
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DatePicker.Calendar, {
131
+ "aria-label": accessibilityLabel
132
+ })
133
+ })]
134
+ });
135
+ }
136
+ function createDefaultFilterItem(columns) {
137
+ if (columns.length === 0) {
138
+ return undefined;
139
+ }
140
+ const col = columns[0];
141
+ return {
142
+ field: col.field,
143
+ operator: (0, _filterOperators.getDefaultFilterOperator)(col.type)
144
+ };
145
+ }
146
+ function createFilterItemForField(columns, field) {
147
+ const col = field === undefined ? undefined : columns.find(candidate => candidate.field === field);
148
+ return col && col.filterable !== false ? {
149
+ field: col.field,
150
+ operator: (0, _filterOperators.getDefaultFilterOperator)(col.type)
151
+ } : undefined;
152
+ }
153
+ const FOCUSABLE_SELECTOR = 'input, textarea, button, [tabindex]:not([tabindex="-1"])';
154
+ function focusFirstControl(container) {
155
+ const element = container;
156
+ const control = element?.querySelector(FOCUSABLE_SELECTOR);
157
+ if (!control) {
158
+ return false;
159
+ }
160
+ control.focus();
161
+ return true;
162
+ }
163
+ function focusOpener(ref) {
164
+ const element = ref.current;
165
+ if (_reactNative.Platform.OS === 'web' && typeof element?.focus === 'function') {
166
+ element.focus();
167
+ }
168
+ }
169
+
170
+ /** The control that opened the panel and, for a column opener, the field it targets. */
171
+
172
+ /**
173
+ * Open state for the filter panel. Opening for a field shows the field's first item, even a
174
+ * value-less one, and leaves the model alone. When the field has none, it appends
175
+ * `{ field, operator }` and drops value-less items on other fields, as the append branch of MUI X
176
+ * `showFilterPanel(field)` does. MUI also rewrites the model when the field has an item.
177
+ */
178
+ function useDataGridFilterPanel({
179
+ columns,
180
+ filterModel,
181
+ onFilterModelChange
182
+ }) {
183
+ const [opener, setOpener] = (0, _react.useState)(null);
184
+ const requestRef = (0, _react.useRef)(0);
185
+ const openForField = (0, _react.useCallback)((field, ref) => {
186
+ const item = createFilterItemForField(columns, field);
187
+ if (!item) {
188
+ return;
189
+ }
190
+ if (!filterModel.some(candidate => candidate.field === field)) {
191
+ onFilterModelChange([...filterModel.filter(_filterOperators.isActiveFilterItem), item]);
192
+ }
193
+ requestRef.current += 1;
194
+ setOpener({
195
+ ref,
196
+ field,
197
+ request: requestRef.current
198
+ });
199
+ }, [columns, filterModel, onFilterModelChange]);
200
+ const toggle = (0, _react.useCallback)(ref => {
201
+ setOpener(current => current?.ref === ref ? null : {
202
+ ref
203
+ });
204
+ }, []);
205
+ const close = (0, _react.useCallback)(({
206
+ restoreFocus
207
+ }) => {
208
+ if (opener && restoreFocus) {
209
+ focusOpener(opener.ref);
210
+ }
211
+ setOpener(null);
212
+ }, [opener]);
213
+ return {
214
+ opener,
215
+ openForField,
216
+ toggle,
217
+ close
218
+ };
219
+ }
220
+ function resolveItemOperator(col, item) {
221
+ const operators = (0, _filterOperators.getGridFilterOperators)(col?.type);
222
+ return item.operator !== undefined && operators.includes(item.operator) ? item.operator : (0, _filterOperators.getDefaultFilterOperator)(col?.type);
223
+ }
224
+ function itemWithValueText(col, field, operator, text) {
225
+ if (!(0, _filterOperators.filterOperatorNeedsValue)(operator)) {
226
+ return {
227
+ field,
228
+ operator
229
+ };
230
+ }
231
+ return {
232
+ field,
233
+ operator,
234
+ value: text.trim().length > 0 ? (0, _filterOperators.headerFilterValueFromText)(col, operator, text) : undefined
235
+ };
236
+ }
237
+ function FilterPanelRow({
238
+ index,
239
+ operatorFieldRef,
240
+ valueFieldRef,
241
+ item,
242
+ columns,
243
+ logicOperator,
244
+ onLogicOperatorChange,
245
+ onChange,
246
+ onRemove
247
+ }) {
248
+ const col = columns.find(candidate => candidate.field === item.field);
249
+ const operator = resolveItemOperator(col, item);
250
+ const operators = (0, _filterOperators.getGridFilterOperators)(col?.type);
251
+ const valueText = (0, _filterOperators.filterValueToInputText)(item.value);
252
+ const rowLabel = `filter ${(index + 1).toString()}`;
253
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
254
+ className: (0, _styles.dataGridFilterPanelRowVariants)(),
255
+ accessibilityRole: "none",
256
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.IconButton, {
257
+ as: _icons.Close,
258
+ variant: "ghost",
259
+ color: "neutral",
260
+ size: "small",
261
+ iconClassName: "size-4",
262
+ accessibilityLabel: `Remove ${rowLabel}`,
263
+ onPress: onRemove
264
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
265
+ className: (0, _styles.dataGridFilterPanelLogicVariants)(),
266
+ children: index === 1 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Select, {
267
+ items: [...LOGIC_OPERATORS],
268
+ value: logicOperator,
269
+ onValueChange: next => {
270
+ const nextOperator = LOGIC_OPERATORS.find(candidate => candidate.value === next);
271
+ if (nextOperator) {
272
+ onLogicOperatorChange(nextOperator.value);
273
+ }
274
+ },
275
+ size: "small",
276
+ className: "w-full",
277
+ accessibilityLabel: "Logic operator",
278
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Trigger, {
279
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Value, {})
280
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Content, {
281
+ children: LOGIC_OPERATORS.map(candidate => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Item, {
282
+ value: candidate.value,
283
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.ItemLabel, {
284
+ children: candidate.label
285
+ })
286
+ }, candidate.value))
287
+ })]
288
+ }) : index > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Text, {
289
+ className: "px-3 text-sm text-content-secondary",
290
+ children: logicOperatorLabel(logicOperator)
291
+ }) : null
292
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
293
+ className: (0, _styles.dataGridFilterPanelFieldVariants)({
294
+ size: 'column'
295
+ }),
296
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Text, {
297
+ className: "text-xs text-content-secondary",
298
+ children: "Columns"
299
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Select, {
300
+ items: columns.map(candidate => ({
301
+ value: candidate.field,
302
+ label: candidate.headerName ?? candidate.field
303
+ })),
304
+ value: item.field,
305
+ onValueChange: next => {
306
+ const nextCol = columns.find(candidate => candidate.field === next);
307
+ if (nextCol && nextCol.field !== item.field) {
308
+ onChange({
309
+ field: nextCol.field,
310
+ operator: (0, _filterOperators.getDefaultFilterOperator)(nextCol.type)
311
+ });
312
+ }
313
+ },
314
+ size: "small",
315
+ className: (0, _styles.dataGridFilterPanelColumnVariants)(),
316
+ accessibilityLabel: `Column for ${rowLabel}`,
317
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Trigger, {
318
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Value, {})
319
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Content, {
320
+ children: columns.map(candidate => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Item, {
321
+ value: candidate.field,
322
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.ItemLabel, {
323
+ children: candidate.headerName ?? candidate.field
324
+ })
325
+ }, candidate.field))
326
+ })]
327
+ })]
328
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
329
+ ref: operatorFieldRef,
330
+ className: (0, _styles.dataGridFilterPanelFieldVariants)({
331
+ size: 'operator'
332
+ }),
333
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Text, {
334
+ className: "text-xs text-content-secondary",
335
+ children: "Operator"
336
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Select, {
337
+ items: operators.map(candidate => ({
338
+ value: candidate,
339
+ label: (0, _filterOperators.getFilterOperatorLabel)(candidate)
340
+ })),
341
+ value: operator,
342
+ onValueChange: next => {
343
+ const nextOperator = operators.find(candidate => candidate === next);
344
+ if (nextOperator === undefined) {
345
+ return;
346
+ }
347
+ if (!(0, _filterOperators.filterOperatorNeedsValue)(nextOperator)) {
348
+ onChange({
349
+ field: item.field,
350
+ operator: nextOperator
351
+ });
352
+ } else if (isDateColumn(col)) {
353
+ onChange({
354
+ field: item.field,
355
+ operator: nextOperator,
356
+ value: item.value
357
+ });
358
+ } else if (col?.type === 'boolean') {
359
+ onChange(booleanFilterItem(item.field, nextOperator, booleanSelectValue(item.value)));
360
+ } else {
361
+ onChange(itemWithValueText(col, item.field, nextOperator, valueText));
362
+ }
363
+ },
364
+ size: "small",
365
+ className: (0, _styles.dataGridFilterPanelOperatorVariants)(),
366
+ accessibilityLabel: `Operator for ${rowLabel}`,
367
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Trigger, {
368
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Value, {})
369
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Content, {
370
+ children: operators.map(candidate => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Item, {
371
+ value: candidate,
372
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.ItemLabel, {
373
+ children: (0, _filterOperators.getFilterOperatorLabel)(candidate)
374
+ })
375
+ }, candidate))
376
+ })]
377
+ })]
378
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
379
+ ref: valueFieldRef,
380
+ className: (0, _styles.dataGridFilterPanelFieldVariants)({
381
+ size: 'value'
382
+ }),
383
+ children: (0, _filterOperators.filterOperatorNeedsValue)(operator) ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
384
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Text, {
385
+ className: "text-xs text-content-secondary",
386
+ children: "Value"
387
+ }), isDateColumn(col) ? /*#__PURE__*/(0, _jsxRuntime.jsx)(FilterDateValue, {
388
+ value: item.value,
389
+ accessibilityLabel: `Value for ${rowLabel}`,
390
+ onChange: date => onChange(date === undefined ? {
391
+ field: item.field,
392
+ operator
393
+ } : {
394
+ field: item.field,
395
+ operator,
396
+ value: date
397
+ })
398
+ }) : col?.type === 'boolean' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Select, {
399
+ items: [...BOOLEAN_FILTER_VALUES],
400
+ value: booleanSelectValue(item.value),
401
+ onValueChange: next => onChange(booleanFilterItem(item.field, operator, next)),
402
+ size: "small",
403
+ className: (0, _styles.dataGridFilterPanelValueVariants)(),
404
+ accessibilityLabel: `Value for ${rowLabel}`,
405
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Trigger, {
406
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Value, {})
407
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Content, {
408
+ children: BOOLEAN_FILTER_VALUES.map(candidate => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.Item, {
409
+ value: candidate.value,
410
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select.ItemLabel, {
411
+ children: candidate.label
412
+ })
413
+ }, candidate.value))
414
+ })]
415
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Input, {
416
+ size: "small",
417
+ className: (0, _styles.dataGridFilterPanelValueVariants)(),
418
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Input.Field, {
419
+ value: valueText,
420
+ onChangeText: text => onChange(itemWithValueText(col, item.field, operator, text)),
421
+ placeholder: filterPlaceholder(col, operator),
422
+ accessibilityLabel: `Value for ${rowLabel}`
423
+ })
424
+ })]
425
+ }) : null
426
+ })]
427
+ });
428
+ }
429
+ function DataGridFilterPanel({
430
+ columns,
431
+ filterModel,
432
+ onFilterModelChange,
433
+ logicOperator,
434
+ onLogicOperatorChange,
435
+ onClose,
436
+ opener
437
+ }) {
438
+ const anchored = opener.field !== undefined;
439
+ const panelRef = (0, _react.useRef)(null);
440
+ const operatorFieldRef = (0, _react.useRef)(null);
441
+ const valueFieldRef = (0, _react.useRef)(null);
442
+ const focusedRequestRef = (0, _react.useRef)(undefined);
443
+ const {
444
+ floatingRef,
445
+ onFloatingLayout,
446
+ style: anchoredStyle,
447
+ position
448
+ } = (0, _primitives.useAnchoredOverlay)(opener.ref, anchored, {
449
+ placement: 'bottom-start',
450
+ collisionBehavior: 'flip-shift',
451
+ width: 'content'
452
+ });
453
+ const dismiss = () => onClose({
454
+ restoreFocus: false
455
+ });
456
+ const closeAndRestoreFocus = () => onClose({
457
+ restoreFocus: true
458
+ });
459
+ (0, _primitives.useDismissOverlay)(true, panelRef, [opener.ref], dismiss);
460
+ (0, _primitives.useEscapeKey)(true, closeAndRestoreFocus);
461
+ const defaultItem = createDefaultFilterItem(columns);
462
+ const placeholderItem = createFilterItemForField(columns, opener.field) ?? defaultItem;
463
+ const items = filterModel.length > 0 ? filterModel : placeholderItem ? [placeholderItem] : [];
464
+ const targetIndex = opener.field === undefined ? -1 : items.findIndex(item => item.field === opener.field);
465
+ const targetItem = targetIndex >= 0 ? items[targetIndex] : undefined;
466
+ const targetNeedsValue = targetItem !== undefined && (0, _filterOperators.filterOperatorNeedsValue)(resolveItemOperator(columns.find(candidate => candidate.field === targetItem.field), targetItem));
467
+
468
+ // Rows are keyed by index, so an appended target row can mount a render after the open request.
469
+ // Retry on each commit until the target control exists, then stop for that request.
470
+ (0, _react.useEffect)(() => {
471
+ if (_reactNative.Platform.OS !== 'web' || opener.request === undefined || focusedRequestRef.current === opener.request || targetItem === undefined) {
472
+ return;
473
+ }
474
+ if (focusFirstControl((targetNeedsValue ? valueFieldRef : operatorFieldRef).current)) {
475
+ focusedRequestRef.current = opener.request;
476
+ }
477
+ });
478
+ const replaceItem = (index, next) => {
479
+ onFilterModelChange(items.map((item, itemIndex) => itemIndex === index ? next : item));
480
+ };
481
+ const removeItem = index => {
482
+ const next = items.filter((_, itemIndex) => itemIndex !== index);
483
+ onFilterModelChange(next);
484
+ if (next.length === 0) {
485
+ closeAndRestoreFocus();
486
+ }
487
+ };
488
+ const panel = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
489
+ ref: anchored ? (0, _utils.mergeRefs)(panelRef, floatingRef) : panelRef,
490
+ className: (0, _styles.dataGridFilterPanelVariants)({
491
+ anchored
492
+ }),
493
+ style: anchored ? [anchoredStyle, position ? {
494
+ maxWidth: position.availableWidth
495
+ } : undefined] : undefined,
496
+ onLayout: anchored ? onFloatingLayout : undefined,
497
+ accessibilityLabel: "Filters",
498
+ testID: "data-grid-filter-panel",
499
+ children: [items.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(FilterPanelRow, {
500
+ index: index,
501
+ operatorFieldRef: index === targetIndex ? operatorFieldRef : undefined,
502
+ valueFieldRef: index === targetIndex ? valueFieldRef : undefined,
503
+ item: item,
504
+ columns: columns,
505
+ logicOperator: logicOperator,
506
+ onLogicOperatorChange: onLogicOperatorChange,
507
+ onChange: next => replaceItem(index, next),
508
+ onRemove: () => removeItem(index)
509
+ }, index)), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
510
+ className: (0, _styles.dataGridFilterPanelFooterVariants)(),
511
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Button, {
512
+ variant: "ghost",
513
+ color: "action",
514
+ size: "small",
515
+ isDisabled: defaultItem === undefined,
516
+ onPress: () => {
517
+ if (defaultItem) {
518
+ onFilterModelChange([...items, defaultItem]);
519
+ }
520
+ },
521
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button.Icon, {
522
+ as: _icons.Add
523
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button.Label, {
524
+ children: "Add filter"
525
+ })]
526
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Button, {
527
+ variant: "ghost",
528
+ color: "action",
529
+ size: "small",
530
+ onPress: () => {
531
+ onFilterModelChange([]);
532
+ closeAndRestoreFocus();
533
+ },
534
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button.Icon, {
535
+ as: _icons.Delete
536
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button.Label, {
537
+ children: "Remove all"
538
+ })]
539
+ })]
540
+ })]
541
+ });
542
+ return anchored ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.OverlayContainer, {
543
+ onDismiss: dismiss,
544
+ children: panel
545
+ }) : panel;
546
+ }
547
+ //# sourceMappingURL=DataGridFilterPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_primitives","_utils","_components","_icons","_filterOperators","_styles","_jsxRuntime","LOGIC_OPERATORS","value","label","BOOLEAN_FILTER_VALUES","booleanSelectValue","booleanFilterItem","field","operator","next","logicOperatorLabel","filterPlaceholder","col","type","isDateColumn","padDatePart","String","padStart","dateValueToPickerValue","wire","Date","Number","isFinite","getTime","getFullYear","getMonth","getDate","pickerValueToDate","slice","match","exec","undefined","year","month","day","date","FilterDateValue","accessibilityLabel","onChange","jsxs","DatePicker","onValueChange","className","children","DateField","Group","size","fullWidth","jsx","Input","Suffix","Trigger","TriggerIndicator","Popover","Calendar","createDefaultFilterItem","columns","length","getDefaultFilterOperator","createFilterItemForField","find","candidate","filterable","FOCUSABLE_SELECTOR","focusFirstControl","container","element","control","querySelector","focus","focusOpener","ref","current","Platform","OS","useDataGridFilterPanel","filterModel","onFilterModelChange","opener","setOpener","useState","requestRef","useRef","openForField","useCallback","item","some","filter","isActiveFilterItem","request","toggle","close","restoreFocus","resolveItemOperator","operators","getGridFilterOperators","includes","itemWithValueText","text","filterOperatorNeedsValue","trim","headerFilterValueFromText","FilterPanelRow","index","operatorFieldRef","valueFieldRef","logicOperator","onLogicOperatorChange","onRemove","valueText","filterValueToInputText","rowLabel","toString","View","dataGridFilterPanelRowVariants","accessibilityRole","IconButton","as","Close","variant","color","iconClassName","onPress","dataGridFilterPanelLogicVariants","Select","items","nextOperator","Value","Content","map","Item","ItemLabel","Text","dataGridFilterPanelFieldVariants","headerName","nextCol","dataGridFilterPanelColumnVariants","getFilterOperatorLabel","dataGridFilterPanelOperatorVariants","Fragment","dataGridFilterPanelValueVariants","Field","onChangeText","placeholder","DataGridFilterPanel","onClose","anchored","panelRef","focusedRequestRef","floatingRef","onFloatingLayout","style","anchoredStyle","position","useAnchoredOverlay","placement","collisionBehavior","width","dismiss","closeAndRestoreFocus","useDismissOverlay","useEscapeKey","defaultItem","placeholderItem","targetIndex","findIndex","targetItem","targetNeedsValue","useEffect","replaceItem","itemIndex","removeItem","_","panel","mergeRefs","dataGridFilterPanelVariants","maxWidth","availableWidth","onLayout","testID","dataGridFilterPanelFooterVariants","Button","isDisabled","Icon","Add","Label","Delete","OverlayContainer","onDismiss"],"sourceRoot":"../../src","sources":["DataGridFilterPanel.tsx"],"mappings":"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","ignoreList":[]}