@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.
Files changed (58) hide show
  1. package/CHANGELOG.md +118 -3
  2. package/components/GridPagination.js +3 -1
  3. package/components/base/GridBody.d.ts +1 -0
  4. package/components/base/GridBody.js +12 -3
  5. package/components/cell/GridActionsCell.d.ts +2 -3
  6. package/components/cell/GridActionsCell.js +9 -1
  7. package/components/containers/GridRootStyles.js +3 -1
  8. package/components/panel/GridPanel.d.ts +3 -2
  9. package/components/toolbar/GridToolbarFilterButton.js +3 -1
  10. package/constants/gridClasses.js +1 -1
  11. package/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
  12. package/hooks/features/focus/useGridFocus.js +2 -2
  13. package/index.js +1 -1
  14. package/joy/joySlots.js +234 -24
  15. package/legacy/components/GridPagination.js +3 -1
  16. package/legacy/components/base/GridBody.js +12 -3
  17. package/legacy/components/cell/GridActionsCell.js +11 -2
  18. package/legacy/components/containers/GridRootStyles.js +3 -1
  19. package/legacy/components/toolbar/GridToolbarFilterButton.js +3 -1
  20. package/legacy/constants/gridClasses.js +1 -1
  21. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
  22. package/legacy/hooks/features/focus/useGridFocus.js +2 -2
  23. package/legacy/index.js +1 -1
  24. package/legacy/joy/joySlots.js +229 -17
  25. package/legacy/locales/frFR.js +2 -2
  26. package/legacy/locales/trTR.js +2 -2
  27. package/legacy/locales/zhCN.js +2 -2
  28. package/locales/frFR.js +2 -2
  29. package/locales/trTR.js +2 -2
  30. package/locales/zhCN.js +2 -2
  31. package/material/index.d.ts +3 -2
  32. package/modern/components/GridPagination.js +2 -1
  33. package/modern/components/base/GridBody.js +12 -3
  34. package/modern/components/cell/GridActionsCell.js +9 -1
  35. package/modern/components/containers/GridRootStyles.js +3 -1
  36. package/modern/components/toolbar/GridToolbarFilterButton.js +3 -1
  37. package/modern/constants/gridClasses.js +1 -1
  38. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +21 -14
  39. package/modern/hooks/features/focus/useGridFocus.js +2 -2
  40. package/modern/index.js +1 -1
  41. package/modern/joy/joySlots.js +231 -24
  42. package/modern/locales/frFR.js +2 -2
  43. package/modern/locales/trTR.js +2 -2
  44. package/modern/locales/zhCN.js +2 -2
  45. package/node/components/GridPagination.js +2 -1
  46. package/node/components/base/GridBody.js +12 -3
  47. package/node/components/cell/GridActionsCell.js +9 -1
  48. package/node/components/containers/GridRootStyles.js +3 -1
  49. package/node/components/toolbar/GridToolbarFilterButton.js +3 -1
  50. package/node/constants/gridClasses.js +1 -1
  51. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +20 -11
  52. package/node/hooks/features/focus/useGridFocus.js +2 -2
  53. package/node/index.js +1 -1
  54. package/node/joy/joySlots.js +231 -24
  55. package/node/locales/frFR.js +2 -2
  56. package/node/locales/trTR.js +2 -2
  57. package/node/locales/zhCN.js +2 -2
  58. package/package.json +3 -3
@@ -12,10 +12,54 @@ var _Checkbox = _interopRequireDefault(require("@mui/joy/Checkbox"));
12
12
  var _Input = _interopRequireDefault(require("@mui/joy/Input"));
13
13
  var _FormControl = _interopRequireDefault(require("@mui/joy/FormControl"));
14
14
  var _FormLabel = _interopRequireDefault(require("@mui/joy/FormLabel"));
15
+ var _Button = _interopRequireDefault(require("@mui/joy/Button"));
16
+ var _IconButton = _interopRequireDefault(require("@mui/joy/IconButton"));
17
+ var _Switch = _interopRequireDefault(require("@mui/joy/Switch"));
18
+ var _Select = _interopRequireDefault(require("@mui/joy/Select"));
19
+ var _Option = _interopRequireDefault(require("@mui/joy/Option"));
20
+ var _utils = require("@mui/utils");
15
21
  var _jsxRuntime = require("react/jsx-runtime");
