@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.
- package/README.md +3 -1
- package/coverage.svg +1 -1
- package/lib/commonjs/DataGrid.js +490 -81
- package/lib/commonjs/DataGrid.js.map +1 -1
- package/lib/commonjs/DataGridFilterPanel.js +547 -0
- package/lib/commonjs/DataGridFilterPanel.js.map +1 -0
- package/lib/commonjs/adapter/columnTypes.js +256 -0
- package/lib/commonjs/adapter/columnTypes.js.map +1 -0
- package/lib/commonjs/adapter/columns.js +140 -4
- package/lib/commonjs/adapter/columns.js.map +1 -1
- package/lib/commonjs/adapter/filterOperators.js +422 -0
- package/lib/commonjs/adapter/filterOperators.js.map +1 -0
- package/lib/commonjs/adapter/pinning.js +105 -0
- package/lib/commonjs/adapter/pinning.js.map +1 -0
- package/lib/commonjs/adapter/selectColumn.js +11 -0
- package/lib/commonjs/adapter/selectColumn.js.map +1 -1
- package/lib/commonjs/adapter/treeData.js +195 -0
- package/lib/commonjs/adapter/treeData.js.map +1 -0
- package/lib/commonjs/index.js +26 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/numberCells.js +280 -0
- package/lib/commonjs/numberCells.js.map +1 -0
- package/lib/commonjs/styles.js +107 -1
- package/lib/commonjs/styles.js.map +1 -1
- package/lib/commonjs/types.js +39 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useDataGridTable.js +234 -18
- package/lib/commonjs/useDataGridTable.js.map +1 -1
- package/lib/module/DataGrid.js +497 -88
- package/lib/module/DataGrid.js.map +1 -1
- package/lib/module/DataGridFilterPanel.js +540 -0
- package/lib/module/DataGridFilterPanel.js.map +1 -0
- package/lib/module/adapter/columnTypes.js +240 -0
- package/lib/module/adapter/columnTypes.js.map +1 -0
- package/lib/module/adapter/columns.js +137 -4
- package/lib/module/adapter/columns.js.map +1 -1
- package/lib/module/adapter/filterOperators.js +406 -0
- package/lib/module/adapter/filterOperators.js.map +1 -0
- package/lib/module/adapter/pinning.js +94 -0
- package/lib/module/adapter/pinning.js.map +1 -0
- package/lib/module/adapter/selectColumn.js +11 -1
- package/lib/module/adapter/selectColumn.js.map +1 -1
- package/lib/module/adapter/treeData.js +187 -0
- package/lib/module/adapter/treeData.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/numberCells.js +275 -0
- package/lib/module/numberCells.js.map +1 -0
- package/lib/module/styles.js +106 -0
- package/lib/module/styles.js.map +1 -1
- package/lib/module/types.js +38 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/useDataGridTable.js +238 -22
- package/lib/module/useDataGridTable.js.map +1 -1
- package/lib/typescript/DataGrid.d.ts.map +1 -1
- package/lib/typescript/DataGridFilterPanel.d.ts +52 -0
- package/lib/typescript/DataGridFilterPanel.d.ts.map +1 -0
- package/lib/typescript/adapter/columnTypes.d.ts +32 -0
- package/lib/typescript/adapter/columnTypes.d.ts.map +1 -0
- package/lib/typescript/adapter/columns.d.ts +14 -5
- package/lib/typescript/adapter/columns.d.ts.map +1 -1
- package/lib/typescript/adapter/filterOperators.d.ts +43 -0
- package/lib/typescript/adapter/filterOperators.d.ts.map +1 -0
- package/lib/typescript/adapter/pinning.d.ts +26 -0
- package/lib/typescript/adapter/pinning.d.ts.map +1 -0
- package/lib/typescript/adapter/selectColumn.d.ts +8 -0
- package/lib/typescript/adapter/selectColumn.d.ts.map +1 -1
- package/lib/typescript/adapter/treeData.d.ts +36 -0
- package/lib/typescript/adapter/treeData.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +4 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/numberCells.d.ts +46 -0
- package/lib/typescript/numberCells.d.ts.map +1 -0
- package/lib/typescript/styles.d.ts +32 -0
- package/lib/typescript/styles.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +154 -7
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/useDataGridTable.d.ts +40 -4
- package/lib/typescript/useDataGridTable.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/DataGrid.tsx +745 -95
- package/src/DataGridFilterPanel.tsx +648 -0
- package/src/adapter/columnTypes.ts +327 -0
- package/src/adapter/columns.test.ts +75 -1
- package/src/adapter/columns.ts +192 -3
- package/src/adapter/filterOperators.test.ts +292 -0
- package/src/adapter/filterOperators.ts +524 -0
- package/src/adapter/pinning.ts +134 -0
- package/src/adapter/selectColumn.ts +12 -1
- package/src/adapter/treeData.ts +228 -0
- package/src/index.ts +19 -0
- package/src/numberCells.tsx +379 -0
- package/src/styles.ts +131 -0
- package/src/types.ts +190 -7
- package/src/useDataGridTable.test.ts +69 -0
- 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":[]}
|