@mui/x-data-grid 7.1.1 → 7.2.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 +86 -0
- package/components/GridRow.js +3 -1
- package/components/cell/GridCell.d.ts +1 -0
- package/components/cell/GridCell.js +4 -2
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +1 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +3 -2
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +1 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +4 -2
- package/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
- package/components/containers/GridRootStyles.js +5 -3
- package/components/panel/filterPanel/GridFilterInputDate.js +5 -1
- package/constants/gridClasses.d.ts +5 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/useGridInitialization.js +1 -1
- package/hooks/core/useGridStateInitialization.d.ts +1 -2
- package/hooks/core/useGridStateInitialization.js +6 -10
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +7 -3
- package/hooks/features/editing/useGridCellEditing.js +3 -1
- package/hooks/features/editing/useGridRowEditing.js +3 -1
- package/hooks/features/export/serializers/csvSerializer.js +6 -5
- package/index.js +1 -1
- package/locales/deDE.js +3 -4
- package/locales/frFR.js +5 -6
- package/locales/svSE.js +3 -4
- package/models/api/gridCallbackDetails.d.ts +5 -0
- package/modern/components/GridRow.js +3 -1
- package/modern/components/cell/GridCell.js +4 -2
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +3 -2
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +4 -2
- package/modern/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
- package/modern/components/containers/GridRootStyles.js +5 -3
- package/modern/components/panel/filterPanel/GridFilterInputDate.js +5 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/core/useGridInitialization.js +1 -1
- package/modern/hooks/core/useGridStateInitialization.js +6 -10
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +7 -3
- package/modern/hooks/features/editing/useGridCellEditing.js +3 -1
- package/modern/hooks/features/editing/useGridRowEditing.js +3 -1
- package/modern/hooks/features/export/serializers/csvSerializer.js +6 -5
- package/modern/index.js +1 -1
- package/modern/locales/deDE.js +3 -4
- package/modern/locales/frFR.js +5 -6
- package/modern/locales/svSE.js +3 -4
- package/modern/utils/cellBorderUtils.js +15 -2
- package/node/components/GridRow.js +3 -1
- package/node/components/cell/GridCell.js +4 -2
- package/node/components/columnHeaders/GridColumnGroupHeader.js +3 -2
- package/node/components/columnHeaders/GridColumnHeaderItem.js +4 -2
- package/node/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
- package/node/components/containers/GridRootStyles.js +5 -3
- package/node/components/panel/filterPanel/GridFilterInputDate.js +5 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/core/useGridInitialization.js +1 -1
- package/node/hooks/core/useGridStateInitialization.js +6 -10
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +7 -3
- package/node/hooks/features/editing/useGridCellEditing.js +3 -1
- package/node/hooks/features/editing/useGridRowEditing.js +3 -1
- package/node/hooks/features/export/serializers/csvSerializer.js +6 -5
- package/node/index.js +1 -1
- package/node/locales/deDE.js +3 -4
- package/node/locales/frFR.js +5 -6
- package/node/locales/svSE.js +3 -4
- package/node/utils/cellBorderUtils.js +15 -2
- package/package.json +1 -1
- package/themeAugmentation/overrides.d.ts +6 -0
- package/utils/cellBorderUtils.d.ts +1 -1
- package/utils/cellBorderUtils.js +15 -2
|
@@ -54,7 +54,8 @@ function GridColumnHeaderItem(props) {
|
|
|
54
54
|
style,
|
|
55
55
|
pinnedPosition,
|
|
56
56
|
indexInSection,
|
|
57
|
-
sectionLength
|
|
57
|
+
sectionLength,
|
|
58
|
+
gridHasFiller
|
|
58
59
|
} = props;
|
|
59
60
|
const apiRef = useGridPrivateApiContext();
|
|
60
61
|
const rootProps = useGridRootProps();
|
|
@@ -69,7 +70,7 @@ function GridColumnHeaderItem(props) {
|
|
|
69
70
|
headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
|
|
70
71
|
}
|
|
71
72
|
const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
|
|
72
|
-
const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
|
|
73
|
+
const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
73
74
|
const ownerState = _extends({}, props, {
|
|
74
75
|
classes: rootProps.classes,
|
|
75
76
|
showRightBorder,
|
|
@@ -201,6 +202,7 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
|
|
|
201
202
|
columnMenuOpen: PropTypes.bool.isRequired,
|
|
202
203
|
disableReorder: PropTypes.bool,
|
|
203
204
|
filterItemsCounter: PropTypes.number,
|
|
205
|
+
gridHasFiller: PropTypes.bool.isRequired,
|
|
204
206
|
hasFocus: PropTypes.bool,
|
|
205
207
|
headerHeight: PropTypes.number.isRequired,
|
|
206
208
|
indexInSection: PropTypes.number.isRequired,
|
|
@@ -48,7 +48,7 @@ function GridColumnHeaderSeparatorRaw(props) {
|
|
|
48
48
|
className: classes.root,
|
|
49
49
|
style: {
|
|
50
50
|
minHeight: height,
|
|
51
|
-
opacity: rootProps.showColumnVerticalBorder ?
|
|
51
|
+
opacity: rootProps.showColumnVerticalBorder ? 1 : 0
|
|
52
52
|
}
|
|
53
53
|
}, other, {
|
|
54
54
|
onClick: stopClick,
|
|
@@ -151,8 +151,8 @@ export const GridRootStyles = styled('div', {
|
|
|
151
151
|
}) => {
|
|
152
152
|
const borderColor = getBorderColor(t);
|
|
153
153
|
const radius = t.shape.borderRadius;
|
|
154
|
-
const containerBackground = t.vars ? t.vars.palette.background.default : t.palette.background.default;
|
|
155
|
-
const pinnedBackground = containerBackground;
|
|
154
|
+
const containerBackground = t.vars ? t.vars.palette.background.default : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default;
|
|
155
|
+
const pinnedBackground = t.mixins.MuiDataGrid?.pinnedBackground ?? containerBackground;
|
|
156
156
|
const overlayBackground = t.vars ? `rgba(${t.vars.palette.background.defaultChannel} / ${t.vars.palette.action.disabledOpacity})` : alpha(t.palette.background.default, t.palette.action.disabledOpacity);
|
|
157
157
|
const hoverOpacity = (t.vars || t).palette.action.hoverOpacity;
|
|
158
158
|
const hoverColor = (t.vars || t).palette.action.hover;
|
|
@@ -450,7 +450,6 @@ export const GridRootStyles = styled('div', {
|
|
|
450
450
|
userSelect: 'none'
|
|
451
451
|
},
|
|
452
452
|
[`& .${c['row--dynamicHeight']} > .${c.cell}`]: {
|
|
453
|
-
overflow: 'initial',
|
|
454
453
|
whiteSpace: 'initial',
|
|
455
454
|
lineHeight: 'inherit'
|
|
456
455
|
},
|
|
@@ -632,6 +631,9 @@ export const GridRootStyles = styled('div', {
|
|
|
632
631
|
},
|
|
633
632
|
[`& .${c.filler}`]: {
|
|
634
633
|
flex: 1
|
|
634
|
+
},
|
|
635
|
+
[`& .${c['filler--borderTop']}`]: {
|
|
636
|
+
borderTop: '1px solid var(--DataGrid-rowBorderColor)'
|
|
635
637
|
}
|
|
636
638
|
});
|
|
637
639
|
return gridStyle;
|
|
@@ -12,6 +12,9 @@ function convertFilterItemValueToInputValue(itemValue, inputType) {
|
|
|
12
12
|
return '';
|
|
13
13
|
}
|
|
14
14
|
const dateCopy = new Date(itemValue);
|
|
15
|
+
if (Number.isNaN(dateCopy.getTime())) {
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
15
18
|
// The date picker expects the date to be in the local timezone.
|
|
16
19
|
// But .toISOString() converts it to UTC with zero offset.
|
|
17
20
|
// So we need to subtract the timezone offset.
|
|
@@ -48,8 +51,9 @@ function GridFilterInputDate(props) {
|
|
|
48
51
|
setFilterValueState(value);
|
|
49
52
|
setIsApplying(true);
|
|
50
53
|
filterTimeout.start(rootProps.filterDebounceMs, () => {
|
|
54
|
+
const date = new Date(value);
|
|
51
55
|
applyValue(_extends({}, item, {
|
|
52
|
-
value:
|
|
56
|
+
value: Number.isNaN(date.getTime()) ? undefined : date
|
|
53
57
|
}));
|
|
54
58
|
setIsApplying(false);
|
|
55
59
|
});
|
|
@@ -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--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', '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--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', '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', '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', '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--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', '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', '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', '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', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -15,7 +15,7 @@ export const useGridInitialization = (inputApiRef, props) => {
|
|
|
15
15
|
useGridRefs(privateApiRef);
|
|
16
16
|
useGridTheme(privateApiRef);
|
|
17
17
|
useGridLoggerFactory(privateApiRef, props);
|
|
18
|
-
useGridStateInitialization(privateApiRef
|
|
18
|
+
useGridStateInitialization(privateApiRef);
|
|
19
19
|
useGridPipeProcessing(privateApiRef);
|
|
20
20
|
useGridStrategyProcessing(privateApiRef);
|
|
21
21
|
useGridLocaleText(privateApiRef, props);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { GridSignature } from '../utils/useGridApiEventHandler';
|
|
4
3
|
import { useGridApiMethod } from '../utils';
|
|
5
4
|
import { isFunction } from '../../utils/utils';
|
|
6
|
-
export const useGridStateInitialization =
|
|
5
|
+
export const useGridStateInitialization = apiRef => {
|
|
7
6
|
const controlStateMapRef = React.useRef({});
|
|
8
7
|
const [, rawForceUpdate] = React.useState();
|
|
9
8
|
const registerControlState = React.useCallback(controlStateItem => {
|
|
@@ -62,13 +61,10 @@ export const useGridStateInitialization = (apiRef, props) => {
|
|
|
62
61
|
const controlState = controlStateMapRef.current[stateId];
|
|
63
62
|
const model = controlState.stateSelector(newState, apiRef.current.instanceId);
|
|
64
63
|
if (controlState.propOnChange && hasPropChanged) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
reason
|
|
70
|
-
};
|
|
71
|
-
controlState.propOnChange(model, details);
|
|
64
|
+
controlState.propOnChange(model, {
|
|
65
|
+
reason,
|
|
66
|
+
api: apiRef.current
|
|
67
|
+
});
|
|
72
68
|
}
|
|
73
69
|
if (!ignoreSetState) {
|
|
74
70
|
apiRef.current.publishEvent(controlState.changeEvent, model, {
|
|
@@ -77,7 +73,7 @@ export const useGridStateInitialization = (apiRef, props) => {
|
|
|
77
73
|
}
|
|
78
74
|
}
|
|
79
75
|
return !ignoreSetState;
|
|
80
|
-
}, [apiRef
|
|
76
|
+
}, [apiRef]);
|
|
81
77
|
const updateControlState = React.useCallback((key, state, reason) => {
|
|
82
78
|
return apiRef.current.setState(previousState => {
|
|
83
79
|
return _extends({}, previousState, {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
3
4
|
import { styled, useTheme } from '@mui/material/styles';
|
|
4
5
|
import { useGridSelector } from '../../utils';
|
|
5
6
|
import { useGridRootProps } from '../../utils/useGridRootProps';
|
|
@@ -51,6 +52,7 @@ export const useGridColumnHeaders = props => {
|
|
|
51
52
|
const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);
|
|
52
53
|
const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
53
54
|
const offsetLeft = computeOffsetLeft(columnPositions, renderContext, theme.direction, pinnedColumns.left.length);
|
|
55
|
+
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
54
56
|
React.useEffect(() => {
|
|
55
57
|
apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
|
|
56
58
|
}, [apiRef]);
|
|
@@ -104,7 +106,7 @@ export const useGridColumnHeaders = props => {
|
|
|
104
106
|
}
|
|
105
107
|
}), children, isNotPinned && /*#__PURE__*/_jsx("div", {
|
|
106
108
|
role: "presentation",
|
|
107
|
-
className: gridClasses.filler
|
|
109
|
+
className: clsx(gridClasses.filler, borderTop && gridClasses['filler--borderTop'])
|
|
108
110
|
}), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {
|
|
109
111
|
header: true,
|
|
110
112
|
borderTop: borderTop,
|
|
@@ -165,7 +167,8 @@ export const useGridColumnHeaders = props => {
|
|
|
165
167
|
pinnedPosition: pinnedPosition,
|
|
166
168
|
style: style,
|
|
167
169
|
indexInSection: i,
|
|
168
|
-
sectionLength: renderedColumns.length
|
|
170
|
+
sectionLength: renderedColumns.length,
|
|
171
|
+
gridHasFiller: gridHasFiller
|
|
169
172
|
}, other), colDef.field));
|
|
170
173
|
}
|
|
171
174
|
return getFillers(params, columns, 0);
|
|
@@ -275,7 +278,8 @@ export const useGridColumnHeaders = props => {
|
|
|
275
278
|
pinnedPosition: pinnedPosition,
|
|
276
279
|
style: style,
|
|
277
280
|
indexInSection: indexInSection,
|
|
278
|
-
sectionLength: renderedColumns.length
|
|
281
|
+
sectionLength: renderedColumns.length,
|
|
282
|
+
gridHasFiller: gridHasFiller
|
|
279
283
|
}, index);
|
|
280
284
|
});
|
|
281
285
|
return getFillers(params, children, leftOverflow);
|
|
@@ -168,7 +168,9 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
168
168
|
const updateCellModesModel = useEventCallback(newModel => {
|
|
169
169
|
const isNewModelDifferentFromProp = newModel !== props.cellModesModel;
|
|
170
170
|
if (onCellModesModelChange && isNewModelDifferentFromProp) {
|
|
171
|
-
onCellModesModelChange(newModel, {
|
|
171
|
+
onCellModesModelChange(newModel, {
|
|
172
|
+
api: apiRef.current
|
|
173
|
+
});
|
|
172
174
|
}
|
|
173
175
|
if (props.cellModesModel && isNewModelDifferentFromProp) {
|
|
174
176
|
return; // The prop always win
|
|
@@ -242,7 +242,9 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
242
242
|
const updateRowModesModel = useEventCallback(newModel => {
|
|
243
243
|
const isNewModelDifferentFromProp = newModel !== props.rowModesModel;
|
|
244
244
|
if (onRowModesModelChange && isNewModelDifferentFromProp) {
|
|
245
|
-
onRowModesModelChange(newModel, {
|
|
245
|
+
onRowModesModelChange(newModel, {
|
|
246
|
+
api: apiRef.current
|
|
247
|
+
});
|
|
246
248
|
}
|
|
247
249
|
if (props.rowModesModel && isNewModelDifferentFromProp) {
|
|
248
250
|
return; // The prop always win
|
|
@@ -2,12 +2,13 @@ import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../../colDef';
|
|
|
2
2
|
import { buildWarning } from '../../../../utils/warning';
|
|
3
3
|
function sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes) {
|
|
4
4
|
if (typeof value === 'string') {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
if (shouldAppendQuotes) {
|
|
6
|
+
const escapedValue = value.replace(/"/g, '""');
|
|
7
|
+
// Make sure value containing delimiter or line break won't be split into multiple rows
|
|
8
|
+
if ([delimiterCharacter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
|
|
9
|
+
return `"${escapedValue}"`;
|
|
9
10
|
}
|
|
10
|
-
return
|
|
11
|
+
return escapedValue;
|
|
11
12
|
}
|
|
12
13
|
return value;
|
|
13
14
|
}
|
package/modern/index.js
CHANGED
package/modern/locales/deDE.js
CHANGED
|
@@ -30,10 +30,9 @@ const deDEGrid = {
|
|
|
30
30
|
toolbarExportPrint: 'Drucken',
|
|
31
31
|
toolbarExportExcel: 'Download als Excel',
|
|
32
32
|
// Columns management text
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
columnsManagementSearchTitle: 'Suche',
|
|
34
|
+
columnsManagementNoColumns: 'Keine Spalten',
|
|
35
|
+
columnsManagementShowHideAllText: 'Alle anzeigen/verbergen',
|
|
37
36
|
// Filter panel text
|
|
38
37
|
filterPanelAddFilter: 'Filter hinzufügen',
|
|
39
38
|
filterPanelRemoveAll: 'Alle entfernen',
|
package/modern/locales/frFR.js
CHANGED
|
@@ -16,7 +16,7 @@ const frFRGrid = {
|
|
|
16
16
|
// Filters toolbar button text
|
|
17
17
|
toolbarFilters: 'Filtres',
|
|
18
18
|
toolbarFiltersLabel: 'Afficher les filtres',
|
|
19
|
-
toolbarFiltersTooltipHide: '
|
|
19
|
+
toolbarFiltersTooltipHide: 'Masquer les filtres',
|
|
20
20
|
toolbarFiltersTooltipShow: 'Afficher les filtres',
|
|
21
21
|
toolbarFiltersTooltipActive: count => count > 1 ? `${count} filtres actifs` : `${count} filtre actif`,
|
|
22
22
|
// Quick filter toolbar field
|
|
@@ -30,10 +30,9 @@ const frFRGrid = {
|
|
|
30
30
|
toolbarExportPrint: 'Imprimer',
|
|
31
31
|
toolbarExportExcel: 'Télécharger pour Excel',
|
|
32
32
|
// Columns management text
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
columnsManagementSearchTitle: 'Rechercher',
|
|
34
|
+
columnsManagementNoColumns: 'Pas de colonnes',
|
|
35
|
+
columnsManagementShowHideAllText: 'Afficher/masquer toutes',
|
|
37
36
|
// Filter panel text
|
|
38
37
|
filterPanelAddFilter: 'Ajouter un filtre',
|
|
39
38
|
filterPanelRemoveAll: 'Tout supprimer',
|
|
@@ -94,7 +93,7 @@ const frFRGrid = {
|
|
|
94
93
|
columnMenuShowColumns: 'Afficher les colonnes',
|
|
95
94
|
columnMenuManageColumns: 'Gérer les colonnes',
|
|
96
95
|
columnMenuFilter: 'Filtrer',
|
|
97
|
-
columnMenuHideColumn: '
|
|
96
|
+
columnMenuHideColumn: 'Masquer',
|
|
98
97
|
columnMenuUnsort: 'Annuler le tri',
|
|
99
98
|
columnMenuSortAsc: 'Tri ascendant',
|
|
100
99
|
columnMenuSortDesc: 'Tri descendant',
|
package/modern/locales/svSE.js
CHANGED
|
@@ -30,10 +30,9 @@ const svSEGrid = {
|
|
|
30
30
|
toolbarExportPrint: 'Skriv ut',
|
|
31
31
|
toolbarExportExcel: 'Ladda ner som Excel',
|
|
32
32
|
// Columns management text
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
columnsManagementSearchTitle: 'Sök',
|
|
34
|
+
columnsManagementNoColumns: 'Inga kolumner',
|
|
35
|
+
columnsManagementShowHideAllText: 'Visa/Dölj alla',
|
|
37
36
|
// Filter panel text
|
|
38
37
|
filterPanelAddFilter: 'Lägg till filter',
|
|
39
38
|
filterPanelRemoveAll: 'Ta bort alla',
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { GridPinnedColumnPosition } from '../hooks/features/columns/gridColumnsInterfaces';
|
|
2
|
-
export const shouldCellShowRightBorder = (pinnedPosition, indexInSection, sectionLength, showCellVerticalBorderRootProp) => {
|
|
2
|
+
export const shouldCellShowRightBorder = (pinnedPosition, indexInSection, sectionLength, showCellVerticalBorderRootProp, gridHasFiller) => {
|
|
3
3
|
const isSectionLastCell = indexInSection === sectionLength - 1;
|
|
4
|
-
|
|
4
|
+
if (pinnedPosition === GridPinnedColumnPosition.LEFT && isSectionLastCell) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
if (showCellVerticalBorderRootProp) {
|
|
8
|
+
if (pinnedPosition === GridPinnedColumnPosition.LEFT) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
if (pinnedPosition === GridPinnedColumnPosition.RIGHT) {
|
|
12
|
+
return !isSectionLastCell;
|
|
13
|
+
}
|
|
14
|
+
// pinnedPosition === undefined, middle section
|
|
15
|
+
return !isSectionLastCell || gridHasFiller;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
5
18
|
};
|
|
6
19
|
export const shouldCellShowLeftBorder = (pinnedPosition, indexInSection) => {
|
|
7
20
|
return pinnedPosition === GridPinnedColumnPosition.RIGHT && indexInSection === 0;
|
|
@@ -101,6 +101,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
|
|
|
101
101
|
const handleRef = (0, _utils.unstable_useForkRef)(ref, refProp);
|
|
102
102
|
const rowNode = apiRef.current.getRowNode(rowId);
|
|
103
103
|
const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
|
|
104
|
+
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
104
105
|
const hasFocusCell = focusedColumnIndex !== undefined;
|
|
105
106
|
const hasVirtualFocusCellLeft = hasFocusCell && focusedColumnIndex >= pinnedColumns.left.length && focusedColumnIndex < renderContext.firstColumnIndex;
|
|
106
107
|
const hasVirtualFocusCellRight = hasFocusCell && focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >= renderContext.lastColumnIndex;
|
|
@@ -292,7 +293,8 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
|
|
|
292
293
|
pinnedOffset: pinnedOffset,
|
|
293
294
|
pinnedPosition: pinnedPosition,
|
|
294
295
|
sectionIndex: indexInSection,
|
|
295
|
-
sectionLength: sectionLength
|
|
296
|
+
sectionLength: sectionLength,
|
|
297
|
+
gridHasFiller: gridHasFiller
|
|
296
298
|
}, slotProps?.cell), column.field);
|
|
297
299
|
};
|
|
298
300
|
|
|
@@ -23,7 +23,7 @@ var _useGridParamsApi = require("../../hooks/features/rows/useGridParamsApi");
|
|
|
23
23
|
var _cellBorderUtils = require("../../utils/cellBorderUtils");
|
|
24
24
|
var _gridColumnsInterfaces = require("../../hooks/features/columns/gridColumnsInterfaces");
|
|
25
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
|
-
const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
|
|
26
|
+
const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "gridHasFiller", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
|
|
27
27
|
_excluded2 = ["changeReason", "unstable_updateValueOnRender"];
|
|
28
28
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
29
29
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -101,6 +101,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
101
101
|
pinnedPosition,
|
|
102
102
|
sectionIndex,
|
|
103
103
|
sectionLength,
|
|
104
|
+
gridHasFiller,
|
|
104
105
|
onClick,
|
|
105
106
|
onDoubleClick,
|
|
106
107
|
onMouseDown,
|
|
@@ -171,7 +172,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
171
172
|
const isSelectionMode = rootProps.cellSelection ?? false;
|
|
172
173
|
const position = gridPinnedColumnPositionLookup[pinnedPosition];
|
|
173
174
|
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(position, sectionIndex);
|
|
174
|
-
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder);
|
|
175
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
175
176
|
const ownerState = {
|
|
176
177
|
align,
|
|
177
178
|
showLeftBorder,
|
|
@@ -337,6 +338,7 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
|
|
|
337
338
|
isValidating: _propTypes.default.bool,
|
|
338
339
|
value: _propTypes.default.any
|
|
339
340
|
}),
|
|
341
|
+
gridHasFiller: _propTypes.default.bool.isRequired,
|
|
340
342
|
isNotVisible: _propTypes.default.bool.isRequired,
|
|
341
343
|
onClick: _propTypes.default.func,
|
|
342
344
|
onDoubleClick: _propTypes.default.func,
|
|
@@ -52,7 +52,8 @@ function GridColumnGroupHeader(props) {
|
|
|
52
52
|
pinnedPosition,
|
|
53
53
|
style,
|
|
54
54
|
indexInSection,
|
|
55
|
-
sectionLength
|
|
55
|
+
sectionLength,
|
|
56
|
+
gridHasFiller
|
|
56
57
|
} = props;
|
|
57
58
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
58
59
|
const headerCellRef = React.useRef(null);
|
|
@@ -80,7 +81,7 @@ function GridColumnGroupHeader(props) {
|
|
|
80
81
|
headerComponent = render(renderParams);
|
|
81
82
|
}
|
|
82
83
|
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
|
|
83
|
-
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
|
|
84
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
84
85
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
85
86
|
classes: rootProps.classes,
|
|
86
87
|
showLeftBorder,
|
|
@@ -62,7 +62,8 @@ function GridColumnHeaderItem(props) {
|
|
|
62
62
|
style,
|
|
63
63
|
pinnedPosition,
|
|
64
64
|
indexInSection,
|
|
65
|
-
sectionLength
|
|
65
|
+
sectionLength,
|
|
66
|
+
gridHasFiller
|
|
66
67
|
} = props;
|
|
67
68
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
68
69
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
@@ -77,7 +78,7 @@ function GridColumnHeaderItem(props) {
|
|
|
77
78
|
headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
|
|
78
79
|
}
|
|
79
80
|
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
|
|
80
|
-
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
|
|
81
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
81
82
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
82
83
|
classes: rootProps.classes,
|
|
83
84
|
showRightBorder,
|
|
@@ -209,6 +210,7 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
|
|
|
209
210
|
columnMenuOpen: _propTypes.default.bool.isRequired,
|
|
210
211
|
disableReorder: _propTypes.default.bool,
|
|
211
212
|
filterItemsCounter: _propTypes.default.number,
|
|
213
|
+
gridHasFiller: _propTypes.default.bool.isRequired,
|
|
212
214
|
hasFocus: _propTypes.default.bool,
|
|
213
215
|
headerHeight: _propTypes.default.number.isRequired,
|
|
214
216
|
indexInSection: _propTypes.default.number.isRequired,
|
|
@@ -57,7 +57,7 @@ function GridColumnHeaderSeparatorRaw(props) {
|
|
|
57
57
|
className: classes.root,
|
|
58
58
|
style: {
|
|
59
59
|
minHeight: height,
|
|
60
|
-
opacity: rootProps.showColumnVerticalBorder ?
|
|
60
|
+
opacity: rootProps.showColumnVerticalBorder ? 1 : 0
|
|
61
61
|
}
|
|
62
62
|
}, other, {
|
|
63
63
|
onClick: stopClick,
|
|
@@ -158,8 +158,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
158
158
|
}) => {
|
|
159
159
|
const borderColor = getBorderColor(t);
|
|
160
160
|
const radius = t.shape.borderRadius;
|
|
161
|
-
const containerBackground = t.vars ? t.vars.palette.background.default : t.palette.background.default;
|
|
162
|
-
const pinnedBackground = containerBackground;
|
|
161
|
+
const containerBackground = t.vars ? t.vars.palette.background.default : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default;
|
|
162
|
+
const pinnedBackground = t.mixins.MuiDataGrid?.pinnedBackground ?? containerBackground;
|
|
163
163
|
const overlayBackground = t.vars ? `rgba(${t.vars.palette.background.defaultChannel} / ${t.vars.palette.action.disabledOpacity})` : (0, _styles.alpha)(t.palette.background.default, t.palette.action.disabledOpacity);
|
|
164
164
|
const hoverOpacity = (t.vars || t).palette.action.hoverOpacity;
|
|
165
165
|
const hoverColor = (t.vars || t).palette.action.hover;
|
|
@@ -457,7 +457,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
457
457
|
userSelect: 'none'
|
|
458
458
|
},
|
|
459
459
|
[`& .${_gridClasses.gridClasses['row--dynamicHeight']} > .${_gridClasses.gridClasses.cell}`]: {
|
|
460
|
-
overflow: 'initial',
|
|
461
460
|
whiteSpace: 'initial',
|
|
462
461
|
lineHeight: 'inherit'
|
|
463
462
|
},
|
|
@@ -639,6 +638,9 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
639
638
|
},
|
|
640
639
|
[`& .${_gridClasses.gridClasses.filler}`]: {
|
|
641
640
|
flex: 1
|
|
641
|
+
},
|
|
642
|
+
[`& .${_gridClasses.gridClasses['filler--borderTop']}`]: {
|
|
643
|
+
borderTop: '1px solid var(--DataGrid-rowBorderColor)'
|
|
642
644
|
}
|
|
643
645
|
});
|
|
644
646
|
return gridStyle;
|
|
@@ -21,6 +21,9 @@ function convertFilterItemValueToInputValue(itemValue, inputType) {
|
|
|
21
21
|
return '';
|
|
22
22
|
}
|
|
23
23
|
const dateCopy = new Date(itemValue);
|
|
24
|
+
if (Number.isNaN(dateCopy.getTime())) {
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
24
27
|
// The date picker expects the date to be in the local timezone.
|
|
25
28
|
// But .toISOString() converts it to UTC with zero offset.
|
|
26
29
|
// So we need to subtract the timezone offset.
|
|
@@ -57,8 +60,9 @@ function GridFilterInputDate(props) {
|
|
|
57
60
|
setFilterValueState(value);
|
|
58
61
|
setIsApplying(true);
|
|
59
62
|
filterTimeout.start(rootProps.filterDebounceMs, () => {
|
|
63
|
+
const date = new Date(value);
|
|
60
64
|
applyValue((0, _extends2.default)({}, item, {
|
|
61
|
-
value:
|
|
65
|
+
value: Number.isNaN(date.getTime()) ? undefined : date
|
|
62
66
|
}));
|
|
63
67
|
setIsApplying(false);
|
|
64
68
|
});
|
|
@@ -9,4 +9,4 @@ var _utils = require("@mui/utils");
|
|
|
9
9
|
function getDataGridUtilityClass(slot) {
|
|
10
10
|
return (0, _utils.unstable_generateUtilityClass)('MuiDataGrid', slot);
|
|
11
11
|
}
|
|
12
|
-
const gridClasses = exports.gridClasses = (0, _utils.unstable_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--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', '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--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', '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', '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', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
12
|
+
const gridClasses = exports.gridClasses = (0, _utils.unstable_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--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', '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', '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', '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', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -20,7 +20,7 @@ const useGridInitialization = (inputApiRef, props) => {
|
|
|
20
20
|
(0, _useGridRefs.useGridRefs)(privateApiRef);
|
|
21
21
|
(0, _useGridTheme.useGridTheme)(privateApiRef);
|
|
22
22
|
(0, _useGridLoggerFactory.useGridLoggerFactory)(privateApiRef, props);
|
|
23
|
-
(0, _useGridStateInitialization.useGridStateInitialization)(privateApiRef
|
|
23
|
+
(0, _useGridStateInitialization.useGridStateInitialization)(privateApiRef);
|
|
24
24
|
(0, _pipeProcessing.useGridPipeProcessing)(privateApiRef);
|
|
25
25
|
(0, _strategyProcessing.useGridStrategyProcessing)(privateApiRef);
|
|
26
26
|
(0, _useGridLocaleText.useGridLocaleText)(privateApiRef, props);
|
|
@@ -7,12 +7,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useGridStateInitialization = void 0;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _useGridApiEventHandler = require("../utils/useGridApiEventHandler");
|
|
11
10
|
var _utils = require("../utils");
|
|
12
11
|
var _utils2 = require("../../utils/utils");
|
|
13
12
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
13
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
-
const useGridStateInitialization =
|
|
14
|
+
const useGridStateInitialization = apiRef => {
|
|
16
15
|
const controlStateMapRef = React.useRef({});
|
|
17
16
|
const [, rawForceUpdate] = React.useState();
|
|
18
17
|
const registerControlState = React.useCallback(controlStateItem => {
|
|
@@ -71,13 +70,10 @@ const useGridStateInitialization = (apiRef, props) => {
|
|
|
71
70
|
const controlState = controlStateMapRef.current[stateId];
|
|
72
71
|
const model = controlState.stateSelector(newState, apiRef.current.instanceId);
|
|
73
72
|
if (controlState.propOnChange && hasPropChanged) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
reason
|
|
79
|
-
};
|
|
80
|
-
controlState.propOnChange(model, details);
|
|
73
|
+
controlState.propOnChange(model, {
|
|
74
|
+
reason,
|
|
75
|
+
api: apiRef.current
|
|
76
|
+
});
|
|
81
77
|
}
|
|
82
78
|
if (!ignoreSetState) {
|
|
83
79
|
apiRef.current.publishEvent(controlState.changeEvent, model, {
|
|
@@ -86,7 +82,7 @@ const useGridStateInitialization = (apiRef, props) => {
|
|
|
86
82
|
}
|
|
87
83
|
}
|
|
88
84
|
return !ignoreSetState;
|
|
89
|
-
}, [apiRef
|
|
85
|
+
}, [apiRef]);
|
|
90
86
|
const updateControlState = React.useCallback((key, state, reason) => {
|
|
91
87
|
return apiRef.current.setState(previousState => {
|
|
92
88
|
return (0, _extends2.default)({}, previousState, {
|