@cdx-ui/data-grid 0.3.10 → 0.3.12

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 (82) hide show
  1. package/README.md +3 -1
  2. package/coverage.svg +1 -1
  3. package/lib/commonjs/DataGrid.js +232 -62
  4. package/lib/commonjs/DataGrid.js.map +1 -1
  5. package/lib/commonjs/DataGridFilterPanel.js +420 -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 +132 -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 +101 -0
  14. package/lib/commonjs/adapter/pinning.js.map +1 -0
  15. package/lib/commonjs/index.js +26 -0
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/commonjs/numberCells.js +280 -0
  18. package/lib/commonjs/numberCells.js.map +1 -0
  19. package/lib/commonjs/styles.js +61 -1
  20. package/lib/commonjs/styles.js.map +1 -1
  21. package/lib/commonjs/types.js +29 -1
  22. package/lib/commonjs/types.js.map +1 -1
  23. package/lib/commonjs/useDataGridTable.js +98 -13
  24. package/lib/commonjs/useDataGridTable.js.map +1 -1
  25. package/lib/module/DataGrid.js +237 -67
  26. package/lib/module/DataGrid.js.map +1 -1
  27. package/lib/module/DataGridFilterPanel.js +414 -0
  28. package/lib/module/DataGridFilterPanel.js.map +1 -0
  29. package/lib/module/adapter/columnTypes.js +240 -0
  30. package/lib/module/adapter/columnTypes.js.map +1 -0
  31. package/lib/module/adapter/columns.js +129 -4
  32. package/lib/module/adapter/columns.js.map +1 -1
  33. package/lib/module/adapter/filterOperators.js +406 -0
  34. package/lib/module/adapter/filterOperators.js.map +1 -0
  35. package/lib/module/adapter/pinning.js +90 -0
  36. package/lib/module/adapter/pinning.js.map +1 -0
  37. package/lib/module/index.js +2 -0
  38. package/lib/module/index.js.map +1 -1
  39. package/lib/module/numberCells.js +275 -0
  40. package/lib/module/numberCells.js.map +1 -0
  41. package/lib/module/styles.js +60 -0
  42. package/lib/module/styles.js.map +1 -1
  43. package/lib/module/types.js +28 -0
  44. package/lib/module/types.js.map +1 -1
  45. package/lib/module/useDataGridTable.js +99 -14
  46. package/lib/module/useDataGridTable.js.map +1 -1
  47. package/lib/typescript/DataGrid.d.ts.map +1 -1
  48. package/lib/typescript/DataGridFilterPanel.d.ts +17 -0
  49. package/lib/typescript/DataGridFilterPanel.d.ts.map +1 -0
  50. package/lib/typescript/adapter/columnTypes.d.ts +32 -0
  51. package/lib/typescript/adapter/columnTypes.d.ts.map +1 -0
  52. package/lib/typescript/adapter/columns.d.ts +14 -5
  53. package/lib/typescript/adapter/columns.d.ts.map +1 -1
  54. package/lib/typescript/adapter/filterOperators.d.ts +43 -0
  55. package/lib/typescript/adapter/filterOperators.d.ts.map +1 -0
  56. package/lib/typescript/adapter/pinning.d.ts +25 -0
  57. package/lib/typescript/adapter/pinning.d.ts.map +1 -0
  58. package/lib/typescript/index.d.ts +4 -1
  59. package/lib/typescript/index.d.ts.map +1 -1
  60. package/lib/typescript/numberCells.d.ts +46 -0
  61. package/lib/typescript/numberCells.d.ts.map +1 -0
  62. package/lib/typescript/styles.d.ts +21 -0
  63. package/lib/typescript/styles.d.ts.map +1 -1
  64. package/lib/typescript/types.d.ts +86 -7
  65. package/lib/typescript/types.d.ts.map +1 -1
  66. package/lib/typescript/useDataGridTable.d.ts +18 -4
  67. package/lib/typescript/useDataGridTable.d.ts.map +1 -1
  68. package/package.json +5 -5
  69. package/src/DataGrid.tsx +377 -67
  70. package/src/DataGridFilterPanel.tsx +477 -0
  71. package/src/adapter/columnTypes.ts +327 -0
  72. package/src/adapter/columns.test.ts +75 -1
  73. package/src/adapter/columns.ts +178 -3
  74. package/src/adapter/filterOperators.test.ts +292 -0
  75. package/src/adapter/filterOperators.ts +524 -0
  76. package/src/adapter/pinning.ts +125 -0
  77. package/src/index.ts +15 -0
  78. package/src/numberCells.tsx +379 -0
  79. package/src/styles.ts +75 -0
  80. package/src/types.ts +114 -7
  81. package/src/useDataGridTable.test.ts +69 -0
  82. package/src/useDataGridTable.ts +127 -8
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+
3
+ import { View } from 'react-native';
4
+ import { Text } from '@cdx-ui/components';
5
+ import { ArrowDropDown, ArrowDropUp, TrendingDown, TrendingFlat, TrendingUp } from '@cdx-ui/icons';
6
+ import { cn } from '@cdx-ui/utils';
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ /** Unicode minus (U+2212). The spec requires this character, not a hyphen. */
9
+ const MINUS = '\u2212';
10
+ const defaultNumberFormat = new Intl.NumberFormat(undefined, {
11
+ maximumFractionDigits: 20
12
+ });
13
+ const TONE_CLASS = {
14
+ success: 'text-content-success',
15
+ danger: 'text-content-danger',
16
+ neutral: 'text-content-primary'
17
+ };
18
+ const ARROW_SLOT = {
19
+ default: 'h-5 w-3.5 items-center justify-center overflow-hidden',
20
+ compact: 'h-4 w-3 items-center justify-center overflow-hidden'
21
+ };
22
+ const ARROW_SIZE = {
23
+ default: 20,
24
+ compact: 16
25
+ };
26
+ const TREND_SIZE = {
27
+ default: 14,
28
+ compact: 12
29
+ };
30
+ function toFiniteNumber(value) {
31
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
32
+ }
33
+ function columnValueFormatter(format) {
34
+ if (!format) {
35
+ return undefined;
36
+ }
37
+ return value => {
38
+ const numeric = toFiniteNumber(value);
39
+ return numeric == null ? '' : format(numeric);
40
+ };
41
+ }
42
+ function formatRaw(value, row, col) {
43
+ const formatted = col.valueFormatter?.(value, row, col);
44
+ if (typeof formatted === 'string' && formatted.length > 0) {
45
+ return formatted;
46
+ }
47
+ return defaultNumberFormat.format(value);
48
+ }
49
+ function unsigned(formatted) {
50
+ const withoutSign = formatted.replace(/^[-−+]\s*/, '');
51
+ if (withoutSign.startsWith('(') && withoutSign.endsWith(')')) {
52
+ return withoutSign.slice(1, -1);
53
+ }
54
+ return withoutSign;
55
+ }
56
+ function polarityOf(value) {
57
+ if (value > 0) {
58
+ return 'positive';
59
+ }
60
+ if (value < 0) {
61
+ return 'negative';
62
+ }
63
+ return 'neutral';
64
+ }
65
+ function directionOf(value) {
66
+ if (value > 0) {
67
+ return 'increase';
68
+ }
69
+ if (value < 0) {
70
+ return 'decrease';
71
+ }
72
+ return 'flat';
73
+ }
74
+ function polarityTone(polarity) {
75
+ if (polarity === 'positive') {
76
+ return 'success';
77
+ }
78
+ if (polarity === 'negative') {
79
+ return 'danger';
80
+ }
81
+ return 'neutral';
82
+ }
83
+ function deltaTone(direction, increaseIsGood) {
84
+ if (direction === 'flat') {
85
+ return 'neutral';
86
+ }
87
+ const favorable = direction === 'increase' ? increaseIsGood : !increaseIsGood;
88
+ return favorable ? 'success' : 'danger';
89
+ }
90
+ function polarityLabel(polarity) {
91
+ if (polarity === 'positive') {
92
+ return 'Positive';
93
+ }
94
+ if (polarity === 'negative') {
95
+ return 'Negative';
96
+ }
97
+ return 'Neutral';
98
+ }
99
+ function directionLabel(direction) {
100
+ if (direction === 'increase') {
101
+ return 'Increase';
102
+ }
103
+ if (direction === 'decrease') {
104
+ return 'Decrease';
105
+ }
106
+ return 'No change';
107
+ }
108
+ function NumberReadout({
109
+ label,
110
+ display,
111
+ tone,
112
+ density,
113
+ children
114
+ }) {
115
+ return /*#__PURE__*/_jsxs(View, {
116
+ className: "relative flex-row items-center gap-0.5",
117
+ children: [/*#__PURE__*/_jsx(Text, {
118
+ className: "absolute h-px w-px overflow-hidden opacity-0",
119
+ children: label
120
+ }), /*#__PURE__*/_jsxs(View, {
121
+ "aria-hidden": true,
122
+ accessibilityElementsHidden: true,
123
+ importantForAccessibility: "no-hide-descendants",
124
+ className: "flex-row items-center gap-0.5",
125
+ children: [children, /*#__PURE__*/_jsx(Text, {
126
+ color: tone === 'neutral' ? 'primary' : tone,
127
+ size: density === 'compact' ? 'sm' : 'md',
128
+ children: display
129
+ })]
130
+ })]
131
+ });
132
+ }
133
+ function ToneIcon({
134
+ icon: Icon,
135
+ tone,
136
+ size,
137
+ slotClassName
138
+ }) {
139
+ return /*#__PURE__*/_jsx(View, {
140
+ className: cn(TONE_CLASS[tone], slotClassName),
141
+ children: /*#__PURE__*/_jsx(Icon, {
142
+ size: size
143
+ })
144
+ });
145
+ }
146
+ function PolarityNumberCell({
147
+ value,
148
+ row,
149
+ col,
150
+ density
151
+ }) {
152
+ const numeric = toFiniteNumber(value);
153
+ if (numeric == null) {
154
+ return null;
155
+ }
156
+ const polarity = polarityOf(numeric);
157
+ const magnitude = unsigned(formatRaw(numeric, row, col));
158
+ const display = polarity === 'negative' ? `${MINUS}${magnitude}` : magnitude;
159
+ return /*#__PURE__*/_jsx(NumberReadout, {
160
+ label: `${polarityLabel(polarity)} ${magnitude}`,
161
+ display: display,
162
+ tone: polarityTone(polarity),
163
+ density: density
164
+ });
165
+ }
166
+ function DeltaSymbol({
167
+ direction,
168
+ tone,
169
+ density,
170
+ symbol
171
+ }) {
172
+ if (symbol === 'sign') {
173
+ return null;
174
+ }
175
+ if (symbol === 'arrow') {
176
+ if (direction === 'flat') {
177
+ return /*#__PURE__*/_jsx(View, {
178
+ className: ARROW_SLOT[density]
179
+ });
180
+ }
181
+ return /*#__PURE__*/_jsx(ToneIcon, {
182
+ icon: direction === 'increase' ? ArrowDropUp : ArrowDropDown,
183
+ tone: tone,
184
+ size: ARROW_SIZE[density],
185
+ slotClassName: ARROW_SLOT[density]
186
+ });
187
+ }
188
+ const icon = direction === 'increase' ? TrendingUp : direction === 'decrease' ? TrendingDown : TrendingFlat;
189
+ return /*#__PURE__*/_jsx(ToneIcon, {
190
+ icon: icon,
191
+ tone: tone,
192
+ size: TREND_SIZE[density]
193
+ });
194
+ }
195
+ function DeltaNumberCell({
196
+ value,
197
+ row,
198
+ col,
199
+ density,
200
+ increaseIsGood,
201
+ symbol
202
+ }) {
203
+ const numeric = toFiniteNumber(value);
204
+ if (numeric == null) {
205
+ return null;
206
+ }
207
+ const direction = directionOf(numeric);
208
+ const tone = deltaTone(direction, increaseIsGood);
209
+ const magnitude = unsigned(formatRaw(numeric, row, col));
210
+ let display = magnitude;
211
+ if (symbol === 'sign' && direction === 'increase') {
212
+ display = `+${magnitude}`;
213
+ } else if (symbol === 'sign' && direction === 'decrease') {
214
+ display = `${MINUS}${magnitude}`;
215
+ }
216
+ return /*#__PURE__*/_jsx(NumberReadout, {
217
+ label: `${directionLabel(direction)} ${magnitude}`,
218
+ display: display,
219
+ tone: tone,
220
+ density: density,
221
+ children: /*#__PURE__*/_jsx(DeltaSymbol, {
222
+ direction: direction,
223
+ tone: tone,
224
+ density: density,
225
+ symbol: symbol
226
+ })
227
+ });
228
+ }
229
+ export function gridPolarityNumberColDef(options = {}) {
230
+ const density = options.density ?? 'default';
231
+ return {
232
+ type: 'number',
233
+ align: 'end',
234
+ headerAlign: 'end',
235
+ ...(options.valueFormatter ? {
236
+ valueFormatter: columnValueFormatter(options.valueFormatter)
237
+ } : {}),
238
+ renderCell: ({
239
+ value,
240
+ row,
241
+ col
242
+ }) => /*#__PURE__*/_jsx(PolarityNumberCell, {
243
+ value: value,
244
+ row: row,
245
+ col: col,
246
+ density: density
247
+ })
248
+ };
249
+ }
250
+ export function gridDeltaNumberColDef(options = {}) {
251
+ const density = options.density ?? 'default';
252
+ const increaseIsGood = options.increaseIsGood ?? true;
253
+ const symbol = options.symbol ?? 'arrow';
254
+ return {
255
+ type: 'number',
256
+ align: 'end',
257
+ headerAlign: 'end',
258
+ ...(options.valueFormatter ? {
259
+ valueFormatter: columnValueFormatter(options.valueFormatter)
260
+ } : {}),
261
+ renderCell: ({
262
+ value,
263
+ row,
264
+ col
265
+ }) => /*#__PURE__*/_jsx(DeltaNumberCell, {
266
+ value: value,
267
+ row: row,
268
+ col: col,
269
+ density: density,
270
+ increaseIsGood: increaseIsGood,
271
+ symbol: symbol
272
+ })
273
+ };
274
+ }
275
+ //# sourceMappingURL=numberCells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","Text","ArrowDropDown","ArrowDropUp","TrendingDown","TrendingFlat","TrendingUp","cn","jsx","_jsx","jsxs","_jsxs","MINUS","defaultNumberFormat","Intl","NumberFormat","undefined","maximumFractionDigits","TONE_CLASS","success","danger","neutral","ARROW_SLOT","default","compact","ARROW_SIZE","TREND_SIZE","toFiniteNumber","value","Number","isFinite","columnValueFormatter","format","numeric","formatRaw","row","col","formatted","valueFormatter","length","unsigned","withoutSign","replace","startsWith","endsWith","slice","polarityOf","directionOf","polarityTone","polarity","deltaTone","direction","increaseIsGood","favorable","polarityLabel","directionLabel","NumberReadout","label","display","tone","density","children","className","accessibilityElementsHidden","importantForAccessibility","color","size","ToneIcon","icon","Icon","slotClassName","PolarityNumberCell","magnitude","DeltaSymbol","symbol","DeltaNumberCell","gridPolarityNumberColDef","options","type","align","headerAlign","renderCell","gridDeltaNumberColDef"],"sourceRoot":"../../src","sources":["numberCells.tsx"],"mappings":"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","ignoreList":[]}
@@ -35,6 +35,47 @@ export const dataGridMainVariants = cva('relative min-h-0 w-full min-w-0 max-w-f
35
35
  overlay: false
36
36
  }
