@mui/x-data-grid 6.2.0 → 6.3.0

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 (110) hide show
  1. package/CHANGELOG.md +118 -1
  2. package/components/GridHeader.d.ts +2 -2
  3. package/components/GridHeader.js +4 -6
  4. package/components/base/GridBody.d.ts +0 -1
  5. package/components/base/GridBody.js +39 -15
  6. package/components/cell/GridActionsCell.d.ts +2 -3
  7. package/components/cell/GridActionsCell.js +9 -1
  8. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +1 -1
  9. package/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
  10. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  11. package/components/containers/GridMainContainer.d.ts +3 -1
  12. package/components/containers/GridMainContainer.js +3 -2
  13. package/components/containers/GridRoot.js +0 -5
  14. package/components/containers/GridRootStyles.js +3 -1
  15. package/components/index.d.ts +0 -1
  16. package/components/index.js +0 -1
  17. package/components/panel/GridColumnsPanel.js +3 -2
  18. package/components/panel/GridPanel.d.ts +3 -3
  19. package/components/panel/GridPanel.js +2 -1
  20. package/components/panel/filterPanel/GridFilterPanel.js +5 -2
  21. package/constants/gridClasses.js +1 -1
  22. package/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
  23. package/hooks/features/dimensions/gridDimensionsApi.d.ts +4 -0
  24. package/hooks/features/dimensions/useGridDimensions.js +49 -10
  25. package/hooks/features/export/useGridPrintExport.js +3 -1
  26. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -0
  27. package/hooks/features/virtualization/useGridVirtualScroller.js +11 -5
  28. package/index.js +1 -1
  29. package/joy/index.d.ts +2 -0
  30. package/joy/index.js +2 -0
  31. package/joy/joySlots.d.ts +4 -0
  32. package/joy/joySlots.js +179 -0
  33. package/joy/package.json +6 -0
  34. package/legacy/components/GridHeader.js +4 -6
  35. package/legacy/components/base/GridBody.js +40 -16
  36. package/legacy/components/cell/GridActionsCell.js +11 -2
  37. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
  38. package/legacy/components/containers/GridMainContainer.js +3 -2
  39. package/legacy/components/containers/GridRoot.js +0 -5
  40. package/legacy/components/containers/GridRootStyles.js +3 -1
  41. package/legacy/components/index.js +0 -1
  42. package/legacy/components/panel/GridColumnsPanel.js +3 -2
  43. package/legacy/components/panel/GridPanel.js +2 -1
  44. package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -2
  45. package/legacy/constants/gridClasses.js +1 -1
  46. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
  47. package/legacy/hooks/features/dimensions/useGridDimensions.js +55 -12
  48. package/legacy/hooks/features/export/useGridPrintExport.js +3 -1
  49. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +12 -6
  50. package/legacy/index.js +1 -1
  51. package/legacy/joy/index.js +2 -0
  52. package/legacy/joy/joySlots.js +180 -0
  53. package/legacy/locales/frFR.js +2 -2
  54. package/legacy/locales/trTR.js +2 -2
  55. package/legacy/locales/zhCN.js +2 -2
  56. package/locales/frFR.js +2 -2
  57. package/locales/trTR.js +2 -2
  58. package/locales/zhCN.js +2 -2
  59. package/material/index.d.ts +2 -2
  60. package/models/gridSlotsComponent.d.ts +2 -2
  61. package/modern/components/GridHeader.js +4 -6
  62. package/modern/components/base/GridBody.js +39 -15
  63. package/modern/components/cell/GridActionsCell.js +9 -1
  64. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
  65. package/modern/components/containers/GridMainContainer.js +3 -2
  66. package/modern/components/containers/GridRoot.js +0 -5
  67. package/modern/components/containers/GridRootStyles.js +3 -1
  68. package/modern/components/index.js +0 -1
  69. package/modern/components/panel/GridColumnsPanel.js +3 -2
  70. package/modern/components/panel/GridPanel.js +2 -1
  71. package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -2
  72. package/modern/constants/gridClasses.js +1 -1
  73. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +21 -14
  74. package/modern/hooks/features/dimensions/useGridDimensions.js +48 -10
  75. package/modern/hooks/features/export/useGridPrintExport.js +3 -1
  76. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +11 -5
  77. package/modern/index.js +1 -1
  78. package/modern/joy/index.js +2 -0
  79. package/modern/joy/joySlots.js +177 -0
  80. package/modern/locales/frFR.js +2 -2
  81. package/modern/locales/trTR.js +2 -2
  82. package/modern/locales/zhCN.js +2 -2
  83. package/node/components/GridHeader.js +5 -8
  84. package/node/components/base/GridBody.js +39 -15
  85. package/node/components/cell/GridActionsCell.js +9 -1
  86. package/node/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
  87. package/node/components/containers/GridMainContainer.js +5 -3
  88. package/node/components/containers/GridRoot.js +0 -5
  89. package/node/components/containers/GridRootStyles.js +3 -1
  90. package/node/components/index.js +0 -11
  91. package/node/components/panel/GridColumnsPanel.js +3 -2
  92. package/node/components/panel/GridPanel.js +2 -1
  93. package/node/components/panel/filterPanel/GridFilterPanel.js +5 -2
  94. package/node/constants/gridClasses.js +1 -1
  95. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +20 -11
  96. package/node/hooks/features/dimensions/useGridDimensions.js +47 -9
  97. package/node/hooks/features/export/useGridPrintExport.js +3 -1
  98. package/node/hooks/features/virtualization/useGridVirtualScroller.js +11 -5
  99. package/node/index.js +1 -1
  100. package/node/joy/index.js +13 -0
  101. package/node/joy/joySlots.js +185 -0
  102. package/node/locales/frFR.js +2 -2
  103. package/node/locales/trTR.js +2 -2
  104. package/node/locales/zhCN.js +2 -2
  105. package/package.json +3 -3
  106. package/components/GridAutoSizer.d.ts +0 -44
  107. package/components/GridAutoSizer.js +0 -126
  108. package/legacy/components/GridAutoSizer.js +0 -132
  109. package/modern/components/GridAutoSizer.js +0 -125
  110. package/node/components/GridAutoSizer.js +0 -132
