@mui/x-data-grid 5.11.1 → 5.12.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 (140) hide show
  1. package/CHANGELOG.md +95 -18
  2. package/DataGrid/DataGrid.js +26 -1
  3. package/README.md +2 -2
  4. package/components/GridRow.d.ts +1 -1
  5. package/components/GridRow.js +51 -12
  6. package/components/cell/GridActionsCellItem.d.ts +1 -1
  7. package/components/cell/GridCell.d.ts +2 -1
  8. package/components/cell/GridCell.js +12 -7
  9. package/components/columnHeaders/GridColumnHeaderItem.js +4 -3
  10. package/components/containers/GridRootStyles.js +4 -2
  11. package/components/menu/GridMenu.js +9 -2
  12. package/components/panel/GridColumnsPanel.js +10 -2
  13. package/components/panel/GridPanelWrapper.d.ts +1 -1
  14. package/components/panel/GridPanelWrapper.js +3 -3
  15. package/components/panel/filterPanel/GridFilterForm.d.ts +61 -4
  16. package/components/panel/filterPanel/GridFilterForm.js +88 -8
  17. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  18. package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -5
  19. package/components/panel/filterPanel/GridFilterPanel.js +24 -6
  20. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  21. package/constants/gridClasses.d.ts +4 -0
  22. package/constants/gridClasses.js +1 -1
  23. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -0
  24. package/hooks/features/columns/useGridColumns.js +12 -14
  25. package/hooks/features/editRows/useGridCellEditing.new.js +11 -4
  26. package/hooks/features/editRows/useGridRowEditing.new.js +10 -4
  27. package/hooks/features/events/useGridEvents.d.ts +1 -1
  28. package/hooks/features/events/useGridEvents.js +2 -0
  29. package/hooks/features/filter/gridFilterUtils.d.ts +9 -1
  30. package/hooks/features/filter/gridFilterUtils.js +1 -2
  31. package/hooks/features/filter/useGridFilter.js +5 -5
  32. package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  33. package/hooks/features/rows/useGridRowsMeta.js +107 -43
  34. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -0
  35. package/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
  36. package/index.js +1 -1
  37. package/internals/index.d.ts +1 -0
  38. package/legacy/DataGrid/DataGrid.js +26 -1
  39. package/legacy/components/GridRow.js +56 -12
  40. package/legacy/components/cell/GridCell.js +12 -7
  41. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +6 -3
  42. package/legacy/components/containers/GridRootStyles.js +3 -2
  43. package/legacy/components/menu/GridMenu.js +9 -2
  44. package/legacy/components/panel/GridColumnsPanel.js +12 -2
  45. package/legacy/components/panel/GridPanelWrapper.js +3 -3
  46. package/legacy/components/panel/filterPanel/GridFilterForm.js +89 -8
  47. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  48. package/legacy/components/panel/filterPanel/GridFilterPanel.js +25 -6
  49. package/legacy/constants/gridClasses.js +1 -1
  50. package/legacy/hooks/features/columns/useGridColumns.js +12 -14
  51. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +14 -7
  52. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +10 -4
  53. package/legacy/hooks/features/events/useGridEvents.js +2 -0
  54. package/legacy/hooks/features/filter/gridFilterUtils.js +1 -2
  55. package/legacy/hooks/features/filter/useGridFilter.js +5 -5
  56. package/legacy/hooks/features/rows/useGridRowsMeta.js +104 -41
  57. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +46 -22
  58. package/legacy/index.js +1 -1
  59. package/legacy/locales/heIL.js +9 -9
  60. package/legacy/locales/nbNO.js +127 -0
  61. package/legacy/locales/trTR.js +7 -7
  62. package/legacy/models/events/gridEvents.js +2 -0
  63. package/legacy/models/gridApiCaches.js +1 -0
  64. package/legacy/models/params/gridMenuParams.js +1 -0
  65. package/legacy/models/params/index.js +2 -1
  66. package/locales/heIL.js +9 -9
  67. package/locales/nbNO.d.ts +2 -0
  68. package/locales/nbNO.js +115 -0
  69. package/locales/trTR.js +7 -7
  70. package/models/api/gridCoreApi.d.ts +2 -6
  71. package/models/api/gridRowsMetaApi.d.ts +24 -0
  72. package/models/colDef/gridColDef.d.ts +3 -3
  73. package/models/events/gridEventLookup.d.ts +13 -1
  74. package/models/events/gridEvents.d.ts +3 -1
  75. package/models/events/gridEvents.js +2 -0
  76. package/models/gridApiCaches.d.ts +6 -0
  77. package/models/gridApiCaches.js +1 -0
  78. package/models/params/gridMenuParams.d.ts +7 -0
  79. package/models/params/gridMenuParams.js +1 -0
  80. package/models/params/gridRowParams.d.ts +1 -1
  81. package/models/params/index.d.ts +1 -0
  82. package/models/params/index.js +2 -1
  83. package/models/props/DataGridProps.d.ts +23 -1
  84. package/modern/DataGrid/DataGrid.js +26 -1
  85. package/modern/components/GridRow.js +51 -12
  86. package/modern/components/cell/GridCell.js +12 -7
  87. package/modern/components/columnHeaders/GridColumnHeaderItem.js +4 -3
  88. package/modern/components/containers/GridRootStyles.js +4 -2
  89. package/modern/components/menu/GridMenu.js +9 -2
  90. package/modern/components/panel/GridColumnsPanel.js +10 -2
  91. package/modern/components/panel/GridPanelWrapper.js +3 -3
  92. package/modern/components/panel/filterPanel/GridFilterForm.js +88 -8
  93. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  94. package/modern/components/panel/filterPanel/GridFilterPanel.js +24 -6
  95. package/modern/constants/gridClasses.js +1 -1
  96. package/modern/hooks/features/columns/useGridColumns.js +11 -13
  97. package/modern/hooks/features/editRows/useGridCellEditing.new.js +10 -3
  98. package/modern/hooks/features/editRows/useGridRowEditing.new.js +9 -3
  99. package/modern/hooks/features/events/useGridEvents.js +2 -0
  100. package/modern/hooks/features/filter/gridFilterUtils.js +1 -2
  101. package/modern/hooks/features/filter/useGridFilter.js +5 -5
  102. package/modern/hooks/features/rows/useGridRowsMeta.js +105 -37
  103. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
  104. package/modern/index.js +1 -1
  105. package/modern/locales/heIL.js +9 -9
  106. package/modern/locales/nbNO.js +115 -0
  107. package/modern/locales/trTR.js +7 -7
  108. package/modern/models/events/gridEvents.js +2 -0
  109. package/modern/models/gridApiCaches.js +1 -0
  110. package/modern/models/params/gridMenuParams.js +1 -0
  111. package/modern/models/params/index.js +2 -1
  112. package/node/DataGrid/DataGrid.js +26 -1
  113. package/node/components/GridRow.js +53 -12
  114. package/node/components/cell/GridCell.js +12 -7
  115. package/node/components/columnHeaders/GridColumnHeaderItem.js +4 -3
  116. package/node/components/containers/GridRootStyles.js +4 -2
  117. package/node/components/menu/GridMenu.js +10 -2
  118. package/node/components/panel/GridColumnsPanel.js +10 -2
  119. package/node/components/panel/GridPanelWrapper.js +5 -3
  120. package/node/components/panel/filterPanel/GridFilterForm.js +91 -9
  121. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  122. package/node/components/panel/filterPanel/GridFilterPanel.js +26 -6
  123. package/node/constants/gridClasses.js +1 -1
  124. package/node/hooks/features/columns/useGridColumns.js +12 -14
  125. package/node/hooks/features/editRows/useGridCellEditing.new.js +11 -4
  126. package/node/hooks/features/editRows/useGridRowEditing.new.js +10 -4
  127. package/node/hooks/features/events/useGridEvents.js +2 -0
  128. package/node/hooks/features/filter/gridFilterUtils.js +2 -1
  129. package/node/hooks/features/filter/useGridFilter.js +4 -4
  130. package/node/hooks/features/rows/useGridRowsMeta.js +107 -43
  131. package/node/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
  132. package/node/index.js +1 -1
  133. package/node/locales/heIL.js +9 -9
  134. package/node/locales/nbNO.js +125 -0
  135. package/node/locales/trTR.js +7 -7
  136. package/node/models/events/gridEvents.js +2 -0
  137. package/node/models/gridApiCaches.js +5 -0
  138. package/node/models/params/gridMenuParams.js +5 -0
  139. package/node/models/params/index.js +13 -0
  140. package/package.json +4 -4