37
37
  });
38
+
39
+ /**
40
+ * Opaque sticky fill so pinned cells cover scrolled content.
41
+ * Body hover matches the row's 50% secondary tint, mixed over the primary surface
42
+ * so the cell stays opaque while content scrolls underneath.
43
+ */
44
+ export const dataGridPinnedSurfaceVariants = cva(Platform.select({
45
+ web: 'bg-surface-primary',
46
+ default: ''
47
+ }), {
48
+ variants: {
49
+ header: {
50
+ true: 'bg-neutral-50',
51
+ false: Platform.select({
52
+ web: 'web:[tr:hover_&]:bg-[color-mix(in_srgb,var(--color-surface-secondary)_50%,var(--color-surface-primary))]',
53
+ default: ''
54
+ })
55
+ }
56
+ },
57
+ defaultVariants: {
58
+ header: false
59
+ }
60
+ });
61
+ export const dataGridPinnedEdgeVariants = cva('', {
62
+ variants: {
63
+ edge: {
64
+ start: Platform.select({
65
+ web: 'border-e border-stroke-secondary',
66
+ default: ''
67
+ }),
68
+ end: Platform.select({
69
+ web: 'border-s border-stroke-secondary',
70
+ default: ''
71
+ }),
72
+ none: ''
73
+ }
74
+ },
75
+ defaultVariants: {
76
+ edge: 'none'
77
+ }
78
+ });
38
79
  export const dataGridToolbarVariants = cva('shrink-0 flex-row items-center gap-3 border-b border-stroke-secondary px-4 py-4');