@@ -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', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
5
+ export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -9,10 +9,7 @@ import { gridColumnGroupsLookupSelector, gridColumnGroupsUnwrappedModelSelector
9
9
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
10
10
  import { getColumnGroupsHeaderStructure, unwrapGroupingColumnModel } from './gridColumnGroupsUtils';
11
11
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
12
- import { gridColumnFieldsSelector,
13
- // GridColumnsState,
14
- gridVisibleColumnFieldsSelector } from '../columns';
15
- import { useGridSelector } from '../../utils/useGridSelector';
12
+ import { gridColumnFieldsSelector, gridVisibleColumnFieldsSelector } from '../columns';
16
13
  var createGroupLookup = function createGroupLookup(columnGroupingModel) {
17
14
  var groupLookup = {};
18
15
  columnGroupingModel.forEach(function (node) {
@@ -100,19 +97,15 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
100
97
  });
101
98
  });
102
99
  }, [apiRef, props.columnGroupingModel]);
103
- useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
104
- var columnFields = useGridSelector(apiRef, gridColumnFieldsSelector);
105
- var visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
106
- /**
107
- * EFFECTS
108
- */
109
- React.useEffect(function () {
110
- var _props$experimentalFe2, _props$columnGrouping4, _props$columnGrouping5;
100
+ var updateColumnGroupingState = React.useCallback(function (columnGroupingModel) {
101
+ var _props$experimentalFe2;
111
102
  if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
112
103
  return;
113
104
  }
114
- var groupLookup = createGroupLookup((_props$columnGrouping4 = props.columnGroupingModel) != null ? _props$columnGrouping4 : []);
115
- var unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping5 = props.columnGroupingModel) != null ? _props$columnGrouping5 : []);
105
+ var columnFields = gridColumnFieldsSelector(apiRef);
106
+ var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
107
+ var groupLookup = createGroupLookup(columnGroupingModel != null ? columnGroupingModel : []);
108
+ var unwrappedGroupingModel = unwrapGroupingColumnModel(columnGroupingModel != null ? columnGroupingModel : []);
116
109
  var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
117
110
  var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
118
111
  var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
@@ -128,5 +121,19 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
128
121
  }