@@ -22,38 +22,74 @@ export var rowsMetaStateInitializer = function rowsMetaStateInitializer(state) {
22
22
  */
23
23
 
24
24
  export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
25
- var getRowHeight = props.getRowHeight,
26
- getRowSpacing = props.getRowSpacing;
27
- var rowsHeightLookup = React.useRef({});
28
- var rowHeight = useGridSelector(apiRef, gridDensityRowHeightSelector);
25
+ var getRowHeightProp = props.getRowHeight,
26
+ getRowSpacing = props.getRowSpacing,
27
+ getEstimatedRowHeight = props.getEstimatedRowHeight;
28
+ var rowsHeightLookup = React.useRef({}); // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
29
+
30
+ var lastMeasuredRowIndex = React.useRef(-1);
31
+ var hasRowWithAutoHeight = React.useRef(false);
32
+ var rowHeightFromDensity = useGridSelector(apiRef, gridDensityRowHeightSelector);
29
33
  var filterState = useGridSelector(apiRef, gridFilterStateSelector);
30
34
  var paginationState = useGridSelector(apiRef, gridPaginationSelector);
31
35
  var sortingState = useGridSelector(apiRef, gridSortingStateSelector);
32
36
  var currentPage = useGridVisibleRows(apiRef, props);
33
37
  var hydrateRowsMeta = React.useCallback(function () {
38
+ hasRowWithAutoHeight.current = false;
34
39
  apiRef.current.setState(function (state) {
35
- var positions = [];
36
40
  var densityFactor = gridDensityFactorSelector(state, apiRef.current.instanceId);
37
- var currentRowHeight = gridDensityRowHeightSelector(state, apiRef.current.instanceId);
41
+ var positions = [];
38
42
  var currentPageTotalHeight = currentPage.rows.reduce(function (acc, row) {
39
43
  positions.push(acc);
40
- var baseRowHeight;
41
- var isResized = rowsHeightLookup.current[row.id] && rowsHeightLookup.current[row.id].isResized || false;
44
+
45
+ if (!rowsHeightLookup.current[row.id]) {
46
+ rowsHeightLookup.current[row.id] = {
47
+ sizes: {
48
+ base: rowHeightFromDensity
49
+ },
50
+ isResized: false,
51
+ autoHeight: false,
52
+ needsFirstMeasurement: true // Assume all rows will need to be measured by default
53
+
54
+ };
55
+ }
56
+
57
+ var _rowsHeightLookup$cur = rowsHeightLookup.current[row.id],
58
+ isResized = _rowsHeightLookup$cur.isResized,
59
+ needsFirstMeasurement = _rowsHeightLookup$cur.needsFirstMeasurement,
60
+ sizes = _rowsHeightLookup$cur.sizes;
61
+ var baseRowHeight = rowHeightFromDensity;
62
+ var existingBaseRowHeight = sizes.base;
42
63
 
43
64
  if (isResized) {
44
- // do not recalculate resized row height and use the value from the lookup
45
- baseRowHeight = rowsHeightLookup.current[row.id].value;
46
- } else {
47
- baseRowHeight = currentRowHeight;
65
+ // Do not recalculate resized row height and use the value from the lookup
66
+ baseRowHeight = existingBaseRowHeight;
67
+ } else if (getRowHeightProp) {
68
+ var rowHeightFromUser = getRowHeightProp(_extends({}, row, {
69
+ densityFactor: densityFactor
70
+ }));
48
71
 
49
- if (getRowHeight) {
50
- var _getRowHeight;
72
+ if (rowHeightFromUser === 'auto') {
73
+ if (needsFirstMeasurement) {
74
+ var estimatedRowHeight = getEstimatedRowHeight ? getEstimatedRowHeight(_extends({}, row, {
75
+ densityFactor: densityFactor
76
+ })) : rowHeightFromDensity; // If the row was not measured yet use the estimated row height
51
77
 
78
+ baseRowHeight = estimatedRowHeight != null ? estimatedRowHeight : rowHeightFromDensity;
79
+ } else {
80
+ baseRowHeight = existingBaseRowHeight;
81
+ }
82
+
83
+ hasRowWithAutoHeight.current = true;
84
+ rowsHeightLookup.current[row.id].autoHeight = true;
85
+ } else {
52
86
  // Default back to base rowHeight if getRowHeight returns null or undefined.
53
- baseRowHeight = (_getRowHeight = getRowHeight(_extends({}, row, {
54
- densityFactor: densityFactor
55
- }))) != null ? _getRowHeight : currentRowHeight;
87
+ baseRowHeight = rowHeightFromUser != null ? rowHeightFromUser : rowHeightFromDensity;
88
+ rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
89
+ rowsHeightLookup.current[row.id].autoHeight = false;
56
90
  }
91
+ } else {
92
+ rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
57
93
  } // We use an object to make simple to check if a height is already added or not
58
94
 
59
95
 
@@ -74,15 +110,11 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
74
110
  initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
75
111
  }
76
112
 
77
- var sizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
78
- var finalRowHeight = Object.values(sizes).reduce(function (acc2, value) {
113
+ var processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
114
+ rowsHeightLookup.current[row.id].sizes = processedSizes;
115
+ var finalRowHeight = Object.values(processedSizes).reduce(function (acc2, value) {
79
116
  return acc2 + value;
80
117
  }, 0);
81
- rowsHeightLookup.current[row.id] = {
82
- value: baseRowHeight,
83
- sizes: sizes,
84
- isResized: isResized
85
- };
86
118
  return acc + finalRowHeight;
87
119
  }, 0);
88
120
  return _extends({}, state, {
@@ -92,14 +124,18 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
92
124
  }
93
125
  });
94
126
  });
95
- apiRef.current.forceUpdate();
96
- }, [apiRef, currentPage.rows, getRowSpacing, getRowHeight]);
97
127
 
98
- var getTargetRowHeight = function getTargetRowHeight(rowId) {
99
- var _rowsHeightLookup$cur;
128
+ if (!hasRowWithAutoHeight.current) {
129
+ // No row has height=auto, so all rows are already measured
130
+ lastMeasuredRowIndex.current = Infinity;
131
+ }
100
132
 
101
- return ((_rowsHeightLookup$cur = rowsHeightLookup.current[rowId]) == null ? void 0 : _rowsHeightLookup$cur.value) || rowHeight;
102
- };
133
+ apiRef.current.forceUpdate();
134
+ }, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
135
+ var getRowHeight = React.useCallback(function (rowId) {
136
+ var height = rowsHeightLookup.current[rowId];
137
+ return height ? height.sizes.base : rowHeightFromDensity;
138
+ }, [rowHeightFromDensity]);
103
139
 
104
140
  var getRowInternalSizes = function getRowInternalSizes(rowId) {
105
141
  var _rowsHeightLookup$cur2;
@@ -108,25 +144,52 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
108
144
  };
109
145
 
110
146
  var setRowHeight = React.useCallback(function (id, height) {
111
- rowsHeightLookup.current[id] = {
112
- value: height,
113
- isResized: true,
114
- sizes: _extends({}, rowsHeightLookup.current[id].sizes, {
115
- base: height
116
- })
117
- };
147
+ rowsHeightLookup.current[id].sizes.base = height;
148
+ rowsHeightLookup.current[id].isResized = true;
149
+ rowsHeightLookup.current[id].needsFirstMeasurement = false;
118
150
  hydrateRowsMeta();
119
- }, [hydrateRowsMeta]); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
151
+ }, [hydrateRowsMeta]);
152
+ var storeMeasuredRowHeight = React.useCallback(function (id, height) {
153
+ if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
154
+ return;
155
+ } // Only trigger hydration if the value is different, otherwise we trigger a loop
156
+
157
+
158
+ var needsHydration = rowsHeightLookup.current[id].sizes.base !== height;
159
+ rowsHeightLookup.current[id].needsFirstMeasurement = false;
160
+ rowsHeightLookup.current[id].sizes.base = height;
161
+
162
+ if (needsHydration) {
163
+ hydrateRowsMeta();
164
+ }
165
+ }, [hydrateRowsMeta]);
166
+ var rowHasAutoHeight = React.useCallback(function (id) {
167
+ var _rowsHeightLookup$cur3;
168
+
169
+ return ((_rowsHeightLookup$cur3 = rowsHeightLookup.current[id]) == null ? void 0 : _rowsHeightLookup$cur3.autoHeight) || false;
170
+ }, []);
171
+ var getLastMeasuredRowIndex = React.useCallback(function () {
172
+ return lastMeasuredRowIndex.current;
173
+ }, []);
174
+ var setLastMeasuredRowIndex = React.useCallback(function (index) {
175
+ if (hasRowWithAutoHeight.current) {
176
+ lastMeasuredRowIndex.current = index;
177
+ }
178
+ }, []); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
120
179
  // Because of variable row height this is needed for the virtualization
