@mui/x-data-grid 8.11.2 → 8.11.3

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 (32) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/components/GridShadowScrollArea.js +2 -2
  3. package/components/GridSkeletonLoadingOverlay.js +2 -2
  4. package/components/panel/filterPanel/GridFilterInputBoolean.js +2 -2
  5. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +2 -2
  6. package/components/panel/filterPanel/GridFilterInputValue.js +2 -2
  7. package/components/quickFilter/QuickFilterControl.js +1 -1
  8. package/esm/components/GridShadowScrollArea.js +2 -2
  9. package/esm/components/GridSkeletonLoadingOverlay.js +2 -2
  10. package/esm/components/panel/filterPanel/GridFilterInputBoolean.js +2 -2
  11. package/esm/components/panel/filterPanel/GridFilterInputSingleSelect.js +2 -2
  12. package/esm/components/panel/filterPanel/GridFilterInputValue.js +2 -2
  13. package/esm/components/quickFilter/QuickFilterControl.js +1 -1
  14. package/esm/hooks/features/rows/gridRowsSelector.d.ts +6 -0
  15. package/esm/hooks/features/rows/gridRowsSelector.js +8 -0
  16. package/esm/hooks/features/rows/index.d.ts +1 -1
  17. package/esm/hooks/features/rows/index.js +1 -1
  18. package/esm/index.js +1 -1
  19. package/esm/material/index.js +35 -35
  20. package/esm/material/variables.js +2 -1
  21. package/esm/models/gridFilterItem.d.ts +4 -2
  22. package/esm/models/gridFilterOperator.d.ts +1 -1
  23. package/hooks/features/rows/gridRowsSelector.d.ts +6 -0
  24. package/hooks/features/rows/gridRowsSelector.js +8 -0
  25. package/hooks/features/rows/index.d.ts +1 -1
  26. package/hooks/features/rows/index.js +7 -0
  27. package/index.js +1 -1
  28. package/material/index.js +35 -35
  29. package/material/variables.js +2 -1
  30. package/models/gridFilterItem.d.ts +4 -2
  31. package/models/gridFilterOperator.d.ts +1 -1
  32. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -5,6 +5,92 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.11.3