129
122
  });
130
123
  });
131
- }, [apiRef, columnFields, visibleColumnFields, props.columnGroupingModel, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
124
+ }, [apiRef, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
125
+ useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
126
+ useGridApiEventHandler(apiRef, 'columnsChange', function () {
127
+ updateColumnGroupingState(props.columnGroupingModel);
128
+ });
129
+ useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', function () {
130
+ updateColumnGroupingState(props.columnGroupingModel);
131
+ });
132
+
133
+ /**
134
+ * EFFECTS
135
+ */
136
+ React.useEffect(function () {
137
+ updateColumnGroupingState(props.columnGroupingModel);
138
+ }, [updateColumnGroupingState, props.columnGroupingModel]);
132
139
  };
@@ -1,5 +1,6 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
1
2
  import * as React from 'react';
2
- import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
3
+ import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';
3
4
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
4
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
6
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -10,6 +11,7 @@ import { getVisibleRows } from '../../utils/useGridVisibleRows';
10
11
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
11
12
  import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
12
13
  import { getTotalHeaderHeight } from '../columns/gridColumnsUtils';
14
+ import { gridClasses } from '../../../constants/gridClasses';
13
15
  var isTestEnvironment = process.env.NODE_ENV === 'test';
14
16
  var hasScroll = function hasScroll(_ref) {
15
17
  var content = _ref.content,
@@ -113,10 +115,25 @@ export function useGridDimensions(apiRef, props) {
113
115
  apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
114
116
  }
115
117
  }, [apiRef, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, totalHeaderHeight]);
118
+ var _React$useState = React.useState(),
119
+ _React$useState2 = _slicedToArray(_React$useState, 2),
120
+ savedSize = _React$useState2[0],
121
+ setSavedSize = _React$useState2[1];
122
+ var debouncedSetSavedSize = React.useMemo(function () {
123
+ return debounce(setSavedSize, 60);
124
+ }, []);
125
+ var previousSize = React.useRef();
126
+ useEnhancedEffect(function () {
127
+ if (savedSize) {
128
+ updateGridDimensionsRef();
129
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
130
+ }
131
+ }, [apiRef, savedSize, updateGridDimensionsRef]);
132
+
133
+ // This is the function called by apiRef.current.resize()
116
134
  var resize = React.useCallback(function () {
117
- updateGridDimensionsRef();
118
- apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
119
- }, [apiRef, updateGridDimensionsRef]);
135
+ apiRef.current.computeSizeAndPublishResizeEvent();
136
+ }, [apiRef]);
120
137
  var getRootDimensions = React.useCallback(function () {
121
138
  return fullDimensionsRef.current;
122
139
  }, []);
@@ -140,19 +157,45 @@ export function useGridDimensions(apiRef, props) {
140
157
  var maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
141
158
  return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
142
159
  }, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
160
+ var computeSizeAndPublishResizeEvent = React.useCallback(function () {
161
+ var _apiRef$current$rootE2, _previousSize$current, _previousSize$current2;
162
+ var rootEl = (_apiRef$current$rootE2 = apiRef.current.rootElementRef) == null ? void 0 : _apiRef$current$rootE2.current;
163
+ var mainEl = rootEl == null ? void 0 : rootEl.querySelector(".".concat(gridClasses.main));
164
+ if (!mainEl) {
165
+ return;
166
+ }
167
+ var height = mainEl.offsetHeight || 0;
168
+ var width = mainEl.offsetWidth || 0;
169
+ var win = ownerWindow(mainEl);
170
+ var computedStyle = win.getComputedStyle(mainEl);
171
+ var paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
172
+ var paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;
173
+ var paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;
174
+ var paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;
175
+ var newHeight = height - paddingTop - paddingBottom;
176
+ var newWidth = width - paddingLeft - paddingRight;
177
+ var hasHeightChanged = newHeight !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
178
+ var hasWidthChanged = newWidth !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
179
+ if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
180
+ var size = {
181
+ width: newWidth,
182
+ height: newHeight
183
+ };
184
+ apiRef.current.publishEvent('resize', size);
185
+ previousSize.current = size;
186
+ }
187
+ }, [apiRef]);
143
188
  var dimensionsApi = {
144
189
  resize: resize,
145
190
  getRootDimensions: getRootDimensions
146
191
  };
