@mui/x-data-grid 6.2.1 → 6.3.1
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/CHANGELOG.md +118 -3
- package/components/GridPagination.js +3 -1
- package/components/base/GridBody.d.ts +1 -0
- package/components/base/GridBody.js +12 -3
- package/components/cell/GridActionsCell.d.ts +2 -3
- package/components/cell/GridActionsCell.js +9 -1
- package/components/containers/GridRootStyles.js +3 -1
- package/components/panel/GridPanel.d.ts +3 -2
- package/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/constants/gridClasses.js +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
- package/hooks/features/focus/useGridFocus.js +2 -2
- package/index.js +1 -1
- package/joy/joySlots.js +234 -24
- package/legacy/components/GridPagination.js +3 -1
- package/legacy/components/base/GridBody.js +12 -3
- package/legacy/components/cell/GridActionsCell.js +11 -2
- package/legacy/components/containers/GridRootStyles.js +3 -1
- package/legacy/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
- package/legacy/hooks/features/focus/useGridFocus.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/joy/joySlots.js +229 -17
- package/legacy/locales/frFR.js +2 -2
- package/legacy/locales/trTR.js +2 -2
- package/legacy/locales/zhCN.js +2 -2
- package/locales/frFR.js +2 -2
- package/locales/trTR.js +2 -2
- package/locales/zhCN.js +2 -2
- package/material/index.d.ts +3 -2
- package/modern/components/GridPagination.js +2 -1
- package/modern/components/base/GridBody.js +12 -3
- package/modern/components/cell/GridActionsCell.js +9 -1
- package/modern/components/containers/GridRootStyles.js +3 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +21 -14
- package/modern/hooks/features/focus/useGridFocus.js +2 -2
- package/modern/index.js +1 -1
- package/modern/joy/joySlots.js +231 -24
- package/modern/locales/frFR.js +2 -2
- package/modern/locales/trTR.js +2 -2
- package/modern/locales/zhCN.js +2 -2
- package/node/components/GridPagination.js +2 -1
- package/node/components/base/GridBody.js +12 -3
- package/node/components/cell/GridActionsCell.js +9 -1
- package/node/components/containers/GridRootStyles.js +3 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +20 -11
- package/node/hooks/features/focus/useGridFocus.js +2 -2
- package/node/index.js +1 -1
- package/node/joy/joySlots.js +231 -24
- package/node/locales/frFR.js +2 -2
- package/node/locales/trTR.js +2 -2
- package/node/locales/zhCN.js +2 -2
- package/package.json +3 -3
package/modern/joy/joySlots.js
CHANGED
|
@@ -1,13 +1,57 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"]
|
|
3
|
+
const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"],
|
|
4
|
+
_excluded2 = ["onChange", "label", "placeholder", "value", "inputRef", "type", "size", "variant"],
|
|
5
|
+
_excluded3 = ["startIcon", "color", "endIcon", "size", "sx", "variant"],
|
|
6
|
+
_excluded4 = ["color", "size", "sx", "touchRippleRef"],
|
|
7
|
+
_excluded5 = ["name", "checkedIcon", "color", "disableRipple", "disableFocusRipple", "disableTouchRipple", "edge", "icon", "inputProps", "inputRef", "size", "sx", "onChange", "onClick"],
|
|
8
|
+
_excluded6 = ["open", "onOpen", "value", "onChange", "size", "color", "variant", "inputProps", "MenuProps", "inputRef", "error", "native", "fullWidth", "labelId"],
|
|
9
|
+
_excluded7 = ["native"],
|
|
10
|
+
_excluded8 = ["shrink", "variant", "sx"];
|
|
4
11
|
import * as React from 'react';
|
|
5
12
|
import JoyCheckbox from '@mui/joy/Checkbox';
|
|
6
13
|
import JoyInput from '@mui/joy/Input';
|
|
7
14
|
import JoyFormControl from '@mui/joy/FormControl';
|
|
8
15
|
import JoyFormLabel from '@mui/joy/FormLabel';
|
|
16
|
+
import JoyButton from '@mui/joy/Button';
|
|
17
|
+
import JoyIconButton from '@mui/joy/IconButton';
|
|
18
|
+
import JoySwitch from '@mui/joy/Switch';
|
|
19
|
+
import JoySelect from '@mui/joy/Select';
|
|
20
|
+
import JoyOption from '@mui/joy/Option';
|
|
21
|
+
import { unstable_useForkRef as useForkRef } from '@mui/utils';
|
|
9
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
23
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
function convertColor(color) {
|
|
25
|
+
if (color === 'secondary') {
|
|
26
|
+
return 'primary';
|
|
27
|
+
}
|
|
28
|
+
if (color === 'error') {
|
|
29
|
+
return 'danger';
|
|
30
|
+
}
|
|
31
|
+
if (color === 'default' || color === 'inherit') {
|
|
32
|
+
return 'neutral';
|
|
33
|
+
}
|
|
34
|
+
return color;
|
|
35
|
+
}
|
|
36
|
+
function convertSize(size) {
|
|
37
|
+
return size ? {
|
|
38
|
+
small: 'sm',
|
|
39
|
+
medium: 'md',
|
|
40
|
+
large: 'lg'
|
|
41
|
+
}[size] : size;
|
|
42
|
+
}
|
|
43
|
+
function convertVariant(variant, defaultVariant = 'plain') {
|
|
44
|
+
if (!variant) {
|
|
45
|
+
return defaultVariant;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
standard: 'outlined',
|
|
49
|
+
outlined: 'outlined',
|
|
50
|
+
contained: 'solid',
|
|
51
|
+
text: 'plain',
|
|
52
|
+
filled: 'soft'
|
|
53
|
+
}[variant] || defaultVariant;
|
|
54
|
+
}
|
|
11
55
|
const Checkbox = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
12
56
|
let {
|
|
13
57
|
inputProps,
|
|
@@ -27,43 +71,206 @@ const Checkbox = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
27
71
|
onChange: onChange
|
|
28
72
|
}));
|
|
29
73
|
});
|
|
30
|
-
const TextField = /*#__PURE__*/React.forwardRef(({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
74
|
+
const TextField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
75
|
+
let {
|
|
76
|
+
onChange,
|
|
77
|
+
label,
|
|
78
|
+
placeholder,
|
|
79
|
+
value,
|
|
80
|
+
inputRef,
|
|
81
|
+
type,
|
|
82
|
+
size,
|
|
83
|
+
variant
|
|
84
|
+
} = _ref2,
|
|
85
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
86
|
+
const rootRef = useForkRef(ref, props.InputProps?.ref);
|
|
87
|
+
const inputForkRef = useForkRef(inputRef, props?.inputProps?.ref);
|
|
88
|
+
const {
|
|
89
|
+
startAdornment,
|
|
90
|
+
endAdornment
|
|
91
|
+
} = props.InputProps || {};
|
|
38
92
|
return /*#__PURE__*/_jsxs(JoyFormControl, {
|
|
39
|
-
ref:
|
|
93
|
+
ref: rootRef,
|
|
40
94
|
children: [/*#__PURE__*/_jsx(JoyFormLabel, {
|
|
41
|
-
sx: {
|
|
42
|
-
fontSize: 12
|
|
43
|
-
},
|
|
44
95
|
children: label
|
|
45
96
|
}), /*#__PURE__*/_jsx(JoyInput, {
|
|
46
97
|
type: type,
|
|
47
98
|
value: value,
|
|
48
99
|
onChange: onChange,
|
|
49
100
|
placeholder: placeholder,
|
|
50
|
-
|
|
101
|
+
variant: convertVariant(variant, 'outlined'),
|
|
102
|
+
size: convertSize(size),
|
|
51
103
|
slotProps: {
|
|
52
|
-
input: {
|
|
53
|
-
ref:
|
|
54
|
-
}
|
|
55
|
-
}
|
|
104
|
+
input: _extends({}, props?.inputProps, {
|
|
105
|
+
ref: inputForkRef
|
|
106
|
+
})
|
|
107
|
+
},
|
|
108
|
+
startDecorator: startAdornment,
|
|
109
|
+
endDecorator: endAdornment
|
|
56
110
|
})]
|
|
57
111
|
});
|
|
58
112
|
});
|
|
113
|
+
const Button = /*#__PURE__*/React.forwardRef(function Button(_ref3, ref) {
|
|
114
|
+
let {
|
|
115
|
+
startIcon,
|
|
116
|
+
color,
|
|
117
|
+
endIcon,
|
|
118
|
+
size,
|
|
119
|
+
sx,
|
|
120
|
+
variant
|
|
121
|
+
} = _ref3,
|
|
122
|
+
props = _objectWithoutPropertiesLoose(_ref3, _excluded3);
|
|
123
|
+
return /*#__PURE__*/_jsx(JoyButton, _extends({}, props, {
|
|
124
|
+
size: convertSize(size),
|
|
125
|
+
color: convertColor(color),
|
|
126
|
+
variant: convertVariant(variant),
|
|
127
|
+
ref: ref,
|
|
128
|
+
startDecorator: startIcon,
|
|
129
|
+
endDecorator: endIcon,
|
|
130
|
+
sx: sx
|
|
131
|
+
}));
|
|
132
|
+
});
|
|
133
|
+
const IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref4, ref) {
|
|
134
|
+
let {
|
|
135
|
+
color,
|
|
136
|
+
size,
|
|
137
|
+
sx
|
|
138
|
+
} = _ref4,
|
|
139
|
+
props = _objectWithoutPropertiesLoose(_ref4, _excluded4);
|
|
140
|
+
return /*#__PURE__*/_jsx(JoyIconButton, _extends({}, props, {
|
|
141
|
+
size: convertSize(size),
|
|
142
|
+
color: convertColor(color) ?? 'neutral',
|
|
143
|
+
variant: "plain",
|
|
144
|
+
ref: ref,
|
|
145
|
+
sx: sx
|
|
146
|
+
}));
|
|
147
|
+
});
|
|
148
|
+
const Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref5, ref) {
|
|
149
|
+
let {
|
|
150
|
+
name,
|
|
151
|
+
color: colorProp,
|
|
152
|
+
edge,
|
|
153
|
+
icon,
|
|
154
|
+
inputProps,
|
|
155
|
+
inputRef,
|
|
156
|
+
size,
|
|
157
|
+
sx,
|
|
158
|
+
onChange,
|
|
159
|
+
onClick
|
|
160
|
+
} = _ref5,
|
|
161
|
+
props = _objectWithoutPropertiesLoose(_ref5, _excluded5);
|
|
162
|
+
return /*#__PURE__*/_jsx(JoySwitch, _extends({}, props, {
|
|
163
|
+
onChange: onChange,
|
|
164
|
+
size: convertSize(size),
|
|
165
|
+
color: convertColor(colorProp),
|
|
166
|
+
ref: ref,
|
|
167
|
+
slotProps: {
|
|
168
|
+
input: _extends({}, inputProps, {
|
|
169
|
+
name,
|
|
170
|
+
onClick: onClick,
|
|
171
|
+
ref: inputRef
|
|
172
|
+
}),
|
|
173
|
+
thumb: {
|
|
174
|
+
children: icon
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
sx: [_extends({}, edge === 'start' && {
|
|
178
|
+
ml: '-8px'
|
|
179
|
+
}, edge === 'end' && {
|
|
180
|
+
mr: '-8px'
|
|
181
|
+
}), ...(Array.isArray(sx) ? sx : [sx])]
|
|
182
|
+
}));
|
|
183
|
+
});
|
|
184
|
+
const Select = /*#__PURE__*/React.forwardRef((_ref6, ref) => {
|
|
185
|
+
let {
|
|
186
|
+
open,
|
|
187
|
+
onOpen,
|
|
188
|
+
value,
|
|
189
|
+
onChange,
|
|
190
|
+
size,
|
|
191
|
+
color,
|
|
192
|
+
variant,
|
|
193
|
+
MenuProps,
|
|
194
|
+
inputRef,
|
|
195
|
+
labelId
|
|
196
|
+
} = _ref6,
|
|
197
|
+
props = _objectWithoutPropertiesLoose(_ref6, _excluded6);
|
|
198
|
+
const handleChange = (event, newValue) => {
|
|
199
|
+
if (event && onChange) {
|
|
200
|
+
// Same as in https://github.com/mui/material-ui/blob/e5558282a8f36856aef1299f3a36f3235e92e770/packages/mui-material/src/Select/SelectInput.js#L288-L300
|
|
201
|
+
|
|
202
|
+
// Redefine target to allow name and value to be read.
|
|
203
|
+
// This allows seamless integration with the most popular form libraries.
|
|
204
|
+
// https://github.com/mui/material-ui/issues/13485#issuecomment-676048492
|
|
205
|
+
// Clone the event to not override `target` of the original event.
|
|
206
|
+
const nativeEvent = event.nativeEvent || event;
|
|
207
|
+
// @ts-ignore The nativeEvent is function, not object
|
|
208
|
+
const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
|
|
209
|
+
Object.defineProperty(clonedEvent, 'target', {
|
|
210
|
+
writable: true,
|
|
211
|
+
value: {
|
|
212
|
+
value: newValue,
|
|
213
|
+
name: props.name
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
onChange(clonedEvent, null);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
return /*#__PURE__*/_jsx(JoySelect, _extends({}, props, {
|
|
220
|
+
listboxOpen: open,
|
|
221
|
+
onListboxOpenChange: isOpen => {
|
|
222
|
+
if (isOpen) {
|
|
223
|
+
onOpen?.({});
|
|
224
|
+
} else {
|
|
225
|
+
MenuProps?.onClose?.({}, undefined);
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
size: convertSize(size),
|
|
229
|
+
color: convertColor(color),
|
|
230
|
+
variant: convertVariant(variant, 'outlined'),
|
|
231
|
+
ref: ref,
|
|
232
|
+
value: value,
|
|
233
|
+
onChange: handleChange,
|
|
234
|
+
slotProps: {
|
|
235
|
+
button: {
|
|
236
|
+
'aria-labelledby': labelId,
|
|
237
|
+
ref: inputRef
|
|
238
|
+
},
|
|
239
|
+
listbox: {
|
|
240
|
+
disablePortal: false,
|
|
241
|
+
sx: {
|
|
242
|
+
zIndex: 1350
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}));
|
|
247
|
+
});
|
|
248
|
+
const Option = /*#__PURE__*/React.forwardRef((_ref7, ref) => {
|
|
249
|
+
let props = _objectWithoutPropertiesLoose(_ref7, _excluded7);
|
|
250
|
+
return /*#__PURE__*/_jsx(JoyOption, _extends({}, props, {
|
|
251
|
+
ref: ref
|
|
252
|
+
}));
|
|
253
|
+
});
|
|
254
|
+
const InputLabel = /*#__PURE__*/React.forwardRef((_ref8, ref) => {
|
|
255
|
+
let {
|
|
256
|
+
sx
|
|
257
|
+
} = _ref8,
|
|
258
|
+
props = _objectWithoutPropertiesLoose(_ref8, _excluded8);
|
|
259
|
+
return /*#__PURE__*/_jsx(JoyFormLabel, _extends({}, props, {
|
|
260
|
+
ref: ref,
|
|
261
|
+
sx: sx
|
|
262
|
+
}));
|
|
263
|
+
});
|
|
59
264
|
const joySlots = {
|
|
60
265
|
baseCheckbox: Checkbox,
|
|
61
|
-
baseTextField: TextField
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
266
|
+
baseTextField: TextField,
|
|
267
|
+
baseButton: Button,
|
|
268
|
+
baseIconButton: IconButton,
|
|
269
|
+
baseSwitch: Switch,
|
|
270
|
+
baseSelect: Select,
|
|
271
|
+
baseSelectOption: Option,
|
|
272
|
+
baseInputLabel: InputLabel,
|
|
273
|
+
baseFormControl: JoyFormControl
|
|
67
274
|
// BaseTooltip: MUITooltip,
|
|
68
275
|
// BasePopper: MUIPopper,
|
|
69
276
|
};
|
package/modern/locales/frFR.js
CHANGED
|
@@ -37,7 +37,7 @@ const frFRGrid = {
|
|
|
37
37
|
columnsPanelHideAllButton: 'Tout cacher',
|
|
38
38
|
// Filter panel text
|
|
39
39
|
filterPanelAddFilter: 'Ajouter un filtre',
|
|
40
|
-
|
|
40
|
+
filterPanelRemoveAll: 'Tout supprimer',
|
|
41
41
|
filterPanelDeleteIconLabel: 'Supprimer',
|
|
42
42
|
filterPanelLogicOperator: 'Opérateur logique',
|
|
43
43
|
filterPanelOperator: 'Opérateur',
|
|
@@ -67,7 +67,7 @@ const frFRGrid = {
|
|
|
67
67
|
// Column menu text
|
|
68
68
|
columnMenuLabel: 'Menu',
|
|
69
69
|
columnMenuShowColumns: 'Afficher les colonnes',
|
|
70
|
-
|
|
70
|
+
columnMenuManageColumns: 'Gérer les colonnes',
|
|
71
71
|
columnMenuFilter: 'Filtrer',
|
|
72
72
|
columnMenuHideColumn: 'Cacher',
|
|
73
73
|
columnMenuUnsort: 'Annuler le tri',
|
package/modern/locales/trTR.js
CHANGED
|
@@ -37,7 +37,7 @@ const trTRGrid = {
|
|
|
37
37
|
columnsPanelHideAllButton: 'Hepsini gizle',
|
|
38
38
|
// Filter panel text
|
|
39
39
|
filterPanelAddFilter: 'Filtre Ekle',
|
|
40
|
-
|
|
40
|
+
filterPanelRemoveAll: 'Hepsini kaldır',
|
|
41
41
|
filterPanelDeleteIconLabel: 'Kaldır',
|
|
42
42
|
filterPanelLogicOperator: 'Mantıksal operatörler',
|
|
43
43
|
filterPanelOperator: 'Operatör',
|
|
@@ -67,7 +67,7 @@ const trTRGrid = {
|
|
|
67
67
|
// Column menu text
|
|
68
68
|
columnMenuLabel: 'Menü',
|
|
69
69
|
columnMenuShowColumns: 'Sütunları göster',
|
|
70
|
-
|
|
70
|
+
columnMenuManageColumns: 'Sütunları yönet',
|
|
71
71
|
columnMenuFilter: 'Filtre uygula',
|
|
72
72
|
columnMenuHideColumn: 'Gizle',
|
|
73
73
|
columnMenuUnsort: 'Sıralama',
|
package/modern/locales/zhCN.js
CHANGED
|
@@ -37,7 +37,7 @@ const zhCNGrid = {
|
|
|
37
37
|
columnsPanelHideAllButton: '隐藏所有',
|
|
38
38
|
// Filter panel text
|
|
39
39
|
filterPanelAddFilter: '添加筛选器',
|
|
40
|
-
|
|
40
|
+
filterPanelRemoveAll: '清除全部',
|
|
41
41
|
filterPanelDeleteIconLabel: '删除',
|
|
42
42
|
filterPanelLogicOperator: '逻辑操作器',
|
|
43
43
|
filterPanelOperator: '操作器',
|
|
@@ -67,7 +67,7 @@ const zhCNGrid = {
|
|
|
67
67
|
// Column menu text
|
|
68
68
|
columnMenuLabel: '菜单',
|
|
69
69
|
columnMenuShowColumns: '显示',
|
|
70
|
-
|
|
70
|
+
columnMenuManageColumns: '管理列',
|
|
71
71
|
columnMenuFilter: '筛选器',
|
|
72
72
|
columnMenuHideColumn: '隐藏',
|
|
73
73
|
columnMenuUnsort: '恢复默认',
|
|
@@ -50,7 +50,8 @@ const GridPagination = /*#__PURE__*/React.forwardRef(function GridPagination(pro
|
|
|
50
50
|
if (process.env.NODE_ENV !== 'production') {
|
|
51
51
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
52
52
|
const warnedOnceMissingInPageSizeOptions = React.useRef(false);
|
|
53
|
-
|
|
53
|
+
const pageSize = rootProps.paginationModel?.pageSize ?? paginationModel.pageSize;
|
|
54
|
+
if (!warnedOnceMissingInPageSizeOptions.current && !rootProps.autoPageSize && !rootProps.pageSizeOptions.includes(pageSize)) {
|
|
54
55
|
console.warn([`MUI: The page size \`${paginationModel.pageSize}\` is not preset in the \`pageSizeOptions\``, `Add it to show the pagination select.`].join('\n'));
|
|
55
56
|
warnedOnceMissingInPageSizeOptions.current = true;
|
|
56
57
|
}
|
|
@@ -26,7 +26,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
26
26
|
function GridBody(props) {
|
|
27
27
|
const {
|
|
28
28
|
VirtualScrollerComponent,
|
|
29
|
-
ColumnHeadersProps
|
|
29
|
+
ColumnHeadersProps,
|
|
30
|
+
children
|
|
30
31
|
} = props;
|
|
31
32
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
32
33
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
@@ -53,13 +54,20 @@ function GridBody(props) {
|
|
|
53
54
|
if (typeof ResizeObserver === 'undefined') {
|
|
54
55
|
return () => {};
|
|
55
56
|
}
|
|
57
|
+
let animationFrame;
|
|
56
58
|
const observer = new ResizeObserver(() => {
|
|
57
|
-
|
|
59
|
+
// See https://github.com/mui/mui-x/issues/8733
|
|
60
|
+
animationFrame = window.requestAnimationFrame(() => {
|
|
61
|
+
apiRef.current.computeSizeAndPublishResizeEvent();
|
|
62
|
+
});
|
|
58
63
|
});
|
|
59
64
|
if (elementToObserve) {
|
|
60
65
|
observer.observe(elementToObserve);
|
|
61
66
|
}
|
|
62
67
|
return () => {
|
|
68
|
+
if (animationFrame) {
|
|
69
|
+
window.cancelAnimationFrame(animationFrame);
|
|
70
|
+
}
|
|
63
71
|
if (elementToObserve) {
|
|
64
72
|
observer.unobserve(elementToObserve);
|
|
65
73
|
}
|
|
@@ -120,7 +128,7 @@ function GridBody(props) {
|
|
|
120
128
|
, {
|
|
121
129
|
ref: virtualScrollerRef,
|
|
122
130
|
disableVirtualization: isVirtualizationDisabled
|
|
123
|
-
})]
|
|
131
|
+
}), children]
|
|
124
132
|
});
|
|
125
133
|
}
|
|
126
134
|
process.env.NODE_ENV !== "production" ? GridBody.propTypes = {
|
|
@@ -128,6 +136,7 @@ process.env.NODE_ENV !== "production" ? GridBody.propTypes = {
|
|
|
128
136
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
129
137
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
130
138
|
// ----------------------------------------------------------------------
|
|
139
|
+
children: _propTypes.default.node,
|
|
131
140
|
ColumnHeadersProps: _propTypes.default.object,
|
|
132
141
|
VirtualScrollerComponent: _propTypes.default.elementType.isRequired
|
|
133
142
|
} : void 0;
|
|
@@ -18,7 +18,7 @@ var _GridMenu = require("../menu/GridMenu");
|
|
|
18
18
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
19
19
|
var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
20
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
-
const _excluded = ["colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
21
|
+
const _excluded = ["api", "colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
22
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
24
|
const hasActions = colDef => typeof colDef.getActions === 'function';
|
|
@@ -197,6 +197,7 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
197
197
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
198
198
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
199
199
|
// ----------------------------------------------------------------------
|
|
200
|
+
api: _propTypes.default.object,
|
|
200
201
|
/**
|
|
201
202
|
* The mode of the cell.
|
|
202
203
|
*/
|
|
@@ -219,6 +220,9 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
219
220
|
focus: _propTypes.default.func.isRequired
|
|
220
221
|
})
|
|
221
222
|
})]),
|
|
223
|
+
/**
|
|
224
|
+
* The cell value formatted with the column valueFormatter.
|
|
225
|
+
*/
|
|
222
226
|
formattedValue: _propTypes.default.any,
|
|
223
227
|
/**
|
|
224
228
|
* If true, the cell is the active element.
|
|
@@ -245,6 +249,10 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
245
249
|
* the tabIndex value.
|
|
246
250
|
*/
|
|
247
251
|
tabIndex: _propTypes.default.oneOf([-1, 0]).isRequired,
|
|
252
|
+
/**
|
|
253
|
+
* The cell value.
|
|
254
|
+
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
255
|
+
*/
|
|
248
256
|
value: _propTypes.default.any
|
|
249
257
|
} : void 0;
|
|
250
258
|
const renderActionsCell = params => /*#__PURE__*/(0, _jsxRuntime.jsx)(GridActionsCell, (0, _extends2.default)({}, params));
|
|
@@ -211,7 +211,9 @@ const GridRootStyles = (0, _styles.styled)('div', {
|
|
|
211
211
|
minWidth: 0,
|
|
212
212
|
flex: 1,
|
|
213
213
|
whiteSpace: 'nowrap',
|
|
214
|
-
overflow: 'hidden'
|
|
214
|
+
overflow: 'hidden',
|
|
215
|
+
// to anchor the aggregation label
|
|
216
|
+
position: 'relative'
|
|
215
217
|
},
|
|
216
218
|
[`& .${_gridClasses.gridClasses.columnHeaderTitleContainerContent}`]: {
|
|
217
219
|
overflow: 'hidden',
|
|
@@ -76,7 +76,9 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
|
|
|
76
76
|
children: activeFilters.map((item, index) => (0, _extends2.default)({}, lookup[item.field] && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
77
77
|
children: `${lookup[item.field].headerName || item.field}
|
|
78
78
|
${getOperatorLabel(item)}
|
|
79
|
-
${
|
|
79
|
+
${
|
|
80
|
+
// implicit check for null and undefined
|
|
81
|
+
item.value != null ? getFilterItemValue(item) : ''}`
|
|
80
82
|
}, index)))
|
|
81
83
|
})]
|
|
82
84
|
});
|
|
@@ -9,5 +9,5 @@ var _utils = require("@mui/utils");
|
|
|
9
9
|
function getDataGridUtilityClass(slot) {
|
|
10
10
|
return (0, _utils.unstable_generateUtilityClass)('MuiDataGrid', slot);
|
|
11
11
|
}
|
|
12
|
-
const gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
12
|
+
const gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
13
13
|
exports.gridClasses = gridClasses;
|
|
@@ -14,7 +14,6 @@ var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
|
14
14
|
var _gridColumnGroupsUtils = require("./gridColumnGroupsUtils");
|
|
15
15
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
16
16
|
var _columns = require("../columns");
|
|
17
|
-
var _useGridSelector = require("../../utils/useGridSelector");
|
|
18
17
|
const _excluded = ["groupId", "children"];
|
|
19
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -102,18 +101,14 @@ const useGridColumnGrouping = (apiRef, props) => {
|
|
|
102
101
|
});
|
|
103
102
|
});
|
|
104
103
|
}, [apiRef, props.columnGroupingModel]);
|
|
105
|
-
|
|
106
|
-
const columnFields = (0, _useGridSelector.useGridSelector)(apiRef, _columns.gridColumnFieldsSelector);
|
|
107
|
-
const visibleColumnFields = (0, _useGridSelector.useGridSelector)(apiRef, _columns.gridVisibleColumnFieldsSelector);
|
|
108
|
-
/**
|
|
109
|
-
* EFFECTS
|
|
110
|
-
*/
|
|
111
|
-
React.useEffect(() => {
|
|
104
|
+
const updateColumnGroupingState = React.useCallback(columnGroupingModel => {
|
|
112
105
|
if (!props.experimentalFeatures?.columnGrouping) {
|
|
113
106
|
return;
|
|
114
107
|
}
|
|
115
|
-
const
|
|
116
|
-
const
|
|
108
|
+
const columnFields = (0, _columns.gridColumnFieldsSelector)(apiRef);
|
|
109
|
+
const visibleColumnFields = (0, _columns.gridVisibleColumnFieldsSelector)(apiRef);
|
|
110
|
+
const groupLookup = createGroupLookup(columnGroupingModel ?? []);
|
|
111
|
+
const unwrappedGroupingModel = (0, _gridColumnGroupsUtils.unwrapGroupingColumnModel)(columnGroupingModel ?? []);
|
|
117
112
|
const columnGroupsHeaderStructure = (0, _gridColumnGroupsUtils.getColumnGroupsHeaderStructure)(columnFields, unwrappedGroupingModel);
|
|
118
113
|
const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => unwrappedGroupingModel[field]?.length ?? 0));
|
|
119
114
|
apiRef.current.setState(state => {
|
|
@@ -126,6 +121,20 @@ const useGridColumnGrouping = (apiRef, props) => {
|
|
|
126
121
|
}
|
|
127
122
|
});
|
|
128
123
|
});
|
|
129
|
-
}, [apiRef,
|
|
124
|
+
}, [apiRef, props.experimentalFeatures?.columnGrouping]);
|
|
125
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnIndexChange', handleColumnIndexChange);
|
|
126
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnsChange', () => {
|
|
127
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
128
|
+
});
|
|
129
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnVisibilityModelChange', () => {
|
|
130
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* EFFECTS
|
|
135
|
+
*/
|
|
136
|
+
React.useEffect(() => {
|
|
137
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
138
|
+
}, [updateColumnGroupingState, props.columnGroupingModel]);
|
|
130
139
|
};
|
|
131
140
|
exports.useGridColumnGrouping = useGridColumnGrouping;
|
|
@@ -308,9 +308,9 @@ const useGridFocus = (apiRef, props) => {
|
|
|
308
308
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, focusPrivateApi, 'private');
|
|
309
309
|
React.useEffect(() => {
|
|
310
310
|
const doc = (0, _utils.unstable_ownerDocument)(apiRef.current.rootElementRef.current);
|
|
311
|
-
doc.addEventListener('
|
|
311
|
+
doc.addEventListener('mouseup', handleDocumentClick);
|
|
312
312
|
return () => {
|
|
313
|
-
doc.removeEventListener('
|
|
313
|
+
doc.removeEventListener('mouseup', handleDocumentClick);
|
|
314
314
|
};
|
|
315
315
|
}, [apiRef, handleDocumentClick]);
|
|
316
316
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderBlur', handleBlur);
|
package/node/index.js
CHANGED