@mui/x-data-grid 9.11.0 → 9.13.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.
- package/CHANGELOG.md +317 -0
- package/DataGrid/DataGrid.js +4 -2
- package/DataGrid/DataGrid.mjs +4 -2
- package/DataGrid/useDataGridProps.d.mts +1 -1
- package/DataGrid/useDataGridProps.d.ts +1 -1
- package/components/GridPagination.js +1 -1
- package/components/GridPagination.mjs +1 -1
- package/components/GridRow.d.mts +1 -0
- package/components/GridRow.d.ts +1 -0
- package/components/GridRow.js +41 -6
- package/components/GridRow.mjs +41 -6
- package/components/cell/GridCell.js +21 -5
- package/components/cell/GridCell.mjs +21 -5
- package/components/cell/GridEditBooleanCell.d.mts +1 -1
- package/components/cell/GridEditBooleanCell.d.ts +1 -1
- package/components/cell/GridEditBooleanCell.js +4 -4
- package/components/cell/GridEditBooleanCell.mjs +4 -4
- package/components/cell/GridEditDateCell.d.mts +1 -1
- package/components/cell/GridEditDateCell.d.ts +1 -1
- package/components/cell/GridEditDateCell.js +5 -5
- package/components/cell/GridEditDateCell.mjs +5 -5
- package/components/cell/GridEditInputCell.d.mts +1 -1
- package/components/cell/GridEditInputCell.d.ts +1 -1
- package/components/cell/GridEditInputCell.js +1 -1
- package/components/cell/GridEditInputCell.mjs +1 -1
- package/components/cell/GridEditLongTextCell.d.mts +1 -1
- package/components/cell/GridEditLongTextCell.d.ts +1 -1
- package/components/cell/GridEditLongTextCell.js +2 -2
- package/components/cell/GridEditLongTextCell.mjs +2 -2
- package/components/cell/GridEditSingleSelectCell.d.mts +1 -1
- package/components/cell/GridEditSingleSelectCell.d.ts +1 -1
- package/components/cell/GridEditSingleSelectCell.js +4 -4
- package/components/cell/GridEditSingleSelectCell.mjs +4 -4
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
- package/components/columnHeaders/GridBaseColumnHeaders.mjs +1 -1
- package/components/columnHeaders/GridColumnHeaderItem.js +4 -0
- package/components/columnHeaders/GridColumnHeaderItem.mjs +4 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.mts +7 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +7 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +5 -4
- package/components/columnHeaders/GridGenericColumnHeaderItem.mjs +5 -4
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +18 -6
- package/components/panel/filterPanel/GridFilterInputSingleSelect.mjs +18 -6
- package/components/toolbarV8/Toolbar.d.mts +5 -1
- package/components/toolbarV8/Toolbar.d.ts +5 -1
- package/components/toolbarV8/Toolbar.js +34 -12
- package/components/toolbarV8/Toolbar.mjs +33 -11
- package/constants/gridClasses.d.mts +12 -0
- package/constants/gridClasses.d.ts +12 -0
- package/constants/gridClasses.js +1 -1
- package/constants/gridClasses.mjs +1 -1
- package/constants/localeTextConstants.js +4 -0
- package/constants/localeTextConstants.mjs +4 -0
- package/hooks/core/useGridApiInitialization.js +5 -1
- package/hooks/core/useGridApiInitialization.mjs +5 -1
- package/hooks/core/useGridStateInitialization.js +3 -1
- package/hooks/core/useGridStateInitialization.mjs +3 -1
- package/hooks/core/useGridVirtualizer.js +17 -1
- package/hooks/core/useGridVirtualizer.mjs +17 -1
- package/hooks/features/columnResize/useGridColumnResize.js +5 -0
- package/hooks/features/columnResize/useGridColumnResize.mjs +5 -0
- package/hooks/features/columns/gridColumnsUtils.d.mts +1 -1
- package/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
- package/hooks/features/columns/gridColumnsUtils.js +2 -2
- package/hooks/features/columns/gridColumnsUtils.mjs +2 -2
- package/hooks/features/dataSource/gridDataSourceSelector.js +6 -2
- package/hooks/features/dataSource/gridDataSourceSelector.mjs +6 -2
- package/hooks/features/dataSource/models.d.mts +2 -2
- package/hooks/features/dataSource/models.d.ts +2 -2
- package/hooks/features/dataSource/useGridDataSourceBase.js +25 -8
- package/hooks/features/dataSource/useGridDataSourceBase.mjs +26 -9
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.d.mts +9 -0
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.d.ts +9 -0
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.js +57 -0
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.mjs +49 -0
- package/hooks/features/editing/useGridCellEditing.js +3 -1
- package/hooks/features/editing/useGridCellEditing.mjs +3 -1
- package/hooks/features/editing/useGridRowEditing.js +3 -1
- package/hooks/features/editing/useGridRowEditing.mjs +3 -1
- package/hooks/features/filter/gridFilterUtils.d.mts +13 -0
- package/hooks/features/filter/gridFilterUtils.d.ts +13 -0
- package/hooks/features/filter/gridFilterUtils.js +32 -1
- package/hooks/features/filter/gridFilterUtils.mjs +29 -1
- package/hooks/features/filter/useGridFilter.js +1 -21
- package/hooks/features/filter/useGridFilter.mjs +2 -22
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +1 -1
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.mjs +1 -1
- package/hooks/features/pivoting/gridPivotingInterfaces.d.mts +2 -2
- package/hooks/features/pivoting/gridPivotingInterfaces.d.ts +2 -2
- package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
- package/hooks/features/rowSelection/useGridRowSelection.mjs +2 -2
- package/hooks/features/rows/gridRowsUtils.d.mts +37 -3
- package/hooks/features/rows/gridRowsUtils.d.ts +37 -3
- package/hooks/features/rows/gridRowsUtils.js +120 -23
- package/hooks/features/rows/gridRowsUtils.mjs +115 -22
- package/hooks/features/rows/useGridRowSpanning.js +5 -0
- package/hooks/features/rows/useGridRowSpanning.mjs +5 -0
- package/hooks/features/rows/useGridRows.js +10 -1
- package/hooks/features/rows/useGridRows.mjs +10 -1
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.mts +1 -1
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/hooks/utils/useGridEvent.d.mts +2 -2
- package/hooks/utils/useGridEvent.d.ts +2 -2
- package/hooks/utils/useGridEvent.js +2 -0
- package/hooks/utils/useGridEvent.mjs +2 -0
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/internals/index.d.mts +4 -2
- package/internals/index.d.ts +4 -2
- package/internals/index.js +48 -0
- package/internals/index.mjs +4 -2
- package/locales/arSD.js +5 -0
- package/locales/arSD.mjs +5 -0
- package/locales/beBY.js +5 -0
- package/locales/beBY.mjs +5 -0
- package/locales/bgBG.js +5 -0
- package/locales/bgBG.mjs +5 -0
- package/locales/bnBD.js +5 -0
- package/locales/bnBD.mjs +5 -0
- package/locales/caES.js +5 -0
- package/locales/caES.mjs +5 -0
- package/locales/csCZ.js +5 -0
- package/locales/csCZ.mjs +5 -0
- package/locales/daDK.js +5 -0
- package/locales/daDK.mjs +5 -0
- package/locales/deDE.js +5 -0
- package/locales/deDE.mjs +5 -0
- package/locales/elGR.js +5 -0
- package/locales/elGR.mjs +5 -0
- package/locales/esES.js +5 -0
- package/locales/esES.mjs +5 -0
- package/locales/faIR.js +5 -0
- package/locales/faIR.mjs +5 -0
- package/locales/fiFI.js +5 -0
- package/locales/fiFI.mjs +5 -0
- package/locales/frFR.js +5 -0
- package/locales/frFR.mjs +5 -0
- package/locales/heIL.js +5 -0
- package/locales/heIL.mjs +5 -0
- package/locales/hrHR.js +5 -0
- package/locales/hrHR.mjs +5 -0
- package/locales/huHU.js +5 -0
- package/locales/huHU.mjs +5 -0
- package/locales/hyAM.js +5 -0
- package/locales/hyAM.mjs +5 -0
- package/locales/idID.js +5 -0
- package/locales/idID.mjs +5 -0
- package/locales/isIS.js +5 -0
- package/locales/isIS.mjs +5 -0
- package/locales/itIT.js +5 -0
- package/locales/itIT.mjs +5 -0
- package/locales/jaJP.js +5 -0
- package/locales/jaJP.mjs +5 -0
- package/locales/koKR.js +5 -0
- package/locales/koKR.mjs +5 -0
- package/locales/nbNO.js +5 -0
- package/locales/nbNO.mjs +5 -0
- package/locales/nlNL.js +5 -0
- package/locales/nlNL.mjs +5 -0
- package/locales/nnNO.js +5 -0
- package/locales/nnNO.mjs +5 -0
- package/locales/plPL.js +5 -0
- package/locales/plPL.mjs +5 -0
- package/locales/ptBR.js +5 -0
- package/locales/ptBR.mjs +5 -0
- package/locales/ptPT.js +5 -0
- package/locales/ptPT.mjs +5 -0
- package/locales/roRO.js +5 -0
- package/locales/roRO.mjs +5 -0
- package/locales/ruRU.js +5 -0
- package/locales/ruRU.mjs +5 -0
- package/locales/skSK.js +5 -0
- package/locales/skSK.mjs +5 -0
- package/locales/svSE.js +5 -0
- package/locales/svSE.mjs +5 -0
- package/locales/thTH.js +5 -0
- package/locales/thTH.mjs +5 -0
- package/locales/trTR.js +5 -0
- package/locales/trTR.mjs +5 -0
- package/locales/ukUA.js +5 -0
- package/locales/ukUA.mjs +5 -0
- package/locales/urPK.js +5 -0
- package/locales/urPK.mjs +5 -0
- package/locales/viVN.js +5 -0
- package/locales/viVN.mjs +5 -0
- package/locales/zhCN.js +5 -0
- package/locales/zhCN.mjs +5 -0
- package/locales/zhHK.js +5 -0
- package/locales/zhHK.mjs +5 -0
- package/locales/zhTW.js +5 -0
- package/locales/zhTW.mjs +5 -0
- package/material/variables.d.mts +6 -1
- package/material/variables.d.ts +6 -1
- package/material/variables.js +17 -3
- package/material/variables.mjs +14 -4
- package/models/api/gridApiCommon.d.mts +2 -2
- package/models/api/gridApiCommon.d.ts +2 -2
- package/models/api/gridCallbackDetails.d.mts +11 -1
- package/models/api/gridCallbackDetails.d.ts +11 -1
- package/models/api/gridLocaleTextApi.d.mts +3 -0
- package/models/api/gridLocaleTextApi.d.ts +3 -0
- package/models/api/gridRowApi.d.mts +19 -7
- package/models/api/gridRowApi.d.ts +19 -7
- package/models/api/gridStateApi.d.mts +3 -2
- package/models/api/gridStateApi.d.ts +3 -2
- package/models/api/index.d.mts +1 -1
- package/models/api/index.d.ts +1 -1
- package/models/colDef/gridColDef.d.mts +5 -0
- package/models/colDef/gridColDef.d.ts +5 -0
- package/models/configuration/gridConfiguration.d.mts +13 -1
- package/models/configuration/gridConfiguration.d.ts +13 -1
- package/models/controlStateItem.d.mts +3 -2
- package/models/controlStateItem.d.ts +3 -2
- package/models/events/gridEventListener.d.mts +3 -2
- package/models/events/gridEventListener.d.ts +3 -2
- package/models/gridDataSource.d.mts +3 -0
- package/models/gridDataSource.d.ts +3 -0
- package/models/gridRows.d.mts +28 -1
- package/models/gridRows.d.ts +28 -1
- package/models/props/DataGridProps.d.mts +41 -38
- package/models/props/DataGridProps.d.ts +41 -38
- package/package.json +6 -6
- package/utils/domUtils.js +1 -1
- package/utils/domUtils.mjs +1 -1
- package/utils/getPublicApiRef.d.mts +2 -2
- package/utils/getPublicApiRef.d.ts +2 -2
- package/utils/getPublicApiRef.js +15 -3
- package/utils/getPublicApiRef.mjs +15 -3
- package/utils/keyboardUtils.d.mts +1 -0
- package/utils/keyboardUtils.d.ts +1 -0
- package/utils/keyboardUtils.js +6 -0
- package/utils/keyboardUtils.mjs +5 -0
|
@@ -23,12 +23,23 @@ const renderSingleSelectOptions = ({
|
|
|
23
23
|
getOptionLabel,
|
|
24
24
|
getOptionValue,
|
|
25
25
|
isSelectNative,
|
|
26
|
-
baseSelectOptionProps
|
|
26
|
+
baseSelectOptionProps,
|
|
27
|
+
blankOptionLabel
|
|
27
28
|
}) => {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const valueOptions = (0, _filterPanelUtils.getValueOptions)(column) || [];
|
|
30
|
+
|
|
31
|
+
// A column that declares its own blank entry already offers a way to reset the filter.
|
|
32
|
+
// Prepending another one would render two options sharing the same `''` key.
|
|
33
|
+
const declaresBlankOption = valueOptions.some(option => {
|
|
34
|
+
const optionValue = getOptionValue(option);
|
|
35
|
+
return optionValue === '' || optionValue === null || optionValue === undefined;
|
|
36
|
+
});
|
|
37
|
+
const iterableColumnValues = declaresBlankOption ? valueOptions : ['', ...valueOptions];
|
|
38
|
+
return iterableColumnValues.map((option, index) => {
|
|
39
|
+
// The prepended entry is ours, not a value option, so it skips the column accessors.
|
|
40
|
+
const isBlankOption = !declaresBlankOption && index === 0;
|
|
41
|
+
const value = isBlankOption ? '' : getOptionValue(option);
|
|
42
|
+
let label = isBlankOption ? blankOptionLabel : getOptionLabel(option);
|
|
32
43
|
if (label === '') {
|
|
33
44
|
label = ' '; // To force the height of the empty option
|
|
34
45
|
}
|
|
@@ -98,7 +109,8 @@ function GridFilterInputSingleSelect(props) {
|
|
|
98
109
|
getOptionLabel,
|
|
99
110
|
getOptionValue,
|
|
100
111
|
isSelectNative,
|
|
101
|
-
baseSelectOptionProps: rootProps.slotProps?.baseSelectOption
|
|
112
|
+
baseSelectOptionProps: rootProps.slotProps?.baseSelectOption,
|
|
113
|
+
blankOptionLabel: apiRef.current.getLocaleText('filterValueAny')
|
|
102
114
|
})
|
|
103
115
|
})), headerFilterMenu, clearButton]
|
|
104
116
|
});
|
|
@@ -15,12 +15,23 @@ const renderSingleSelectOptions = ({
|
|
|
15
15
|
getOptionLabel,
|
|
16
16
|
getOptionValue,
|
|
17
17
|
isSelectNative,
|
|
18
|
-
baseSelectOptionProps
|
|
18
|
+
baseSelectOptionProps,
|
|
19
|
+
blankOptionLabel
|
|
19
20
|
}) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const valueOptions = getValueOptions(column) || [];
|
|
22
|
+
|
|
23
|
+
// A column that declares its own blank entry already offers a way to reset the filter.
|
|
24
|
+
// Prepending another one would render two options sharing the same `''` key.
|
|
25
|
+
const declaresBlankOption = valueOptions.some(option => {
|
|
26
|
+
const optionValue = getOptionValue(option);
|
|
27
|
+
return optionValue === '' || optionValue === null || optionValue === undefined;
|
|
28
|
+
});
|
|
29
|
+
const iterableColumnValues = declaresBlankOption ? valueOptions : ['', ...valueOptions];
|
|
30
|
+
return iterableColumnValues.map((option, index) => {
|
|
31
|
+
// The prepended entry is ours, not a value option, so it skips the column accessors.
|
|
32
|
+
const isBlankOption = !declaresBlankOption && index === 0;
|
|
33
|
+
const value = isBlankOption ? '' : getOptionValue(option);
|
|
34
|
+
let label = isBlankOption ? blankOptionLabel : getOptionLabel(option);
|
|
24
35
|
if (label === '') {
|
|
25
36
|
label = ' '; // To force the height of the empty option
|
|
26
37
|
}
|
|
@@ -90,7 +101,8 @@ function GridFilterInputSingleSelect(props) {
|
|
|
90
101
|
getOptionLabel,
|
|
91
102
|
getOptionValue,
|
|
92
103
|
isSelectNative,
|
|
93
|
-
baseSelectOptionProps: rootProps.slotProps?.baseSelectOption
|
|
104
|
+
baseSelectOptionProps: rootProps.slotProps?.baseSelectOption,
|
|
105
|
+
blankOptionLabel: apiRef.current.getLocaleText('filterValueAny')
|
|
94
106
|
})
|
|
95
107
|
})), headerFilterMenu, clearButton]
|
|
96
108
|
});
|
|
@@ -6,6 +6,10 @@ export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
6
6
|
*/
|
|
7
7
|
render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* The styled `<div />` element rendered by the `<Toolbar />` component.
|
|
11
|
+
* Use it to apply the toolbar styles to other elements, inside or outside of a Data Grid.
|
|
12
|
+
*/
|
|
9
13
|
declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
10
14
|
/**
|
|
11
15
|
* The top level Toolbar component that provides context to child components.
|
|
@@ -25,4 +29,4 @@ declare const Toolbar: React.ForwardRefExoticComponent<ToolbarProps> | React.For
|
|
|
25
29
|
*/
|
|
26
30
|
render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
|
|
27
31
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
-
export { Toolbar };
|
|
32
|
+
export { Toolbar, ToolbarRoot };
|
|
@@ -6,6 +6,10 @@ export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
6
6
|
*/
|
|
7
7
|
render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* The styled `<div />` element rendered by the `<Toolbar />` component.
|
|
11
|
+
* Use it to apply the toolbar styles to other elements, inside or outside of a Data Grid.
|
|
12
|
+
*/
|
|
9
13
|
declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
10
14
|
/**
|
|
11
15
|
* The top level Toolbar component that provides context to child components.
|
|
@@ -25,4 +29,4 @@ declare const Toolbar: React.ForwardRefExoticComponent<ToolbarProps> | React.For
|
|
|
25
29
|
*/
|
|
26
30
|
render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
|
|
27
31
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
-
export { Toolbar };
|
|
32
|
+
export { Toolbar, ToolbarRoot };
|
|
@@ -6,7 +6,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
value: true
|
|
8
8
|
});
|
|
9
|
-
exports.Toolbar = void 0;
|
|
9
|
+
exports.ToolbarRoot = exports.Toolbar = void 0;
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
@@ -18,6 +18,7 @@ var _forwardRef = require("@mui/x-internals/forwardRef");
|
|
|
18
18
|
var _useComponentRenderer = require("@mui/x-internals/useComponentRenderer");
|
|
19
19
|
var _ToolbarContext = require("@mui/x-internals/ToolbarContext");
|
|
20
20
|
var _cssVariables = require("../../constants/cssVariables");
|
|
21
|
+
var _variables = require("../../material/variables");
|
|
21
22
|
var _gridClasses = require("../../constants/gridClasses");
|
|
22
23
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
23
24
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -31,19 +32,40 @@ const useUtilityClasses = ownerState => {
|
|
|
31
32
|
};
|
|
32
33
|
return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
33
34
|
};
|
|
34
|
-
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The styled `<div />` element rendered by the `<Toolbar />` component.
|
|
38
|
+
* Use it to apply the toolbar styles to other elements, inside or outside of a Data Grid.
|
|
39
|
+
*/
|
|
40
|
+
const ToolbarRoot = exports.ToolbarRoot = (0, _styles.styled)('div', {
|
|
35
41
|
name: 'MuiDataGrid',
|
|
36
42
|
slot: 'Toolbar'
|
|
37
|
-
})({
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
})(({
|
|
44
|
+
theme
|
|
45
|
+
}) => {
|
|
46
|
+
// The Data Grid CSS variables are only defined on the Data Grid root element, so they are
|
|
47
|
+
// declared with a fallback to keep the styles working when rendered outside of a Data Grid.
|
|
48
|
+
const spacingUnit = `var(${_cssVariables.vars.keys.spacingUnit}, ${(0, _variables.getSpacingUnit)(theme)})`;
|
|
49
|
+
const borderColor = `var(${_cssVariables.vars.keys.colors.border.base}, ${(0, _variables.getBorderColor)(theme)})`;
|
|
50
|
+
const background = `var(${_cssVariables.vars.keys.colors.background.base}, ${(0, _variables.getBackgroundBase)(theme)})`;
|
|
51
|
+
const foreground = `var(${_cssVariables.vars.keys.colors.foreground.base}, ${(theme.vars || theme).palette.text.primary})`;
|
|
52
|
+
const fontBody = (0, _variables.getFontBody)(theme);
|
|
53
|
+
return {
|
|
54
|
+
flex: '0 1 1px',
|
|
55
|
+
display: 'flex',
|
|
56
|
+
alignItems: 'center',
|
|
57
|
+
justifyContent: 'end',
|
|
58
|
+
gap: `calc(${spacingUnit} * 0.25)`,
|
|
59
|
+
padding: `calc(${spacingUnit} * 0.75)`,
|
|
60
|
+
minHeight: 52,
|
|
61
|
+
boxSizing: 'border-box',
|
|
62
|
+
borderBottom: `1px solid ${borderColor}`,
|
|
63
|
+
// Inherited from the Data Grid root inside a grid, declared here so the component keeps
|
|
64
|
+
// matching it when rendered on its own.
|
|
65
|
+
backgroundColor: background,
|
|
66
|
+
color: foreground,
|
|
67
|
+
font: fontBody ? `var(${_cssVariables.vars.keys.typography.font.body}, ${fontBody})` : undefined
|
|
68
|
+
};
|
|
47
69
|
});
|
|
48
70
|
|
|
49
71
|
/**
|
|
@@ -12,6 +12,7 @@ import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
|
12
12
|
import { useComponentRenderer } from '@mui/x-internals/useComponentRenderer';
|
|
13
13
|
import { ToolbarContextProvider } from '@mui/x-internals/ToolbarContext';
|
|
14
14
|
import { vars } from "../../constants/cssVariables.mjs";
|
|
15
|
+
import { getBackgroundBase, getBorderColor, getFontBody, getSpacingUnit } from "../../material/variables.mjs";
|
|
15
16
|
import { getDataGridUtilityClass } from "../../constants/gridClasses.mjs";
|
|
16
17
|
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.mjs";
|
|
17
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -24,19 +25,40 @@ const useUtilityClasses = ownerState => {
|
|
|
24
25
|
};
|
|
25
26
|
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
26
27
|
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The styled `<div />` element rendered by the `<Toolbar />` component.
|
|
31
|
+
* Use it to apply the toolbar styles to other elements, inside or outside of a Data Grid.
|
|
32
|
+
*/
|
|
27
33
|
const ToolbarRoot = styled('div', {
|
|
28
34
|
name: 'MuiDataGrid',
|
|
29
35
|
slot: 'Toolbar'
|
|
30
|
-
})({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
})(({
|
|
37
|
+
theme
|
|
38
|
+
}) => {
|
|
39
|
+
// The Data Grid CSS variables are only defined on the Data Grid root element, so they are
|
|
40
|
+
// declared with a fallback to keep the styles working when rendered outside of a Data Grid.
|
|
41
|
+
const spacingUnit = `var(${vars.keys.spacingUnit}, ${getSpacingUnit(theme)})`;
|
|
42
|
+
const borderColor = `var(${vars.keys.colors.border.base}, ${getBorderColor(theme)})`;
|
|
43
|
+
const background = `var(${vars.keys.colors.background.base}, ${getBackgroundBase(theme)})`;
|
|
44
|
+
const foreground = `var(${vars.keys.colors.foreground.base}, ${(theme.vars || theme).palette.text.primary})`;
|
|
45
|
+
const fontBody = getFontBody(theme);
|
|
46
|
+
return {
|
|
47
|
+
flex: '0 1 1px',
|
|
48
|
+
display: 'flex',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
justifyContent: 'end',
|
|
51
|
+
gap: `calc(${spacingUnit} * 0.25)`,
|
|
52
|
+
padding: `calc(${spacingUnit} * 0.75)`,
|
|
53
|
+
minHeight: 52,
|
|
54
|
+
boxSizing: 'border-box',
|
|
55
|
+
borderBottom: `1px solid ${borderColor}`,
|
|
56
|
+
// Inherited from the Data Grid root inside a grid, declared here so the component keeps
|
|
57
|
+
// matching it when rendered on its own.
|
|
58
|
+
backgroundColor: background,
|
|
59
|
+
color: foreground,
|
|
60
|
+
font: fontBody ? `var(${vars.keys.typography.font.body}, ${fontBody})` : undefined
|
|
61
|
+
};
|
|
40
62
|
});
|
|
41
63
|
|
|
42
64
|
/**
|
|
@@ -82,4 +104,4 @@ process.env.NODE_ENV !== "production" ? Toolbar.propTypes /* remove-proptypes */
|
|
|
82
104
|
*/
|
|
83
105
|
render: PropTypes.oneOfType([PropTypes.element, PropTypes.func])
|
|
84
106
|
} : void 0;
|
|
85
|
-
export { Toolbar };
|
|
107
|
+
export { Toolbar, ToolbarRoot };
|
|
@@ -83,6 +83,18 @@ export interface GridClasses {
|
|
|
83
83
|
* Styles applied to the aggregation row overlay wrapper.
|
|
84
84
|
*/
|
|
85
85
|
aggregationRowOverlayWrapper: string;
|
|
86
|
+
/**
|
|
87
|
+
* Styles applied to the A1-notation column-letter adornment in the column header (Premium formulas).
|
|
88
|
+
*/
|
|
89
|
+
formulaColumnHeaderLetter: string;
|
|
90
|
+
/**
|
|
91
|
+
* Styles applied to the cells of the A1-notation row-number column (Premium formulas).
|
|
92
|
+
*/
|
|
93
|
+
formulaRowNumberCell: string;
|
|
94
|
+
/**
|
|
95
|
+
* Styles applied to the formula bar root element (Premium formulas).
|
|
96
|
+
*/
|
|
97
|
+
formulaBar: string;
|
|
86
98
|
/**
|
|
87
99
|
* Styles applied to the root element if `autoHeight={true}`.
|
|
88
100
|
*/
|
|
@@ -83,6 +83,18 @@ export interface GridClasses {
|
|
|
83
83
|
* Styles applied to the aggregation row overlay wrapper.
|
|
84
84
|
*/
|
|
85
85
|
aggregationRowOverlayWrapper: string;
|
|
86
|
+
/**
|
|
87
|
+
* Styles applied to the A1-notation column-letter adornment in the column header (Premium formulas).
|
|
88
|
+
*/
|
|
89
|
+
formulaColumnHeaderLetter: string;
|
|
90
|
+
/**
|
|
91
|
+
* Styles applied to the cells of the A1-notation row-number column (Premium formulas).
|
|
92
|
+
*/
|
|
93
|
+
formulaRowNumberCell: string;
|
|
94
|
+
/**
|
|
95
|
+
* Styles applied to the formula bar root element (Premium formulas).
|
|
96
|
+
*/
|
|
97
|
+
formulaBar: string;
|
|
86
98
|
/**
|
|
87
99
|
* Styles applied to the root element if `autoHeight={true}`.
|
|
88
100
|
*/
|
package/constants/gridClasses.js
CHANGED
|
@@ -30,4 +30,4 @@ const gridClassesOverrides = exports.gridClassesOverrides = {
|
|
|
30
30
|
// TODO v9: Rename to `cell--dragging`
|
|
31
31
|
'row--dragging', 'row--dynamicHeight', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderCellContainer', 'rowReorderCellPlaceholder', 'rowSkeleton', 'scrollbar', 'scrollbar--horizontal', 'scrollbar--vertical', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'sortIcon', 'treeDataGroupingCell', 'treeDataGroupingCellLoadingContainer', 'treeDataGroupingCellToggle', 'withBorderColor', 'row--beingDragged']
|
|
32
32
|
};
|
|
33
|
-
const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filler--horizontal', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'virtualizer--layoutControlled', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
|
|
33
|
+
const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'formulaColumnHeaderLetter', 'formulaRowNumberCell', 'formulaBar', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filler--horizontal', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'virtualizer--layoutControlled', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
|
|
@@ -22,4 +22,4 @@ export const gridClassesOverrides = {
|
|
|
22
22
|
// TODO v9: Rename to `cell--dragging`
|
|
23
23
|
'row--dragging', 'row--dynamicHeight', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderCellContainer', 'rowReorderCellPlaceholder', 'rowSkeleton', 'scrollbar', 'scrollbar--horizontal', 'scrollbar--vertical', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'sortIcon', 'treeDataGroupingCell', 'treeDataGroupingCellLoadingContainer', 'treeDataGroupingCellToggle', 'withBorderColor', 'row--beingDragged']
|
|
24
24
|
};
|
|
25
|
-
export const gridClasses = generateUtilityClasses('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filler--horizontal', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'virtualizer--layoutControlled', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
|
|
25
|
+
export const gridClasses = generateUtilityClasses('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'formulaColumnHeaderLetter', 'formulaRowNumberCell', 'formulaBar', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filler--horizontal', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'virtualizer--layoutControlled', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
|
|
@@ -47,6 +47,10 @@ const GRID_DEFAULT_LOCALE_TEXT = exports.GRID_DEFAULT_LOCALE_TEXT = {
|
|
|
47
47
|
toolbarCharts: 'Charts',
|
|
48
48
|
// Toolbar AI Assistant button
|
|
49
49
|
toolbarAssistant: 'AI Assistant',
|
|
50
|
+
// Formula bar (Premium formulas)
|
|
51
|
+
formulaBarLabel: 'Formula bar',
|
|
52
|
+
formulaBarInputLabel: 'Formula',
|
|
53
|
+
formulaBarAddressLabel: 'Active cell',
|
|
50
54
|
// Columns management text
|
|
51
55
|
columnsManagementSearchTitle: 'Search',
|
|
52
56
|
columnsManagementNoColumns: 'No columns',
|
|
@@ -41,6 +41,10 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
|
|
|
41
41
|
toolbarCharts: 'Charts',
|
|
42
42
|
// Toolbar AI Assistant button
|
|
43
43
|
toolbarAssistant: 'AI Assistant',
|
|
44
|
+
// Formula bar (Premium formulas)
|
|
45
|
+
formulaBarLabel: 'Formula bar',
|
|
46
|
+
formulaBarInputLabel: 'Formula',
|
|
47
|
+
formulaBarAddressLabel: 'Active cell',
|
|
44
48
|
// Columns management text
|
|
45
49
|
columnsManagementSearchTitle: 'Search',
|
|
46
50
|
columnsManagementNoColumns: 'No columns',
|
|
@@ -12,6 +12,7 @@ var _EventManager = require("@mui/x-internals/EventManager");
|
|
|
12
12
|
var _store = require("@mui/x-internals/store");
|
|
13
13
|
var _useGridApiMethod = require("../utils/useGridApiMethod");
|
|
14
14
|
var _signature = require("../../constants/signature");
|
|
15
|
+
var _getPublicApiRef = require("../../utils/getPublicApiRef");
|
|
15
16
|
const SYMBOL_API_PRIVATE = Symbol('mui.api_private');
|
|
16
17
|
const isSyntheticEvent = event => {
|
|
17
18
|
return event.isPropagationStopped !== undefined;
|
|
@@ -92,8 +93,11 @@ function useGridApiInitialization(inputApiRef, props) {
|
|
|
92
93
|
return;
|
|
93
94
|
}
|
|
94
95
|
const details = props.signature === _signature.GridSignature.DataGridPro || props.signature === _signature.GridSignature.DataGridPremium ? {
|
|
96
|
+
apiRef: (0, _getPublicApiRef.getPublicApiRef)(privateApiRef),
|
|
95
97
|
api: privateApiRef.current.getPublicApi()
|
|
96
|
-
} : {
|
|
98
|
+
} : {
|
|
99
|
+
apiRef: (0, _getPublicApiRef.getPublicApiRef)(privateApiRef)
|
|
100
|
+
};
|
|
97
101
|
privateApiRef.current.eventManager.emit(name, params, event, details);
|
|
98
102
|
}, [privateApiRef, props.signature]);
|
|
99
103
|
const subscribeEvent = React.useCallback((event, handler, options) => {
|
|
@@ -5,6 +5,7 @@ import { EventManager } from '@mui/x-internals/EventManager';
|
|
|
5
5
|
import { Store } from '@mui/x-internals/store';
|
|
6
6
|
import { useGridApiMethod } from "../utils/useGridApiMethod.mjs";
|
|
7
7
|
import { GridSignature } from "../../constants/signature.mjs";
|
|
8
|
+
import { getPublicApiRef } from "../../utils/getPublicApiRef.mjs";
|
|
8
9
|
const SYMBOL_API_PRIVATE = Symbol('mui.api_private');
|
|
9
10
|
const isSyntheticEvent = event => {
|
|
10
11
|
return event.isPropagationStopped !== undefined;
|
|
@@ -85,8 +86,11 @@ export function useGridApiInitialization(inputApiRef, props) {
|
|
|
85
86
|
return;
|
|
86
87
|
}
|
|
87
88
|
const details = props.signature === GridSignature.DataGridPro || props.signature === GridSignature.DataGridPremium ? {
|
|
89
|
+
apiRef: getPublicApiRef(privateApiRef),
|
|
88
90
|
api: privateApiRef.current.getPublicApi()
|
|
89
|
-
} : {
|
|
91
|
+
} : {
|
|
92
|
+
apiRef: getPublicApiRef(privateApiRef)
|
|
93
|
+
};
|
|
90
94
|
privateApiRef.current.eventManager.emit(name, params, event, details);
|
|
91
95
|
}, [privateApiRef, props.signature]);
|
|
92
96
|
const subscribeEvent = React.useCallback((event, handler, options) => {
|
|
@@ -12,6 +12,7 @@ var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/form
|
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _utils = require("../utils");
|
|
14
14
|
var _utils2 = require("../../utils/utils");
|
|
15
|
+
var _getPublicApiRef = require("../../utils/getPublicApiRef");
|
|
15
16
|
const useGridStateInitialization = apiRef => {
|
|
16
17
|
const controlStateMapRef = React.useRef({});
|
|
17
18
|
const registerControlState = React.useCallback(controlStateItem => {
|
|
@@ -75,7 +76,8 @@ const useGridStateInitialization = apiRef => {
|
|
|
75
76
|
if (controlState.propOnChange && hasPropChanged) {
|
|
76
77
|
controlState.propOnChange(model, {
|
|
77
78
|
reason,
|
|
78
|
-
api: apiRef.current
|
|
79
|
+
api: apiRef.current,
|
|
80
|
+
apiRef: (0, _getPublicApiRef.getPublicApiRef)(apiRef)
|
|
79
81
|
});
|
|
80
82
|
}
|
|
81
83
|
if (!ignoreSetState) {
|
|
@@ -5,6 +5,7 @@ import _formatErrorMessage from "@mui/x-internals/formatErrorMessage";
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { useGridApiMethod } from "../utils/index.mjs";
|
|
7
7
|
import { isFunction } from "../../utils/utils.mjs";
|
|
8
|
+
import { getPublicApiRef } from "../../utils/getPublicApiRef.mjs";
|
|
8
9
|
export const useGridStateInitialization = apiRef => {
|
|
9
10
|
const controlStateMapRef = React.useRef({});
|
|
10
11
|
const registerControlState = React.useCallback(controlStateItem => {
|
|
@@ -68,7 +69,8 @@ export const useGridStateInitialization = apiRef => {
|
|
|
68
69
|
if (controlState.propOnChange && hasPropChanged) {
|
|
69
70
|
controlState.propOnChange(model, {
|
|
70
71
|
reason,
|
|
71
|
-
api: apiRef.current
|
|
72
|
+
api: apiRef.current,
|
|
73
|
+
apiRef: getPublicApiRef(apiRef)
|
|
72
74
|
});
|
|
73
75
|
}
|
|
74
76
|
if (!ignoreSetState) {
|
|
@@ -26,6 +26,7 @@ var _useGridVisibleRows = require("../utils/useGridVisibleRows");
|
|
|
26
26
|
var _pagination = require("../features/pagination");
|
|
27
27
|
var _gridFocusedVirtualCellSelector = require("../features/virtualization/gridFocusedVirtualCellSelector");
|
|
28
28
|
var _rowSelection = require("../features/rowSelection");
|
|
29
|
+
var _gridColumnGroupsSelector = require("../features/columnGrouping/gridColumnGroupsSelector");
|
|
29
30
|
var _dataGridPropsDefaultValues = require("../../constants/dataGridPropsDefaultValues");
|
|
30
31
|
var _gridRowsUtils = require("../features/rows/gridRowsUtils");
|
|
31
32
|
var _gridColumnsUtils = require("../features/columns/gridColumnsUtils");
|
|
@@ -66,6 +67,18 @@ function useGridVirtualizer() {
|
|
|
66
67
|
listView
|
|
67
68
|
} = rootProps;
|
|
68
69
|
const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector);
|
|
70
|
+
// Convert visible row-header columns to their indexes once per column-model change. Each GridRow
|
|
71
|
+
// uses this ordered list to render those cells even when they fall outside its horizontal render
|
|
72
|
+
// context. This keeps the row-identifying cells available to assistive technology while scrolling.
|
|
73
|
+
const retainedColumnIndexes = React.useMemo(() => {
|
|
74
|
+
const indexes = [];
|
|
75
|
+
visibleColumns.forEach((column, index) => {
|
|
76
|
+
if (column.rowHeader) {
|
|
77
|
+
indexes.push(index);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
return indexes;
|
|
81
|
+
}, [visibleColumns]);
|
|
69
82
|
const pinnedRows = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridPinnedRowsSelector);
|
|
70
83
|
const pinnedColumns = (0, _gridColumnsSelector.gridVisiblePinnedColumnDefinitionsSelector)(apiRef);
|
|
71
84
|
const rowSelectionManager = (0, _useGridSelector.useGridSelector)(apiRef, _rowSelection.gridRowSelectionManagerSelector);
|
|
@@ -87,6 +100,8 @@ function useGridVirtualizer() {
|
|
|
87
100
|
const groupHeaderHeight = Math.floor((rootProps.columnGroupHeaderHeight ?? rootProps.columnHeaderHeight) * density);
|
|
88
101
|
const headerFilterHeight = Math.floor((rootProps.headerFilterHeight ?? rootProps.columnHeaderHeight) * density);
|
|
89
102
|
const columnsTotalWidth = (0, _useGridSelector.useGridSelector)(apiRef, columnsTotalWidthSelector);
|
|
103
|
+
// `getTotalHeaderHeight` reads the group depth imperatively, subscribe so it re-renders when it changes.
|
|
104
|
+
(0, _utils.eslintUseValue)((0, _useGridSelector.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridColumnGroupsHeaderMaxDepthSelector));
|
|
90
105
|
const headersTotalHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, rootProps);
|
|
91
106
|
const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
|
|
92
107
|
const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
|
|
@@ -216,6 +231,7 @@ function useGridVirtualizer() {
|
|
|
216
231
|
rowHeight: params.baseRowHeight,
|
|
217
232
|
pinnedColumns: pinnedColumns,
|
|
218
233
|
visibleColumns: visibleColumns,
|
|
234
|
+
retainedColumnIndexes: retainedColumnIndexes,
|
|
219
235
|
firstColumnIndex: params.firstColumnIndex,
|
|
220
236
|
lastColumnIndex: params.lastColumnIndex,
|
|
221
237
|
focusedColumnIndex: params.focusedColumnIndex,
|
|
@@ -225,7 +241,7 @@ function useGridVirtualizer() {
|
|
|
225
241
|
showBottomBorder: params.showBottomBorder,
|
|
226
242
|
scrollbarWidth: verticalScrollbarWidth,
|
|
227
243
|
gridHasFiller: hasFiller
|
|
228
|
-
}, rowSlotProps), params.id), [columnsTotalWidth, hasFiller, isRowSelected, pinnedColumns, RowSlot, rowSlotProps, verticalScrollbarWidth, visibleColumns]),
|
|
244
|
+
}, rowSlotProps), params.id), [columnsTotalWidth, hasFiller, isRowSelected, pinnedColumns, retainedColumnIndexes, RowSlot, rowSlotProps, verticalScrollbarWidth, visibleColumns]),
|
|
229
245
|
renderInfiniteLoadingTrigger: React.useCallback(id => apiRef.current.getInfiniteLoadingTriggerElement?.({
|
|
230
246
|
lastRowId: id
|
|
231
247
|
}), [apiRef])
|
|
@@ -18,6 +18,7 @@ import { useGridVisibleRows } from "../utils/useGridVisibleRows.mjs";
|
|
|
18
18
|
import { gridPaginationSelector } from "../features/pagination/index.mjs";
|
|
19
19
|
import { gridFocusedVirtualCellSelector } from "../features/virtualization/gridFocusedVirtualCellSelector.mjs";
|
|
20
20
|
import { gridRowSelectionManagerSelector } from "../features/rowSelection/index.mjs";
|
|
21
|
+
import { gridColumnGroupsHeaderMaxDepthSelector } from "../features/columnGrouping/gridColumnGroupsSelector.mjs";
|
|
21
22
|
import { DATA_GRID_PROPS_DEFAULT_VALUES } from "../../constants/dataGridPropsDefaultValues.mjs";
|
|
22
23
|
import { getValidRowHeight, minimalContentHeight, rowHeightWarning } from "../features/rows/gridRowsUtils.mjs";
|
|
23
24
|
import { getTotalHeaderHeight } from "../features/columns/gridColumnsUtils.mjs";
|
|
@@ -58,6 +59,18 @@ export function useGridVirtualizer() {
|
|
|
58
59
|
listView
|
|
59
60
|
} = rootProps;
|
|
60
61
|
const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
62
|
+
// Convert visible row-header columns to their indexes once per column-model change. Each GridRow
|
|
63
|
+
// uses this ordered list to render those cells even when they fall outside its horizontal render
|
|
64
|
+
// context. This keeps the row-identifying cells available to assistive technology while scrolling.
|
|
65
|
+
const retainedColumnIndexes = React.useMemo(() => {
|
|
66
|
+
const indexes = [];
|
|
67
|
+
visibleColumns.forEach((column, index) => {
|
|
68
|
+
if (column.rowHeader) {
|
|
69
|
+
indexes.push(index);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return indexes;
|
|
73
|
+
}, [visibleColumns]);
|
|
61
74
|
const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
|
|
62
75
|
const pinnedColumns = gridVisiblePinnedColumnDefinitionsSelector(apiRef);
|
|
63
76
|
const rowSelectionManager = useGridSelector(apiRef, gridRowSelectionManagerSelector);
|
|
@@ -79,6 +92,8 @@ export function useGridVirtualizer() {
|
|
|
79
92
|
const groupHeaderHeight = Math.floor((rootProps.columnGroupHeaderHeight ?? rootProps.columnHeaderHeight) * density);
|
|
80
93
|
const headerFilterHeight = Math.floor((rootProps.headerFilterHeight ?? rootProps.columnHeaderHeight) * density);
|
|
81
94
|
const columnsTotalWidth = useGridSelector(apiRef, columnsTotalWidthSelector);
|
|
95
|
+
// `getTotalHeaderHeight` reads the group depth imperatively, subscribe so it re-renders when it changes.
|
|
96
|
+
eslintUseValue(useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector));
|
|
82
97
|
const headersTotalHeight = getTotalHeaderHeight(apiRef, rootProps);
|
|
83
98
|
const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
|
|
84
99
|
const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
|
|
@@ -208,6 +223,7 @@ export function useGridVirtualizer() {
|
|
|
208
223
|
rowHeight: params.baseRowHeight,
|
|
209
224
|
pinnedColumns: pinnedColumns,
|
|
210
225
|
visibleColumns: visibleColumns,
|
|
226
|
+
retainedColumnIndexes: retainedColumnIndexes,
|
|
211
227
|
firstColumnIndex: params.firstColumnIndex,
|
|
212
228
|
lastColumnIndex: params.lastColumnIndex,
|
|
213
229
|
focusedColumnIndex: params.focusedColumnIndex,
|
|
@@ -217,7 +233,7 @@ export function useGridVirtualizer() {
|
|
|
217
233
|
showBottomBorder: params.showBottomBorder,
|
|
218
234
|
scrollbarWidth: verticalScrollbarWidth,
|
|
219
235
|
gridHasFiller: hasFiller
|
|
220
|
-
}, rowSlotProps), params.id), [columnsTotalWidth, hasFiller, isRowSelected, pinnedColumns, RowSlot, rowSlotProps, verticalScrollbarWidth, visibleColumns]),
|
|
236
|
+
}, rowSlotProps), params.id), [columnsTotalWidth, hasFiller, isRowSelected, pinnedColumns, retainedColumnIndexes, RowSlot, rowSlotProps, verticalScrollbarWidth, visibleColumns]),
|
|
221
237
|
renderInfiniteLoadingTrigger: React.useCallback(id => apiRef.current.getInfiniteLoadingTriggerElement?.({
|
|
222
238
|
lastRowId: id
|
|
223
239
|
}), [apiRef])
|
|
@@ -568,6 +568,11 @@ const useGridColumnResize = (apiRef, props) => {
|
|
|
568
568
|
if (!props.disableVirtualization && options.disableColumnVirtualization) {
|
|
569
569
|
apiRef.current.unstable_setColumnVirtualization(false);
|
|
570
570
|
await columnVirtualizationDisabled();
|
|
571
|
+
|
|
572
|
+
// The grid may have unmounted while awaiting, which nulls the root element ref.
|
|
573
|
+
if (!apiRef.current.rootElementRef?.current) {
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
571
576
|
}
|
|
572
577
|
const widthByField = extractColumnWidths(apiRef, options, columns);
|
|
573
578
|
const newColumns = columns.map(column => (0, _extends2.default)({}, column, {
|
|
@@ -560,6 +560,11 @@ export const useGridColumnResize = (apiRef, props) => {
|
|
|
560
560
|
if (!props.disableVirtualization && options.disableColumnVirtualization) {
|
|
561
561
|
apiRef.current.unstable_setColumnVirtualization(false);
|
|
562
562
|
await columnVirtualizationDisabled();
|
|
563
|
+
|
|
564
|
+
// The grid may have unmounted while awaiting, which nulls the root element ref.
|
|
565
|
+
if (!apiRef.current.rootElementRef?.current) {
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
563
568
|
}
|
|
564
569
|
const widthByField = extractColumnWidths(apiRef, options, columns);
|
|
565
570
|
const newColumns = columns.map(column => _extends({}, column, {
|
|
@@ -67,4 +67,4 @@ export declare function getFirstNonSpannedColumnToRender({
|
|
|
67
67
|
lastRowToRender: number;
|
|
68
68
|
visibleRows: GridRowEntry[];
|
|
69
69
|
}): number;
|
|
70
|
-
export declare function getTotalHeaderHeight(apiRef: RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight' | 'listView' | 'columnGroupHeaderHeight'>): number;
|
|
70
|
+
export declare function getTotalHeaderHeight(apiRef: RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight' | 'listView' | 'columnGroupHeaderHeight' | 'signature' | 'headerFilters'>): number;
|
|
@@ -67,4 +67,4 @@ export declare function getFirstNonSpannedColumnToRender({
|
|
|
67
67
|
lastRowToRender: number;
|
|
68
68
|
visibleRows: GridRowEntry[];
|
|
69
69
|
}): number;
|
|
70
|
-
export declare function getTotalHeaderHeight(apiRef: RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight' | 'listView' | 'columnGroupHeaderHeight'>): number;
|
|
70
|
+
export declare function getTotalHeaderHeight(apiRef: RefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'columnHeaderHeight' | 'headerFilterHeight' | 'listView' | 'columnGroupHeaderHeight' | 'signature' | 'headerFilters'>): number;
|
|
@@ -19,7 +19,6 @@ var _signature = require("../../../constants/signature");
|
|
|
19
19
|
var _gridColumnsSelector = require("./gridColumnsSelector");
|
|
20
20
|
var _utils = require("../../../utils/utils");
|
|
21
21
|
var _densitySelector = require("../density/densitySelector");
|
|
22
|
-
var _gridHeaderFilteringSelectors = require("../headerFiltering/gridHeaderFilteringSelectors");
|
|
23
22
|
var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
|
|
24
23
|
const COLUMNS_DIMENSION_PROPERTIES = exports.COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];
|
|
25
24
|
/**
|
|
@@ -360,7 +359,8 @@ function getTotalHeaderHeight(apiRef, props) {
|
|
|
360
359
|
}
|
|
361
360
|
const densityFactor = (0, _densitySelector.gridDensityFactorSelector)(apiRef);
|
|
362
361
|
const maxDepth = (0, _gridColumnGroupsSelector.gridColumnGroupsHeaderMaxDepthSelector)(apiRef);
|
|
363
|
-
|
|
362
|
+
// Not `gridHeaderFilteringEnabledSelector`: that state is synced in an effect, so it lags one render behind `props.headerFilters`.
|
|
363
|
+
const isHeaderFilteringEnabled = props.signature !== 'DataGrid' && (props.headerFilters ?? false);
|
|
364
364
|
const columnHeadersHeight = Math.floor(props.columnHeaderHeight * densityFactor);
|
|
365
365
|
const columnGroupHeadersHeight = Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * densityFactor);
|
|
366
366
|
const filterHeadersHeight = isHeaderFilteringEnabled ? Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor) : 0;
|