147
192
  var dimensionsPrivateApi = {
148
193
  getViewportPageSize: getViewportPageSize,
149
- updateGridDimensionsRef: updateGridDimensionsRef
194
+ updateGridDimensionsRef: updateGridDimensionsRef,
195
+ computeSizeAndPublishResizeEvent: computeSizeAndPublishResizeEvent
150
196
  };
151
197
  useGridApiMethod(apiRef, dimensionsApi, 'public');
152
198
  useGridApiMethod(apiRef, dimensionsPrivateApi, 'private');
153
- var debounceResize = React.useMemo(function () {
154
- return debounce(resize, 60);
155
- }, [resize]);
156
199
  var isFirstSizing = React.useRef(true);
157
200
  var handleResize = React.useCallback(function (size) {
158
201
  rootDimensionsRef.current = size;
@@ -169,18 +212,18 @@ export function useGridDimensions(apiRef, props) {
169
212
  }
170
213
  if (isTestEnvironment) {
171
214
  // We don't need to debounce the resize for tests.
172
- resize();
215
+ setSavedSize(size);
173
216
  isFirstSizing.current = false;
174
217
  return;
175
218
  }
176
219
  if (isFirstSizing.current) {
177
220
  // We want to initialize the grid dimensions as soon as possible to avoid flickering
178
- resize();
221
+ setSavedSize(size);
179
222
  isFirstSizing.current = false;
180
223
  return;
181
224
  }
182
- debounceResize();
183
- }, [props.autoHeight, debounceResize, logger, resize]);
225
+ debouncedSetSavedSize(size);
226
+ }, [props.autoHeight, debouncedSetSavedSize, logger]);
184
227
  useEnhancedEffect(function () {
185
228
  return updateGridDimensionsRef();
186
229
  }, [updateGridDimensionsRef]);
@@ -132,7 +132,9 @@ export var useGridPrintExport = function useGridPrintExport(apiRef, props) {
132
132
  (_printDoc$body$classL = printDoc.body.classList).add.apply(_printDoc$body$classL, _toConsumableArray(normalizeOptions.bodyClassName.split(' ')));
133
133
  }
134
134
  if (normalizeOptions.copyStyles) {
135
- var headStyleElements = doc.current.querySelectorAll("style, link[rel='stylesheet']");
135
+ var rootCandidate = gridRootElement.getRootNode();
136
+ var root = rootCandidate.constructor.name === 'ShadowRoot' ? rootCandidate : doc.current;
137
+ var headStyleElements = root.querySelectorAll("style, link[rel='stylesheet']");
136
138
  for (var i = 0; i < headStyleElements.length; i += 1) {
137
139
  var node = headStyleElements[i];
138
140
  if (node.tagName === 'STYLE') {
@@ -186,11 +186,13 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
186
186
  height: rootRef.current.clientHeight
187
187
  });
188
188
  }, [rowsMeta.currentPageTotalHeight]);
189
- var handleResize = React.useCallback(function (params) {
190
- setContainerDimensions({
191
- width: params.width,
192
- height: params.height
193
- });
189
+ var handleResize = React.useCallback(function () {
190
+ if (rootRef.current) {
191
+ setContainerDimensions({
192
+ width: rootRef.current.clientWidth,
193
+ height: rootRef.current.clientHeight
194
+ });
195
+ }
194
196
  }, []);
195
197
  useGridApiEventHandler(apiRef, 'debouncedResize', handleResize);
196
198
  var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
@@ -323,7 +325,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
323
325
  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
324
326
  renderContext: renderContext
325
327
  };
326
- var nextRenderContext = params.renderContext,
328
+ var onRowRender = params.onRowRender,
329
+ nextRenderContext = params.renderContext,
327
330
  _params$minFirstColum = params.minFirstColumn,
328
331
  minFirstColumn = _params$minFirstColum === void 0 ? renderZoneMinColumnIndex : _params$minFirstColum,
329
332
  _params$maxLastColumn = params.maxLastColumn,
@@ -414,6 +417,9 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
414
417
  } else {
415
418
  isSelected = apiRef.current.isRowSelectable(_id);
416
419
  }
