@mui/x-data-grid 6.16.1 → 6.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/DataGrid/DataGrid.d.ts +7 -0
  3. package/DataGrid/DataGrid.js +8 -1
  4. package/colDef/gridDateColDef.js +0 -4
  5. package/components/GridRow.js +7 -3
  6. package/components/cell/GridCell.js +7 -3
  7. package/components/containers/GridRootStyles.js +3 -0
  8. package/components/panel/filterPanel/GridFilterForm.d.ts +7 -0
  9. package/components/panel/filterPanel/GridFilterForm.js +8 -0
  10. package/components/panel/filterPanel/GridFilterPanel.d.ts +7 -0
  11. package/components/panel/filterPanel/GridFilterPanel.js +8 -0
  12. package/components/toolbar/GridToolbarQuickFilter.d.ts +8 -0
  13. package/components/toolbar/GridToolbarQuickFilter.js +9 -0
  14. package/components/virtualization/GridVirtualScroller.js +3 -1
  15. package/constants/gridClasses.d.ts +4 -0
  16. package/constants/gridClasses.js +1 -1
  17. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +4 -1
  18. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +13 -2
  19. package/hooks/features/columnGrouping/useGridColumnGrouping.js +12 -6
  20. package/hooks/features/columns/gridColumnsUtils.js +0 -1
  21. package/hooks/features/filter/gridFilterUtils.js +4 -4
  22. package/hooks/features/virtualization/useGridVirtualScroller.js +8 -2
  23. package/index.js +1 -1
  24. package/legacy/DataGrid/DataGrid.js +8 -1
  25. package/legacy/colDef/gridDateColDef.js +0 -4
  26. package/legacy/components/GridRow.js +6 -2
  27. package/legacy/components/cell/GridCell.js +7 -3
  28. package/legacy/components/containers/GridRootStyles.js +2 -0
  29. package/legacy/components/panel/filterPanel/GridFilterForm.js +8 -0
  30. package/legacy/components/panel/filterPanel/GridFilterPanel.js +8 -0
  31. package/legacy/components/toolbar/GridToolbarQuickFilter.js +9 -0
  32. package/legacy/components/virtualization/GridVirtualScroller.js +3 -1
  33. package/legacy/constants/gridClasses.js +1 -1
  34. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +13 -2
  35. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +12 -6
  36. package/legacy/hooks/features/columns/gridColumnsUtils.js +0 -1
  37. package/legacy/hooks/features/filter/gridFilterUtils.js +4 -4
  38. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +8 -2
  39. package/legacy/index.js +1 -1
  40. package/legacy/locales/arSD.js +26 -28
  41. package/legacy/locales/roRO.js +1 -1
  42. package/locales/arSD.js +26 -28
  43. package/locales/roRO.js +1 -1
  44. package/models/events/gridEventLookup.d.ts +14 -0
  45. package/models/props/DataGridProps.d.ts +1 -1
  46. package/modern/DataGrid/DataGrid.js +8 -1
  47. package/modern/colDef/gridDateColDef.js +0 -4
  48. package/modern/components/GridRow.js +7 -3
  49. package/modern/components/cell/GridCell.js +6 -2
  50. package/modern/components/containers/GridRootStyles.js +3 -0
  51. package/modern/components/panel/filterPanel/GridFilterForm.js +8 -0
  52. package/modern/components/panel/filterPanel/GridFilterPanel.js +8 -0
  53. package/modern/components/toolbar/GridToolbarQuickFilter.js +9 -0
  54. package/modern/components/virtualization/GridVirtualScroller.js +3 -1
  55. package/modern/constants/gridClasses.js +1 -1
  56. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +13 -2
  57. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +10 -3
  58. package/modern/hooks/features/columns/gridColumnsUtils.js +0 -1
  59. package/modern/hooks/features/filter/gridFilterUtils.js +4 -4
  60. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +8 -2
  61. package/modern/index.js +1 -1
  62. package/modern/locales/arSD.js +26 -28
  63. package/modern/locales/roRO.js +1 -1
  64. package/node/DataGrid/DataGrid.js +8 -1
  65. package/node/colDef/gridDateColDef.js +0 -4
  66. package/node/components/GridRow.js +7 -3
  67. package/node/components/cell/GridCell.js +6 -2
  68. package/node/components/containers/GridRootStyles.js +3 -0
  69. package/node/components/panel/filterPanel/GridFilterForm.js +9 -1
  70. package/node/components/panel/filterPanel/GridFilterPanel.js +9 -1
  71. package/node/components/toolbar/GridToolbarQuickFilter.js +10 -1
  72. package/node/components/virtualization/GridVirtualScroller.js +3 -1
  73. package/node/constants/gridClasses.js +1 -1
  74. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +13 -2
  75. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +10 -3
  76. package/node/hooks/features/columns/gridColumnsUtils.js +0 -1
  77. package/node/hooks/features/filter/gridFilterUtils.js +4 -4
  78. package/node/hooks/features/virtualization/useGridVirtualScroller.js +8 -2
  79. package/node/index.js +1 -1
  80. package/node/locales/arSD.js +26 -28
  81. package/node/locales/roRO.js +1 -1
  82. package/package.json +1 -1