121
180
 
122
181
  React.useEffect(function () {
123
182
  hydrateRowsMeta();
124
- }, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
183
+ }, [rowHeightFromDensity, filterState, paginationState, sortingState, hydrateRowsMeta]);
125
184
  useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
126
185
  var rowsMetaApi = {
127
- unstable_getRowHeight: getTargetRowHeight,
186
+ unstable_getLastMeasuredRowIndex: getLastMeasuredRowIndex,
187
+ unstable_setLastMeasuredRowIndex: setLastMeasuredRowIndex,
188
+ unstable_rowHasAutoHeight: rowHasAutoHeight,
189
+ unstable_getRowHeight: getRowHeight,
128
190
  unstable_getRowInternalSizes: getRowInternalSizes,
129
- unstable_setRowHeight: setRowHeight
191
+ unstable_setRowHeight: setRowHeight,
192
+ unstable_storeRowHeightMeasurement: storeMeasuredRowHeight
130
193
  };
131
194
  useGridApiMethod(apiRef, rowsMetaApi, 'GridRowsMetaApi');
132
195
  };
@@ -99,17 +99,40 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
99
99
  var _ref2 = scrollPosition.current,
100
100
  top = _ref2.top,
101
101
  left = _ref2.left;
102
- var firstRowIndex = getIndexFromScroll(top, rowsMeta.positions);
102
+ var firstRowIndex = Math.min(Math.max(0, apiRef.current.unstable_getLastMeasuredRowIndex()), getIndexFromScroll(top, rowsMeta.positions));
103
103
  var lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getIndexFromScroll(top + rootRef.current.clientHeight, rowsMeta.positions);
