@mui/x-data-grid 7.11.1 → 7.12.1
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 +178 -4
- package/components/GridHeaders.js +1 -4
- package/components/GridPagination.js +2 -0
- package/components/GridRow.d.ts +1 -0
- package/components/GridRow.js +11 -28
- package/components/GridRowCount.js +1 -1
- package/components/GridSelectedRowCount.js +1 -1
- package/components/base/GridOverlays.js +1 -1
- package/components/cell/GridBooleanCell.js +3 -3
- package/components/columnHeaders/ColumnHeaderMenuIcon.js +1 -1
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
- package/components/columnHeaders/GridColumnGroupHeader.js +2 -1
- package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
- package/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
- package/components/columnHeaders/GridIconButtonContainer.js +1 -1
- package/components/columnSelection/GridHeaderCheckbox.js +1 -1
- package/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/components/containers/GridFooterContainer.js +1 -1
- package/components/containers/GridOverlay.js +1 -1
- package/components/containers/GridRoot.js +4 -7
- package/components/containers/GridRootStyles.js +26 -6
- package/components/containers/GridToolbarContainer.js +1 -1
- package/components/panel/GridPanelContent.js +1 -1
- package/components/panel/GridPanelFooter.js +1 -1
- package/components/panel/GridPanelHeader.js +1 -1
- package/components/panel/GridPanelWrapper.js +1 -1
- package/components/virtualization/GridBottomContainer.js +1 -1
- package/components/virtualization/GridTopContainer.js +2 -13
- package/components/virtualization/GridVirtualScrollbar.js +1 -0
- package/components/virtualization/GridVirtualScroller.js +1 -1
- package/components/virtualization/GridVirtualScrollerContent.js +1 -1
- package/components/virtualization/GridVirtualScrollerRenderZone.js +1 -1
- package/constants/gridClasses.d.ts +10 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/useGridRefs.js +3 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -0
- package/hooks/features/editing/useGridEditing.js +2 -2
- package/hooks/features/rowSelection/useGridRowSelection.js +2 -3
- package/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js +1 -1
- package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
- package/hooks/features/rows/gridRowsUtils.js +3 -2
- package/hooks/features/rows/index.d.ts +1 -1
- package/hooks/features/rows/index.js +1 -1
- package/hooks/features/rows/useGridRows.js +3 -3
- package/hooks/features/sorting/gridSortingSelector.js +2 -2
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +13 -5
- package/index.js +1 -1
- package/internals/utils/useProps.js +1 -6
- package/locales/trTR.js +19 -21
- package/models/api/gridCoreApi.d.ts +1 -1
- package/modern/components/GridHeaders.js +1 -4
- package/modern/components/GridPagination.js +2 -0
- package/modern/components/GridRow.js +11 -28
- package/modern/components/GridRowCount.js +1 -1
- package/modern/components/GridSelectedRowCount.js +1 -1
- package/modern/components/base/GridOverlays.js +1 -1
- package/modern/components/cell/GridBooleanCell.js +3 -3
- package/modern/components/columnHeaders/ColumnHeaderMenuIcon.js +1 -1
- package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +2 -1
- package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
- package/modern/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
- package/modern/components/columnHeaders/GridIconButtonContainer.js +1 -1
- package/modern/components/columnSelection/GridHeaderCheckbox.js +1 -1
- package/modern/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/modern/components/containers/GridFooterContainer.js +1 -1
- package/modern/components/containers/GridOverlay.js +1 -1
- package/modern/components/containers/GridRoot.js +4 -7
- package/modern/components/containers/GridRootStyles.js +26 -6
- package/modern/components/containers/GridToolbarContainer.js +1 -1
- package/modern/components/panel/GridPanelContent.js +1 -1
- package/modern/components/panel/GridPanelFooter.js +1 -1
- package/modern/components/panel/GridPanelHeader.js +1 -1
- package/modern/components/panel/GridPanelWrapper.js +1 -1
- package/modern/components/virtualization/GridBottomContainer.js +1 -1
- package/modern/components/virtualization/GridTopContainer.js +2 -13
- package/modern/components/virtualization/GridVirtualScrollbar.js +1 -0
- package/modern/components/virtualization/GridVirtualScroller.js +1 -1
- package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -1
- package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +1 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/core/useGridRefs.js +3 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -0
- package/modern/hooks/features/editing/useGridEditing.js +2 -2
- package/modern/hooks/features/rowSelection/useGridRowSelection.js +2 -3
- package/modern/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js +1 -1
- package/modern/hooks/features/rows/gridRowsUtils.js +3 -2
- package/modern/hooks/features/rows/index.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +3 -3
- package/modern/hooks/features/sorting/gridSortingSelector.js +2 -2
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +13 -5
- package/modern/index.js +1 -1
- package/modern/internals/utils/useProps.js +1 -6
- package/modern/locales/trTR.js +19 -21
- package/modern/utils/composeGridClasses.js +5 -0
- package/modern/utils/platform.js +2 -0
- package/node/components/GridHeaders.js +1 -4
- package/node/components/GridPagination.js +2 -0
- package/node/components/GridRow.js +9 -26
- package/node/components/GridRowCount.js +2 -2
- package/node/components/GridSelectedRowCount.js +2 -2
- package/node/components/base/GridOverlays.js +2 -2
- package/node/components/cell/GridBooleanCell.js +3 -3
- package/node/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -2
- package/node/components/columnHeaders/GridBaseColumnHeaders.js +2 -2
- package/node/components/columnHeaders/GridColumnGroupHeader.js +2 -1
- package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +2 -2
- package/node/components/columnHeaders/GridColumnHeaderTitle.js +2 -2
- package/node/components/columnHeaders/GridIconButtonContainer.js +2 -2
- package/node/components/columnSelection/GridHeaderCheckbox.js +4 -4
- package/node/components/columnsManagement/GridColumnsManagement.js +5 -5
- package/node/components/containers/GridFooterContainer.js +2 -2
- package/node/components/containers/GridOverlay.js +2 -2
- package/node/components/containers/GridRoot.js +4 -7
- package/node/components/containers/GridRootStyles.js +26 -6
- package/node/components/containers/GridToolbarContainer.js +2 -2
- package/node/components/panel/GridPanelContent.js +2 -2
- package/node/components/panel/GridPanelFooter.js +2 -2
- package/node/components/panel/GridPanelHeader.js +2 -2
- package/node/components/panel/GridPanelWrapper.js +2 -2
- package/node/components/virtualization/GridBottomContainer.js +2 -2
- package/node/components/virtualization/GridTopContainer.js +3 -14
- package/node/components/virtualization/GridVirtualScrollbar.js +1 -0
- package/node/components/virtualization/GridVirtualScroller.js +2 -2
- package/node/components/virtualization/GridVirtualScrollerContent.js +2 -2
- package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -2
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/core/useGridRefs.js +3 -1
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -0
- package/node/hooks/features/editing/useGridEditing.js +1 -1
- package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -3
- package/node/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js +2 -2
- package/node/hooks/features/rows/gridRowsUtils.js +6 -4
- package/node/hooks/features/rows/index.js +8 -1
- package/node/hooks/features/rows/useGridRows.js +2 -2
- package/node/hooks/features/sorting/gridSortingSelector.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +13 -5
- package/node/index.js +1 -1
- package/node/internals/utils/useProps.js +1 -7
- package/node/locales/trTR.js +19 -21
- package/node/utils/composeGridClasses.js +11 -0
- package/node/utils/platform.js +8 -0
- package/package.json +13 -3
- package/utils/composeGridClasses.d.ts +3 -0
- package/utils/composeGridClasses.js +5 -0
- package/utils/platform.d.ts +1 -0
- package/utils/platform.js +2 -0
|
@@ -4,7 +4,7 @@ const _excluded = ["className", "selectedRowCount"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
-
import
|
|
7
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import { styled } from '@mui/system';
|
|
9
9
|
import { useGridApiContext } from '../hooks/utils/useGridApiContext';
|
|
10
10
|
import { getDataGridUtilityClass } from '../constants/gridClasses';
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { styled } from '@mui/system';
|
|
5
|
-
import
|
|
5
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
8
8
|
import { gridDimensionsSelector } from '../../hooks/features/dimensions';
|
|
@@ -3,11 +3,11 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "hasFocus", "tabIndex", "hideDescendantCount"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import
|
|
6
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
7
7
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
8
8
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
9
9
|
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
10
|
-
import {
|
|
10
|
+
import { isAutogeneratedRowNode } from '../../hooks/features/rows/gridRowsUtils';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
12
|
const useUtilityClasses = ownerState => {
|
|
13
13
|
const {
|
|
@@ -106,7 +106,7 @@ process.env.NODE_ENV !== "production" ? GridBooleanCellRaw.propTypes = {
|
|
|
106
106
|
const GridBooleanCell = /*#__PURE__*/React.memo(GridBooleanCellRaw);
|
|
107
107
|
export { GridBooleanCell };
|
|
108
108
|
export const renderBooleanCell = params => {
|
|
109
|
-
if (params.field !== '__row_group_by_columns_group__' &&
|
|
109
|
+
if (params.field !== '__row_group_by_columns_group__' && isAutogeneratedRowNode(params.rowNode)) {
|
|
110
110
|
return '';
|
|
111
111
|
}
|
|
112
112
|
return /*#__PURE__*/_jsx(GridBooleanCell, _extends({}, params));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import
|
|
3
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
4
4
|
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
5
5
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
6
6
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
const _excluded = ["className"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
|
-
import
|
|
6
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
7
7
|
import { styled } from '@mui/system';
|
|
8
8
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
9
9
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
@@ -15,13 +15,14 @@ const useUtilityClasses = ownerState => {
|
|
|
15
15
|
classes,
|
|
16
16
|
headerAlign,
|
|
17
17
|
isDragging,
|
|
18
|
+
isLastColumn,
|
|
18
19
|
showLeftBorder,
|
|
19
20
|
showRightBorder,
|
|
20
21
|
groupId,
|
|
21
22
|
pinnedPosition
|
|
22
23
|
} = ownerState;
|
|
23
24
|
const slots = {
|
|
24
|
-
root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight'],
|
|
25
|
+
root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight', isLastColumn && 'columnHeader--last'],
|
|
25
26
|
draggableContainer: ['columnHeaderDraggableContainer'],
|
|
26
27
|
titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'],
|
|
27
28
|
titleContainerContent: ['columnHeaderTitleContainerContent']
|
|
@@ -3,7 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
3
3
|
const _excluded = ["direction", "index", "sortingOrder", "disabled"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import
|
|
6
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
7
7
|
import Badge from '@mui/material/Badge';
|
|
8
8
|
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
9
9
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
@@ -4,7 +4,7 @@ const _excluded = ["className"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
-
import
|
|
7
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import { styled } from '@mui/system';
|
|
9
9
|
import { isOverflown } from '../../utils/domUtils';
|
|
10
10
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
const _excluded = ["className"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
|
-
import
|
|
6
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
7
7
|
import { styled } from '@mui/system';
|
|
8
8
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
9
9
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
const _excluded = ["field", "colDef"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import
|
|
6
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
7
7
|
import { isMultipleRowSelectionEnabled } from '../../hooks/features/rowSelection/utils';
|
|
8
8
|
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
9
9
|
import { gridTabIndexColumnHeaderSelector } from '../../hooks/features/focus/gridFocusStateSelector';
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import
|
|
5
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
7
7
|
import { styled } from '@mui/material/styles';
|
|
8
8
|
import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../../hooks/features/columns/gridColumnsSelector';
|
|
@@ -4,7 +4,7 @@ const _excluded = ["className"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
-
import
|
|
7
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import { styled } from '@mui/system';
|
|
9
9
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
10
10
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
@@ -4,7 +4,7 @@ const _excluded = ["className"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
-
import
|
|
7
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import { styled } from '@mui/system';
|
|
9
9
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
10
10
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
@@ -12,15 +12,14 @@ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
|
12
12
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
13
13
|
import { gridDensitySelector } from '../../hooks/features/density/densitySelector';
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
const useUtilityClasses = ownerState => {
|
|
15
|
+
const useUtilityClasses = (ownerState, density) => {
|
|
16
16
|
const {
|
|
17
17
|
autoHeight,
|
|
18
|
-
density,
|
|
19
18
|
classes,
|
|
20
19
|
showCellVerticalBorder
|
|
21
20
|
} = ownerState;
|
|
22
21
|
const slots = {
|
|
23
|
-
root: ['root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, 'withBorderColor', showCellVerticalBorder && 'withVerticalBorder']
|
|
22
|
+
root: ['root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, ownerState.slots.toolbar === null && 'root--noToolbar', 'withBorderColor', showCellVerticalBorder && 'withVerticalBorder']
|
|
24
23
|
};
|
|
25
24
|
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
26
25
|
};
|
|
@@ -34,10 +33,8 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
|
|
|
34
33
|
const density = useGridSelector(apiRef, gridDensitySelector);
|
|
35
34
|
const rootElementRef = apiRef.current.rootElementRef;
|
|
36
35
|
const handleRef = useForkRef(rootElementRef, ref);
|
|
37
|
-
const ownerState =
|
|
38
|
-
|
|
39
|
-
});
|
|
40
|
-
const classes = useUtilityClasses(ownerState);
|
|
36
|
+
const ownerState = rootProps;
|
|
37
|
+
const classes = useUtilityClasses(ownerState, density);
|
|
41
38
|
|
|
42
39
|
// Our implementation of <NoSsr />
|
|
43
40
|
const [mountedState, setMountedState] = React.useState(false);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { alpha, styled, darken, lighten, decomposeColor, recomposeColor } from '@mui/material/styles';
|
|
3
3
|
import { gridClasses as c } from '../../constants/gridClasses';
|
|
4
|
+
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
5
|
+
import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';
|
|
6
|
+
import { gridDimensionsSelector } from '../../hooks/features/dimensions/gridDimensionsSelectors';
|
|
4
7
|
function getBorderColor(theme) {
|
|
5
8
|
if (theme.vars) {
|
|
6
9
|
return theme.vars.palette.TableCell.border;
|
|
@@ -26,6 +29,10 @@ const columnHeaderStyles = {
|
|
|
26
29
|
visibility: 'visible'
|
|
27
30
|
}
|
|
28
31
|
};
|
|
32
|
+
|
|
33
|
+
// Emotion thinks it knows better than us which selector we should use.
|
|
34
|
+
// https://github.com/emotion-js/emotion/issues/1105#issuecomment-1722524968
|
|
35
|
+
const ignoreSsrWarning = '/* emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason */';
|
|
29
36
|
export const GridRootStyles = styled('div', {
|
|
30
37
|
name: 'MuiDataGrid',
|
|
31
38
|
slot: 'Root',
|
|
@@ -151,6 +158,8 @@ export const GridRootStyles = styled('div', {
|
|
|
151
158
|
})(({
|
|
152
159
|
theme: t
|
|
153
160
|
}) => {
|
|
161
|
+
const apiRef = useGridPrivateApiContext();
|
|
162
|
+
const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
|
|
154
163
|
const borderColor = getBorderColor(t);
|
|
155
164
|
const radius = t.shape.borderRadius;
|
|
156
165
|
const containerBackground = t.vars ? t.vars.palette.background.default : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default;
|
|
@@ -213,14 +222,10 @@ export const GridRootStyles = styled('div', {
|
|
|
213
222
|
// See https://github.com/mui/mui-x/issues/8547
|
|
214
223
|
minHeight: 0,
|
|
215
224
|
flexDirection: 'column',
|
|
225
|
+
overflow: 'hidden',
|
|
216
226
|
overflowAnchor: 'none',
|
|
217
227
|
// Keep the same scrolling position
|
|
218
|
-
|
|
219
|
-
// want and prints a warning to the console if we use it, about :first-child being "unsafe" in an SSR context.
|
|
220
|
-
// https://github.com/emotion-js/emotion/issues/1105
|
|
221
|
-
// Using `:first-of-type instead` is ironically less "safe" because if all our elements aren't `div`, this style
|
|
222
|
-
// will fail to apply.
|
|
223
|
-
[`.${c.main} > *:first-of-type`]: {
|
|
228
|
+
[`.${c.main} > *:first-child${ignoreSsrWarning}`]: {
|
|
224
229
|
borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
|
|
225
230
|
borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
|
|
226
231
|
},
|
|
@@ -268,6 +273,12 @@ export const GridRootStyles = styled('div', {
|
|
|
268
273
|
[`& .${c.columnHeader}:focus, & .${c.cell}:focus`]: {
|
|
269
274
|
outline: `solid ${t.palette.primary.main} 1px`
|
|
270
275
|
},
|
|
276
|
+
[`&.${c['root--noToolbar']} [aria-rowindex="1"] [aria-colindex="1"]`]: {
|
|
277
|
+
borderTopLeftRadius: 'calc(var(--unstable_DataGrid-radius) - 1px)'
|
|
278
|
+
},
|
|
279
|
+
[`&.${c['root--noToolbar']} [aria-rowindex="1"] .${c['columnHeader--last']}`]: {
|
|
280
|
+
borderTopRightRadius: !dimensions.hasScrollY || dimensions.scrollbarSize === 0 ? 'calc(var(--unstable_DataGrid-radius) - 1px)' : undefined
|
|
281
|
+
},
|
|
271
282
|
[`& .${c.columnHeaderCheckbox}, & .${c.cellCheckbox}`]: {
|
|
272
283
|
padding: 0,
|
|
273
284
|
justifyContent: 'center',
|
|
@@ -407,6 +418,15 @@ export const GridRootStyles = styled('div', {
|
|
|
407
418
|
borderTop: '1px solid var(--DataGrid-rowBorderColor)'
|
|
408
419
|
}
|
|
409
420
|
},
|
|
421
|
+
/* Bottom border of the top-container */
|
|
422
|
+
[`& .${c['row--borderBottom']} .${c.columnHeader},
|
|
423
|
+
& .${c['row--borderBottom']} .${c.filler},
|
|
424
|
+
& .${c['row--borderBottom']} .${c.scrollbarFiller}`]: {
|
|
425
|
+
borderBottom: `1px solid var(--DataGrid-rowBorderColor)`
|
|
426
|
+
},
|
|
427
|
+
[`& .${c['row--borderBottom']} .${c.cell}`]: {
|
|
428
|
+
borderBottom: `1px solid var(--rowBorderColor)`
|
|
429
|
+
},
|
|
410
430
|
/* Row styles */
|
|
411
431
|
[`.${c.row}`]: {
|
|
412
432
|
display: 'flex',
|
|
@@ -5,7 +5,7 @@ import * as React from 'react';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import { styled } from '@mui/system';
|
|
8
|
-
import
|
|
8
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
9
9
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
10
10
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -5,7 +5,7 @@ import * as React from 'react';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import { styled } from '@mui/system';
|
|
8
|
-
import
|
|
8
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
9
9
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
10
10
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -5,7 +5,7 @@ import * as React from 'react';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import { styled } from '@mui/system';
|
|
8
|
-
import
|
|
8
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
9
9
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
10
10
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -5,7 +5,7 @@ import * as React from 'react';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import { styled } from '@mui/system';
|
|
8
|
-
import
|
|
8
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
9
9
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
10
10
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -6,7 +6,7 @@ import PropTypes from 'prop-types';
|
|
|
6
6
|
import clsx from 'clsx';
|
|
7
7
|
import FocusTrap from '@mui/material/Unstable_TrapFocus';
|
|
8
8
|
import { styled } from '@mui/material/styles';
|
|
9
|
-
import
|
|
9
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
10
10
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
11
11
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
4
|
import { styled } from '@mui/system';
|
|
5
|
-
import
|
|
5
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
const useUtilityClasses = () => {
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
4
|
import { styled } from '@mui/system';
|
|
5
|
-
import
|
|
5
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
const useUtilityClasses = () => {
|
|
@@ -14,18 +14,7 @@ const useUtilityClasses = () => {
|
|
|
14
14
|
const Element = styled('div')({
|
|
15
15
|
position: 'sticky',
|
|
16
16
|
zIndex: 4,
|
|
17
|
-
top: 0
|
|
18
|
-
'&::after': {
|
|
19
|
-
content: '" "',
|
|
20
|
-
position: 'absolute',
|
|
21
|
-
zIndex: 5,
|
|
22
|
-
bottom: 0,
|
|
23
|
-
left: 0,
|
|
24
|
-
right: 0,
|
|
25
|
-
height: 1,
|
|
26
|
-
width: 'var(--DataGrid-rowWidth)',
|
|
27
|
-
backgroundColor: 'var(--DataGrid-rowBorderColor)'
|
|
28
|
-
}
|
|
17
|
+
top: 0
|
|
29
18
|
});
|
|
30
19
|
export function GridTopContainer(props) {
|
|
31
20
|
const classes = useUtilityClasses();
|
|
@@ -126,6 +126,7 @@ const GridVirtualScrollbar = /*#__PURE__*/React.forwardRef(function GridVirtualS
|
|
|
126
126
|
ref: useForkRef(ref, scrollbarRef),
|
|
127
127
|
className: classes.root,
|
|
128
128
|
tabIndex: -1,
|
|
129
|
+
"aria-hidden": "true",
|
|
129
130
|
children: /*#__PURE__*/_jsx(Content, {
|
|
130
131
|
ref: contentRef,
|
|
131
132
|
className: classes.content
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { styled } from '@mui/system';
|
|
4
|
-
import
|
|
4
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
5
5
|
import { GridScrollArea } from '../GridScrollArea';
|
|
6
6
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
7
7
|
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
4
|
import { styled } from '@mui/system';
|
|
5
|
-
import
|
|
5
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
7
7
|
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -4,7 +4,7 @@ const _excluded = ["className"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
import { styled } from '@mui/system';
|
|
7
|
-
import
|
|
7
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
9
9
|
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
10
10
|
import { gridRowsMetaSelector } from '../../hooks/features/rows';
|
|
@@ -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', '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--borderTop', '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', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', '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', '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--borderTop', '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--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -3,11 +3,13 @@ export const useGridRefs = apiRef => {
|
|
|
3
3
|
const rootElementRef = React.useRef(null);
|
|
4
4
|
const mainElementRef = React.useRef(null);
|
|
5
5
|
const virtualScrollerRef = React.useRef(null);
|
|
6
|
+
const columnHeadersContainerRef = React.useRef(null);
|
|
6
7
|
apiRef.current.register('public', {
|
|
7
8
|
rootElementRef
|
|
8
9
|
});
|
|
9
10
|
apiRef.current.register('private', {
|
|
10
11
|
mainElementRef,
|
|
11
|
-
virtualScrollerRef
|
|
12
|
+
virtualScrollerRef,
|
|
13
|
+
columnHeadersContainerRef
|
|
12
14
|
});
|
|
13
15
|
};
|
|
@@ -12,6 +12,7 @@ import { gridRenderContextColumnsSelector, gridVirtualizationColumnEnabledSelect
|
|
|
12
12
|
import { computeOffsetLeft } from '../virtualization/useGridVirtualScroller';
|
|
13
13
|
import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
|
|
14
14
|
import { GridPinnedColumnPosition, gridColumnPositionsSelector, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
|
|
15
|
+
import { gridPinnedRowsSelector } from '../rows/gridRowsSelector';
|
|
15
16
|
import { gridColumnGroupsUnwrappedModelSelector } from '../columnGrouping/gridColumnGroupsSelector';
|
|
16
17
|
import { GridScrollbarFillerCell as ScrollbarFiller } from '../../../components/GridScrollbarFillerCell';
|
|
17
18
|
import { getPinnedCellOffset } from '../../../internals/utils/getPinnedCellOffset';
|
|
@@ -51,6 +52,7 @@ export const useGridColumnHeaders = props => {
|
|
|
51
52
|
const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
|
|
52
53
|
const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);
|
|
53
54
|
const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
55
|
+
const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
|
|
54
56
|
const offsetLeft = computeOffsetLeft(columnPositions, renderContext, theme.direction, pinnedColumns.left.length);
|
|
55
57
|
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
56
58
|
React.useEffect(() => {
|
|
@@ -179,6 +181,7 @@ export const useGridColumnHeaders = props => {
|
|
|
179
181
|
role: "row",
|
|
180
182
|
"aria-rowindex": headerGroupingMaxDepth + 1,
|
|
181
183
|
ownerState: rootProps,
|
|
184
|
+
className: pinnedRows.top.length === 0 ? gridClasses['row--borderBottom'] : undefined,
|
|
182
185
|
children: [leftRenderContext && getColumnHeaders({
|
|
183
186
|
position: GridPinnedColumnPosition.LEFT,
|
|
184
187
|
renderContext: leftRenderContext,
|
|
@@ -5,7 +5,7 @@ import { useGridCellEditing } from './useGridCellEditing';
|
|
|
5
5
|
import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
|
|
6
6
|
import { useGridRowEditing } from './useGridRowEditing';
|
|
7
7
|
import { gridEditRowsStateSelector } from './gridEditingSelectors';
|
|
8
|
-
import {
|
|
8
|
+
import { isAutogeneratedRowNode } from '../rows/gridRowsUtils';
|
|
9
9
|
export const editingStateInitializer = state => _extends({}, state, {
|
|
10
10
|
editRows: {}
|
|
11
11
|
});
|
|
@@ -17,7 +17,7 @@ export const useGridEditing = (apiRef, props) => {
|
|
|
17
17
|
isCellEditable: isCellEditableProp
|
|
18
18
|
} = props;
|
|
19
19
|
const isCellEditable = React.useCallback(params => {
|
|
20
|
-
if (
|
|
20
|
+
if (isAutogeneratedRowNode(params.rowNode)) {
|
|
21
21
|
return false;
|
|
22
22
|
}
|
|
23
23
|
if (!params.colDef.editable) {
|
|
@@ -272,11 +272,10 @@ export const useGridRowSelection = (apiRef, props) => {
|
|
|
272
272
|
}
|
|
273
273
|
}, [apiRef, expandMouseRowRangeSelection, canHaveMultipleSelection]);
|
|
274
274
|
const handleHeaderSelectionCheckboxChange = React.useCallback(params => {
|
|
275
|
-
const
|
|
276
|
-
const rowsToBeSelected = shouldLimitSelectionToCurrentPage ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) : gridExpandedSortedRowIdsSelector(apiRef);
|
|
275
|
+
const rowsToBeSelected = props.pagination && props.checkboxSelectionVisibleOnly && props.paginationMode === 'client' ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) : gridExpandedSortedRowIdsSelector(apiRef);
|
|
277
276
|
const filterModel = gridFilterModelSelector(apiRef);
|
|
278
277
|
apiRef.current.selectRows(rowsToBeSelected, params.value, filterModel?.items.length > 0);
|
|
279
|
-
}, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination]);
|
|
278
|
+
}, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination, props.paginationMode]);
|
|
280
279
|
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
281
280
|
// Get the most recent cell mode because it may have been changed by another listener
|
|
282
281
|
if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.Edit) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import
|
|
3
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
4
4
|
import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
|
|
5
5
|
import { getDataGridUtilityClass } from '../../../constants';
|
|
6
6
|
import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_CHECKBOX_SELECTION_FIELD } from '../../../colDef';
|
|
@@ -123,7 +123,8 @@ export const getRowsStateFromCache = ({
|
|
|
123
123
|
groupsToFetch
|
|
124
124
|
});
|
|
125
125
|
};
|
|
126
|
-
export const
|
|
126
|
+
export const isAutogeneratedRow = row => GRID_ID_AUTOGENERATED in row;
|
|
127
|
+
export const isAutogeneratedRowNode = rowNode => rowNode.type === 'skeletonRow' || rowNode.type === 'footer' || rowNode.type === 'group' && rowNode.isAutoGenerated || rowNode.type === 'pinnedRow' && rowNode.isAutoGenerated;
|
|
127
128
|
export const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {
|
|
128
129
|
const node = tree[parentId];
|
|
129
130
|
if (node.type !== 'group') {
|
|
@@ -132,7 +133,7 @@ export const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) =>
|
|
|
132
133
|
const validDescendants = [];
|
|
133
134
|
for (let i = 0; i < node.children.length; i += 1) {
|
|
134
135
|
const child = node.children[i];
|
|
135
|
-
if (!skipAutoGeneratedRows || !
|
|
136
|
+
if (!skipAutoGeneratedRows || !isAutogeneratedRowNode(tree[child])) {
|
|
136
137
|
validDescendants.push(child);
|
|
137
138
|
}
|
|
138
139
|
const childDescendants = getTreeNodeDescendants(tree, child, skipAutoGeneratedRows);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from './gridRowsMetaSelector';
|
|
2
2
|
export * from './gridRowsMetaState';
|
|
3
3
|
export { gridRowCountSelector, gridRowsLoadingSelector, gridTopLevelRowCountSelector, gridRowsLookupSelector, gridRowsDataRowIdToIdLookupSelector, gridRowTreeSelector, gridRowGroupingNameSelector, gridRowTreeDepthsSelector, gridRowMaximumTreeDepthSelector, gridDataRowIdsSelector } from './gridRowsSelector';
|
|
4
|
-
export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid } from './gridRowsUtils';
|
|
4
|
+
export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid, isAutogeneratedRow } from './gridRowsUtils';
|
|
@@ -8,7 +8,7 @@ import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEve
|
|
|
8
8
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
9
9
|
import { gridSortedRowIdsSelector } from '../sorting/gridSortingSelector';
|
|
10
10
|
import { gridFilteredRowsLookupSelector } from '../filter/gridFilterSelector';
|
|
11
|
-
import { getTreeNodeDescendants, createRowsInternalCache, getRowsStateFromCache,
|
|
11
|
+
import { getTreeNodeDescendants, createRowsInternalCache, getRowsStateFromCache, isAutogeneratedRowNode, GRID_ROOT_GROUP_ID, GRID_ID_AUTOGENERATED, updateCacheWithNewRows, getTopLevelRowCount, getRowIdFromRowModel, computeRowsUpdates } from './gridRowsUtils';
|
|
12
12
|
import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
|
|
13
13
|
export const rowsStateInitializer = (state, props, apiRef) => {
|
|
14
14
|
const isDataSourceAvailable = !!props.unstable_dataSource;
|
|
@@ -48,7 +48,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
48
48
|
return model;
|
|
49
49
|
}
|
|
50
50
|
const node = apiRef.current.getRowNode(id);
|
|
51
|
-
if (node &&
|
|
51
|
+
if (node && isAutogeneratedRowNode(node)) {
|
|
52
52
|
return {
|
|
53
53
|
[GRID_ID_AUTOGENERATED]: id
|
|
54
54
|
};
|
|
@@ -212,7 +212,7 @@ export const useGridRows = (apiRef, props) => {
|
|
|
212
212
|
const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;
|
|
213
213
|
for (let index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {
|
|
214
214
|
const id = sortedRowIds[index];
|
|
215
|
-
if (!skipAutoGeneratedRows || !
|
|
215
|
+
if (!skipAutoGeneratedRows || !isAutogeneratedRowNode(tree[id])) {
|
|
216
216
|
children.push(id);
|
|
217
217
|
}
|
|
218
218
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';
|
|
2
2
|
import { gridRowTreeSelector, gridRowsLookupSelector } from '../rows/gridRowsSelector';
|
|
3
|
-
import { GRID_ID_AUTOGENERATED,
|
|
3
|
+
import { GRID_ID_AUTOGENERATED, isAutogeneratedRowNode } from '../rows/gridRowsUtils';
|
|
4
4
|
/**
|
|
5
5
|
* @category Sorting
|
|
6
6
|
* @ignore - do not document.
|
|
@@ -26,7 +26,7 @@ export const gridSortedRowEntriesSelector = createSelectorMemoized(gridSortedRow
|
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
const rowNode = rowTree[id];
|
|
29
|
-
if (rowNode &&
|
|
29
|
+
if (rowNode && isAutogeneratedRowNode(rowNode)) {
|
|
30
30
|
acc.push({
|
|
31
31
|
id,
|
|
32
32
|
model: {
|