@@ -47,9 +47,10 @@ var useUtilityClasses = function useUtilityClasses(ownerState) {
47
47
  showRightBorder = ownerState.showRightBorder,
48
48
  isEditable = ownerState.isEditable,
49
49
  isSelected = ownerState.isSelected,
50
+ isSelectionMode = ownerState.isSelectionMode,
50
51
  classes = ownerState.classes;
51
52
  var slots = {
52
- root: ['cell', "cell--text".concat(capitalize(align)), isEditable && 'cell--editable', isSelected && 'selected', showRightBorder && 'cell--withRightBorder', 'withBorderColor'],
53
+ root: ['cell', "cell--text".concat(capitalize(align)), isEditable && 'cell--editable', isSelected && 'selected', showRightBorder && 'cell--withRightBorder', isSelectionMode && !isEditable && 'cell--selectionMode', 'withBorderColor'],
53
54
  content: ['cellContent']
54
55
  };
55
56
  return composeClasses(slots, getDataGridUtilityClass, classes);
@@ -386,7 +387,7 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
386
387
  } : void 0;
387
388
  export { MemoizedCellWrapper as GridCellWrapper, GridCell };
388
389
  var GridCellV7 = /*#__PURE__*/React.forwardRef(function (props, ref) {
389
- var _rootProps$experiment3, _rootProps$experiment4;
390
+ var _rootProps$unstable_c, _rootProps$experiment3, _rootProps$experiment4;
390
391
  var column = props.column,
391
392
  rowId = props.rowId,
392
393
  editCellState = props.editCellState,
@@ -460,12 +461,15 @@ var GridCellV7 = /*#__PURE__*/React.forwardRef(function (props, ref) {
460
461
  var cellRef = React.useRef(null);
461
462
  var handleRef = useForkRef(ref, cellRef);
462
463
  var focusElementRef = React.useRef(null);
464
+ // @ts-expect-error To access `unstable_cellSelection` flag as it's a `premium` feature
465
+ var isSelectionMode = (_rootProps$unstable_c = rootProps.unstable_cellSelection) != null ? _rootProps$unstable_c : false;
463
466
  var ownerState = {
464
467
  align: align,
465
468
  showRightBorder: showRightBorder,
466
469
  isEditable: isEditable,
467
470
  classes: rootProps.classes,
468
- isSelected: isSelected
471
+ isSelected: isSelected,
472
+ isSelectionMode: isSelectionMode
469
473
  };
470
474
  var classes = useUtilityClasses(ownerState);
471
475
  var publishMouseUp = React.useCallback(function (eventName) {
@@ -219,6 +219,8 @@ export var GridRootStyles = styled('div', {
219
219
  }), _defineProperty(_extends2, "& .".concat(gridClasses.cellContent), {
220
220
  overflow: 'hidden',
221
221
  textOverflow: 'ellipsis'
222
+ }), _defineProperty(_extends2, "& .".concat(gridClasses.cell, ".").concat(gridClasses['cell--selectionMode']), {
223
+ cursor: 'default'
222
224
  }), _defineProperty(_extends2, "& .".concat(gridClasses.cell, ".").concat(gridClasses['cell--editing']), {
223
225
  padding: 1,
224
226
  display: 'flex',
@@ -468,4 +468,12 @@ process.env.NODE_ENV !== "production" ? GridFilterForm.propTypes = {
468
468
  */
469
469
  valueInputProps: PropTypes.any
470
470
  } : void 0;
471
+
472
+ /**
473
+ * Demos:
474
+ * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)
475
+ *
476
+ * API:
477
+ * - [GridFilterForm API](https://mui.com/x/api/data-grid/grid-filter-form/)
478
+ */
471
479
  export { GridFilterForm };
@@ -224,4 +224,12 @@ process.env.NODE_ENV !== "production" ? GridFilterPanel.propTypes = {
224
224
  */
225
225
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
226
226
  } : void 0;
227
+
228
+ /**
229
+ * Demos:
230
+ * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)
231
+ *
232
+ * API:
233
+ * - [GridFilterPanel API](https://mui.com/x/api/data-grid/grid-filter-panel/)
234
+ */
227
235
  export { GridFilterPanel, getGridFilter };
@@ -149,4 +149,13 @@ process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
149
149
  */
150
150
  quickFilterParser: PropTypes.func
151
151
  } : void 0;
152
+
153
+ /**
154
+ * Demos:
155
+ * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)
156
+ * - [Filtering - quick filter](https://mui.com/x/react-data-grid/filtering/quick-filter/)
157
+ *
158
+ * API:
159
+ * - [GridToolbarQuickFilter API](https://mui.com/x/api/data-grid/grid-toolbar-quick-filter/)
160
+ */
152
161
  export { GridToolbarQuickFilter };
@@ -26,8 +26,10 @@ var VirtualScrollerRoot = styled('div', {
26
26
  position: 'relative',
27
27
  '@media print': {
28
28
  overflow: 'hidden'
29
- }
29
+ },
30
+ zIndex: 0 // See https://github.com/mui/mui-x/issues/10547
30
31
  });
32
+
31
33
  var GridVirtualScroller = /*#__PURE__*/React.forwardRef(function GridVirtualScroller(props, ref) {
32
34
  var rootProps = useGridRootProps();
33
35
  var classes = useUtilityClasses(rootProps);
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', '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', 'headerFilterRow', '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']);
5
+ export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--selectionMode', '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', 'headerFilterRow', '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']);
@@ -33,7 +33,7 @@ export var unwrapGroupingColumnModel = function unwrapGroupingColumnModel(column
33
33
  });
34
34
  return unwrappedSubTree;
35
35
  };
36
- export var getColumnGroupsHeaderStructure = function getColumnGroupsHeaderStructure(orderedColumns, unwrappedGroupingModel) {
36
+ export var getColumnGroupsHeaderStructure = function getColumnGroupsHeaderStructure(orderedColumns, unwrappedGroupingModel, pinnedFields) {
37
37
  var getParents = function getParents(field) {
38
38
  var _unwrappedGroupingMod;
39
39
  return (_unwrappedGroupingMod = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod : [];
@@ -45,6 +45,15 @@ export var getColumnGroupsHeaderStructure = function getColumnGroupsHeaderStruct
45
45
  var haveSameParents = function haveSameParents(field1, field2, depth) {
46
46
  return isDeepEqual(getParents(field1).slice(0, depth + 1), getParents(field2).slice(0, depth + 1));
47
47
  };
48
+ var haveDifferentContainers = function haveDifferentContainers(field1, field2) {
49
+ if (pinnedFields != null && pinnedFields.left && pinnedFields.left.includes(field1) && !pinnedFields.left.includes(field2)) {
50
+ return true;
51
+ }
52
+ if (pinnedFields != null && pinnedFields.right && !pinnedFields.right.includes(field1) && pinnedFields.right.includes(field2)) {
53
+ return true;
54
+ }
55
+ return false;
56
+ };
48
57
  var _loop = function _loop(depth) {
49
58
  var depthStructure = orderedColumns.reduce(function (structure, newField) {
50
59
  var _getParents$depth;
@@ -58,7 +67,9 @@ export var getColumnGroupsHeaderStructure = function getColumnGroupsHeaderStruct
58
67
  var lastGroup = structure[structure.length - 1];
59
68
  var prevField = lastGroup.columnFields[lastGroup.columnFields.length - 1];
60
69
  var prevGroupId = lastGroup.groupId;
61
- if (prevGroupId !== groupId || !haveSameParents(prevField, newField, depth)) {
70
+ if (prevGroupId !== groupId || !haveSameParents(prevField, newField, depth) ||
71
+ // Fix for https://github.com/mui/mui-x/issues/7041
72
+ haveDifferentContainers(prevField, newField)) {
62
73
  // It's a new group
63
74
  return [].concat(_toConsumableArray(structure), [{
64
75
  columnFields: [newField],
@@ -37,7 +37,7 @@ var createGroupLookup = function createGroupLookup(columnGroupingModel) {
37
37
  return _extends({}, groupLookup);
38
38
  };
39
39
  export var columnGroupsStateInitializer = function columnGroupsStateInitializer(state, props, apiRef) {
40
- var _props$experimentalFe, _props$columnGrouping, _props$columnGrouping2;
40
+ var _props$experimentalFe, _props$columnGrouping, _props$columnGrouping2, _apiRef$current$state;
41
41
  if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
42
42
  return state;
43
43
  }
@@ -45,7 +45,8 @@ export var columnGroupsStateInitializer = function columnGroupsStateInitializer(
45
45
  var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
46
46
  var groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
47
47
  var unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
48
- var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
48
+ var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, // @ts-expect-error Move this part to `Pro` package
49
+ (_apiRef$current$state = apiRef.current.state.pinnedColumns) != null ? _apiRef$current$state : {});
49
50
  var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
50
51
  var _unwrappedGroupingMod, _unwrappedGroupingMod2;
51
52
  return (_unwrappedGroupingMod = (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod2.length) != null ? _unwrappedGroupingMod : 0;
@@ -87,9 +88,12 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
87
88
  var _props$columnGrouping3;
88
89
  var unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping3 = props.columnGroupingModel) != null ? _props$columnGrouping3 : []);
89
90
  apiRef.current.setState(function (state) {
90
- var _state$columns$ordere, _state$columns;
91
+ var _state$columns$ordere, _state$columns, _state$pinnedColumns;
91
92
  var orderedFields = (_state$columns$ordere = (_state$columns = state.columns) == null ? void 0 : _state$columns.orderedFields) != null ? _state$columns$ordere : [];
92
- var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel);
93
+
94
+ // @ts-expect-error Move this logic to `Pro` package
95
+ var pinnedColumns = (_state$pinnedColumns = state.pinnedColumns) != null ? _state$pinnedColumns : {};
96
+ var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel, pinnedColumns);
93
97
  return _extends({}, state, {
94
98
  columnGrouping: _extends({}, state.columnGrouping, {
95
99
  headerStructure: columnGroupsHeaderStructure
@@ -98,15 +102,17 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
98
102
  });
99
103
  }, [apiRef, props.columnGroupingModel]);
100
104
  var updateColumnGroupingState = React.useCallback(function (columnGroupingModel) {
101
- var _props$experimentalFe2;
105
+ var _props$experimentalFe2, _apiRef$current$getPi, _apiRef$current$getPi2, _apiRef$current;
102
106
  if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
103
107
  return;
104
108
  }
109
+ // @ts-expect-error Move this logic to `Pro` package
110
+ var pinnedColumns = (_apiRef$current$getPi = (_apiRef$current$getPi2 = (_apiRef$current = apiRef.current).getPinnedColumns) == null ? void 0 : _apiRef$current$getPi2.call(_apiRef$current)) != null ? _apiRef$current$getPi : {};
105
111
  var columnFields = gridColumnFieldsSelector(apiRef);
106
112
  var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
107
113
  var groupLookup = createGroupLookup(columnGroupingModel != null ? columnGroupingModel : []);
108
114
  var unwrappedGroupingModel = unwrapGroupingColumnModel(columnGroupingModel != null ? columnGroupingModel : []);
109
- var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
115
+ var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, pinnedColumns);
110
116
  var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
111
117
  var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
112
118
  return (_unwrappedGroupingMod4 = (_unwrappedGroupingMod5 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod5.length) != null ? _unwrappedGroupingMod4 : 0;
@@ -54,7 +54,6 @@ export function computeFlexColumnsWidth(_ref) {
54
54
  for (var i = 0; i < flexColumns.length; i += 1) {
55
55
  var column = flexColumns[i];
56
56
  if (flexColumnsLookup.all[column.field] && flexColumnsLookup.all[column.field].frozen === true) {
57
- // eslint-disable-next-line no-continue
58
57
  continue;
59
58
  }
60
59
 
@@ -177,14 +177,14 @@ export var buildAggregatedFilterItemsApplier = function buildAggregatedFilterIte
177
177
 
178
178
  // We generate a new function with `eval()` to avoid expensive patterns for JS engines
179
179
  // such as a dynamic object assignment, e.g. `{ [dynamicKey]: value }`.
180
- var filterItemTemplate = "(function filterItem$$(appliers, row, shouldApplyFilter) {\n ".concat(appliers.map(function (applier, i) {
180
+ var filterItemTemplate = "(function filterItem$$(getRowId, appliers, row, shouldApplyFilter) {\n ".concat(appliers.map(function (applier, i) {
181
181
  return "const shouldApply".concat(i, " = !shouldApplyFilter || shouldApplyFilter(").concat(JSON.stringify(applier.item.field), ");");
182
182
  }).join('\n'), "\n\n const result$$ = {\n ").concat(appliers.map(function (applier, i) {
183
183
  return "".concat(JSON.stringify(String(applier.item.id)), ":\n !shouldApply").concat(i, " ?\n false :\n ").concat(applier.v7 ? "appliers[".concat(i, "].fn(row)") : "appliers[".concat(i, "].fn(").concat(getRowId ? 'getRowId(row)' : 'row.id', ")"), ",\n ");
184
184
  }).join('\n'), "};\n\n return result$$;\n })");
185
185
  var filterItemCore = evalCode(filterItemTemplate.replaceAll('$$', String(filterItemsApplierId)));
186
186
  var filterItem = function filterItem(row, shouldApplyItem) {
187
- return filterItemCore(appliers, row, shouldApplyItem);
187
+ return filterItemCore(getRowId, appliers, row, shouldApplyItem);
188
188
  };
189
189
  filterItemsApplierId += 1;
190
190
  return filterItem;
@@ -238,7 +238,7 @@ export var buildAggregatedQuickFilterApplier = function buildAggregatedQuickFilt
238
238
  var result = {};
239
239
  var usedCellParams = {};
240
240
 
241
- /* eslint-disable no-restricted-syntax, no-labels, no-continue */
241
+ /* eslint-disable no-restricted-syntax, no-labels */
242
242
  outer: for (var v = 0; v < quickFilterValues.length; v += 1) {
243
243
  var filterValue = quickFilterValues[v];
244
244
  for (var i = 0; i < appliersPerField.length; i += 1) {
@@ -273,7 +273,7 @@ export var buildAggregatedQuickFilterApplier = function buildAggregatedQuickFilt
273
273
  }
274
274
  result[filterValue] = false;
275
275
  }
276
- /* eslint-enable no-restricted-syntax, no-labels, no-continue */
276
+ /* eslint-enable no-restricted-syntax, no-labels */
277
277
 
278
278
  return result;
279
279
  };
@@ -376,11 +376,17 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
376
376
  }
377
377
  return -1;
378
378
  }, [cellFocus, currentPage.rows]);
379
- useGridApiEventHandler(apiRef, 'rowMouseEnter', function (params) {
379
+ useGridApiEventHandler(apiRef, 'rowMouseOver', function (params, event) {
380
380
  var _params$id;
381
+ if (event.currentTarget.contains(event.relatedTarget)) {
382
+ return;
383
+ }
381
384
  setHoveredRowId((_params$id = params.id) != null ? _params$id : null);
382
385
  });
383
- useGridApiEventHandler(apiRef, 'rowMouseLeave', function () {
386
+ useGridApiEventHandler(apiRef, 'rowMouseOut', function (params, event) {
387
+ if (event.currentTarget.contains(event.relatedTarget)) {
388
+ return;
389
+ }
384
390
  setHoveredRowId(null);
385
391
  });
386
392
  var getRows = function getRows() {
package/legacy/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v6.16.1
2
+ * @mui/x-data-grid v6.16.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -39,7 +39,7 @@ var arSDGrid = {
39
39
  columnsPanelHideAllButton: 'إخفاء الكل',
40
40
  // Filter panel text
41
41
  filterPanelAddFilter: 'إضافة مرشِح',
42
- // filterPanelRemoveAll: 'Remove all',
42
+ filterPanelRemoveAll: 'حذف الكل',
43
43
  filterPanelDeleteIconLabel: 'حذف',
44
44
  filterPanelLogicOperator: 'عامل منطقي',
45
45
  filterPanelOperator: 'عامل',
@@ -62,34 +62,32 @@ var arSDGrid = {
62
62
  filterOperatorIsEmpty: 'خالي',
63
63
  filterOperatorIsNotEmpty: 'غير خالي',
64
64
  filterOperatorIsAnyOf: 'أي من',
65
- // 'filterOperator=': '=',
66
- // 'filterOperator!=': '!=',
67
- // 'filterOperator>': '>',
68
- // 'filterOperator>=': '>=',
69
- // 'filterOperator<': '<',
70
- // 'filterOperator<=': '<=',
71
-
65
+ 'filterOperator=': '=',
66
+ 'filterOperator!=': '!=',
67
+ 'filterOperator>': '>',
68
+ 'filterOperator>=': '>=',
69
+ 'filterOperator<': '<',
70
+ 'filterOperator<=': '<=',
72
71
  // Header filter operators text
73
- // headerFilterOperatorContains: 'Contains',
74
- // headerFilterOperatorEquals: 'Equals',
75
- // headerFilterOperatorStartsWith: 'Starts with',
76
- // headerFilterOperatorEndsWith: 'Ends with',
77
- // headerFilterOperatorIs: 'Is',
78
- // headerFilterOperatorNot: 'Is not',
79
- // headerFilterOperatorAfter: 'Is after',
80
- // headerFilterOperatorOnOrAfter: 'Is on or after',
81
- // headerFilterOperatorBefore: 'Is before',
82
- // headerFilterOperatorOnOrBefore: 'Is on or before',
83
- // headerFilterOperatorIsEmpty: 'Is empty',
84
- // headerFilterOperatorIsNotEmpty: 'Is not empty',
85
- // headerFilterOperatorIsAnyOf: 'Is any of',
86
- // 'headerFilterOperator=': 'Equals',
87
- // 'headerFilterOperator!=': 'Not equals',
88
- // 'headerFilterOperator>': 'Greater than',
89
- // 'headerFilterOperator>=': 'Greater than or equal to',
90
- // 'headerFilterOperator<': 'Less than',
91
- // 'headerFilterOperator<=': 'Less than or equal to',
92
-
72
+ headerFilterOperatorContains: 'يحتوي على',
73
+ headerFilterOperatorEquals: 'يساوي',
74
+ headerFilterOperatorStartsWith: 'يبدأ ب',
75
+ headerFilterOperatorEndsWith: 'ينتهي ب',
76
+ headerFilterOperatorIs: 'هو',
77
+ headerFilterOperatorNot: 'هو ليس',
78
+ headerFilterOperatorAfter: 'يقع بعد',
79
+ headerFilterOperatorOnOrAfter: 'هو على او بعد',
80
+ headerFilterOperatorBefore: 'يقع قبل',
81
+ headerFilterOperatorOnOrBefore: 'هو على او بعد',
82
+ headerFilterOperatorIsEmpty: 'هو فارغ',
83
+ headerFilterOperatorIsNotEmpty: 'هو ليس فارغ',
84
+ headerFilterOperatorIsAnyOf: 'هو أي من',
85
+ 'headerFilterOperator=': 'يساوي',
86
+ 'headerFilterOperator!=': 'لا يساوي',
87
+ 'headerFilterOperator>': 'أكبر من',
88
+ 'headerFilterOperator>=': 'أكبر من او يساوي',
89
+ 'headerFilterOperator<': 'اصغر من',
90
+ 'headerFilterOperator<=': 'اصغر من او يساوي',
93
91
  // Filter values text
94
92
  filterValueAny: 'أي',
95
93
  filterValueTrue: 'صائب',
@@ -76,7 +76,7 @@ var roROGrid = {
76
76
  headerFilterOperatorIs: 'Este',
77
77
  headerFilterOperatorNot: 'Nu este',
78
78
  headerFilterOperatorAfter: 'Este după',
79
- headerFilterOperatorOnOrAfter: 'Este la sau „după”',
79
+ headerFilterOperatorOnOrAfter: 'Este la sau după',
80
80
  headerFilterOperatorBefore: 'Este înainte de',
81
81
  headerFilterOperatorOnOrBefore: 'este la sau înainte de',
82
82
  headerFilterOperatorIsEmpty: 'Este gol',
package/locales/arSD.js CHANGED
@@ -37,7 +37,7 @@ const arSDGrid = {
37
37
  columnsPanelHideAllButton: 'إخفاء الكل',
38
38
  // Filter panel text
39
39
  filterPanelAddFilter: 'إضافة مرشِح',
40
- // filterPanelRemoveAll: 'Remove all',
40
+ filterPanelRemoveAll: 'حذف الكل',
41
41
  filterPanelDeleteIconLabel: 'حذف',
42
42
  filterPanelLogicOperator: 'عامل منطقي',
43
43
  filterPanelOperator: 'عامل',
@@ -60,34 +60,32 @@ const arSDGrid = {
60
60
  filterOperatorIsEmpty: 'خالي',
61
61
  filterOperatorIsNotEmpty: 'غير خالي',
62
62
  filterOperatorIsAnyOf: 'أي من',
63
- // 'filterOperator=': '=',
64
- // 'filterOperator!=': '!=',
65
- // 'filterOperator>': '>',
66
- // 'filterOperator>=': '>=',
67
- // 'filterOperator<': '<',
68
- // 'filterOperator<=': '<=',
69
-
63
+ 'filterOperator=': '=',
64
+ 'filterOperator!=': '!=',
65
+ 'filterOperator>': '>',
66
+ 'filterOperator>=': '>=',
67
+ 'filterOperator<': '<',
68
+ 'filterOperator<=': '<=',
70
69
  // Header filter operators text
71
- // headerFilterOperatorContains: 'Contains',
72
- // headerFilterOperatorEquals: 'Equals',
73
- // headerFilterOperatorStartsWith: 'Starts with',
74
- // headerFilterOperatorEndsWith: 'Ends with',
75
- // headerFilterOperatorIs: 'Is',
76
- // headerFilterOperatorNot: 'Is not',
77
- // headerFilterOperatorAfter: 'Is after',
78
- // headerFilterOperatorOnOrAfter: 'Is on or after',
79
- // headerFilterOperatorBefore: 'Is before',
80
- // headerFilterOperatorOnOrBefore: 'Is on or before',
81
- // headerFilterOperatorIsEmpty: 'Is empty',
82
- // headerFilterOperatorIsNotEmpty: 'Is not empty',
83
- // headerFilterOperatorIsAnyOf: 'Is any of',
84
- // 'headerFilterOperator=': 'Equals',
85
- // 'headerFilterOperator!=': 'Not equals',
86
- // 'headerFilterOperator>': 'Greater than',
87
- // 'headerFilterOperator>=': 'Greater than or equal to',
88
- // 'headerFilterOperator<': 'Less than',
89
- // 'headerFilterOperator<=': 'Less than or equal to',
90
-
70
+ headerFilterOperatorContains: 'يحتوي على',
71
+ headerFilterOperatorEquals: 'يساوي',
72
+ headerFilterOperatorStartsWith: 'يبدأ ب',
73
+ headerFilterOperatorEndsWith: 'ينتهي ب',
74
+ headerFilterOperatorIs: 'هو',
75
+ headerFilterOperatorNot: 'هو ليس',
76
+ headerFilterOperatorAfter: 'يقع بعد',
77
+ headerFilterOperatorOnOrAfter: 'هو على او بعد',
78
+ headerFilterOperatorBefore: 'يقع قبل',
79
+ headerFilterOperatorOnOrBefore: 'هو على او بعد',
80
+ headerFilterOperatorIsEmpty: 'هو فارغ',
81
+ headerFilterOperatorIsNotEmpty: 'هو ليس فارغ',
82
+ headerFilterOperatorIsAnyOf: 'هو أي من',
83
+ 'headerFilterOperator=': 'يساوي',
84
+ 'headerFilterOperator!=': 'لا يساوي',
85
+ 'headerFilterOperator>': 'أكبر من',
86
+ 'headerFilterOperator>=': 'أكبر من او يساوي',
87
+ 'headerFilterOperator<': 'اصغر من',
88
+ 'headerFilterOperator<=': 'اصغر من او يساوي',
91
89
  // Filter values text
92
90
  filterValueAny: 'أي',
93
91
  filterValueTrue: 'صائب',
package/locales/roRO.js CHANGED
@@ -74,7 +74,7 @@ const roROGrid = {
74
74
  headerFilterOperatorIs: 'Este',
75
75
  headerFilterOperatorNot: 'Nu este',
76
76
  headerFilterOperatorAfter: 'Este după',
77
- headerFilterOperatorOnOrAfter: 'Este la sau „după”',
77
+ headerFilterOperatorOnOrAfter: 'Este la sau după',
78
78
  headerFilterOperatorBefore: 'Este înainte de',
79
79
  headerFilterOperatorOnOrBefore: 'este la sau înainte de',
80
80
  headerFilterOperatorIsEmpty: 'Este gol',
@@ -43,6 +43,20 @@ export interface GridRowEventLookup {
43
43
  params: GridRowParams;
44
44
  event: React.MouseEvent<HTMLElement>;
45
45
  };
46
+ /**
47
+ * @ignore - do not document.
48
+ */
49
+ rowMouseOut: {
50
+ params: GridRowParams;
51
+ event: React.MouseEvent<HTMLElement>;
52
+ };
53
+ /**
54
+ * @ignore - do not document.
55
+ */
56
+ rowMouseOver: {
57
+ params: GridRowParams;
58
+ event: React.MouseEvent<HTMLElement>;
59
+ };
46
60
  /**
47
61
  * Fired when the user starts dragging a row. It's mapped to the `dragstart` DOM event.
48
62
  * @ignore - do not document.
@@ -329,7 +329,7 @@ export interface DataGridPropsWithDefaultValues {
329
329
  /**
330
330
  * If `true`, the grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.
331
331
  * If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.
332
- * @default: false
332
+ * @default false
333
333
  */
334
334
  unstable_ignoreValueFormatterDuringExport: boolean | {
335
335
  csvExport?: boolean;
@@ -27,6 +27,13 @@ const DataGridRaw = /*#__PURE__*/React.forwardRef(function DataGrid(inProps, ref
27
27
  }))
28
28
  });
29
29
  });
30
+ /**
31
+ * Demos:
32
+ * - [DataGrid](https://mui.com/x/react-data-grid/demo/)
33
+ *
34
+ * API:
35
+ * - [DataGrid API](https://mui.com/x/api/data-grid/data-grid/)
36
+ */
30
37
  export const DataGrid = /*#__PURE__*/React.memo(DataGridRaw);
31
38
 
32
39
  /**
@@ -660,7 +667,7 @@ DataGridRaw.propTypes = {
660
667
  /**
661
668
  * If `true`, the grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.
662
669
  * If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.
663
- * @default: false
670
+ * @default false
664
671
  */
665
672
  unstable_ignoreValueFormatterDuringExport: PropTypes.oneOfType([PropTypes.shape({
666
673
  clipboardExport: PropTypes.bool,
@@ -51,8 +51,6 @@ export const GRID_DATE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
51
51
  valueFormatter: gridDateFormatter,
52
52
  filterOperators: getGridDateOperators(),
53
53
  renderEditCell: renderEditDateCell,
54
- getApplyQuickFilterFn: undefined,
55
- getApplyQuickFilterFnV7: undefined,
56
54
  // @ts-ignore
57
55
  pastedValueParser: value => new Date(value)
58
56
  });
@@ -62,8 +60,6 @@ export const GRID_DATETIME_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
62
60
  valueFormatter: gridDateTimeFormatter,
63
61
  filterOperators: getGridDateOperators(true),
64
62
  renderEditCell: renderEditDateCell,
65
- getApplyQuickFilterFn: undefined,
66
- getApplyQuickFilterFnV7: undefined,
67
63
  // @ts-ignore
68
64
  pastedValueParser: value => new Date(value)
69
65
  });
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["selected", "hovered", "rowId", "row", "index", "style", "position", "rowHeight", "className", "visibleColumns", "renderedColumns", "containerWidth", "firstColumnToRender", "lastColumnToRender", "isLastVisible", "focusedCellColumnIndexNotInRange", "isNotVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave"];
3
+ const _excluded = ["selected", "hovered", "rowId", "row", "index", "style", "position", "rowHeight", "className", "visibleColumns", "renderedColumns", "containerWidth", "firstColumnToRender", "lastColumnToRender", "isLastVisible", "focusedCellColumnIndexNotInRange", "isNotVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
@@ -76,7 +76,9 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
76
76
  onClick,
77
77
  onDoubleClick,
78
78
  onMouseEnter,
79
- onMouseLeave
79
+ onMouseLeave,
80
+ onMouseOut,
81
+ onMouseOver
80
82
  } = props,
81
83
  other = _objectWithoutPropertiesLoose(props, _excluded);
82
84
  const apiRef = useGridApiContext();
@@ -321,7 +323,9 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
321
323
  onClick: publishClick,
322
324
  onDoubleClick: publish('rowDoubleClick', onDoubleClick),
323
325
  onMouseEnter: publish('rowMouseEnter', onMouseEnter),
324
- onMouseLeave: publish('rowMouseLeave', onMouseLeave)
326
+ onMouseLeave: publish('rowMouseLeave', onMouseLeave),
327
+ onMouseOut: publish('rowMouseOut', onMouseOut),
328
+ onMouseOver: publish('rowMouseOver', onMouseOver)
325
329
  } : null;
326
330
  return /*#__PURE__*/_jsxs("div", _extends({
327
331
  ref: handleRef,
@@ -48,10 +48,11 @@ const useUtilityClasses = ownerState => {
48
48
  showRightBorder,
49
49
  isEditable,
50
50
  isSelected,
51
+ isSelectionMode,
51
52
  classes
52
53
  } = ownerState;
53
54
  const slots = {
54
- root: ['cell', `cell--text${capitalize(align)}`, isEditable && 'cell--editable', isSelected && 'selected', showRightBorder && 'cell--withRightBorder', 'withBorderColor'],
55
+ root: ['cell', `cell--text${capitalize(align)}`, isEditable && 'cell--editable', isSelected && 'selected', showRightBorder && 'cell--withRightBorder', isSelectionMode && !isEditable && 'cell--selectionMode', 'withBorderColor'],
55
56
  content: ['cellContent']
56
57
  };
57
58
  return composeClasses(slots, getDataGridUtilityClass, classes);
@@ -458,12 +459,15 @@ const GridCellV7 = /*#__PURE__*/React.forwardRef((props, ref) => {
458
459
  const cellRef = React.useRef(null);
459
460
  const handleRef = useForkRef(ref, cellRef);
460
461
  const focusElementRef = React.useRef(null);
462
+ // @ts-expect-error To access `unstable_cellSelection` flag as it's a `premium` feature
463
+ const isSelectionMode = rootProps.unstable_cellSelection ?? false;
461
464
  const ownerState = {
462
465
  align,
463
466
  showRightBorder,
464
467
  isEditable,
465
468
  classes: rootProps.classes,
466
- isSelected
469
+ isSelected,
470
+ isSelectionMode
467
471
  };
468
472
  const classes = useUtilityClasses(ownerState);
469
473
  const publishMouseUp = React.useCallback(eventName => event => {
@@ -395,6 +395,9 @@ export const GridRootStyles = styled('div', {
395
395
  overflow: 'hidden',
396
396
  textOverflow: 'ellipsis'
397
397
  },
398
+ [`& .${gridClasses.cell}.${gridClasses['cell--selectionMode']}`]: {
399
+ cursor: 'default'
400
+ },
398
401
  [`& .${gridClasses.cell}.${gridClasses['cell--editing']}`]: {
399
402
  padding: 1,
400
403
  display: 'flex',
@@ -428,4 +428,12 @@ process.env.NODE_ENV !== "production" ? GridFilterForm.propTypes = {
428
428
  */
429
429
  valueInputProps: PropTypes.any
430
430
  } : void 0;
431
+
432
+ /**
433
+ * Demos:
434
+ * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)
435
+ *
436
+ * API:
437
+ * - [GridFilterForm API](https://mui.com/x/api/data-grid/grid-filter-form/)
438
+ */
431
439
  export { GridFilterForm };
@@ -211,4 +211,12 @@ process.env.NODE_ENV !== "production" ? GridFilterPanel.propTypes = {
211
211
  */
212
212
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
213
213
  } : void 0;
214
+
215
+ /**
216
+ * Demos:
217
+ * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)
218
+ *
219
+ * API:
220
+ * - [GridFilterPanel API](https://mui.com/x/api/data-grid/grid-filter-panel/)
221
+ */
214
222
  export { GridFilterPanel, getGridFilter };