104
- var firstColumnIndex = getIndexFromScroll(left, columnPositions);
105
- var lastColumnIndex = getIndexFromScroll(left + containerWidth, columnPositions);
104
+ var hasRowWithAutoHeight = false;
105
+ var firstColumnIndex = 0;
106
+ var lastColumnIndex = columnPositions.length;
107
+
108
+ var _getRenderableIndexes = getRenderableIndexes({
109
+ firstIndex: firstRowIndex,
110
+ lastIndex: lastRowIndex,
111
+ minFirstIndex: 0,
112
+ maxLastIndex: currentPage.rows.length,
113
+ buffer: rootProps.rowBuffer
114
+ }),
115
+ _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
116
+ firstRowToRender = _getRenderableIndexes2[0],
117
+ lastRowToRender = _getRenderableIndexes2[1];
118
+
119
+ for (var i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
120
+ var row = currentPage.rows[i];
121
+ hasRowWithAutoHeight = apiRef.current.unstable_rowHasAutoHeight(row.id);
122
+ }
123
+
124
+ if (!hasRowWithAutoHeight) {
125
+ firstColumnIndex = getIndexFromScroll(left, columnPositions);
126
+ lastColumnIndex = getIndexFromScroll(left + containerWidth, columnPositions);
127
+ }
128
+
106
129
  return {
107
130
  firstRowIndex: firstRowIndex,
108
131
  lastRowIndex: lastRowIndex,
109
132
  firstColumnIndex: firstColumnIndex,
110
133
  lastColumnIndex: lastColumnIndex
111
134
  };