9
+
10
+ _Sep 16, 2025_
11
+
12
+ We'd like to extend a big thank you to the 11 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 🐞 Bugfixes
15
+ - 📚 Documentation improvements
16
+
17
+ Special thanks go out to the community members for their valuable contributions:
18
+ @sai6855
19
+
20
+ The following are all team members who have contributed to this release:
21
+ @alexfauquette, @bernardobelchior, @brijeshb42, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @LukasTy, @rita-codes, @siriwatknp
22
+
23
+ ### Data Grid
24
+
25
+ #### `@mui/x-data-grid@8.11.3`
26
+
27
+ - [DataGrid] Fix numeric font size not being applied (#19552) @cherniavskii
28
+ - [DataGrid] Improve `operator` types to display literal values (#19529) @siriwatknp
29
+
30
+ #### `@mui/x-data-grid-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
31
+
32
+ Same changes as in `@mui/x-data-grid@8.11.3`.
33
+
34
+ #### `@mui/x-data-grid-premium@8.11.3` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link "Premium plan")
35
+
36
+ Same changes as in `@mui/x-data-grid-pro@8.11.3`.
37
+
38
+ ### Date and Time Pickers
39
+
40
+ #### `@mui/x-date-pickers@8.11.3`
41
+
42
+ - [pickers] Refactor `slots` and `slotProps` propagation strategy (#18867) @LukasTy
43
+
44
+ #### `@mui/x-date-pickers-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
45
+
46
+ Same changes as in `@mui/x-date-pickers@8.11.3`.
47
+
48
+ ### Charts
49
+
50
+ #### `@mui/x-charts@8.11.3`
51
+
52
+ - [charts] Add `inline-` piecewise legend options (#19382) @JCQuintas
53
+ - [charts] Add bar gradient example (#19174) @bernardobelchior
54
+ - [charts] Ignore empty tick labels in label overlap computation (#19547) @alexfauquette
55
+ - [charts] Rename `isBandScale` to `isDiscreteScale` (#19514) @bernardobelchior
56
+ - [charts] Fix legend position affecting toolbar's position (#19257) @sai6855
57
+
58
+ #### `@mui/x-charts-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
59
+
60
+ Same changes as in `@mui/x-charts@8.11.3`, plus:
61
+
62
+ - [charts-pro] Add chart title and caption to export demo (#19524) @bernardobelchior
63
+
64
+ ### Tree View
65
+
66
+ #### `@mui/x-tree-view@8.11.3`
67
+
68
+ - [tree view] Stop looping through all items to publish the `removeItem` event (#19500) @flaviendelangle
69
+ - [tree view] Support flat DOM structure (#19350) @flaviendelangle
70
+ - [tree view] Update cursor styles for disabled TreeItem (#19548) @sai6855
71
+
72
+ #### `@mui/x-tree-view-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
73
+
74
+ Same changes as in `@mui/x-tree-view@8.11.3`.
75
+
76
+ ### Codemod
77
+
78
+ #### `@mui/x-codemod@8.11.3`
79
+
80
+ Internal changes.
81
+
82
+ ### Docs
83
+
84
+ - [docs] Add styling row group recipe (#19349) @siriwatknp
85
+ - [docs] Group demos data into the dataset folder (#19549) @alexfauquette
86
+ - [docs] Add `shiny` bar chart example at the top (#19416) @JCQuintas
87
+
88
+ ### Core
89
+
90
+ - [code-infra] Axios update (#19577) @Janpot
91
+ - [code-infra] Remove usage of copy-files command from code-infra (#19518) @brijeshb42
92
+ - [internal] Fix naming to match convention @oliviertassinari
93
+
8
94
  ## 8.11.2
9
95
 
10
96
  _Sep 10, 2025_
@@ -86,8 +86,8 @@ const GridShadowScrollArea = exports.GridShadowScrollArea = (0, _forwardRef.forw
86
86
  const {
87
87
  children
88
88
  } = props,
89
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
90
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(ShadowScrollArea, (0, _extends2.default)({}, rest, {
89
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
90
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ShadowScrollArea, (0, _extends2.default)({}, other, {
91
91
  ref: ref,
92
92
  children: children
93
93
  }));
@@ -70,7 +70,7 @@ const GridSkeletonLoadingOverlayInner = exports.GridSkeletonLoadingOverlayInner
70
70
  visibleColumns,
71
71
  showFirstRowBorder
72
72
  } = props,
73
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
73
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
74
74
  const allVisibleColumns = (0, _hooks.useGridSelector)(apiRef, _hooks.gridVisibleColumnDefinitionsSelector);
75
75
  const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);
76
76
  const pinnedColumns = (0, _hooks.useGridSelector)(apiRef, _hooks.gridVisiblePinnedColumnDefinitionsSelector);
@@ -189,7 +189,7 @@ const GridSkeletonLoadingOverlayInner = exports.GridSkeletonLoadingOverlayInner
189
189
  (0, _hooks.useGridEvent)(apiRef, 'columnResize', handleColumnResize);
190
190
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonOverlay, (0, _extends2.default)({
191
191
  className: classes.root
192
- }, rest, {
192
+ }, other, {
193
193
  ref: handleRef,
194
194
  children: children
195
195
  }));
@@ -28,7 +28,7 @@ function GridFilterInputBoolean(props) {
28
28
  tabIndex,
29
29
  slotProps
30
30
  } = props,
31
- others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
31
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
32
32
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
33
33
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
34
34
  const labelId = (0, _useId.default)();
@@ -63,7 +63,7 @@ function GridFilterInputBoolean(props) {
63
63
  tabIndex
64
64
  }, rootSlotProps?.htmlInput)
65
65
  }
66
- }, baseSelectProps, others, slotProps?.root, {
66
+ }, baseSelectProps, other, slotProps?.root, {
67
67
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseSelectOption, (0, _extends2.default)({}, baseSelectOptionProps, {
68
68
  native: isSelectNative,
69
69
  value: "",
@@ -50,7 +50,7 @@ function GridFilterInputSingleSelect(props) {
50
50
  headerFilterMenu,
51
51
  slotProps
52
52
  } = props,
53
- others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
53
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
54
54
  const filterValue = item.value ?? '';
55
55
  const id = (0, _useId.default)();
56
56
  const labelId = (0, _useId.default)();
@@ -92,7 +92,7 @@ function GridFilterInputSingleSelect(props) {
92
92
  }, slotProps?.root.slotProps?.htmlInput)
93
93
  },
94
94
  native: isSelectNative
95
- }, rootProps.slotProps?.baseSelect, others, slotProps?.root, {
95
+ }, rootProps.slotProps?.baseSelect, other, slotProps?.root, {
96
96
  children: renderSingleSelectOptions({
97
97
  column: resolvedColumn,
98
98
  OptionComponent: rootProps.slots.baseSelectOption,
@@ -29,7 +29,7 @@ function GridFilterInputValue(props) {
29
29
  clearButton,
30
30
  headerFilterMenu
31
31
  } = props,
32
- others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
32
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
33
33
  const textFieldProps = slotProps?.root;
34
34
  const filterTimeout = (0, _useTimeout.useTimeout)();
35
35
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
@@ -76,7 +76,7 @@ function GridFilterInputValue(props) {
76
76
  }, textFieldProps?.slotProps?.htmlInput)
77
77
  }),
78
78
  inputRef: focusElementRef
79
- }, rootProps.slotProps?.baseTextField, others, textFieldProps)), headerFilterMenu, clearButton]
79
+ }, rootProps.slotProps?.baseTextField, other, textFieldProps)), headerFilterMenu, clearButton]
80
80
  });
81
81
  }
82
82
  function sanitizeFilterItemValue(value) {
@@ -126,6 +126,6 @@ process.env.NODE_ENV !== "production" ? QuickFilterControl.propTypes = {
126
126
  slotProps: _propTypes.default.object,
127
127
  style: _propTypes.default.object,
128
128
  tabIndex: _propTypes.default.number,
129
- type: _propTypes.default.oneOfType([_propTypes.default.oneOf(['button', 'checkbox', 'color', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week']), _propTypes.default.object]),
129
+ type: _propTypes.default.string,
130
130
  value: _propTypes.default.string
131
131
  } : void 0;
@@ -78,8 +78,8 @@ const GridShadowScrollArea = forwardRef(function GridShadowScrollArea(props, ref
78
78
  const {
79
79
  children
80
80
  } = props,
81
- rest = _objectWithoutPropertiesLoose(props, _excluded);
82
- return /*#__PURE__*/_jsx(ShadowScrollArea, _extends({}, rest, {
81
+ other = _objectWithoutPropertiesLoose(props, _excluded);
82
+ return /*#__PURE__*/_jsx(ShadowScrollArea, _extends({}, other, {
83
83
  ref: ref,
84
84
  children: children
85
85
  }));
@@ -62,7 +62,7 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
62
62
  visibleColumns,
63
63
  showFirstRowBorder
64
64
  } = props,
65
- rest = _objectWithoutPropertiesLoose(props, _excluded);
65
+ other = _objectWithoutPropertiesLoose(props, _excluded);
66
66
  const allVisibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
67
67
  const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);
68
68
  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
@@ -181,7 +181,7 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
181
181
  useGridEvent(apiRef, 'columnResize', handleColumnResize);
182
182
  return /*#__PURE__*/_jsx(SkeletonOverlay, _extends({
183
183
  className: classes.root
184
- }, rest, {
184
+ }, other, {
185
185
  ref: handleRef,
186
186
  children: children
187
187
  }));
@@ -20,7 +20,7 @@ function GridFilterInputBoolean(props) {
20
20
  tabIndex,
21
21
  slotProps
22
22
  } = props,
23
- others = _objectWithoutPropertiesLoose(props, _excluded);
23
+ other = _objectWithoutPropertiesLoose(props, _excluded);
24
24
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
25
25
  const rootProps = useGridRootProps();
26
26
  const labelId = useId();
@@ -55,7 +55,7 @@ function GridFilterInputBoolean(props) {
55
55
  tabIndex
56
56
  }, rootSlotProps?.htmlInput)
57
57
  }
58
- }, baseSelectProps, others, slotProps?.root, {
58
+ }, baseSelectProps, other, slotProps?.root, {
59
59
  children: [/*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
60
60
  native: isSelectNative,
61
61
  value: "",
@@ -42,7 +42,7 @@ function GridFilterInputSingleSelect(props) {
42
42
  headerFilterMenu,
43
43
  slotProps
44
44
  } = props,
45
- others = _objectWithoutPropertiesLoose(props, _excluded);
45
+ other = _objectWithoutPropertiesLoose(props, _excluded);
46
46
  const filterValue = item.value ?? '';
47
47
  const id = useId();
48
48
  const labelId = useId();
@@ -84,7 +84,7 @@ function GridFilterInputSingleSelect(props) {
84
84
  }, slotProps?.root.slotProps?.htmlInput)
85
85
  },
86
86
  native: isSelectNative
87
- }, rootProps.slotProps?.baseSelect, others, slotProps?.root, {
87
+ }, rootProps.slotProps?.baseSelect, other, slotProps?.root, {
88
88
  children: renderSingleSelectOptions({
89
89
  column: resolvedColumn,
90
90
  OptionComponent: rootProps.slots.baseSelectOption,
@@ -22,7 +22,7 @@ function GridFilterInputValue(props) {
22
22
  clearButton,
23
23
  headerFilterMenu
24
24
  } = props,
25
- others = _objectWithoutPropertiesLoose(props, _excluded);
25
+ other = _objectWithoutPropertiesLoose(props, _excluded);
26
26
  const textFieldProps = slotProps?.root;
27
27
  const filterTimeout = useTimeout();
28
28
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
@@ -69,7 +69,7 @@ function GridFilterInputValue(props) {
69
69
  }, textFieldProps?.slotProps?.htmlInput)
70
70
  }),
71
71
  inputRef: focusElementRef
72
- }, rootProps.slotProps?.baseTextField, others, textFieldProps)), headerFilterMenu, clearButton]
72
+ }, rootProps.slotProps?.baseTextField, other, textFieldProps)), headerFilterMenu, clearButton]
73
73
  });
74
74
  }
75
75
  function sanitizeFilterItemValue(value) {
@@ -118,7 +118,7 @@ process.env.NODE_ENV !== "production" ? QuickFilterControl.propTypes = {
118
118
  slotProps: PropTypes.object,
119
119
  style: PropTypes.object,
120
120
  tabIndex: PropTypes.number,
121
- type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'checkbox', 'color', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week']), PropTypes.object]),
121
+ type: PropTypes.string,
122
122
  value: PropTypes.string
123
123
  } : void 0;
124
124
  export { QuickFilterControl };
@@ -13,12 +13,18 @@ export declare const gridTopLevelRowCountSelector: (args_0: import("react").RefO
13
13
  export declare const gridRowsLookupSelector: (args_0: import("react").RefObject<{
14
14
  state: GridStateCommunity;
15
15
  } | null>) => import("@mui/x-data-grid").GridRowIdToModelLookup<import("@mui/x-data-grid").GridValidRowModel>;
16
+ /**
17
+ * @category Rows
18
+ */
16
19
  export declare const gridRowSelector: (args_0: import("react").RefObject<{
17
20
  state: GridStateCommunity;
18
21
  } | null>, id: GridRowId) => import("@mui/x-data-grid").GridValidRowModel;
19
22
  export declare const gridRowTreeSelector: (args_0: import("react").RefObject<{
20
23
  state: GridStateCommunity;
21
24
  } | null>) => import("@mui/x-data-grid").GridRowTreeConfig;
25
+ /**
26
+ * @category Rows
27
+ */
22
28
  export declare const gridRowNodeSelector: (args_0: import("react").RefObject<{
23
29
  state: GridStateCommunity;
24
30
  } | null>, rowId: GridRowId) => import("@mui/x-data-grid").GridTreeNode;
@@ -6,8 +6,16 @@ export const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector
6
6
 
7
7
  // TODO rows v6: Rename
8
8
  export const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToModelLookup);
9
+
10
+ /**
11
+ * @category Rows
12
+ */
9
13
  export const gridRowSelector = createSelector(gridRowsLookupSelector, (rows, id) => rows[id]);
10
14
  export const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);
15
+
16
+ /**
17
+ * @category Rows
18
+ */
11
19
  export const gridRowNodeSelector = createSelector(gridRowTreeSelector, (rowTree, rowId) => rowTree[rowId]);
12
20
  export const gridRowGroupsToFetchSelector = createSelector(gridRowsStateSelector, rows => rows.groupsToFetch);
13
21
  export const gridRowGroupingNameSelector = createSelector(gridRowsStateSelector, rows => rows.groupingName);
@@ -1,5 +1,5 @@
1
1
  export * from "./gridRowsMetaSelector.js";
2
2
  export * from "./gridRowsMetaState.js";
3
- export { gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector, gridRowNodeSelector } from "./gridRowsSelector.js";
3
+ export { gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector, gridRowNodeSelector, gridRowSelector } from "./gridRowsSelector.js";
4
4
  export type { GridRowsState, GridRowIdToModelLookup } from "./gridRowsInterfaces.js";
5
5
  export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid, isAutogeneratedRow } from "./gridRowsUtils.js";
@@ -1,4 +1,4 @@
1
1
  export * from "./gridRowsMetaSelector.js";
2
2
  export * from "./gridRowsMetaState.js";
3
- export { gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector, gridRowNodeSelector } from "./gridRowsSelector.js";
3
+ export { gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector, gridRowNodeSelector, gridRowSelector } from "./gridRowsSelector.js";
4
4
  export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid, isAutogeneratedRow } from "./gridRowsUtils.js";
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.11.2
2
+ * @mui/x-data-grid v8.11.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -134,7 +134,7 @@ const BaseSelect = forwardRef(function BaseSelect(props, ref) {
134
134
  style,
135
135
  fullWidth
136
136
  } = props,
137
- rest = _objectWithoutPropertiesLoose(props, _excluded);
137
+ other = _objectWithoutPropertiesLoose(props, _excluded);
138
138
  const menuProps = {
139
139
  PaperProps: {
140
140
  onKeyDown
@@ -162,7 +162,7 @@ const BaseSelect = forwardRef(function BaseSelect(props, ref) {
162
162
  displayEmpty: true,
163
163
  onChange: onChange,
164
164
  variant: "outlined"
165
- }, rest, {
165
+ }, other, {
166
166
  notched: true,
167
167
  inputProps: slotProps?.htmlInput,
168
168
  onOpen: onOpen,
@@ -194,7 +194,7 @@ const BasePagination = forwardRef(function BasePagination(props, ref) {
194
194
  material,
195
195
  disabled
196
196
  } = props,
197
- rest = _objectWithoutPropertiesLoose(props, _excluded2);
197
+ other = _objectWithoutPropertiesLoose(props, _excluded2);
198
198
  const computedProps = React.useMemo(() => {
199
199
  if (!disabled) {
200
200
  return undefined;
@@ -223,7 +223,7 @@ const BasePagination = forwardRef(function BasePagination(props, ref) {
223
223
  estimated: estimatedRowCount
224
224
  })),
225
225
  getItemAriaLabel: apiRef.current.getLocaleText('paginationItemAriaLabel')
226
- }, computedProps, rest, material, {
226
+ }, computedProps, other, material, {
227
227
  ref: ref
228
228
  }));
229
229
  });
@@ -232,8 +232,8 @@ const BaseBadge = forwardRef(function BaseBadge(props, ref) {
232
232
  const {
233
233
  material
234
234
  } = props,
235
- rest = _objectWithoutPropertiesLoose(props, _excluded3);
236
- return /*#__PURE__*/_jsx(MUIBadge, _extends({}, rest, material, {
235
+ other = _objectWithoutPropertiesLoose(props, _excluded3);
236
+ return /*#__PURE__*/_jsx(MUIBadge, _extends({}, other, material, {
237
237
  ref: ref
238
238
  }));
239
239
  });
@@ -287,8 +287,8 @@ const BaseCircularProgress = forwardRef(function BaseCircularProgress(props, ref
287
287
  const {
288
288
  material
289
289
  } = props,
290
- rest = _objectWithoutPropertiesLoose(props, _excluded5);
291
- return /*#__PURE__*/_jsx(MUICircularProgress, _extends({}, rest, material, {
290
+ other = _objectWithoutPropertiesLoose(props, _excluded5);
291
+ return /*#__PURE__*/_jsx(MUICircularProgress, _extends({}, other, material, {
292
292
  ref: ref
293
293
  }));
294
294
  });
@@ -297,8 +297,8 @@ const BaseDivider = forwardRef(function BaseDivider(props, ref) {
297
297
  const {
298
298
  material
299
299
  } = props,
300
- rest = _objectWithoutPropertiesLoose(props, _excluded6);
301
- return /*#__PURE__*/_jsx(MUIDivider, _extends({}, rest, material, {
300
+ other = _objectWithoutPropertiesLoose(props, _excluded6);
301
+ return /*#__PURE__*/_jsx(MUIDivider, _extends({}, other, material, {
302
302
  ref: ref
303
303
  }));
304
304
  });
@@ -307,8 +307,8 @@ const BaseLinearProgress = forwardRef(function BaseLinearProgress(props, ref) {
307
307
  const {
308
308
  material
309
309
  } = props,
310
- rest = _objectWithoutPropertiesLoose(props, _excluded7);
311
- return /*#__PURE__*/_jsx(MUILinearProgress, _extends({}, rest, material, {
310
+ other = _objectWithoutPropertiesLoose(props, _excluded7);
311
+ return /*#__PURE__*/_jsx(MUILinearProgress, _extends({}, other, material, {
312
312
  ref: ref
313
313
  }));
314
314
  });
@@ -317,8 +317,8 @@ const BaseButton = forwardRef(function BaseButton(props, ref) {
317
317
  const {
318
318
  material
319
319
  } = props,
320
- rest = _objectWithoutPropertiesLoose(props, _excluded8);
321
- return /*#__PURE__*/_jsx(MUIButton, _extends({}, rest, material, {
320
+ other = _objectWithoutPropertiesLoose(props, _excluded8);
321
+ return /*#__PURE__*/_jsx(MUIButton, _extends({}, other, material, {
322
322
  ref: ref
323
323
  }));
324
324
  });
@@ -327,8 +327,8 @@ const BaseChip = forwardRef(function BaseChip(props, ref) {
327
327
  const {
328
328
  material
329
329
  } = props,
330
- rest = _objectWithoutPropertiesLoose(props, _excluded9);
331
- return /*#__PURE__*/_jsx(MUIChip, _extends({}, rest, material, {
330
+ other = _objectWithoutPropertiesLoose(props, _excluded9);
331
+ return /*#__PURE__*/_jsx(MUIChip, _extends({}, other, material, {
332
332
  ref: ref
333
333
  }));
334
334
  });
@@ -337,8 +337,8 @@ const BaseIconButton = forwardRef(function BaseIconButton(props, ref) {
337
337
  const {
338
338
  material
339
339
  } = props,
340
- rest = _objectWithoutPropertiesLoose(props, _excluded0);
341
- return /*#__PURE__*/_jsx(MUIIconButton, _extends({}, rest, material, {
340
+ other = _objectWithoutPropertiesLoose(props, _excluded0);
341
+ return /*#__PURE__*/_jsx(MUIIconButton, _extends({}, other, material, {
342
342
  ref: ref
343
343
  }));
344
344
  });
@@ -347,8 +347,8 @@ const BaseTooltip = forwardRef(function BaseTooltip(props, ref) {
347
347
  const {
348
348
  material
349
349
  } = props,
350
- rest = _objectWithoutPropertiesLoose(props, _excluded1);
351
- return /*#__PURE__*/_jsx(MUITooltip, _extends({}, rest, material, {
350
+ other = _objectWithoutPropertiesLoose(props, _excluded1);
351
+ return /*#__PURE__*/_jsx(MUITooltip, _extends({}, other, material, {
352
352
  ref: ref
353
353
  }));
354
354
  });
@@ -357,8 +357,8 @@ const BaseSkeleton = forwardRef(function BaseSkeleton(props, ref) {
357
357
  const {
358
358
  material
359
359
  } = props,
360
- rest = _objectWithoutPropertiesLoose(props, _excluded10);
361
- return /*#__PURE__*/_jsx(MUISkeleton, _extends({}, rest, material, {
360
+ other = _objectWithoutPropertiesLoose(props, _excluded10);
361
+ return /*#__PURE__*/_jsx(MUISkeleton, _extends({}, other, material, {
362
362
  ref: ref
363
363
  }));
364
364
  });
@@ -369,16 +369,16 @@ const BaseSwitch = forwardRef(function BaseSwitch(props, ref) {
369
369
  label,
370
370
  className
371
371
  } = props,
372
- rest = _objectWithoutPropertiesLoose(props, _excluded11);
372
+ other = _objectWithoutPropertiesLoose(props, _excluded11);
373
373
  if (!label) {
374
- return /*#__PURE__*/_jsx(MUISwitch, _extends({}, rest, material, {
374
+ return /*#__PURE__*/_jsx(MUISwitch, _extends({}, other, material, {
375
375
  className: className,
376
376
  ref: ref
377
377
  }));
378
378
  }
379
379
  return /*#__PURE__*/_jsx(FormControlLabel, {
380
380
  className: className,
381
- control: /*#__PURE__*/_jsx(MUISwitch, _extends({}, rest, material, {
381
+ control: /*#__PURE__*/_jsx(MUISwitch, _extends({}, other, material, {
382
382
  ref: ref
383
383
  })),
384
384
  label: label
@@ -389,8 +389,8 @@ const BaseMenuList = forwardRef(function BaseMenuList(props, ref) {
389
389
  const {
390
390
  material
391
391
  } = props,
392
- rest = _objectWithoutPropertiesLoose(props, _excluded12);
393
- return /*#__PURE__*/_jsx(MUIMenuList, _extends({}, rest, material, {
392
+ other = _objectWithoutPropertiesLoose(props, _excluded12);
393
+ return /*#__PURE__*/_jsx(MUIMenuList, _extends({}, other, material, {
394
394
  ref: ref
395
395
  }));
396
396
  });
@@ -422,10 +422,10 @@ function BaseTextField(props) {
422
422
  slotProps,
423
423
  material
424
424
  } = props,
425
- rest = _objectWithoutPropertiesLoose(props, _excluded14);
425
+ other = _objectWithoutPropertiesLoose(props, _excluded14);
426
426
  return /*#__PURE__*/_jsx(MUITextField, _extends({
427
427
  variant: "outlined"
428
- }, rest, material, {
428
+ }, other, material, {
429
429
  inputProps: slotProps?.htmlInput,
430
430
  InputProps: transformInputProps(slotProps?.input),
431
431
  InputLabelProps: _extends({
@@ -449,7 +449,7 @@ function BaseAutocomplete(props) {
449
449
  slotProps,
450
450
  material
451
451
  } = props,
452
- rest = _objectWithoutPropertiesLoose(props, _excluded15);
452
+ other = _objectWithoutPropertiesLoose(props, _excluded15);
453
453
  return /*#__PURE__*/_jsx(MUIAutocomplete, _extends({
454
454
  id: id,
455
455
  multiple: multiple,
@@ -490,7 +490,7 @@ function BaseAutocomplete(props) {
490
490
  }, InputLabelProps)
491
491
  }, slotProps?.textField, rootProps.slotProps?.baseTextField));
492
492
  }
493
- }, rest, material));
493
+ }, other, material));
494
494
  }
495
495
  function BaseInput(props) {
496
496
  return /*#__PURE__*/_jsx(MUIInputBase, _extends({}, transformInputProps(props)));
@@ -503,8 +503,8 @@ function transformInputProps(props, wrapAdornments = true) {
503
503
  slotProps,
504
504
  material
505
505
  } = props,
506
- rest = _objectWithoutPropertiesLoose(props, _excluded18);
507
- const result = rest;
506
+ other = _objectWithoutPropertiesLoose(props, _excluded18);
507
+ const result = other;
508
508
  if (wrapAdornments) {
509
509
  if (result.startAdornment) {
510
510
  result.startAdornment = /*#__PURE__*/_jsx(InputAdornment, {
@@ -552,7 +552,7 @@ function BasePopper(props) {
552
552
  placement,
553
553
  material
554
554
  } = props,
555
- rest = _objectWithoutPropertiesLoose(props, _excluded19);
555
+ other = _objectWithoutPropertiesLoose(props, _excluded19);
556
556
  const modifiers = React.useMemo(() => {
557
557
  const result = [{
558
558
  name: 'preventOverflow',
@@ -614,7 +614,7 @@ function BasePopper(props) {
614
614
  transition: transition,
615
615
  placement: placement,
616
616
  modifiers: modifiers
617
- }, rest, material, {
617
+ }, other, material, {
618
618
  children: content
619
619
  }));
620
620
  }
@@ -97,7 +97,8 @@ function formatFont(font) {
97
97
  if (!font) {
98
98
  return undefined;
99
99
  }
100
- return `${font.fontWeight} ${font.fontSize} / ${font.lineHeight} ${font.fontFamily}`;
100
+ const fontSize = typeof font.fontSize === 'number' ? `${font.fontSize}px` : font.fontSize;
101
+ return `${font.fontWeight} ${fontSize} / ${font.lineHeight} ${font.fontFamily}`;
101
102
  }
102
103
 
103
104
  /**
@@ -1,3 +1,4 @@
1
+ import { GridBaseColDef } from "./colDef/gridColDef.js";
1
2
  /**
2
3
  * Filter item definition interface.
3
4
  * @demos
@@ -12,7 +13,7 @@ export interface GridFilterItem {
12
13
  /**
13
14
  * The column from which we want to filter the rows.
14
15
  */
15
- field: string;
16
+ field: GridBaseColDef['field'];
16
17
  /**
17
18
  * The filtering value.
18
19
  * The operator filtering function will decide for each row if the row values is correct compared to this value.
@@ -20,8 +21,9 @@ export interface GridFilterItem {
20
21
  value?: any;
21
22
  /**
22
23
  * The name of the operator we want to apply.
24
+ * A custom operator is supported by providing any string value.
23
25
  */
24
- operator: string;
26
+ operator: 'contains' | 'doesNotContain' | 'equals' | 'doesNotEqual' | 'startsWith' | 'endsWith' | '=' | '!=' | '>' | '>=' | '<' | '<=' | 'is' | 'not' | 'after' | 'onOrAfter' | 'before' | 'onOrBefore' | 'isEmpty' | 'isNotEmpty' | 'isAnyOf' | (string & {});
25
27
  }
26
28
  declare enum GridLogicOperator {
27
29
  And = "and",
@@ -25,7 +25,7 @@ export interface GridFilterOperator<R extends GridValidRowModel = any, V = any,
25
25
  * The name of the filter operator.
26
26
  * It will be matched with the `operator` property of the filter items.
27
27
  */
28
- value: string;
28
+ value: GridFilterItem['operator'];
29
29
  /**
30
30
  * The callback that generates a filtering function for a given filter item and column.
31
31
  * This function can return `null` to skip filtering for this item and column.
@@ -13,12 +13,18 @@ export declare const gridTopLevelRowCountSelector: (args_0: import("react").RefO
13
13
  export declare const gridRowsLookupSelector: (args_0: import("react").RefObject<{
14
14
  state: GridStateCommunity;
15
15
  } | null>) => import("@mui/x-data-grid").GridRowIdToModelLookup<import("@mui/x-data-grid").GridValidRowModel>;
16
+ /**
17
+ * @category Rows
18
+ */
16
19
  export declare const gridRowSelector: (args_0: import("react").RefObject<{
17
20
  state: GridStateCommunity;
18
21
  } | null>, id: GridRowId) => import("@mui/x-data-grid").GridValidRowModel;
19
22
  export declare const gridRowTreeSelector: (args_0: import("react").RefObject<{
20
23
  state: GridStateCommunity;
21
24
  } | null>) => import("@mui/x-data-grid").GridRowTreeConfig;
25
+ /**
26
+ * @category Rows
27
+ */
22
28
  export declare const gridRowNodeSelector: (args_0: import("react").RefObject<{
23
29
  state: GridStateCommunity;
24
30
  } | null>, rowId: GridRowId) => import("@mui/x-data-grid").GridTreeNode;
@@ -12,8 +12,16 @@ const gridTopLevelRowCountSelector = exports.gridTopLevelRowCountSelector = (0,
12
12
 
13
13
  // TODO rows v6: Rename
14
14
  const gridRowsLookupSelector = exports.gridRowsLookupSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.dataRowIdToModelLookup);
15
+
16
+ /**
17
+ * @category Rows
18
+ */
15
19
  const gridRowSelector = exports.gridRowSelector = (0, _createSelector.createSelector)(gridRowsLookupSelector, (rows, id) => rows[id]);
16
20
  const gridRowTreeSelector = exports.gridRowTreeSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.tree);
21
+
22
+ /**
23
+ * @category Rows
24
+ */
17
25
  const gridRowNodeSelector = exports.gridRowNodeSelector = (0, _createSelector.createSelector)(gridRowTreeSelector, (rowTree, rowId) => rowTree[rowId]);
18
26
  const gridRowGroupsToFetchSelector = exports.gridRowGroupsToFetchSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.groupsToFetch);
19
27
  const gridRowGroupingNameSelector = exports.gridRowGroupingNameSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.groupingName);
@@ -1,5 +1,5 @@
1
1
  export * from "./gridRowsMetaSelector.js";
2
2
  export * from "./gridRowsMetaState.js";
3
- export { gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector, gridRowNodeSelector } from "./gridRowsSelector.js";
3
+ export { gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector, gridRowNodeSelector, gridRowSelector } from "./gridRowsSelector.js";
4
4
  export type { GridRowsState, GridRowIdToModelLookup } from "./gridRowsInterfaces.js";
5
5
  export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid, isAutogeneratedRow } from "./gridRowsUtils.js";
@@ -14,6 +14,7 @@ var _exportNames = {
14
14
  gridRowMaximumTreeDepthSelector: true,
15
15
  gridDataRowIdsSelector: true,
16
16
  gridRowNodeSelector: true,
17
+ gridRowSelector: true,
17
18
  GRID_ROOT_GROUP_ID: true,
18
19
  checkGridRowIdIsValid: true,
19
20
  isAutogeneratedRow: true
@@ -60,6 +61,12 @@ Object.defineProperty(exports, "gridRowNodeSelector", {
60
61
  return _gridRowsSelector.gridRowNodeSelector;
61
62
  }
62
63
  });
64
+ Object.defineProperty(exports, "gridRowSelector", {
65
+ enumerable: true,
66
+ get: function () {
67
+ return _gridRowsSelector.gridRowSelector;
68
+ }
69
+ });
63
70
  Object.defineProperty(exports, "gridRowTreeDepthsSelector", {
64
71
  enumerable: true,
65
72
  get: function () {
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.11.2
2
+ * @mui/x-data-grid v8.11.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/material/index.js CHANGED
@@ -147,7 +147,7 @@ const BaseSelect = (0, _forwardRef.forwardRef)(function BaseSelect(props, ref) {
147
147
  style,
148
148
  fullWidth
149
149
  } = props,
150
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
150
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
151
151
  const menuProps = {
152
152
  PaperProps: {
153
153
  onKeyDown
@@ -175,7 +175,7 @@ const BaseSelect = (0, _forwardRef.forwardRef)(function BaseSelect(props, ref) {
175
175
  displayEmpty: true,
176
176
  onChange: onChange,
177
177
  variant: "outlined"
178
- }, rest, {
178
+ }, other, {
179
179
  notched: true,
180
180
  inputProps: slotProps?.htmlInput,
181
181
  onOpen: onOpen,
@@ -207,7 +207,7 @@ const BasePagination = (0, _forwardRef.forwardRef)(function BasePagination(props
207
207
  material,
208
208
  disabled
209
209
  } = props,
210
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded2);
210
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded2);
211
211
  const computedProps = React.useMemo(() => {
212
212
  if (!disabled) {
213
213
  return undefined;
@@ -236,7 +236,7 @@ const BasePagination = (0, _forwardRef.forwardRef)(function BasePagination(props
236
236
  estimated: estimatedRowCount
237
237
  })),
238
238
  getItemAriaLabel: apiRef.current.getLocaleText('paginationItemAriaLabel')
239
- }, computedProps, rest, material, {
239
+ }, computedProps, other, material, {
240
240
  ref: ref
241
241
  }));
242
242
  });
@@ -245,8 +245,8 @@ const BaseBadge = (0, _forwardRef.forwardRef)(function BaseBadge(props, ref) {
245
245
  const {
246
246
  material
247
247
  } = props,
248
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded3);
249
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Badge.default, (0, _extends2.default)({}, rest, material, {
248
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded3);
249
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Badge.default, (0, _extends2.default)({}, other, material, {
250
250
  ref: ref
251
251
  }));
252
252
  });
@@ -300,8 +300,8 @@ const BaseCircularProgress = (0, _forwardRef.forwardRef)(function BaseCircularPr
300
300
  const {
301
301
  material
302
302
  } = props,
303
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded5);
304
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, (0, _extends2.default)({}, rest, material, {
303
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded5);
304
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, (0, _extends2.default)({}, other, material, {
305
305
  ref: ref
306
306
  }));
307
307
  });
@@ -310,8 +310,8 @@ const BaseDivider = (0, _forwardRef.forwardRef)(function BaseDivider(props, ref)
310
310
  const {
311
311
  material
312
312
  } = props,
313
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded6);
314
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, (0, _extends2.default)({}, rest, material, {
313
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded6);
314
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, (0, _extends2.default)({}, other, material, {
315
315
  ref: ref
316
316
  }));
317
317
  });
@@ -320,8 +320,8 @@ const BaseLinearProgress = (0, _forwardRef.forwardRef)(function BaseLinearProgre
320
320
  const {
321
321
  material
322
322
  } = props,
323
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded7);
324
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinearProgress.default, (0, _extends2.default)({}, rest, material, {
323
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded7);
324
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinearProgress.default, (0, _extends2.default)({}, other, material, {
325
325
  ref: ref
326
326
  }));
327
327
  });
@@ -330,8 +330,8 @@ const BaseButton = (0, _forwardRef.forwardRef)(function BaseButton(props, ref) {
330
330
  const {
331
331
  material
332
332
  } = props,
333
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded8);
334
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, (0, _extends2.default)({}, rest, material, {
333
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded8);
334
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, (0, _extends2.default)({}, other, material, {
335
335
  ref: ref
336
336
  }));
337
337
  });
@@ -340,8 +340,8 @@ const BaseChip = (0, _forwardRef.forwardRef)(function BaseChip(props, ref) {
340
340
  const {
341
341
  material
342
342
  } = props,
343
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded9);
344
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, (0, _extends2.default)({}, rest, material, {
343
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded9);
344
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, (0, _extends2.default)({}, other, material, {
345
345
  ref: ref
346
346
  }));
347
347
  });
@@ -350,8 +350,8 @@ const BaseIconButton = (0, _forwardRef.forwardRef)(function BaseIconButton(props
350
350
  const {
351
351
  material
352
352
  } = props,
353
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded0);
354
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, (0, _extends2.default)({}, rest, material, {
353
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded0);
354
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, (0, _extends2.default)({}, other, material, {
355
355
  ref: ref
356
356
  }));
357
357
  });
@@ -360,8 +360,8 @@ const BaseTooltip = (0, _forwardRef.forwardRef)(function BaseTooltip(props, ref)
360
360
  const {
361
361
  material
362
362
  } = props,
363
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded1);
364
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, (0, _extends2.default)({}, rest, material, {
363
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded1);
364
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, (0, _extends2.default)({}, other, material, {
365
365
  ref: ref
366
366
  }));
367
367
  });
@@ -370,8 +370,8 @@ const BaseSkeleton = (0, _forwardRef.forwardRef)(function BaseSkeleton(props, re
370
370
  const {
371
371
  material
372
372
  } = props,
373
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded10);
374
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.default, (0, _extends2.default)({}, rest, material, {
373
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded10);
374
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.default, (0, _extends2.default)({}, other, material, {
375
375
  ref: ref
376
376
  }));
377
377
  });
@@ -382,16 +382,16 @@ const BaseSwitch = (0, _forwardRef.forwardRef)(function BaseSwitch(props, ref) {
382
382
  label,
383
383
  className
384
384
  } = props,
385
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded11);
385
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded11);
386
386
  if (!label) {
387
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.default, (0, _extends2.default)({}, rest, material, {
387
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.default, (0, _extends2.default)({}, other, material, {
388
388
  className: className,
389
389
  ref: ref
390
390
  }));
391
391
  }
392
392
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(FormControlLabel, {
393
393
  className: className,
394
- control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.default, (0, _extends2.default)({}, rest, material, {
394
+ control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.default, (0, _extends2.default)({}, other, material, {
395
395
  ref: ref
396
396
  })),
397
397
  label: label
@@ -402,8 +402,8 @@ const BaseMenuList = (0, _forwardRef.forwardRef)(function BaseMenuList(props, re
402
402
  const {
403
403
  material
404
404
  } = props,
405
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded12);
406
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuList.default, (0, _extends2.default)({}, rest, material, {
405
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded12);
406
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuList.default, (0, _extends2.default)({}, other, material, {
407
407
  ref: ref
408
408
  }));
409
409
  });
@@ -435,10 +435,10 @@ function BaseTextField(props) {
435
435
  slotProps,
436
436
  material
437
437
  } = props,
438
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded14);
438
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded14);
439
439
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, (0, _extends2.default)({
440
440
  variant: "outlined"
441
- }, rest, material, {
441
+ }, other, material, {
442
442
  inputProps: slotProps?.htmlInput,
443
443
  InputProps: transformInputProps(slotProps?.input),
444
444
  InputLabelProps: (0, _extends2.default)({
@@ -462,7 +462,7 @@ function BaseAutocomplete(props) {
462
462
  slotProps,
463
463
  material
464
464
  } = props,
465
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded15);
465
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded15);
466
466
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Autocomplete.default, (0, _extends2.default)({
467
467
  id: id,
468
468
  multiple: multiple,
@@ -503,7 +503,7 @@ function BaseAutocomplete(props) {
503
503
  }, InputLabelProps)
504
504
  }, slotProps?.textField, rootProps.slotProps?.baseTextField));
505
505
  }
506
- }, rest, material));
506
+ }, other, material));
507
507
  }
508
508
  function BaseInput(props) {
509
509
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputBase.default, (0, _extends2.default)({}, transformInputProps(props)));
@@ -516,8 +516,8 @@ function transformInputProps(props, wrapAdornments = true) {
516
516
  slotProps,
517
517
  material
518
518
  } = props,
519
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded18);
520
- const result = rest;
519
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded18);
520
+ const result = other;
521
521
  if (wrapAdornments) {
522
522
  if (result.startAdornment) {
523
523
  result.startAdornment = /*#__PURE__*/(0, _jsxRuntime.jsx)(InputAdornment, {
@@ -565,7 +565,7 @@ function BasePopper(props) {
565
565
  placement,
566
566
  material
567
567
  } = props,
568
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded19);
568
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded19);
569
569
  const modifiers = React.useMemo(() => {
570
570
  const result = [{
571
571
  name: 'preventOverflow',
@@ -627,7 +627,7 @@ function BasePopper(props) {
627
627
  transition: transition,
628
628
  placement: placement,
629
629
  modifiers: modifiers
630
- }, rest, material, {
630
+ }, other, material, {
631
631
  children: content
632
632
  }));
633
633
  }
@@ -103,7 +103,8 @@ function formatFont(font) {
103
103
  if (!font) {
104
104
  return undefined;
105
105
  }
106
- return `${font.fontWeight} ${font.fontSize} / ${font.lineHeight} ${font.fontFamily}`;
106
+ const fontSize = typeof font.fontSize === 'number' ? `${font.fontSize}px` : font.fontSize;
107
+ return `${font.fontWeight} ${fontSize} / ${font.lineHeight} ${font.fontFamily}`;
107
108
  }
108
109
 
109
110
  /**
@@ -1,3 +1,4 @@
1
+ import { GridBaseColDef } from "./colDef/gridColDef.js";
1
2
  /**
2
3
  * Filter item definition interface.
3
4
  * @demos
@@ -12,7 +13,7 @@ export interface GridFilterItem {
12
13
  /**
13
14
  * The column from which we want to filter the rows.
14
15
  */
15
- field: string;
16
+ field: GridBaseColDef['field'];
16
17
  /**
17
18
  * The filtering value.
18
19
  * The operator filtering function will decide for each row if the row values is correct compared to this value.
@@ -20,8 +21,9 @@ export interface GridFilterItem {
20
21
  value?: any;
21
22
  /**
22
23
  * The name of the operator we want to apply.
24
+ * A custom operator is supported by providing any string value.
23
25
  */
24
- operator: string;
26
+ operator: 'contains' | 'doesNotContain' | 'equals' | 'doesNotEqual' | 'startsWith' | 'endsWith' | '=' | '!=' | '>' | '>=' | '<' | '<=' | 'is' | 'not' | 'after' | 'onOrAfter' | 'before' | 'onOrBefore' | 'isEmpty' | 'isNotEmpty' | 'isAnyOf' | (string & {});
25
27
  }
26
28
  declare enum GridLogicOperator {
27
29
  And = "and",
@@ -25,7 +25,7 @@ export interface GridFilterOperator<R extends GridValidRowModel = any, V = any,
25
25
  * The name of the filter operator.
26
26
  * It will be matched with the `operator` property of the filter items.
27
27
  */
28
- value: string;
28
+ value: GridFilterItem['operator'];
29
29
  /**
30
30
  * The callback that generates a filtering function for a given filter item and column.
31
31
  * This function can return `null` to skip filtering for this item and column.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "8.11.2",
3
+ "version": "8.11.3",
4
4
  "author": "MUI Team",
5
5
  "description": "The Community plan edition of the MUI X Data Grid components.",
6
6
  "license": "MIT",
@@ -42,8 +42,8 @@
42
42
  "clsx": "^2.1.1",
43
43
  "prop-types": "^15.8.1",
44
44
  "use-sync-external-store": "^1.5.0",
45
- "@mui/x-internals": "8.11.2",
46
- "@mui/x-virtualizer": "0.1.6"
45
+ "@mui/x-internals": "8.11.3",
46
+ "@mui/x-virtualizer": "0.1.7"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@emotion/react": "^11.9.0",