420
+ if (onRowRender) {
421
+ onRowRender(_id);
422
+ }
417
423
  var focusedCell = cellFocus !== null && cellFocus.id === _id ? cellFocus.field : null;
418
424
  var tabbableCell = null;
419
425
  if (cellTabIndex !== null && cellTabIndex.id === _id) {
package/legacy/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v6.2.0
2
+ * @mui/x-data-grid v6.3.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -0,0 +1,2 @@
1
+ import joySlots from './joySlots';
2
+ export { joySlots as unstable_joySlots };
@@ -0,0 +1,180 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ var _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"],
5
+ _excluded2 = ["startIcon", "color", "endIcon", "size", "sx", "variant"],
6
+ _excluded3 = ["color", "size", "sx"],
7
+ _excluded4 = ["name", "checkedIcon", "color", "disableRipple", "disableFocusRipple", "disableTouchRipple", "edge", "icon", "inputProps", "inputRef", "size", "sx", "onChange", "onClick"];
8
+ import * as React from 'react';
9
+ import JoyCheckbox from '@mui/joy/Checkbox';
10
+ import JoyInput from '@mui/joy/Input';
11
+ import JoyFormControl from '@mui/joy/FormControl';
12
+ import JoyFormLabel from '@mui/joy/FormLabel';
13
+ import JoyButton from '@mui/joy/Button';
14
+ import JoyIconButton from '@mui/joy/IconButton';
15
+ import JoySwitch from '@mui/joy/Switch';
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ function convertColor(color) {
19
+ if (color === 'secondary') {
20
+ return 'primary';
21
+ }
22
+ if (color === 'error') {
23
+ return 'danger';
24
+ }
25
+ if (color === 'default' || color === 'inherit') {
26
+ return 'neutral';
27
+ }
28
+ return color;
29
+ }
30
+ function convertSize(size) {
31
+ return size ? {
32
+ small: 'sm',
33
+ medium: 'md',
34
+ large: 'lg'
35
+ }[size] : size;
36
+ }
37
+ function convertVariant(variant) {
38
+ return variant ? {
39
+ outlined: 'outlined',
40
+ contained: 'solid',
41
+ text: 'plain',
42
+ standard: 'plain',
43
+ filled: 'soft'
44
+ }[variant] : variant;
45
+ }
46
+ var Checkbox = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
47
+ var touchRippleRef = _ref.touchRippleRef,
48
+ inputProps = _ref.inputProps,
49
+ onChange = _ref.onChange,
50
+ color = _ref.color,
51
+ size = _ref.size,
52
+ checked = _ref.checked,
53
+ sx = _ref.sx,
54
+ value = _ref.value,
55
+ inputRef = _ref.inputRef,
56
+ props = _objectWithoutProperties(_ref, _excluded);
57
+ return /*#__PURE__*/_jsx(JoyCheckbox, _extends({}, props, {
58
+ slotProps: {
59
+ input: _extends({}, inputProps, {
60
+ ref: inputRef
61
+ })
62
+ },
63
+ ref: ref,
64
+ checked: checked,
65
+ onChange: onChange
66
+ }));
67
+ });
68
+ var TextField = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
69
+ var onChange = _ref2.onChange,
70
+ label = _ref2.label,
71
+ placeholder = _ref2.placeholder,
72
+ value = _ref2.value,
73
+ inputRef = _ref2.inputRef,
74
+ type = _ref2.type;
75
+ return /*#__PURE__*/_jsxs(JoyFormControl, {
76
+ ref: ref,
77
+ children: [/*#__PURE__*/_jsx(JoyFormLabel, {
78
+ sx: {
79
+ fontSize: 12
80
+ },
81
+ children: label
82
+ }), /*#__PURE__*/_jsx(JoyInput, {
83
+ type: type,
84
+ value: value,
85
+ onChange: onChange,
86
+ placeholder: placeholder,
87
+ size: "sm",
88
+ slotProps: {
89
+ input: {
90
+ ref: inputRef
91
+ }
92
+ }
93
+ })]
94
+ });
95
+ });
96
+ var Button = /*#__PURE__*/React.forwardRef(function Button(_ref3, ref) {
97
+ var _convertVariant;
98
+ var startIcon = _ref3.startIcon,
99
+ color = _ref3.color,
100
+ endIcon = _ref3.endIcon,
101
+ size = _ref3.size,
102
+ sx = _ref3.sx,
103
+ variant = _ref3.variant,
104
+ props = _objectWithoutProperties(_ref3, _excluded2);
105
+ return /*#__PURE__*/_jsx(JoyButton, _extends({}, props, {
106
+ size: convertSize(size),
107
+ color: convertColor(color),
108
+ variant: (_convertVariant = convertVariant(variant)) != null ? _convertVariant : 'plain',
109
+ ref: ref,
110
+ startDecorator: startIcon,
111
+ endDecorator: endIcon,
112
+ sx: sx
113
+ }));
114
+ });
115
+ var IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref4, ref) {
116
+ var _convertColor;
117
+ var color = _ref4.color,
118
+ size = _ref4.size,
119
+ sx = _ref4.sx,
120
+ props = _objectWithoutProperties(_ref4, _excluded3);
121
+ return /*#__PURE__*/_jsx(JoyIconButton, _extends({}, props, {
122
+ size: convertSize(size),
123
+ color: (_convertColor = convertColor(color)) != null ? _convertColor : 'neutral',
124
+ variant: "plain",
125
+ ref: ref,
126
+ sx: sx
127
+ }));
128
+ });
129
+ var Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref5, ref) {
130
+ var name = _ref5.name,
131
+ checkedIcon = _ref5.checkedIcon,
132
+ colorProp = _ref5.color,
133
+ disableRipple = _ref5.disableRipple,
134
+ disableFocusRipple = _ref5.disableFocusRipple,
135
+ disableTouchRipple = _ref5.disableTouchRipple,
136
+ edge = _ref5.edge,
137
+ icon = _ref5.icon,
138
+ inputProps = _ref5.inputProps,
139
+ inputRef = _ref5.inputRef,
140
+ size = _ref5.size,
141
+ sx = _ref5.sx,
142
+ onChange = _ref5.onChange,
143
+ onClick = _ref5.onClick,
144
+ props = _objectWithoutProperties(_ref5, _excluded4);
145
+ return /*#__PURE__*/_jsx(JoySwitch, _extends({}, props, {
146
+ onChange: onChange,
147
+ size: convertSize(size),
148
+ color: convertColor(colorProp),
149
+ ref: ref,
150
+ slotProps: {
151
+ input: _extends({}, inputProps, {
152
+ name: name,
153
+ onClick: onClick,
154
+ ref: inputRef
155
+ }),
156
+ thumb: {
157
+ children: icon
158
+ }
159
+ },
160
+ sx: [_extends({}, edge === 'start' && {
161
+ ml: '-8px'
162
+ }, edge === 'end' && {
163
+ mr: '-8px'
164
+ })].concat(_toConsumableArray(Array.isArray(sx) ? sx : [sx]))
165
+ }));
166
+ });
167
+ var joySlots = {
168
+ baseCheckbox: Checkbox,
169
+ baseTextField: TextField,
170
+ baseButton: Button,
171
+ baseIconButton: IconButton,
172
+ baseSwitch: Switch
173
+ // BaseFormControl: MUIFormControl,
174
+ // baseSelect: Select,
175
+ // baseSelectOption: Option,
176
+ // BaseTooltip: MUITooltip,
177
+ // BasePopper: MUIPopper,
178
+ };
179
+
180
+ export default joySlots;
@@ -39,7 +39,7 @@ var frFRGrid = {
39
39
  columnsPanelHideAllButton: 'Tout cacher',
40
40
  // Filter panel text
41
41
  filterPanelAddFilter: 'Ajouter un filtre',
42
- // filterPanelRemoveAll: 'Remove all',
42
+ filterPanelRemoveAll: 'Tout supprimer',
43
43
  filterPanelDeleteIconLabel: 'Supprimer',
44
44
  filterPanelLogicOperator: 'Opérateur logique',
45
45
  filterPanelOperator: 'Opérateur',
@@ -69,7 +69,7 @@ var frFRGrid = {
69
69
  // Column menu text
70
70
  columnMenuLabel: 'Menu',
71
71
  columnMenuShowColumns: 'Afficher les colonnes',
72
- // columnMenuManageColumns: 'Manage columns',
72
+ columnMenuManageColumns: 'Gérer les colonnes',
73
73
  columnMenuFilter: 'Filtrer',
74
74
  columnMenuHideColumn: 'Cacher',
75
75
  columnMenuUnsort: 'Annuler le tri',
@@ -39,7 +39,7 @@ var trTRGrid = {
39
39
  columnsPanelHideAllButton: 'Hepsini gizle',
40
40
  // Filter panel text
41
41
  filterPanelAddFilter: 'Filtre Ekle',
42
- // filterPanelRemoveAll: 'Remove all',
42
+ filterPanelRemoveAll: 'Hepsini kaldır',
43
43
  filterPanelDeleteIconLabel: 'Kaldır',
44
44
  filterPanelLogicOperator: 'Mantıksal operatörler',
45
45
  filterPanelOperator: 'Operatör',
@@ -69,7 +69,7 @@ var trTRGrid = {
69
69
  // Column menu text
70
70
  columnMenuLabel: 'Menü',
71
71
  columnMenuShowColumns: 'Sütunları göster',
72
- // columnMenuManageColumns: 'Manage columns',
72
+ columnMenuManageColumns: 'Sütunları yönet',
73
73
  columnMenuFilter: 'Filtre uygula',
74
74
  columnMenuHideColumn: 'Gizle',
75
75
  columnMenuUnsort: 'Sıralama',
@@ -39,7 +39,7 @@ var zhCNGrid = {
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: '操作器',
@@ -69,7 +69,7 @@ var zhCNGrid = {
69
69
  // Column menu text
70
70
  columnMenuLabel: '菜单',
71
71
  columnMenuShowColumns: '显示',
72
- // columnMenuManageColumns: 'Manage columns',
72
+ columnMenuManageColumns: '管理列',
73
73
  columnMenuFilter: '筛选器',
74
74
  columnMenuHideColumn: '隐藏',
75
75
  columnMenuUnsort: '恢复默认',
package/locales/frFR.js CHANGED
@@ -37,7 +37,7 @@ const frFRGrid = {
37
37
  columnsPanelHideAllButton: 'Tout cacher',
38
38
  // Filter panel text
39
39
  filterPanelAddFilter: 'Ajouter un filtre',
40
- // filterPanelRemoveAll: 'Remove all',
40
+ filterPanelRemoveAll: 'Tout supprimer',
41
41
  filterPanelDeleteIconLabel: 'Supprimer',
42
42
  filterPanelLogicOperator: 'Opérateur logique',
43
43
  filterPanelOperator: 'Opérateur',
@@ -67,7 +67,7 @@ const frFRGrid = {
67
67
  // Column menu text
68
68
  columnMenuLabel: 'Menu',
69
69
  columnMenuShowColumns: 'Afficher les colonnes',
70
- // columnMenuManageColumns: 'Manage columns',
70
+ columnMenuManageColumns: 'Gérer les colonnes',
71
71
  columnMenuFilter: 'Filtrer',
72
72
  columnMenuHideColumn: 'Cacher',
73
73
  columnMenuUnsort: 'Annuler le tri',
package/locales/trTR.js CHANGED
@@ -37,7 +37,7 @@ const trTRGrid = {
37
37
  columnsPanelHideAllButton: 'Hepsini gizle',
38
38
  // Filter panel text
39
39
  filterPanelAddFilter: 'Filtre Ekle',
40
- // filterPanelRemoveAll: 'Remove all',
40
+ filterPanelRemoveAll: 'Hepsini kaldır',
41
41
  filterPanelDeleteIconLabel: 'Kaldır',
42
42
  filterPanelLogicOperator: 'Mantıksal operatörler',
43
43
  filterPanelOperator: 'Operatör',
@@ -67,7 +67,7 @@ const trTRGrid = {
67
67
  // Column menu text
68
68
  columnMenuLabel: 'Menü',
69
69
  columnMenuShowColumns: 'Sütunları göster',
70
- // columnMenuManageColumns: 'Manage columns',
70
+ columnMenuManageColumns: 'Sütunları yönet',
71
71
  columnMenuFilter: 'Filtre uygula',
72
72
  columnMenuHideColumn: 'Gizle',
73
73
  columnMenuUnsort: 'Sıralama',
package/locales/zhCN.js CHANGED
@@ -37,7 +37,7 @@ const zhCNGrid = {
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: '操作器',
@@ -67,7 +67,7 @@ const zhCNGrid = {
67
67
  // Column menu text
68
68
  columnMenuLabel: '菜单',
69
69
  columnMenuShowColumns: '显示',
70
- // columnMenuManageColumns: 'Manage columns',
70
+ columnMenuManageColumns: '管理列',
71
71
  columnMenuFilter: '筛选器',
72
72
  columnMenuHideColumn: '隐藏',
73
73
  columnMenuUnsort: '恢复默认',
@@ -15,12 +15,12 @@ declare const materialSlots: {
15
15
  BaseButton: import("@mui/material").ExtendButtonBase<import("@mui/material/Button").ButtonTypeMap<{}, "button">>;
16
16
  BaseIconButton: import("@mui/material").ExtendButtonBase<import("@mui/material/IconButton").IconButtonTypeMap<{}, "button">>;
17
17
  BaseTooltip: typeof MUITooltip;
18
- BasePopper: import("react").ForwardRefExoticComponent<Omit<import("@mui/base").PopperUnstyledProps<"div", {}>, "direction"> & {
18
+ BasePopper: import("react").ForwardRefExoticComponent<Omit<import("@mui/base").PopperProps<"div", {}>, "direction"> & {
19
19
  components?: {
20
20
  Root?: import("react").ElementType<any> | undefined;
21
21
  } | undefined;
22
22
  componentsProps?: {
23
- root?: import("@mui/base").SlotComponentProps<"div", import("@mui/base").PopperUnstyledRootSlotPropsOverrides, import("@mui/base").PopperUnstyledOwnerState> | undefined;
23
+ root?: import("@mui/base").SlotComponentProps<"div", import("@mui/base").PopperRootSlotPropsOverrides, import("@mui/base").PopperOwnProps> | undefined;
24
24
  } | undefined;
25
25
  sx?: import("@mui/system").SxProps<import("@mui/material").Theme> | undefined;
26
26
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { UncapitalizeObjectKeys } from '../internals/utils';
3
- import { GridIconSlotsComponent } from './gridIconSlotsComponent';
2
+ import type { UncapitalizeObjectKeys } from '../internals/utils';
3
+ import type { GridIconSlotsComponent } from './gridIconSlotsComponent';
4
4
  /**
5
5
  * Grid components React prop interface containing all the overridable components.
6
6
  */
@@ -3,11 +3,9 @@ import * as React from 'react';
3
3
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { jsxs as _jsxs } from "react/jsx-runtime";
6
- export const GridHeader = /*#__PURE__*/React.forwardRef(function GridHeader(props, ref) {
6
+ export function GridHeader() {
7
7
  const rootProps = useGridRootProps();
8
- return /*#__PURE__*/_jsxs("div", _extends({
9
- ref: ref
10
- }, props, {
8
+ return /*#__PURE__*/_jsxs(React.Fragment, {
11
9
  children: [/*#__PURE__*/_jsx(rootProps.slots.preferencesPanel, _extends({}, rootProps.slotProps?.preferencesPanel)), rootProps.slots.toolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, rootProps.slotProps?.toolbar))]
12
- }));
13
- });
10
+ });
11
+ }