16
- const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"];
22
+ const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"],
23
+ _excluded2 = ["onChange", "label", "placeholder", "value", "inputRef", "type", "size", "variant"],
24
+ _excluded3 = ["startIcon", "color", "endIcon", "size", "sx", "variant"],
25
+ _excluded4 = ["color", "size", "sx", "touchRippleRef"],
26
+ _excluded5 = ["name", "checkedIcon", "color", "disableRipple", "disableFocusRipple", "disableTouchRipple", "edge", "icon", "inputProps", "inputRef", "size", "sx", "onChange", "onClick"],
27
+ _excluded6 = ["open", "onOpen", "value", "onChange", "size", "color", "variant", "inputProps", "MenuProps", "inputRef", "error", "native", "fullWidth", "labelId"],
28
+ _excluded7 = ["native"],
29
+ _excluded8 = ["shrink", "variant", "sx"];
17
30
  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); }
18
31
  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; }
32
+ function convertColor(color) {
33
+ if (color === 'secondary') {
34
+ return 'primary';
35
+ }
36
+ if (color === 'error') {
37
+ return 'danger';
38
+ }
39
+ if (color === 'default' || color === 'inherit') {
40
+ return 'neutral';
41
+ }
42
+ return color;
43
+ }
44
+ function convertSize(size) {
45
+ return size ? {
46
+ small: 'sm',
47
+ medium: 'md',
48
+ large: 'lg'
49
+ }[size] : size;
50
+ }
51
+ function convertVariant(variant, defaultVariant = 'plain') {
52
+ if (!variant) {
53
+ return defaultVariant;
54
+ }
55
+ return {
56
+ standard: 'outlined',
57
+ outlined: 'outlined',
58
+ contained: 'solid',
59
+ text: 'plain',
60
+ filled: 'soft'
61
+ }[variant] || defaultVariant;
62
+ }
19
63
  const Checkbox = /*#__PURE__*/React.forwardRef((_ref, ref) => {
20
64
  let {
21
65
  inputProps,
@@ -35,43 +79,206 @@ const Checkbox = /*#__PURE__*/React.forwardRef((_ref, ref) => {
35
79
  onChange: onChange
36
80
  }));
37
81
  });
38
- const TextField = /*#__PURE__*/React.forwardRef(({
39
- onChange,
40
- label,
41
- placeholder,
42
- value,
43
- inputRef,
44
- type
45
- }, ref) => {
82
+ const TextField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
83
+ let {
84
+ onChange,
85
+ label,
86
+ placeholder,
87
+ value,
88
+ inputRef,
89
+ type,
90
+ size,
91
+ variant
92
+ } = _ref2,
93
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref2, _excluded2);
94
+ const rootRef = (0, _utils.unstable_useForkRef)(ref, props.InputProps?.ref);
95
+ const inputForkRef = (0, _utils.unstable_useForkRef)(inputRef, props?.inputProps?.ref);
96
+ const {
97
+ startAdornment,
98
+ endAdornment
99
+ } = props.InputProps || {};
46
100
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_FormControl.default, {
47
- ref: ref,
101
+ ref: rootRef,
48
102
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormLabel.default, {
49
- sx: {
50
- fontSize: 12
51
- },
52
103
  children: label
53
104
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {
54
105
  type: type,
55
106
  value: value,
56
107
  onChange: onChange,
57
108
  placeholder: placeholder,
58
- size: "sm",
109
+ variant: convertVariant(variant, 'outlined'),
110
+ size: convertSize(size),
59
111
  slotProps: {
60
- input: {
61
- ref: inputRef
62
- }
63
- }
112
+ input: (0, _extends2.default)({}, props?.inputProps, {
113
+ ref: inputForkRef
114
+ })
115
+ },
116
+ startDecorator: startAdornment,
117
+ endDecorator: endAdornment
64
118
  })]
65
119
  });
66
120
  });