112
- }, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, currentPage.rows.length, columnPositions, containerWidth, visibleColumns.length]);
135
+ }, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, rootProps.rowBuffer, currentPage.rows, columnPositions, visibleColumns.length, apiRef, containerWidth]);
113
136
  React.useEffect(function () {
114
137
  if (disableVirtualization) {
115
138
  renderZoneRef.current.style.transform = "translate3d(0px, 0px, 0px)";
@@ -129,26 +152,26 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
129
152
  }, []);
130
153
  useGridApiEventHandler(apiRef, 'resize', handleResize);
131
154
  var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
132
- var _getRenderableIndexes = getRenderableIndexes({
155
+ var _getRenderableIndexes3 = getRenderableIndexes({
133
156
  firstIndex: nextRenderContext.firstRowIndex,
134
157
  lastIndex: nextRenderContext.lastRowIndex,
135
158
  minFirstIndex: 0,
136
159
  maxLastIndex: currentPage.rows.length,
137
160
  buffer: rootProps.rowBuffer
138
161
  }),
139
- _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
140
- firstRowToRender = _getRenderableIndexes2[0],
141
- lastRowToRender = _getRenderableIndexes2[1];
162
+ _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 2),
163
+ firstRowToRender = _getRenderableIndexes4[0],
164
+ lastRowToRender = _getRenderableIndexes4[1];
142
165
 
143
- var _getRenderableIndexes3 = getRenderableIndexes({
166
+ var _getRenderableIndexes5 = getRenderableIndexes({
144
167
  firstIndex: nextRenderContext.firstColumnIndex,
145
168
  lastIndex: nextRenderContext.lastColumnIndex,
146
169
  minFirstIndex: renderZoneMinColumnIndex,
147
170
  maxLastIndex: renderZoneMaxColumnIndex,
148
171
  buffer: rootProps.columnBuffer
149
172
  }),
150
- _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 1),
151
- initialFirstColumnToRender = _getRenderableIndexes4[0];
173
+ _getRenderableIndexes6 = _slicedToArray(_getRenderableIndexes5, 1),
174
+ initialFirstColumnToRender = _getRenderableIndexes6[0];
152
175
 
153
176
  var firstColumnToRender = getFirstNonSpannedColumnToRender({
154
177
  firstColumnToRender: initialFirstColumnToRender,
@@ -248,7 +271,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
248
271
  _params$maxLastColumn = params.maxLastColumn,
249
272
  maxLastColumn = _params$maxLastColumn === void 0 ? renderZoneMaxColumnIndex : _params$maxLastColumn,
250
273
  _params$availableSpac = params.availableSpace,
251
- availableSpace = _params$availableSpac === void 0 ? containerWidth : _params$availableSpac;
274
+ availableSpace = _params$availableSpac === void 0 ? containerWidth : _params$availableSpac,
275
+ ignoreAutoHeight = params.ignoreAutoHeight;
252
276
 
253
277
  if (!currentPage.range || !nextRenderContext || availableSpace == null) {
254
278
  return null;
@@ -257,16 +281,16 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
257
281
  var rowBuffer = !disableVirtualization ? rootProps.rowBuffer : 0;
258
282
  var columnBuffer = !disableVirtualization ? rootProps.columnBuffer : 0;
259
283
 
260
- var _getRenderableIndexes5 = getRenderableIndexes({
284
+ var _getRenderableIndexes7 = getRenderableIndexes({
261
285
  firstIndex: nextRenderContext.firstRowIndex,
262
286
  lastIndex: nextRenderContext.lastRowIndex,
263
287
  minFirstIndex: 0,
264
288
  maxLastIndex: currentPage.rows.length,
265
289
  buffer: rowBuffer
266
290
  }),
267
- _getRenderableIndexes6 = _slicedToArray(_getRenderableIndexes5, 2),
268
- firstRowToRender = _getRenderableIndexes6[0],
269
- lastRowToRender = _getRenderableIndexes6[1];
291
+ _getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
292
+ firstRowToRender = _getRenderableIndexes8[0],
293
+ lastRowToRender = _getRenderableIndexes8[1];
270
294
 
271
295
  var renderedRows = [];
272
296
 
@@ -280,16 +304,16 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
280
304
  });
281
305
  }
282
306
 
283
- var _getRenderableIndexes7 = getRenderableIndexes({
307
+ var _getRenderableIndexes9 = getRenderableIndexes({
284
308
  firstIndex: nextRenderContext.firstColumnIndex,
285
309
  lastIndex: nextRenderContext.lastColumnIndex,
286
310
  minFirstIndex: minFirstColumn,
287
311
  maxLastIndex: maxLastColumn,
288
312
  buffer: columnBuffer
289
313
  }),
290
- _getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
291
- initialFirstColumnToRender = _getRenderableIndexes8[0],
292
- lastColumnToRender = _getRenderableIndexes8[1];
314
+ _getRenderableIndexes10 = _slicedToArray(_getRenderableIndexes9, 2),
315
+ initialFirstColumnToRender = _getRenderableIndexes10[0],
316
+ lastColumnToRender = _getRenderableIndexes10[1];
293
317
 
294
318
  var firstColumnToRender = getFirstNonSpannedColumnToRender({
295
319
  firstColumnToRender: initialFirstColumnToRender,
@@ -308,7 +332,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
308
332
  _id = _renderedRows$_i.id,
309
333
  _model = _renderedRows$_i.model;
310
334
  var lastVisibleRowIndex = firstRowToRender + _i === currentPage.rows.length - 1;
311
- var targetRowHeight = apiRef.current.unstable_getRowHeight(_id);
335
+ var baseRowHeight = !apiRef.current.unstable_rowHasAutoHeight(_id) || ignoreAutoHeight ? apiRef.current.unstable_getRowHeight(_id) : 'auto';
312
336
  var isSelected = void 0;
313
337
 
314
338
  if (selectedRowsLookup[_id] == null) {
@@ -322,7 +346,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
322
346
  rows.push( /*#__PURE__*/_jsx(rootProps.components.Row, _extends({
323
347
  row: _model,
324
348
  rowId: _id,
325
- rowHeight: targetRowHeight,
349
+ rowHeight: baseRowHeight,
326
350
  cellFocus: cellFocus // TODO move to inside the row
327
351
  ,
328
352
  cellTabIndex: cellTabIndex // TODO move to inside the row
package/legacy/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.11.1
1
+ /** @license MUI v5.12.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -23,15 +23,15 @@ var heILGrid = {
23
23
  return count !== 1 ? "".concat(count, " \u05DE\u05E1\u05E0\u05E0\u05D9\u05DD \u05E4\u05E2\u05D9\u05DC\u05D9\u05DD") : "\u05DE\u05E1\u05E0\u05DF \u05D0\u05D7\u05D3 \u05E4\u05E2\u05D9\u05DC";
24
24
  },
25
25
  // Quick filter toolbar field
26
- // toolbarQuickFilterPlaceholder: 'Search...',
27
- // toolbarQuickFilterLabel: 'Search',
28
- // toolbarQuickFilterDeleteIconLabel: 'Clear',
26
+ toolbarQuickFilterPlaceholder: 'חיפוש...',
27
+ toolbarQuickFilterLabel: 'חיפוש',
28
+ toolbarQuickFilterDeleteIconLabel: 'ניקוי',
29
29
  // Export selector toolbar button text
30
30
  toolbarExport: 'ייצוא',
31
31
  toolbarExportLabel: 'ייצוא',
32
- toolbarExportCSV: 'הורדה כ- CSV',
32
+ toolbarExportCSV: 'ייצוא ל- CSV',
33
33
  toolbarExportPrint: 'הדפסה',
34
- // toolbarExportExcel: 'Download as Excel',
34
+ toolbarExportExcel: 'ייצוא ל- Excel',
35
35
  // Columns panel text
36
36
  columnsPanelTextFieldLabel: 'חפש עמודה',
37
37
  columnsPanelTextFieldPlaceholder: 'כותרת עמודה',
@@ -41,7 +41,7 @@ var heILGrid = {
41
41
  // Filter panel text
42
42
  filterPanelAddFilter: 'הוסף מסנן',
43
43
  filterPanelDeleteIconLabel: 'מחק',
44
- // filterPanelLinkOperator: 'Logic operator',
44
+ filterPanelLinkOperator: 'אופרטור לוגי',
45
45
  filterPanelOperators: 'אופרטור',
46
46
  // TODO v6: rename to filterPanelOperator
47
47
  filterPanelOperatorAnd: 'וגם',
@@ -120,8 +120,8 @@ var heILGrid = {
120
120
  },
121
121
  // Master/detail
122
122
  expandDetailPanel: 'הרחב',
123
- collapseDetailPanel: 'כווץ' // Row reordering text
124
- // rowReorderingHeaderName: 'Row reordering',
125
-
123
+ collapseDetailPanel: 'כווץ',
124
+ // Row reordering text
125
+ rowReorderingHeaderName: 'סידור שורות'
126
126
  };
127
127
  export var heIL = getGridLocalization(heILGrid, heILCore);
@@ -0,0 +1,127 @@
1
+ import { nbNO as nbNOCore } from '@mui/material/locale';
2
+ import { getGridLocalization } from '../utils/getGridLocalization';
3
+ var nbNOGrid = {
4
+ // Root
5
+ noRowsLabel: 'Ingen rader',
6
+ noResultsOverlayLabel: 'Fant ingen resultat.',
7
+ errorOverlayDefaultLabel: 'Det skjedde en feil.',
8
+ // Density selector toolbar button text
9
+ toolbarDensity: 'Tetthet',
10
+ toolbarDensityLabel: 'Tetthet',
11
+ toolbarDensityCompact: 'Kompakt',
12
+ toolbarDensityStandard: 'Standard',
13
+ toolbarDensityComfortable: 'Komfortabelt',
14
+ // Columns selector toolbar button text
15
+ toolbarColumns: 'Kolonner',
16
+ toolbarColumnsLabel: 'Velg kolonner',
17
+ // Filters toolbar button text
18
+ toolbarFilters: 'Filter',
19
+ toolbarFiltersLabel: 'Vis filter',
20
+ toolbarFiltersTooltipHide: 'Skjul fitler',
21
+ toolbarFiltersTooltipShow: 'Vis filter',
22
+ toolbarFiltersTooltipActive: function toolbarFiltersTooltipActive(count) {
23
+ return count !== 1 ? "".concat(count, " aktive filter") : "".concat(count, " aktivt filter");
24
+ },
25
+ // Quick filter toolbar field
26
+ toolbarQuickFilterPlaceholder: 'Søk...',
27
+ toolbarQuickFilterLabel: 'Søk',
28
+ toolbarQuickFilterDeleteIconLabel: 'Slett',
29
+ // Export selector toolbar button text
30
+ toolbarExport: 'Eksporter',
31
+ toolbarExportLabel: 'Eksporter',
32
+ toolbarExportCSV: 'Last ned som CSV',
33
+ toolbarExportPrint: 'Skriv ut',
34
+ toolbarExportExcel: 'Last ned som Excel',
35
+ // Columns panel text
36
+ columnsPanelTextFieldLabel: 'Finn kolonne',
37
+ columnsPanelTextFieldPlaceholder: 'Kolonne tittel',
38
+ columnsPanelDragIconLabel: 'Reorganiser kolonne',
39
+ columnsPanelShowAllButton: 'Vis alle',
40
+ columnsPanelHideAllButton: 'Skjul alle',
41
+ // Filter panel text
42
+ filterPanelAddFilter: 'Legg til filter',
43
+ filterPanelDeleteIconLabel: 'Slett',
44
+ filterPanelLinkOperator: 'Logisk operator',
45
+ filterPanelOperators: 'Operatører',
46
+ // TODO v6: rename to filterPanelOperator
47
+ filterPanelOperatorAnd: 'Og',
48
+ filterPanelOperatorOr: 'Eller',
49
+ filterPanelColumns: 'Kolonner',
50
+ filterPanelInputLabel: 'Verdi',
51
+ filterPanelInputPlaceholder: 'Filter verdi',
52
+ // Filter operators text
53
+ filterOperatorContains: 'inneholder',
54
+ filterOperatorEquals: 'er lik',
55
+ filterOperatorStartsWith: 'starter med',
56
+ filterOperatorEndsWith: 'slutter med',
57
+ filterOperatorIs: 'er',
58
+ filterOperatorNot: 'er ikke',
59
+ filterOperatorAfter: 'er etter',
60
+ filterOperatorOnOrAfter: 'er på eller etter',
61
+ filterOperatorBefore: 'er før',
62
+ filterOperatorOnOrBefore: 'er på eller før',
63
+ filterOperatorIsEmpty: 'er tom',
64
+ filterOperatorIsNotEmpty: 'er ikke tom',
65
+ filterOperatorIsAnyOf: 'er en av',
66
+ // Filter values text
67
+ filterValueAny: 'noen',
68
+ filterValueTrue: 'sant',
69
+ filterValueFalse: 'usant',
70
+ // Column menu text
71
+ columnMenuLabel: 'Meny',
72
+ columnMenuShowColumns: 'Vis kolonner',
73
+ columnMenuFilter: 'Filter',
74
+ columnMenuHideColumn: 'Skjul',
75
+ columnMenuUnsort: 'Usorter',
76
+ columnMenuSortAsc: 'Sorter ØKENDE',
77
+ columnMenuSortDesc: 'Sorter SYNKENDE',
78
+ // Column header text
79
+ columnHeaderFiltersTooltipActive: function columnHeaderFiltersTooltipActive(count) {
80
+ return count !== 1 ? "".concat(count, " aktive filter") : "".concat(count, " aktivt filter");
81
+ },
82
+ columnHeaderFiltersLabel: 'Vis filter',
83
+ columnHeaderSortIconLabel: 'Sorter',
84
+ // Rows selected footer text
85
+ footerRowSelected: function footerRowSelected(count) {
86
+ return count !== 1 ? "".concat(count.toLocaleString(), " rader valgt") : "".concat(count.toLocaleString(), " rad valgt");
87
+ },
88
+ // Total row amount footer text
89
+ footerTotalRows: 'Totalt antall rader:',
90
+ // Total visible row amount footer text
91
+ footerTotalVisibleRows: function footerTotalVisibleRows(visibleCount, totalCount) {
92
+ return "".concat(visibleCount.toLocaleString(), " av ").concat(totalCount.toLocaleString());
93
+ },
94
+ // Checkbox selection text
95
+ checkboxSelectionHeaderName: 'Avmerkingsboks valgt',
96
+ checkboxSelectionSelectAllRows: 'Velg alle rader',
97
+ checkboxSelectionUnselectAllRows: 'Velg bort alle rader',
98
+ checkboxSelectionSelectRow: 'Velg rad',
99
+ checkboxSelectionUnselectRow: 'Velg bort rad',
100
+ // Boolean cell text
101
+ booleanCellTrueLabel: 'sant',
102
+ booleanCellFalseLabel: 'usant',
103
+ // Actions cell more text
104
+ actionsCellMore: 'mer',
105
+ // Column pinning text
106
+ pinToLeft: 'Fest til venstre',
107
+ pinToRight: 'Fest til høyre',
108
+ unpin: 'Løsne',
109
+ // Tree Data
110
+ treeDataGroupingHeaderName: 'Grupper',
111
+ treeDataExpand: 'se barn',
112
+ treeDataCollapse: 'skjul barn',
113
+ // Grouping columns
114
+ groupingColumnHeaderName: 'Grupper',
115
+ groupColumn: function groupColumn(name) {
116
+ return "Grupper p\xE5 ".concat(name);
117
+ },
118
+ unGroupColumn: function unGroupColumn(name) {
119
+ return "Stopp \xE5 grupper p\xE5 ".concat(name);
120
+ },
121
+ // Master/detail
122
+ expandDetailPanel: 'Utvid',
123
+ collapseDetailPanel: 'Kollaps',
124
+ // Row reordering text
125
+ rowReorderingHeaderName: 'Rad reorganisering'
126
+ };
127
+ export var nbNO = getGridLocalization(nbNOGrid, nbNOCore);
@@ -23,15 +23,15 @@ var trTRGrid = {
23
23
  return "".concat(count, " aktif filtre");
24
24
  },
25
25
  // Quick filter toolbar field
26
- // toolbarQuickFilterPlaceholder: 'Search...',
27
- // toolbarQuickFilterLabel: 'Search',
28
- // toolbarQuickFilterDeleteIconLabel: 'Clear',
26
+ toolbarQuickFilterPlaceholder: 'Ara...',
27
+ toolbarQuickFilterLabel: 'Ara',
28
+ toolbarQuickFilterDeleteIconLabel: 'Temizle',
29
29
  // Export selector toolbar button text
30
30
  toolbarExport: 'Dışa aktar',
31
31
  toolbarExportLabel: 'Dışa aktar',
32
32
  toolbarExportCSV: 'CSV olarak aktar',
33
33
  toolbarExportPrint: 'Yazdır',
34
- // toolbarExportExcel: 'Download as Excel',
34
+ toolbarExportExcel: 'Excel olarak aktar',
35
35
  // Columns panel text
36
36
  columnsPanelTextFieldLabel: 'Sütun ara',
37
37
  columnsPanelTextFieldPlaceholder: 'Sütun adı',
@@ -64,9 +64,9 @@ var trTRGrid = {
64
64
  filterOperatorIsNotEmpty: 'dolu',
65
65
  filterOperatorIsAnyOf: 'herhangi biri',
66
66
  // Filter values text
67
- // filterValueAny: 'any',
68
- // filterValueTrue: 'true',
69
- // filterValueFalse: 'false',
67
+ filterValueAny: 'herhangi',
68
+ filterValueTrue: 'doğru',
69
+ filterValueFalse: 'yanlış',
70
70
  // Column menu text
71
71
  columnMenuLabel: 'Menü',
72
72
  columnMenuShowColumns: 'Sütunları göster',
@@ -82,6 +82,8 @@ var GridEvents;
82
82
  GridEvents["virtualScrollerTouchMove"] = "virtualScrollerTouchMove";
83
83
  GridEvents["preferencePanelClose"] = "preferencePanelClose";
84
84
  GridEvents["preferencePanelOpen"] = "preferencePanelOpen";
85
+ GridEvents["menuOpen"] = "menuOpen";
86
+ GridEvents["menuClose"] = "menuClose";
85
87
  })(GridEvents || (GridEvents = {}));
86
88
 
87
89
  export { GridEvents };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -10,4 +10,5 @@ export * from './gridHeaderSelectionCheckboxParams';
10
10
  export * from './gridValueOptionsParams';
11
11
  export * from './gridCellParams';
12
12
  export * from './gridSortModelParams';
13
- export * from './gridPreferencePanelParams';
13
+ export * from './gridPreferencePanelParams';
14
+ export * from './gridMenuParams';
package/locales/heIL.js CHANGED
@@ -21,15 +21,15 @@ const heILGrid = {
21
21
  toolbarFiltersTooltipShow: 'הצג מסננים',
22
22
  toolbarFiltersTooltipActive: count => count !== 1 ? `${count} מסננים פעילים` : `מסנן אחד פעיל`,
23
23
  // Quick filter toolbar field
24
- // toolbarQuickFilterPlaceholder: 'Search...',
25
- // toolbarQuickFilterLabel: 'Search',
26
- // toolbarQuickFilterDeleteIconLabel: 'Clear',
24
+ toolbarQuickFilterPlaceholder: 'חיפוש...',
25
+ toolbarQuickFilterLabel: 'חיפוש',
26
+ toolbarQuickFilterDeleteIconLabel: 'ניקוי',
27
27
  // Export selector toolbar button text
28
28
  toolbarExport: 'ייצוא',
29
29
  toolbarExportLabel: 'ייצוא',
30
- toolbarExportCSV: 'הורדה כ- CSV',
30
+ toolbarExportCSV: 'ייצוא ל- CSV',
31
31
  toolbarExportPrint: 'הדפסה',
32
- // toolbarExportExcel: 'Download as Excel',
32
+ toolbarExportExcel: 'ייצוא ל- Excel',
33
33
  // Columns panel text
34
34
  columnsPanelTextFieldLabel: 'חפש עמודה',
35
35
  columnsPanelTextFieldPlaceholder: 'כותרת עמודה',
@@ -39,7 +39,7 @@ const heILGrid = {
39
39
  // Filter panel text
40
40
  filterPanelAddFilter: 'הוסף מסנן',
41
41
  filterPanelDeleteIconLabel: 'מחק',
42
- // filterPanelLinkOperator: 'Logic operator',
42
+ filterPanelLinkOperator: 'אופרטור לוגי',
43
43
  filterPanelOperators: 'אופרטור',
44
44
  // TODO v6: rename to filterPanelOperator
45
45
  filterPanelOperatorAnd: 'וגם',
@@ -108,8 +108,8 @@ const heILGrid = {
108
108
  unGroupColumn: name => `הפסק לקבץ לפי ${name}`,
109
109
  // Master/detail
110
110
  expandDetailPanel: 'הרחב',
111
- collapseDetailPanel: 'כווץ' // Row reordering text
112
- // rowReorderingHeaderName: 'Row reordering',
113
-
111
+ collapseDetailPanel: 'כווץ',
112
+ // Row reordering text
113
+ rowReorderingHeaderName: 'סידור שורות'
114
114
  };
115
115
  export const heIL = getGridLocalization(heILGrid, heILCore);
@@ -0,0 +1,2 @@
1
+ import { Localization } from '../utils/getGridLocalization';
2
+ export declare const nbNO: Localization;