@mui/x-data-grid 7.22.2 → 7.22.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/components/GridDetailPanels.js +0 -1
- package/components/GridPinnedRows.js +0 -1
- package/components/GridRow.d.ts +2 -2
- package/components/GridRow.js +1 -1
- package/components/base/GridOverlays.js +5 -6
- package/components/cell/GridCell.d.ts +41 -3
- package/components/cell/GridCell.js +1 -9
- package/components/cell/GridEditInputCell.js +0 -67
- package/components/columnsManagement/GridColumnsManagement.d.ts +2 -0
- package/components/columnsManagement/GridColumnsManagement.js +53 -6
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/toolbar/GridToolbar.d.ts +2 -2
- package/components/toolbar/GridToolbar.js +12 -4
- package/components/toolbar/GridToolbarExport.d.ts +2 -2
- package/components/toolbar/GridToolbarExport.js +4 -3
- package/components/toolbar/index.d.ts +1 -1
- package/constants/gridClasses.d.ts +4 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +1 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/hooks/features/export/useGridCsvExport.js +1 -1
- package/hooks/features/export/useGridPrintExport.js +1 -1
- package/hooks/features/pagination/useGridPaginationModel.js +2 -2
- package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/hooks/features/rows/gridRowsUtils.js +1 -5
- package/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
- package/hooks/utils/useGridSelector.d.ts +3 -2
- package/hooks/utils/useGridSelector.js +27 -2
- package/index.d.ts +0 -1
- package/index.js +1 -1
- package/locales/arSD.js +1 -0
- package/locales/beBY.js +1 -0
- package/locales/bgBG.js +2 -0
- package/locales/csCZ.js +2 -0
- package/locales/daDK.js +2 -0
- package/locales/deDE.js +2 -0
- package/locales/elGR.js +1 -0
- package/locales/esES.js +6 -4
- package/locales/faIR.js +2 -0
- package/locales/fiFI.js +2 -0
- package/locales/frFR.js +2 -0
- package/locales/heIL.js +2 -0
- package/locales/hrHR.js +2 -0
- package/locales/huHU.js +2 -0
- package/locales/isIS.js +1 -0
- package/locales/itIT.js +2 -0
- package/locales/jaJP.js +2 -0
- package/locales/koKR.js +1 -0
- package/locales/nbNO.js +2 -0
- package/locales/nlNL.js +2 -0
- package/locales/nnNO.js +2 -0
- package/locales/plPL.js +1 -0
- package/locales/ptBR.js +2 -0
- package/locales/ptPT.js +2 -0
- package/locales/roRO.js +1 -0
- package/locales/ruRU.js +2 -0
- package/locales/skSK.js +1 -0
- package/locales/svSE.js +6 -5
- package/locales/trTR.js +4 -2
- package/locales/ukUA.js +1 -0
- package/locales/urPK.js +1 -0
- package/locales/viVN.js +2 -0
- package/locales/zhCN.js +6 -4
- package/locales/zhHK.js +1 -0
- package/locales/zhTW.js +1 -0
- package/models/api/gridLocaleTextApi.d.ts +1 -0
- package/models/props/DataGridProps.d.ts +1 -1
- package/modern/components/GridDetailPanels.js +0 -1
- package/modern/components/GridPinnedRows.js +0 -1
- package/modern/components/GridRow.js +1 -1
- package/modern/components/base/GridOverlays.js +5 -6
- package/modern/components/cell/GridCell.js +1 -9
- package/modern/components/cell/GridEditInputCell.js +0 -67
- package/modern/components/columnsManagement/GridColumnsManagement.js +53 -6
- package/modern/components/toolbar/GridToolbar.js +12 -4
- package/modern/components/toolbar/GridToolbarExport.js +4 -3
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +1 -0
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/modern/hooks/features/export/useGridCsvExport.js +1 -1
- package/modern/hooks/features/export/useGridPrintExport.js +1 -1
- package/modern/hooks/features/pagination/useGridPaginationModel.js +2 -2
- package/modern/hooks/features/rows/gridRowsUtils.js +1 -5
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
- package/modern/hooks/utils/useGridSelector.js +27 -2
- package/modern/index.js +1 -1
- package/modern/locales/arSD.js +1 -0
- package/modern/locales/beBY.js +1 -0
- package/modern/locales/bgBG.js +2 -0
- package/modern/locales/csCZ.js +2 -0
- package/modern/locales/daDK.js +2 -0
- package/modern/locales/deDE.js +2 -0
- package/modern/locales/elGR.js +1 -0
- package/modern/locales/esES.js +6 -4
- package/modern/locales/faIR.js +2 -0
- package/modern/locales/fiFI.js +2 -0
- package/modern/locales/frFR.js +2 -0
- package/modern/locales/heIL.js +2 -0
- package/modern/locales/hrHR.js +2 -0
- package/modern/locales/huHU.js +2 -0
- package/modern/locales/isIS.js +1 -0
- package/modern/locales/itIT.js +2 -0
- package/modern/locales/jaJP.js +2 -0
- package/modern/locales/koKR.js +1 -0
- package/modern/locales/nbNO.js +2 -0
- package/modern/locales/nlNL.js +2 -0
- package/modern/locales/nnNO.js +2 -0
- package/modern/locales/plPL.js +1 -0
- package/modern/locales/ptBR.js +2 -0
- package/modern/locales/ptPT.js +2 -0
- package/modern/locales/roRO.js +1 -0
- package/modern/locales/ruRU.js +2 -0
- package/modern/locales/skSK.js +1 -0
- package/modern/locales/svSE.js +6 -5
- package/modern/locales/trTR.js +4 -2
- package/modern/locales/ukUA.js +1 -0
- package/modern/locales/urPK.js +1 -0
- package/modern/locales/viVN.js +2 -0
- package/modern/locales/zhCN.js +6 -4
- package/modern/locales/zhHK.js +1 -0
- package/modern/locales/zhTW.js +1 -0
- package/modern/utils/createSelector.js +11 -1
- package/modern/utils/utils.js +1 -3
- package/node/components/GridDetailPanels.js +0 -1
- package/node/components/GridPinnedRows.js +0 -1
- package/node/components/GridRow.js +1 -1
- package/node/components/base/GridOverlays.js +5 -6
- package/node/components/cell/GridCell.js +1 -9
- package/node/components/cell/GridEditInputCell.js +0 -67
- package/node/components/columnsManagement/GridColumnsManagement.js +53 -6
- package/node/components/toolbar/GridToolbar.js +12 -4
- package/node/components/toolbar/GridToolbarExport.js +4 -3
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +1 -0
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
- package/node/hooks/features/export/useGridCsvExport.js +2 -2
- package/node/hooks/features/export/useGridPrintExport.js +2 -2
- package/node/hooks/features/pagination/useGridPaginationModel.js +2 -2
- package/node/hooks/features/rows/gridRowsUtils.js +2 -8
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
- package/node/hooks/utils/useGridSelector.js +29 -3
- package/node/index.js +1 -1
- package/node/locales/arSD.js +1 -0
- package/node/locales/beBY.js +1 -0
- package/node/locales/bgBG.js +2 -0
- package/node/locales/csCZ.js +2 -0
- package/node/locales/daDK.js +2 -0
- package/node/locales/deDE.js +2 -0
- package/node/locales/elGR.js +1 -0
- package/node/locales/esES.js +6 -4
- package/node/locales/faIR.js +2 -0
- package/node/locales/fiFI.js +2 -0
- package/node/locales/frFR.js +2 -0
- package/node/locales/heIL.js +2 -0
- package/node/locales/hrHR.js +2 -0
- package/node/locales/huHU.js +2 -0
- package/node/locales/isIS.js +1 -0
- package/node/locales/itIT.js +2 -0
- package/node/locales/jaJP.js +2 -0
- package/node/locales/koKR.js +1 -0
- package/node/locales/nbNO.js +2 -0
- package/node/locales/nlNL.js +2 -0
- package/node/locales/nnNO.js +2 -0
- package/node/locales/plPL.js +1 -0
- package/node/locales/ptBR.js +2 -0
- package/node/locales/ptPT.js +2 -0
- package/node/locales/roRO.js +1 -0
- package/node/locales/ruRU.js +2 -0
- package/node/locales/skSK.js +1 -0
- package/node/locales/svSE.js +6 -5
- package/node/locales/trTR.js +4 -2
- package/node/locales/ukUA.js +1 -0
- package/node/locales/urPK.js +1 -0
- package/node/locales/viVN.js +2 -0
- package/node/locales/zhCN.js +6 -4
- package/node/locales/zhHK.js +1 -0
- package/node/locales/zhTW.js +1 -0
- package/node/utils/createSelector.js +11 -1
- package/node/utils/utils.js +1 -3
- package/package.json +1 -1
- package/utils/createSelector.d.ts +1 -1
- package/utils/createSelector.js +11 -1
- package/utils/utils.js +1 -3
package/locales/zhCN.js
CHANGED
|
@@ -34,6 +34,8 @@ const zhCNGrid = {
|
|
|
34
34
|
columnsManagementNoColumns: '没有列',
|
|
35
35
|
columnsManagementShowHideAllText: '显示/隐藏所有',
|
|
36
36
|
columnsManagementReset: '重置',
|
|
37
|
+
// columnsManagementDeleteIconLabel: 'Clear',
|
|
38
|
+
|
|
37
39
|
// Filter panel text
|
|
38
40
|
filterPanelAddFilter: '添加筛选器',
|
|
39
41
|
filterPanelRemoveAll: '清除全部',
|
|
@@ -47,9 +49,9 @@ const zhCNGrid = {
|
|
|
47
49
|
filterPanelInputPlaceholder: '筛选值',
|
|
48
50
|
// Filter operators text
|
|
49
51
|
filterOperatorContains: '包含',
|
|
50
|
-
|
|
52
|
+
filterOperatorDoesNotContain: '不包含',
|
|
51
53
|
filterOperatorEquals: '等于',
|
|
52
|
-
|
|
54
|
+
filterOperatorDoesNotEqual: '不等于',
|
|
53
55
|
filterOperatorStartsWith: '开始于',
|
|
54
56
|
filterOperatorEndsWith: '结束于',
|
|
55
57
|
filterOperatorIs: '是',
|
|
@@ -69,9 +71,9 @@ const zhCNGrid = {
|
|
|
69
71
|
'filterOperator<=': '<=',
|
|
70
72
|
// Header filter operators text
|
|
71
73
|
headerFilterOperatorContains: '包含',
|
|
72
|
-
|
|
74
|
+
headerFilterOperatorDoesNotContain: '不包含',
|
|
73
75
|
headerFilterOperatorEquals: '等于',
|
|
74
|
-
|
|
76
|
+
headerFilterOperatorDoesNotEqual: '不等于',
|
|
75
77
|
headerFilterOperatorStartsWith: '开始于',
|
|
76
78
|
headerFilterOperatorEndsWith: '结束于',
|
|
77
79
|
headerFilterOperatorIs: '是',
|
package/locales/zhHK.js
CHANGED
|
@@ -34,6 +34,7 @@ const zhHKGrid = {
|
|
|
34
34
|
// columnsManagementNoColumns: 'No columns',
|
|
35
35
|
// columnsManagementShowHideAllText: 'Show/Hide All',
|
|
36
36
|
// columnsManagementReset: 'Reset',
|
|
37
|
+
// columnsManagementDeleteIconLabel: 'Clear',
|
|
37
38
|
|
|
38
39
|
// Filter panel text
|
|
39
40
|
filterPanelAddFilter: '新增過濾器',
|
package/locales/zhTW.js
CHANGED
|
@@ -34,6 +34,7 @@ const zhTWGrid = {
|
|
|
34
34
|
// columnsManagementNoColumns: 'No columns',
|
|
35
35
|
// columnsManagementShowHideAllText: 'Show/Hide All',
|
|
36
36
|
// columnsManagementReset: 'Reset',
|
|
37
|
+
// columnsManagementDeleteIconLabel: 'Clear',
|
|
37
38
|
|
|
38
39
|
// Filter panel text
|
|
39
40
|
filterPanelAddFilter: '增加篩選器',
|
|
@@ -35,6 +35,7 @@ export interface GridLocaleText {
|
|
|
35
35
|
columnsManagementNoColumns: string;
|
|
36
36
|
columnsManagementShowHideAllText: string;
|
|
37
37
|
columnsManagementReset: string;
|
|
38
|
+
columnsManagementDeleteIconLabel: string;
|
|
38
39
|
filterPanelAddFilter: React.ReactNode;
|
|
39
40
|
filterPanelRemoveAll: React.ReactNode;
|
|
40
41
|
filterPanelDeleteIconLabel: string;
|
|
@@ -613,7 +613,7 @@ export interface DataGridPropsWithoutDefaultValue<R extends GridValidRowModel =
|
|
|
613
613
|
* @param {GridPaginationModel} model Updated pagination model.
|
|
614
614
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
615
615
|
*/
|
|
616
|
-
onPaginationModelChange?: (model: GridPaginationModel, details: GridCallbackDetails) => void;
|
|
616
|
+
onPaginationModelChange?: (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => void;
|
|
617
617
|
/**
|
|
618
618
|
* Callback fired when the row count has changed.
|
|
619
619
|
* @param {number} count Updated row count.
|
|
@@ -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", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "
|
|
3
|
+
const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "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';
|
|
@@ -4,12 +4,11 @@ import PropTypes from 'prop-types';
|
|
|
4
4
|
import { styled } from '@mui/system';
|
|
5
5
|
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
+
import { minimalContentHeight } from "../../hooks/features/rows/gridRowsUtils.js";
|
|
7
8
|
import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
|
|
8
9
|
import { gridDimensionsSelector } from "../../hooks/features/dimensions/index.js";
|
|
9
10
|
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
|
|
10
11
|
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
|
|
11
|
-
import { useGridVisibleRows } from "../../hooks/utils/useGridVisibleRows.js";
|
|
12
|
-
import { getMinimalContentHeight } from "../../hooks/features/rows/gridRowsUtils.js";
|
|
13
12
|
import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
|
|
14
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
14
|
const GridOverlayWrapperRoot = styled('div', {
|
|
@@ -26,6 +25,7 @@ loadingOverlayVariant !== 'skeleton' ? {
|
|
|
26
25
|
position: 'sticky',
|
|
27
26
|
// To stay in place while scrolling
|
|
28
27
|
top: 'var(--DataGrid-headersTotalHeight)',
|
|
28
|
+
// TODO: take pinned rows into account
|
|
29
29
|
left: 0,
|
|
30
30
|
width: 0,
|
|
31
31
|
// To stay above the content instead of shifting it down
|
|
@@ -53,11 +53,10 @@ const useUtilityClasses = ownerState => {
|
|
|
53
53
|
function GridOverlayWrapper(props) {
|
|
54
54
|
const apiRef = useGridApiContext();
|
|
55
55
|
const rootProps = useGridRootProps();
|
|
56
|
-
const currentPage = useGridVisibleRows(apiRef, rootProps);
|
|
57
56
|
const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
|
|
58
|
-
let height = dimensions.viewportOuterSize.height - dimensions.topContainerHeight - dimensions.bottomContainerHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
|
|
59
|
-
if (
|
|
60
|
-
height =
|
|
57
|
+
let height = Math.max(dimensions.viewportOuterSize.height - dimensions.topContainerHeight - dimensions.bottomContainerHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0), 0);
|
|
58
|
+
if (height === 0) {
|
|
59
|
+
height = minimalContentHeight;
|
|
61
60
|
}
|
|
62
61
|
const classes = useUtilityClasses(_extends({}, props, {
|
|
63
62
|
classes: rootProps.classes
|
|
@@ -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 = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "
|
|
3
|
+
const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "gridHasFiller", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
|
|
4
4
|
_excluded2 = ["changeReason", "unstable_updateValueOnRender"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
@@ -342,7 +342,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
|
|
|
342
342
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
343
343
|
// ----------------------------------------------------------------------
|
|
344
344
|
align: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
|
|
345
|
-
className: PropTypes.string,
|
|
346
345
|
colIndex: PropTypes.number.isRequired,
|
|
347
346
|
colSpan: PropTypes.number,
|
|
348
347
|
column: PropTypes.object.isRequired,
|
|
@@ -355,13 +354,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
|
|
|
355
354
|
}),
|
|
356
355
|
gridHasFiller: PropTypes.bool.isRequired,
|
|
357
356
|
isNotVisible: PropTypes.bool.isRequired,
|
|
358
|
-
onClick: PropTypes.func,
|
|
359
|
-
onDoubleClick: PropTypes.func,
|
|
360
|
-
onDragEnter: PropTypes.func,
|
|
361
|
-
onDragOver: PropTypes.func,
|
|
362
|
-
onKeyDown: PropTypes.func,
|
|
363
|
-
onMouseDown: PropTypes.func,
|
|
364
|
-
onMouseUp: PropTypes.func,
|
|
365
357
|
pinnedOffset: PropTypes.number.isRequired,
|
|
366
358
|
pinnedPosition: PropTypes.oneOf([0, 1, 2, 3]).isRequired,
|
|
367
359
|
rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
@@ -2,7 +2,6 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "hasFocus", "isValidating", "debounceMs", "isProcessingProps", "onValueChange"];
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
6
5
|
import { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
|
|
7
6
|
import { styled } from '@mui/material/styles';
|
|
8
7
|
import InputBase from '@mui/material/InputBase';
|
|
@@ -94,71 +93,5 @@ const GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
94
93
|
}) : undefined
|
|
95
94
|
}, other));
|
|
96
95
|
});
|
|
97
|
-
process.env.NODE_ENV !== "production" ? GridEditInputCell.propTypes = {
|
|
98
|
-
// ----------------------------- Warning --------------------------------
|
|
99
|
-
// | These PropTypes are generated from the TypeScript type definitions |
|
|
100
|
-
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
101
|
-
// ----------------------------------------------------------------------
|
|
102
|
-
/**
|
|
103
|
-
* GridApi that let you manipulate the grid.
|
|
104
|
-
*/
|
|
105
|
-
api: PropTypes.object.isRequired,
|
|
106
|
-
/**
|
|
107
|
-
* The mode of the cell.
|
|
108
|
-
*/
|
|
109
|
-
cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,
|
|
110
|
-
changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),
|
|
111
|
-
/**
|
|
112
|
-
* The column of the row that the current cell belongs to.
|
|
113
|
-
*/
|
|
114
|
-
colDef: PropTypes.object.isRequired,
|
|
115
|
-
debounceMs: PropTypes.number,
|
|
116
|
-
/**
|
|
117
|
-
* The column field of the cell that triggered the event.
|
|
118
|
-
*/
|
|
119
|
-
field: PropTypes.string.isRequired,
|
|
120
|
-
/**
|
|
121
|
-
* The cell value formatted with the column valueFormatter.
|
|
122
|
-
*/
|
|
123
|
-
formattedValue: PropTypes.any,
|
|
124
|
-
/**
|
|
125
|
-
* If true, the cell is the active element.
|
|
126
|
-
*/
|
|
127
|
-
hasFocus: PropTypes.bool.isRequired,
|
|
128
|
-
/**
|
|
129
|
-
* The grid row id.
|
|
130
|
-
*/
|
|
131
|
-
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
132
|
-
/**
|
|
133
|
-
* If true, the cell is editable.
|
|
134
|
-
*/
|
|
135
|
-
isEditable: PropTypes.bool,
|
|
136
|
-
isProcessingProps: PropTypes.bool,
|
|
137
|
-
isValidating: PropTypes.bool,
|
|
138
|
-
/**
|
|
139
|
-
* Callback called when the value is changed by the user.
|
|
140
|
-
* @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
|
|
141
|
-
* @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.
|
|
142
|
-
* @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`
|
|
143
|
-
*/
|
|
144
|
-
onValueChange: PropTypes.func,
|
|
145
|
-
/**
|
|
146
|
-
* The row model of the row that the current cell belongs to.
|
|
147
|
-
*/
|
|
148
|
-
row: PropTypes.any.isRequired,
|
|
149
|
-
/**
|
|
150
|
-
* The node of the row that the current cell belongs to.
|
|
151
|
-
*/
|
|
152
|
-
rowNode: PropTypes.object.isRequired,
|
|
153
|
-
/**
|
|
154
|
-
* the tabIndex value.
|
|
155
|
-
*/
|
|
156
|
-
tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
|
|
157
|
-
/**
|
|
158
|
-
* The cell value.
|
|
159
|
-
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
160
|
-
*/
|
|
161
|
-
value: PropTypes.any
|
|
162
|
-
} : void 0;
|
|
163
96
|
export { GridEditInputCell };
|
|
164
97
|
export const renderEditInputCell = params => /*#__PURE__*/_jsx(GridEditInputCell, _extends({}, params));
|
|
@@ -5,6 +5,8 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
7
7
|
import { styled } from '@mui/material/styles';
|
|
8
|
+
import TextField from '@mui/material/TextField';
|
|
9
|
+
import { inputBaseClasses } from '@mui/material/InputBase';
|
|
8
10
|
import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from "../../hooks/features/columns/gridColumnsSelector.js";
|
|
9
11
|
import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
|
|
10
12
|
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
|
|
@@ -20,6 +22,7 @@ const useUtilityClasses = ownerState => {
|
|
|
20
22
|
const slots = {
|
|
21
23
|
root: ['columnsManagement'],
|
|
22
24
|
header: ['columnsManagementHeader'],
|
|
25
|
+
searchInput: ['columnsManagementSearchInput'],
|
|
23
26
|
footer: ['columnsManagementFooter'],
|
|
24
27
|
row: ['columnsManagementRow']
|
|
25
28
|
};
|
|
@@ -42,7 +45,8 @@ function GridColumnsManagement(props) {
|
|
|
42
45
|
disableShowHideToggle = false,
|
|
43
46
|
disableResetButton = false,
|
|
44
47
|
toggleAllMode = 'all',
|
|
45
|
-
getTogglableColumns
|
|
48
|
+
getTogglableColumns,
|
|
49
|
+
searchInputProps
|
|
46
50
|
} = props;
|
|
47
51
|
const isResetDisabled = React.useMemo(() => checkColumnVisibilityModelsSame(columnVisibilityModel, initialColumnVisibilityModel), [columnVisibilityModel, initialColumnVisibilityModel]);
|
|
48
52
|
const sortedColumns = React.useMemo(() => {
|
|
@@ -109,28 +113,52 @@ function GridColumnsManagement(props) {
|
|
|
109
113
|
}
|
|
110
114
|
return false;
|
|
111
115
|
};
|
|
116
|
+
const handleSearchReset = React.useCallback(() => {
|
|
117
|
+
setSearchValue('');
|
|
118
|
+
searchInputRef.current.focus();
|
|
119
|
+
}, []);
|
|
112
120
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
113
121
|
children: [/*#__PURE__*/_jsx(GridColumnsManagementHeader, {
|
|
114
122
|
className: classes.header,
|
|
115
123
|
ownerState: rootProps,
|
|
116
|
-
children: /*#__PURE__*/_jsx(
|
|
124
|
+
children: /*#__PURE__*/_jsx(SearchInput, _extends({
|
|
125
|
+
as: rootProps.slots.baseTextField,
|
|
126
|
+
ownerState: rootProps,
|
|
117
127
|
placeholder: apiRef.current.getLocaleText('columnsManagementSearchTitle'),
|
|
118
128
|
inputRef: searchInputRef,
|
|
129
|
+
className: classes.searchInput,
|
|
119
130
|
value: searchValue,
|
|
120
131
|
onChange: handleSearchValueChange,
|
|
121
132
|
variant: "outlined",
|
|
122
133
|
size: "small",
|
|
134
|
+
type: "search",
|
|
123
135
|
InputProps: {
|
|
124
136
|
startAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseInputAdornment, {
|
|
125
137
|
position: "start",
|
|
126
138
|
children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {})
|
|
127
139
|
}),
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
140
|
+
endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({
|
|
141
|
+
"aria-label": apiRef.current.getLocaleText('columnsManagementDeleteIconLabel'),
|
|
142
|
+
size: "small",
|
|
143
|
+
sx: [searchValue ? {
|
|
144
|
+
visibility: 'visible'
|
|
145
|
+
} : {
|
|
146
|
+
visibility: 'hidden'
|
|
147
|
+
}],
|
|
148
|
+
tabIndex: -1,
|
|
149
|
+
onClick: handleSearchReset
|
|
150
|
+
}, rootProps.slotProps?.baseIconButton, {
|
|
151
|
+
children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {
|
|
152
|
+
fontSize: "small"
|
|
153
|
+
})
|
|
154
|
+
}))
|
|
155
|
+
},
|
|
156
|
+
inputProps: {
|
|
157
|
+
'aria-label': apiRef.current.getLocaleText('columnsManagementSearchTitle')
|
|
131
158
|
},
|
|
159
|
+
autoComplete: "off",
|
|
132
160
|
fullWidth: true
|
|
133
|
-
}, rootProps.slotProps?.baseTextField))
|
|
161
|
+
}, rootProps.slotProps?.baseTextField, searchInputProps))
|
|
134
162
|
}), /*#__PURE__*/_jsxs(GridColumnsManagementBody, {
|
|
135
163
|
className: classes.root,
|
|
136
164
|
ownerState: rootProps,
|
|
@@ -205,6 +233,7 @@ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
|
|
|
205
233
|
* @returns {GridColDef['field'][]} The list of togglable columns' field names.
|
|
206
234
|
*/
|
|
207
235
|
getTogglableColumns: PropTypes.func,
|
|
236
|
+
searchInputProps: PropTypes.object,
|
|
208
237
|
searchPredicate: PropTypes.func,
|
|
209
238
|
sort: PropTypes.oneOf(['asc', 'desc']),
|
|
210
239
|
/**
|
|
@@ -239,6 +268,24 @@ const GridColumnsManagementHeader = styled('div', {
|
|
|
239
268
|
}) => ({
|
|
240
269
|
padding: theme.spacing(1.5, 3)
|
|
241
270
|
}));
|
|
271
|
+
const SearchInput = styled(TextField, {
|
|
272
|
+
name: 'MuiDataGrid',
|
|
273
|
+
slot: 'ColumnsManagementSearchInput',
|
|
274
|
+
overridesResolver: (props, styles) => styles.columnsManagementSearchInput
|
|
275
|
+
})(({
|
|
276
|
+
theme
|
|
277
|
+
}) => ({
|
|
278
|
+
[`& .${inputBaseClasses.root}`]: {
|
|
279
|
+
padding: theme.spacing(0, 1.5, 0, 1.5)
|
|
280
|
+
},
|
|
281
|
+
[`& .${inputBaseClasses.input}::-webkit-search-decoration,
|
|
282
|
+
& .${inputBaseClasses.input}::-webkit-search-cancel-button,
|
|
283
|
+
& .${inputBaseClasses.input}::-webkit-search-results-button,
|
|
284
|
+
& .${inputBaseClasses.input}::-webkit-search-results-decoration`]: {
|
|
285
|
+
/* clears the 'X' icon from Chrome */
|
|
286
|
+
display: 'none'
|
|
287
|
+
}
|
|
288
|
+
}));
|
|
242
289
|
const GridColumnsManagementFooter = styled('div', {
|
|
243
290
|
name: 'MuiDataGrid',
|
|
244
291
|
slot: 'ColumnsManagementFooter',
|
|
@@ -14,14 +14,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
14
14
|
const GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, ref) {
|
|
15
15
|
// TODO v7: think about where export option should be passed.
|
|
16
16
|
// from slotProps={{ toolbarExport: { ...exportOption } }} seems to be more appropriate
|
|
17
|
-
const
|
|
17
|
+
const _ref = props,
|
|
18
|
+
{
|
|
18
19
|
csvOptions,
|
|
19
20
|
printOptions,
|
|
20
21
|
excelOptions,
|
|
21
22
|
showQuickFilter = false,
|
|
22
23
|
quickFilterProps = {}
|
|
23
|
-
} =
|
|
24
|
-
other = _objectWithoutPropertiesLoose(
|
|
24
|
+
} = _ref,
|
|
25
|
+
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
25
26
|
const rootProps = useGridRootProps();
|
|
26
27
|
if (rootProps.disableColumnFilter && rootProps.disableColumnSelector && rootProps.disableDensitySelector && !showQuickFilter) {
|
|
27
28
|
return null;
|
|
@@ -32,7 +33,7 @@ const GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, re
|
|
|
32
33
|
children: [/*#__PURE__*/_jsx(GridToolbarColumnsButton, {}), /*#__PURE__*/_jsx(GridToolbarFilterButton, {}), /*#__PURE__*/_jsx(GridToolbarDensitySelector, {}), /*#__PURE__*/_jsx(GridToolbarExport, {
|
|
33
34
|
csvOptions: csvOptions,
|
|
34
35
|
printOptions: printOptions
|
|
35
|
-
//
|
|
36
|
+
// @ts-ignore
|
|
36
37
|
,
|
|
37
38
|
excelOptions: excelOptions
|
|
38
39
|
}), /*#__PURE__*/_jsx("div", {
|
|
@@ -47,6 +48,8 @@ process.env.NODE_ENV !== "production" ? GridToolbar.propTypes = {
|
|
|
47
48
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
48
49
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
49
50
|
// ----------------------------------------------------------------------
|
|
51
|
+
csvOptions: PropTypes.object,
|
|
52
|
+
printOptions: PropTypes.object,
|
|
50
53
|
/**
|
|
51
54
|
* Props passed to the quick filter component.
|
|
52
55
|
*/
|
|
@@ -56,6 +59,11 @@ process.env.NODE_ENV !== "production" ? GridToolbar.propTypes = {
|
|
|
56
59
|
* @default false
|
|
57
60
|
*/
|
|
58
61
|
showQuickFilter: PropTypes.bool,
|
|
62
|
+
/**
|
|
63
|
+
* The props used for each slot inside.
|
|
64
|
+
* @default {}
|
|
65
|
+
*/
|
|
66
|
+
slotProps: PropTypes.object,
|
|
59
67
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
60
68
|
} : void 0;
|
|
61
69
|
export { GridToolbar };
|
|
@@ -82,12 +82,13 @@ process.env.NODE_ENV !== "production" ? GridPrintExportMenuItem.propTypes = {
|
|
|
82
82
|
})
|
|
83
83
|
} : void 0;
|
|
84
84
|
const GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {
|
|
85
|
-
const
|
|
85
|
+
const _ref = props,
|
|
86
|
+
{
|
|
86
87
|
csvOptions = {},
|
|
87
88
|
printOptions = {},
|
|
88
89
|
excelOptions
|
|
89
|
-
} =
|
|
90
|
-
other = _objectWithoutPropertiesLoose(
|
|
90
|
+
} = _ref,
|
|
91
|
+
other = _objectWithoutPropertiesLoose(_ref, _excluded3);
|
|
91
92
|
const apiRef = useGridApiContext();
|
|
92
93
|
const preProcessedButtons = apiRef.current.unstable_applyPipeProcessors('exportMenu', [], {
|
|
93
94
|
excelOptions,
|
|
@@ -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 const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
5
|
+
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -32,6 +32,7 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
|
|
|
32
32
|
columnsManagementNoColumns: 'No columns',
|
|
33
33
|
columnsManagementShowHideAllText: 'Show/Hide All',
|
|
34
34
|
columnsManagementReset: 'Reset',
|
|
35
|
+
columnsManagementDeleteIconLabel: 'Clear',
|
|
35
36
|
// Filter panel text
|
|
36
37
|
filterPanelAddFilter: 'Add filter',
|
|
37
38
|
filterPanelRemoveAll: 'Remove all',
|
|
@@ -291,7 +291,7 @@ export const useGridColumnHeaders = props => {
|
|
|
291
291
|
pinnedPosition: pinnedPosition,
|
|
292
292
|
style: style,
|
|
293
293
|
indexInSection: indexInSection,
|
|
294
|
-
sectionLength:
|
|
294
|
+
sectionLength: visibleColumnGroupHeader.length,
|
|
295
295
|
gridHasFiller: gridHasFiller
|
|
296
296
|
}, index);
|
|
297
297
|
});
|
|
@@ -5,7 +5,7 @@ import { exportAs } from "../../../utils/exportAs.js";
|
|
|
5
5
|
import { buildCSV } from "./serializers/csvSerializer.js";
|
|
6
6
|
import { getColumnsToExport, defaultGetRowsToExport } from "./utils.js";
|
|
7
7
|
import { useGridRegisterPipeProcessor } from "../../core/pipeProcessing/index.js";
|
|
8
|
-
import { GridCsvExportMenuItem } from "../../../components/toolbar/
|
|
8
|
+
import { GridCsvExportMenuItem } from "../../../components/toolbar/index.js";
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
/**
|
|
11
11
|
* @requires useGridColumns (state)
|
|
@@ -11,7 +11,7 @@ import { GRID_ID_AUTOGENERATED } from "../rows/gridRowsUtils.js";
|
|
|
11
11
|
import { defaultGetRowsToExport, getColumnsToExport } from "./utils.js";
|
|
12
12
|
import { getDerivedPaginationModel } from "../pagination/useGridPaginationModel.js";
|
|
13
13
|
import { useGridRegisterPipeProcessor } from "../../core/pipeProcessing/index.js";
|
|
14
|
-
import { GridPrintExportMenuItem } from "../../../components/toolbar/
|
|
14
|
+
import { GridPrintExportMenuItem } from "../../../components/toolbar/index.js";
|
|
15
15
|
import { getTotalHeaderHeight } from "../columns/gridColumnsUtils.js";
|
|
16
16
|
import { GRID_CHECKBOX_SELECTION_COL_DEF } from "../../../colDef/gridCheckboxSelectionColDef.js";
|
|
17
17
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -75,7 +75,7 @@ export const useGridPaginationModel = (apiRef, props) => {
|
|
|
75
75
|
pagination: _extends({}, state.pagination, {
|
|
76
76
|
paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)
|
|
77
77
|
})
|
|
78
|
-
}));
|
|
78
|
+
}), 'setPaginationModel');
|
|
79
79
|
}, [apiRef, logger, props.signature]);
|
|
80
80
|
const paginationModelApi = {
|
|
81
81
|
setPage,
|
|
@@ -113,7 +113,7 @@ export const useGridPaginationModel = (apiRef, props) => {
|
|
|
113
113
|
pagination: _extends({}, state.pagination, {
|
|
114
114
|
paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)
|
|
115
115
|
})
|
|
116
|
-
}));
|
|
116
|
+
}), 'stateRestorePreProcessing');
|
|
117
117
|
return params;
|
|
118
118
|
}, [apiRef, props.autoPageSize, props.signature]);
|
|
119
119
|
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { gridPinnedRowsSelector } from "./gridRowsSelector.js";
|
|
3
|
-
import { gridDimensionsSelector } from "../dimensions/gridDimensionsSelectors.js";
|
|
4
3
|
export const GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;
|
|
5
4
|
export const GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');
|
|
6
5
|
export const buildRootGroup = () => ({
|
|
@@ -285,10 +284,7 @@ export function calculatePinnedRowsHeight(apiRef) {
|
|
|
285
284
|
bottom: bottomPinnedRowsHeight
|
|
286
285
|
};
|
|
287
286
|
}
|
|
288
|
-
export
|
|
289
|
-
const dimensions = gridDimensionsSelector(apiRef.current.state);
|
|
290
|
-
return `var(--DataGrid-overlayHeight, ${2 * dimensions.rowHeight}px)`;
|
|
291
|
-
}
|
|
287
|
+
export const minimalContentHeight = 'var(--DataGrid-overlayHeight, calc(var(--height) * 2))';
|
|
292
288
|
export function computeRowsUpdates(apiRef, updates, getRowId) {
|
|
293
289
|
const nonPinnedRowsUpdates = [];
|
|
294
290
|
updates.forEach(update => {
|
|
@@ -21,11 +21,11 @@ import { clamp, range } from "../../../utils/utils.js";
|
|
|
21
21
|
import { selectedIdsLookupSelector } from "../rowSelection/gridRowSelectionSelector.js";
|
|
22
22
|
import { gridRowsMetaSelector } from "../rows/gridRowsMetaSelector.js";
|
|
23
23
|
import { getFirstNonSpannedColumnToRender } from "../columns/gridColumnsUtils.js";
|
|
24
|
-
import { getMinimalContentHeight } from "../rows/gridRowsUtils.js";
|
|
25
24
|
import { gridRenderContextSelector, gridVirtualizationRowEnabledSelector, gridVirtualizationColumnEnabledSelector } from "./gridVirtualizationSelectors.js";
|
|
26
25
|
import { EMPTY_RENDER_CONTEXT } from "./useGridVirtualization.js";
|
|
27
26
|
import { gridRowSpanningHiddenCellsOriginMapSelector } from "../rows/gridRowSpanningSelectors.js";
|
|
28
27
|
import { gridListColumnSelector } from "../listView/gridListViewSelectors.js";
|
|
28
|
+
import { minimalContentHeight } from "../rows/gridRowsUtils.js";
|
|
29
29
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
30
30
|
const MINIMUM_COLUMN_WIDTH = 50;
|
|
31
31
|
var ScrollDirection = /*#__PURE__*/function (ScrollDirection) {
|
|
@@ -381,11 +381,11 @@ export const useGridVirtualScroller = () => {
|
|
|
381
381
|
flexBasis: contentHeight,
|
|
382
382
|
flexShrink: 0
|
|
383
383
|
};
|
|
384
|
-
if (
|
|
385
|
-
size.flexBasis =
|
|
384
|
+
if (size.flexBasis === 0) {
|
|
385
|
+
size.flexBasis = minimalContentHeight; // Give room to show the overlay when there no rows.
|
|
386
386
|
}
|
|
387
387
|
return size;
|
|
388
|
-
}, [
|
|
388
|
+
}, [columnsTotalWidth, contentHeight, needsHorizontalScrollbar]);
|
|
389
389
|
React.useEffect(() => {
|
|
390
390
|
apiRef.current.publishEvent('virtualScrollerContentSizeChange');
|
|
391
391
|
}, [apiRef, contentSize]);
|
|
@@ -23,10 +23,26 @@ function applySelectorV8(apiRef, selector, args, instanceId) {
|
|
|
23
23
|
}
|
|
24
24
|
const defaultCompare = Object.is;
|
|
25
25
|
export const objectShallowCompare = fastObjectShallowCompare;
|
|
26
|
+
const arrayShallowCompare = (a, b) => {
|
|
27
|
+
if (a === b) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return a.length === b.length && a.every((v, i) => v === b[i]);
|
|
31
|
+
};
|
|
32
|
+
export const argsEqual = (prev, curr) => {
|
|
33
|
+
let fn = Object.is;
|
|
34
|
+
if (curr instanceof Array) {
|
|
35
|
+
fn = arrayShallowCompare;
|
|
36
|
+
} else if (curr instanceof Object) {
|
|
37
|
+
fn = objectShallowCompare;
|
|
38
|
+
}
|
|
39
|
+
return fn(prev, curr);
|
|
40
|
+
};
|
|
26
41
|
const createRefs = () => ({
|
|
27
42
|
state: null,
|
|
28
43
|
equals: null,
|
|
29
|
-
selector: null
|
|
44
|
+
selector: null,
|
|
45
|
+
args: null
|
|
30
46
|
});
|
|
31
47
|
|
|
32
48
|
// TODO v8: Remove this function
|
|
@@ -71,9 +87,18 @@ export const useGridSelectorV8 = (apiRef, selector, args = undefined, equals = d
|
|
|
71
87
|
refs.current.state = state;
|
|
72
88
|
refs.current.equals = equals;
|
|
73
89
|
refs.current.selector = selector;
|
|
90
|
+
const prevArgs = refs.current.args;
|
|
91
|
+
refs.current.args = args;
|
|
92
|
+
if (didInit && !argsEqual(prevArgs, args)) {
|
|
93
|
+
const newState = applySelectorV8(apiRef, refs.current.selector, refs.current.args, apiRef.current.instanceId);
|
|
94
|
+
if (!refs.current.equals(refs.current.state, newState)) {
|
|
95
|
+
refs.current.state = newState;
|
|
96
|
+
setState(newState);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
74
99
|
useOnMount(() => {
|
|
75
100
|
return apiRef.current.store.subscribe(() => {
|
|
76
|
-
const newState = applySelectorV8(apiRef, refs.current.selector, args, apiRef.current.instanceId);
|
|
101
|
+
const newState = applySelectorV8(apiRef, refs.current.selector, refs.current.args, apiRef.current.instanceId);
|
|
77
102
|
if (!refs.current.equals(refs.current.state, newState)) {
|
|
78
103
|
refs.current.state = newState;
|
|
79
104
|
setState(newState);
|
package/modern/index.js
CHANGED
package/modern/locales/arSD.js
CHANGED
|
@@ -34,6 +34,7 @@ const arSDGrid = {
|
|
|
34
34
|
// columnsManagementNoColumns: 'No columns',
|
|
35
35
|
// columnsManagementShowHideAllText: 'Show/Hide All',
|
|
36
36
|
// columnsManagementReset: 'Reset',
|
|
37
|
+
// columnsManagementDeleteIconLabel: 'Clear',
|
|
37
38
|
|
|
38
39
|
// Filter panel text
|
|
39
40
|
filterPanelAddFilter: 'إضافة مرشِح',
|
package/modern/locales/beBY.js
CHANGED
|
@@ -48,6 +48,7 @@ const beBYGrid = {
|
|
|
48
48
|
// columnsManagementNoColumns: 'No columns',
|
|
49
49
|
// columnsManagementShowHideAllText: 'Show/Hide All',
|
|
50
50
|
// columnsManagementReset: 'Reset',
|
|
51
|
+
// columnsManagementDeleteIconLabel: 'Clear',
|
|
51
52
|
|
|
52
53
|
// Filter panel text
|
|
53
54
|
filterPanelAddFilter: 'Дадаць фільтр',
|