121
+ const Button = /*#__PURE__*/React.forwardRef(function Button(_ref3, ref) {
122
+ let {
123
+ startIcon,
124
+ color,
125
+ endIcon,
126
+ size,
127
+ sx,
128
+ variant
129
+ } = _ref3,
130
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref3, _excluded3);
131
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, (0, _extends2.default)({}, props, {
132
+ size: convertSize(size),
133
+ color: convertColor(color),
134
+ variant: convertVariant(variant),
135
+ ref: ref,
136
+ startDecorator: startIcon,
137
+ endDecorator: endIcon,
138
+ sx: sx
139
+ }));
140
+ });
141
+ const IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref4, ref) {
142
+ let {
143
+ color,
144
+ size,
145
+ sx
146
+ } = _ref4,
147
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref4, _excluded4);
148
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, (0, _extends2.default)({}, props, {
149
+ size: convertSize(size),
150
+ color: convertColor(color) ?? 'neutral',
151
+ variant: "plain",
152
+ ref: ref,
153
+ sx: sx
154
+ }));
155
+ });
156
+ const Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref5, ref) {
157
+ let {
158
+ name,
159
+ color: colorProp,
160
+ edge,
161
+ icon,
162
+ inputProps,
163
+ inputRef,
164
+ size,
165
+ sx,
166
+ onChange,
167
+ onClick
168
+ } = _ref5,
169
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref5, _excluded5);
170
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.default, (0, _extends2.default)({}, props, {
171
+ onChange: onChange,
172
+ size: convertSize(size),
173
+ color: convertColor(colorProp),
174
+ ref: ref,
175
+ slotProps: {
176
+ input: (0, _extends2.default)({}, inputProps, {
177
+ name,
178
+ onClick: onClick,
179
+ ref: inputRef
180
+ }),
181
+ thumb: {
182
+ children: icon
183
+ }
184
+ },
185
+ sx: [(0, _extends2.default)({}, edge === 'start' && {
186
+ ml: '-8px'
187
+ }, edge === 'end' && {
188
+ mr: '-8px'
189
+ }), ...(Array.isArray(sx) ? sx : [sx])]
190
+ }));
191
+ });
192
+ const Select = /*#__PURE__*/React.forwardRef((_ref6, ref) => {
193
+ let {
194
+ open,
195
+ onOpen,
196
+ value,
197
+ onChange,
198
+ size,
199
+ color,
200
+ variant,
201
+ MenuProps,
202
+ inputRef,
203
+ labelId
204
+ } = _ref6,
205
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref6, _excluded6);
206
+ const handleChange = (event, newValue) => {
207
+ if (event && onChange) {
208
+ // Same as in https://github.com/mui/material-ui/blob/e5558282a8f36856aef1299f3a36f3235e92e770/packages/mui-material/src/Select/SelectInput.js#L288-L300
209
+
210
+ // Redefine target to allow name and value to be read.
211
+ // This allows seamless integration with the most popular form libraries.
212
+ // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492
213
+ // Clone the event to not override `target` of the original event.
214
+ const nativeEvent = event.nativeEvent || event;
215
+ // @ts-ignore The nativeEvent is function, not object
216
+ const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
217
+ Object.defineProperty(clonedEvent, 'target', {
218
+ writable: true,
219
+ value: {
220
+ value: newValue,
221
+ name: props.name
222
+ }
223
+ });
224
+ onChange(clonedEvent, null);
225
+ }
226
+ };
227
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, (0, _extends2.default)({}, props, {
228
+ listboxOpen: open,
229
+ onListboxOpenChange: isOpen => {
230
+ if (isOpen) {
231
+ onOpen?.({});
232
+ } else {
233
+ MenuProps?.onClose?.({}, undefined);
234
+ }
235
+ },
236
+ size: convertSize(size),
237
+ color: convertColor(color),
238
+ variant: convertVariant(variant, 'outlined'),
239
+ ref: ref,
240
+ value: value,
241
+ onChange: handleChange,
242
+ slotProps: {
243
+ button: {
244
+ 'aria-labelledby': labelId,
245
+ ref: inputRef
246
+ },
247
+ listbox: {
248
+ disablePortal: false,
249
+ sx: {
250
+ zIndex: 1350
251
+ }
252
+ }
253
+ }
254
+ }));
255
+ });
256
+ const Option = /*#__PURE__*/React.forwardRef((_ref7, ref) => {
257
+ let props = (0, _objectWithoutPropertiesLoose2.default)(_ref7, _excluded7);
258
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Option.default, (0, _extends2.default)({}, props, {
259
+ ref: ref
260
+ }));
261
+ });
262
+ const InputLabel = /*#__PURE__*/React.forwardRef((_ref8, ref) => {
263
+ let {
264
+ sx
265
+ } = _ref8,
266
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref8, _excluded8);
267
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormLabel.default, (0, _extends2.default)({}, props, {
268
+ ref: ref,
269
+ sx: sx
270
+ }));
271
+ });
67
272
  const joySlots = {
68
273
  baseCheckbox: Checkbox,
69
- baseTextField: TextField
70
- // BaseFormControl: MUIFormControl,
71
- // BaseSelect: MUISelect,
72
- // BaseSwitch: MUISwitch,
73
- // BaseButton: MUIButton,
74
- // BaseIconButton: MUIIconButton,
274
+ baseTextField: TextField,
275
+ baseButton: Button,
276
+ baseIconButton: IconButton,
277
+ baseSwitch: Switch,
278
+ baseSelect: Select,
279
+ baseSelectOption: Option,
280
+ baseInputLabel: InputLabel,
281
+ baseFormControl: _FormControl.default
75
282
  // BaseTooltip: MUITooltip,
76
283
  // BasePopper: MUIPopper,
77
284
  };