39
80
  export const dataGridToolbarSearchVariants = cva('max-w-80 min-w-0 flex-1');
40
81
  export const dataGridToolbarActionsVariants = cva('ms-auto flex-row items-center gap-3');
@@ -106,6 +147,25 @@ export const dataGridBodyVariants = cva(Platform.select({
106
147
  default: ''
107
148
  }));
108
149
  export const dataGridFilterInputVariants = cva('min-w-24');
150
+ export const dataGridFilterPanelVariants = cva('absolute start-4 top-16 z-30 w-max max-w-[calc(100%-2rem)] gap-3 rounded-lg border border-stroke-secondary bg-surface-primary px-3 pb-2 pt-3 shadow-lg');
151
+
152
+ // The panel is as wide as one unwrapped row, capped at the grid's width. Below that, fields wrap
153
+ // onto new lines and grow to fill them, so the layout follows the grid's width, not the viewport.
154
+ export const dataGridFilterPanelRowVariants = cva('flex-row flex-wrap items-end gap-2');
155
+ export const dataGridFilterPanelLogicVariants = cva('min-h-8 w-24 shrink-0 justify-center');
156
+ export const dataGridFilterPanelFieldVariants = cva('min-w-0 shrink grow gap-1', {
157
+ variants: {
158
+ size: {
159
+ column: 'w-40',
160
+ operator: 'w-40',
161
+ value: 'w-56'
162
+ }
163
+ }
164
+ });
165
+ export const dataGridFilterPanelColumnVariants = cva('w-full');
166
+ export const dataGridFilterPanelOperatorVariants = cva('w-full');
167
+ export const dataGridFilterPanelValueVariants = cva('w-full');
168
+ export const dataGridFilterPanelFooterVariants = cva('flex-row items-center justify-between gap-2 border-t border-stroke-secondary pt-2');
109
169
  export const dataGridHeadVariants = cva(['h-12 bg-neutral-50 px-4', Platform.select({
110
170
  web: 'border-b border-stroke-secondary',
111
171
  default: ''
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","cva","dataGridRootVariants","variants","autoHeight","true","false","defaultVariants","dataGridMainVariants","overlay","compoundVariants","className","dataGridToolbarVariants","dataGridToolbarSearchVariants","dataGridToolbarActionsVariants","dataGridFooterVariants","dataGridOverlayVariants","headerFilters","dataGridEmptyOverlayVariants","dataGridHeaderCellInnerVariants","align","start","center","end","fitToColumn","dataGridHeaderLabelVariants","dataGridSortButtonVariants","position","leading","trailing","sorted","dataGridTableVariants","select","web","default","dataGridHeaderVariants","dataGridBodyVariants","dataGridFilterInputVariants","dataGridHeadVariants","dataGridSelectHeadVariants","dataGridCellVariants","dataGridSelectCellVariants","dataGridPaginationVariants","dataGridPaginationRangeVariants"],"sourceRoot":"../../src","sources":["styles.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","cva","dataGridRootVariants","variants","autoHeight","true","false","defaultVariants","dataGridMainVariants","overlay","compoundVariants","className","dataGridPinnedSurfaceVariants","select","web","default","header","dataGridPinnedEdgeVariants","edge","start","end","none","dataGridToolbarVariants","dataGridToolbarSearchVariants","dataGridToolbarActionsVariants","dataGridFooterVariants","dataGridOverlayVariants","headerFilters","dataGridEmptyOverlayVariants","dataGridHeaderCellInnerVariants","align","center","fitToColumn","dataGridHeaderLabelVariants","dataGridSortButtonVariants","position","leading","trailing","sorted","dataGridTableVariants","dataGridHeaderVariants","dataGridBodyVariants","dataGridFilterInputVariants","dataGridFilterPanelVariants","dataGridFilterPanelRowVariants","dataGridFilterPanelLogicVariants","dataGridFilterPanelFieldVariants","size","column","operator","value","dataGridFilterPanelColumnVariants","dataGridFilterPanelOperatorVariants","dataGridFilterPanelValueVariants","dataGridFilterPanelFooterVariants","dataGridHeadVariants","dataGridSelectHeadVariants","dataGridCellVariants","dataGridSelectCellVariants","dataGridPaginationVariants","dataGridPaginationRangeVariants"],"sourceRoot":"../../src","sources":["styles.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,34 @@
1
1
  "use strict";
2
2
 
3
+ /**
4
+ * Filter operators. Names match MUI Data Grid Community so server handlers written for
5
+ * MUI keep working. Which operators a column accepts depends on its `type`.
6
+ */
7
+
8
+ /**
9
+ * Columns pinned to the logical start and end edges while the grid scrolls
10
+ * horizontally.
11
+ *
12
+ * `left` and `right` are deprecated compatibility aliases for `start` and `end`
13
+ * (same mapping as `GridColDef.align`).
14
+ */
15
+
16
+ /** How `filterModel` items combine: every item must match (`'and'`) or any one item (`'or'`). */
17
+
18
+ /**
19
+ * Built-in column types. Names and defaults match MUI Data Grid Community.
20
+ * Omit `type` to keep untyped display, alignment, and sort.
21
+ */
22
+
23
+ /**
24
+ * A `singleSelect` choice: a primitive (value and label are the same) or an
25
+ * explicit `{ value, label }` pair.
26
+ */
27
+
3
28
  export const SELECT_COLUMN_ID = '__select__';
29
+
30
+ /** MUI X Data Grid checkbox-column field; accepted as an alias for {@link SELECT_COLUMN_ID}. */
31
+ export const MUI_CHECKBOX_FIELD = '__check__';
4
32
  export const DEFAULT_PAGE_SIZE_OPTIONS = [25, 50, 100];
5
33
  export const DEFAULT_PAGINATION_MODEL = {
6
34
  page: 0,
@@ -1 +1 @@
1
- {"version":3,"names":["SELECT_COLUMN_ID","DEFAULT_PAGE_SIZE_OPTIONS","DEFAULT_PAGINATION_MODEL","page","pageSize","EMPTY_SELECTION","type","ids","Set"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAuIA,OAAO,MAAMA,gBAAgB,GAAG,YAAY;AAE5C,OAAO,MAAMC,yBAAyB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAU;AAE/D,OAAO,MAAMC,wBAA6C,GAAG;EAC3DC,IAAI,EAAE,CAAC;EACPC,QAAQ,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,eAAsC,GAAG;EACpDC,IAAI,EAAE,SAAS;EACfC,GAAG,EAAE,IAAIC,GAAG,CAAC;AACf,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["SELECT_COLUMN_ID","MUI_CHECKBOX_FIELD","DEFAULT_PAGE_SIZE_OPTIONS","DEFAULT_PAGINATION_MODEL","page","pageSize","EMPTY_SELECTION","type","ids","Set"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AA8BA;AACA;AACA;AACA;;AAsCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;;AAYA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AA+HA,OAAO,MAAMA,gBAAgB,GAAG,YAAY;;AAE5C;AACA,OAAO,MAAMC,kBAAkB,GAAG,WAAW;AAE7C,OAAO,MAAMC,yBAAyB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAU;AAE/D,OAAO,MAAMC,wBAA6C,GAAG;EAC3DC,IAAI,EAAE,CAAC;EACPC,QAAQ,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,eAAsC,GAAG;EACpDC,IAAI,EAAE,SAAS;EACfC,GAAG,EAAE,IAAIC,GAAG,CAAC;AACf,CAAC","ignoreList":[]}
@@ -1,12 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  import { useMemo } from 'react';
4
- import { columnFilteringFeature, createFilteredRowModel, createPaginatedRowModel, createSortedRowModel, filterFn_includesString, globalFilteringFeature, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, sortFn_alphanumeric, sortFn_text, tableFeatures, useTable } from '@tanstack/react-table';
4
+ import { columnFilteringFeature, columnPinningFeature, createFilteredRowModel, createPaginatedRowModel, createSortedRowModel, filterFn_includesString, globalFilteringFeature, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, sortFn_alphanumeric, sortFn_text, tableFeatures, useTable } from '@tanstack/react-table';
5
5
  import { createSelectColumn } from './adapter/selectColumn';
6
6
  import { applyUpdater, gridColDefToColumnDef } from './adapter/columns';
7
+ import { filterFn_displayText, metaUsesDisplayFilter, normalizeFilterQuery, sortFn_boolean, sortFn_datetime, sortFn_number, sortFn_selectLabel, untypedCellIncludesQuery } from './adapter/columnTypes';
8
+ import { filterOperatorNeedsValue, isActiveFilterItem, isBlankFilterValue, isFilterValueGroup, isOperatorFilterValue, rowMatchesFilterItem } from './adapter/filterOperators';
7
9
  import { SELECT_COLUMN_ID } from './types';
10
+ function gridGlobalFilterFn(row, columnId, filterValue) {
11
+ if (columnId === SELECT_COLUMN_ID) {
12
+ return false;
13
+ }
14
+ const meta = row.getAllCells().find(cell => cell.column.id === columnId)?.column.columnDef.meta;
15
+ if (metaUsesDisplayFilter(meta)) {
16
+ return filterFn_displayText(row, columnId, filterValue);
17
+ }
18
+ return untypedCellIncludesQuery(row.getValue(columnId), normalizeFilterQuery(filterValue));
19
+ }
8
20
  const features = tableFeatures({
9
21
  columnFilteringFeature,
22
+ columnPinningFeature,
10
23
  globalFilteringFeature,
11
24
  rowSortingFeature,
12
25
  rowPaginationFeature,
@@ -19,7 +32,11 @@ const features = tableFeatures({
19
32
  },
20
33
  sortFns: {
21
34
  alphanumeric: sortFn_alphanumeric,
22
- text: sortFn_text
35
+ text: sortFn_text,
36
+ number: sortFn_number,
37
+ datetime: sortFn_datetime,
38
+ boolean: sortFn_boolean,
39
+ selectLabel: sortFn_selectLabel
23
40
  }
24
41
  });
25
42
  export function sortModelToSortingState(model) {
@@ -58,17 +75,60 @@ function columnFilterValueToString(value) {
58
75
  }
59
76
  return '';
60
77
  }
78
+
79
+ /**
80
+ * Items without an `operator` keep today's text filter. Items with one carry the operator and
81
+ * typed operand into the column filter. An item whose operator needs a value but has none is
82
+ * dropped, so `isEmpty` / `isNotEmpty` survive a blank `value` and nothing else does.
83
+ */
61
84
  export function filterModelToColumnFilters(model) {
62
- return model.filter(item => item.value.trim().length > 0).map(item => ({
63
- id: item.field,
64
- value: item.value
85
+ const valuesByField = new Map();
86
+ for (const item of model) {
87
+ let value;
88
+ if (item.operator !== undefined) {
89
+ if (filterOperatorNeedsValue(item.operator) && isBlankFilterValue(item.value)) {
90
+ continue;
91
+ }
92
+ value = {
93
+ operator: item.operator,
94
+ value: item.value
95
+ };
96
+ } else {
97
+ const text = columnFilterValueToString(item.value);
98
+ if (text.trim().length === 0) {
99
+ continue;
100
+ }
101
+ value = text;
102
+ }
103
+ const values = valuesByField.get(item.field);
104
+ if (values) {
105
+ values.push(value);
106
+ } else {
107
+ valuesByField.set(item.field, [value]);
108
+ }
109
+ }
110
+ return [...valuesByField].map(([id, values]) => ({
111
+ id,
112
+ value: values.length === 1 ? values[0] : {
113
+ items: values
114
+ }
65
115
  }));
66
116
  }
117
+ function columnFilterValueToItem(field, value) {
118
+ if (isOperatorFilterValue(value)) {
119
+ return {
120
+ field,
121
+ operator: value.operator,
122
+ value: value.value
123
+ };
124
+ }
125
+ return {
126
+ field,
127
+ value: columnFilterValueToString(value)
128
+ };
129
+ }
67
130
  export function columnFiltersToFilterModel(state) {
68
- return state.filter(item => item.id !== SELECT_COLUMN_ID).map(item => ({
69
- field: item.id,
70
- value: columnFilterValueToString(item.value)
71
- }));
131
+ return state.filter(item => item.id !== SELECT_COLUMN_ID).flatMap(item => isFilterValueGroup(item.value) ? item.value.items.map(value => columnFilterValueToItem(item.id, value)) : [columnFilterValueToItem(item.id, item.value)]);
72
132
  }
73
133
  function selectionIdKey(id) {
74
134
  return `${typeof id}:${String(id)}`;
@@ -149,12 +209,30 @@ export function useDataGridTable({
149
209
  onPaginationModelChange,
150
210
  filterModel,
151
211
  onFilterModelChange,
212
+ filterLogicOperator,
152
213
  quickFilter,
153
214
  onQuickFilterChange,
154
215
  rowSelectionModel,
155
- onRowSelectionModelChange
216
+ onRowSelectionModelChange,
217
+ columnPinning
156
218
  }) {
157
- const data = useMemo(() => [...rows], [rows]);
219
+ const orFilterItems = useMemo(() => {
220
+ if (filterLogicOperator !== 'or' || filterMode === 'server') {
221
+ return undefined;
222
+ }
223
+ const active = filterModel.filter(isActiveFilterItem);
224
+ return active.length > 1 ? active : undefined;
225
+ }, [filterLogicOperator, filterMode, filterModel]);
226
+ const data = useMemo(() => {
227
+ if (!orFilterItems) {
228
+ return [...rows];
229
+ }
230
+ const filterableColumns = new Map(columns.filter(col => col.filterable !== false).map(col => [col.field, col]));
231
+ return rows.filter(row => orFilterItems.some(item => {
232
+ const col = filterableColumns.get(item.field);
233
+ return col !== undefined && rowMatchesFilterItem(col, row, item);
234
+ }));
235
+ }, [columns, orFilterItems, rows]);
158
236
  const allIds = useMemo(() => data.map(row => resolveRowId(row, getRowId)), [data, getRowId]);
159
237
  const columnDefs = useMemo(() => {
160
238
  const mapped = columns.map(col => {
@@ -168,7 +246,7 @@ export function useDataGridTable({
168
246
  }, [checkboxSelection, columns, disableColumnSorting]);
169
247
  const sortingState = useMemo(() => sortModelToSortingState(sortModel), [sortModel]);
170
248
  const paginationState = useMemo(() => paginationModelToState(paginationModel), [paginationModel]);
171
- const columnFilterState = useMemo(() => filterModelToColumnFilters(filterModel), [filterModel]);
249
+ const columnFilterState = useMemo(() => orFilterItems ? [] : filterModelToColumnFilters(filterModel), [filterModel, orFilterItems]);
172
250
  const rowSelectionState = useMemo(() => selectionModelToRowSelection(rowSelectionModel, allIds), [rowSelectionModel, allIds]);
173
251
  const resetPaginationPage = () => {
174
252
  if (paginationModel.page !== 0) {
@@ -200,6 +278,7 @@ export function useDataGridTable({
200
278
  getRowId: row => selectionIdKey(resolveRowId(row, getRowId)),
201
279
  enableMultiSort: false,
202
280
  enableMultiRowSelection: true,
281
+ globalFilterFn: gridGlobalFilterFn,
203
282
  manualPagination: paginationMode === 'server',
204
283
  manualSorting: sortingMode === 'server',
205
284
  manualFiltering: filterMode === 'server',
@@ -210,7 +289,8 @@ export function useDataGridTable({
210
289
  pagination: paginationState,
211
290
  columnFilters: columnFilterState,
212
291
  globalFilter: quickFilter,
213
- rowSelection: rowSelectionState
292
+ rowSelection: rowSelectionState,
293
+ columnPinning
214
294
  },
215
295
  onSortingChange: updater => {
216
296
  const next = applyUpdater(updater, sortingState);
@@ -235,10 +315,15 @@ export function useDataGridTable({
235
315
  onRowSelectionModelChange(rowSelectionToModel(next, rowSelectionModel, allIds));
236
316
  }
237
317
  });
318
+ const setFilterModel = model => {
319
+ onFilterModelChange(model);
320
+ resetPaginationPage();
321
+ };
238
322
  return {
239
323
  table,
240
324
  setQuickFilter,
241
- setColumnFilter
325
+ setColumnFilter,
326
+ setFilterModel
242
327
  };
243
328
  }
244
329
  //# sourceMappingURL=useDataGridTable.js.map