@@ -43,7 +43,7 @@ const frFRGrid = {
43
43
  columnsPanelHideAllButton: 'Tout cacher',
44
44
  // Filter panel text
45
45
  filterPanelAddFilter: 'Ajouter un filtre',
46
- // filterPanelRemoveAll: 'Remove all',
46
+ filterPanelRemoveAll: 'Tout supprimer',
47
47
  filterPanelDeleteIconLabel: 'Supprimer',
48
48
  filterPanelLogicOperator: 'Opérateur logique',
49
49
  filterPanelOperator: 'Opérateur',
@@ -73,7 +73,7 @@ const frFRGrid = {
73
73
  // Column menu text
74
74
  columnMenuLabel: 'Menu',
75
75
  columnMenuShowColumns: 'Afficher les colonnes',
76
- // columnMenuManageColumns: 'Manage columns',
76
+ columnMenuManageColumns: 'Gérer les colonnes',
77
77
  columnMenuFilter: 'Filtrer',
78
78
  columnMenuHideColumn: 'Cacher',
79
79
  columnMenuUnsort: 'Annuler le tri',
@@ -43,7 +43,7 @@ const trTRGrid = {
43
43
  columnsPanelHideAllButton: 'Hepsini gizle',
44
44
  // Filter panel text
45
45
  filterPanelAddFilter: 'Filtre Ekle',
46
- // filterPanelRemoveAll: 'Remove all',
46
+ filterPanelRemoveAll: 'Hepsini kaldır',
47
47
  filterPanelDeleteIconLabel: 'Kaldır',
48
48
  filterPanelLogicOperator: 'Mantıksal operatörler',
49
49
  filterPanelOperator: 'Operatör',
@@ -73,7 +73,7 @@ const trTRGrid = {
73
73
  // Column menu text
74
74
  columnMenuLabel: 'Menü',
75
75
  columnMenuShowColumns: 'Sütunları göster',
76
- // columnMenuManageColumns: 'Manage columns',
76
+ columnMenuManageColumns: 'Sütunları yönet',
77
77
  columnMenuFilter: 'Filtre uygula',
78
78
  columnMenuHideColumn: 'Gizle',
79
79
  columnMenuUnsort: 'Sıralama',
@@ -43,7 +43,7 @@ const zhCNGrid = {
43
43
  columnsPanelHideAllButton: '隐藏所有',
44
44
  // Filter panel text
45
45
  filterPanelAddFilter: '添加筛选器',
46
- // filterPanelRemoveAll: 'Remove all',
46
+ filterPanelRemoveAll: '清除全部',
47
47
  filterPanelDeleteIconLabel: '删除',
48
48
  filterPanelLogicOperator: '逻辑操作器',
49
49
  filterPanelOperator: '操作器',
@@ -73,7 +73,7 @@ const zhCNGrid = {
73
73
  // Column menu text
74
74
  columnMenuLabel: '菜单',
75
75
  columnMenuShowColumns: '显示',
76
- // columnMenuManageColumns: 'Manage columns',
76
+ columnMenuManageColumns: '管理列',
77
77
  columnMenuFilter: '筛选器',
78
78
  columnMenuHideColumn: '隐藏',
79
79
  columnMenuUnsort: '恢复默认',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "6.2.1",
3
+ "version": "6.3.1",
4
4
  "description": "The community edition of the data grid component (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -36,10 +36,10 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@babel/runtime": "^7.21.0",
39
- "@mui/utils": "^5.11.13",
39
+ "@mui/utils": "^5.12.3",
40
40
  "clsx": "^1.2.1",
41
41
  "prop-types": "^15.8.1",
42
- "reselect": "^4.1.7"
42
+ "reselect": "^4.1.8"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@mui/material": "^5.4.1",