@mui/x-data-grid 7.23.5 → 7.24.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 +159 -0
- package/DataGrid/DataGrid.js +4 -5
- package/DataGrid/useDataGridComponent.d.ts +1 -1
- package/DataGrid/useDataGridComponent.js +1 -1
- package/components/GridHeaders.js +2 -2
- package/components/GridRow.d.ts +5 -9
- package/components/GridRow.js +28 -105
- package/components/GridSkeletonLoadingOverlay.js +18 -18
- package/components/cell/GridActionsCellItem.d.ts +3 -3
- package/components/cell/GridCell.d.ts +9 -16
- package/components/cell/GridCell.js +17 -35
- package/components/cell/GridEditDateCell.js +1 -1
- package/components/cell/GridEditInputCell.js +1 -1
- package/components/cell/GridEditSingleSelectCell.js +2 -2
- package/components/columnHeaders/ColumnHeaderMenuIcon.d.ts +1 -1
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -5
- package/components/columnHeaders/GridColumnGroupHeader.js +7 -10
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -5
- package/components/columnHeaders/GridColumnHeaderItem.js +13 -12
- package/components/columnSelection/GridCellCheckboxRenderer.js +4 -3
- package/components/columnSelection/GridHeaderCheckbox.js +6 -2
- package/components/containers/GridRoot.d.ts +2 -2
- package/components/containers/GridRoot.js +14 -6
- package/components/containers/GridRootStyles.js +1 -0
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterInputValue.js +7 -10
- package/components/panel/filterPanel/GridFilterInputValueProps.d.ts +1 -1
- package/components/virtualization/GridVirtualScrollbar.js +11 -12
- package/components/virtualization/GridVirtualScroller.js +4 -4
- package/context/GridContextProvider.d.ts +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +1 -1
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +1 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
- package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +1 -1
- package/hooks/core/useGridApiInitialization.d.ts +1 -1
- package/hooks/core/useGridApiInitialization.js +2 -2
- package/hooks/core/useGridInitialization.d.ts +1 -1
- package/hooks/core/useGridIsRtl.d.ts +1 -1
- package/hooks/core/useGridLocaleText.d.ts +1 -1
- package/hooks/core/useGridLoggerFactory.d.ts +1 -1
- package/hooks/core/useGridRefs.d.ts +1 -1
- package/hooks/core/useGridStateInitialization.d.ts +1 -1
- package/hooks/features/clipboard/useGridClipboard.d.ts +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +5 -7
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
- package/hooks/features/columnMenu/useGridColumnMenu.d.ts +1 -1
- package/hooks/features/columnResize/useGridColumnResize.d.ts +1 -1
- package/hooks/features/columnResize/useGridColumnResize.js +8 -6
- package/hooks/features/columns/gridColumnsUtils.d.ts +3 -3
- package/hooks/features/columns/useGridColumnSpanning.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/density/useGridDensity.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +1 -1
- package/hooks/features/editing/useGridCellEditing.d.ts +1 -1
- package/hooks/features/editing/useGridEditing.d.ts +1 -1
- package/hooks/features/editing/useGridRowEditing.d.ts +1 -1
- package/hooks/features/editing/useGridRowEditing.js +1 -1
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/export/serializers/csvSerializer.d.ts +1 -1
- package/hooks/features/export/useGridCsvExport.d.ts +1 -1
- package/hooks/features/export/useGridPrintExport.d.ts +1 -1
- package/hooks/features/export/useGridPrintExport.js +1 -1
- package/hooks/features/export/utils.d.ts +1 -1
- package/hooks/features/filter/gridFilterSelector.js +6 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +6 -6
- package/hooks/features/filter/gridFilterUtils.js +3 -3
- package/hooks/features/filter/useGridFilter.d.ts +1 -1
- package/hooks/features/focus/useGridFocus.d.ts +1 -1
- package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +1 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/hooks/features/keyboardNavigation/utils.d.ts +2 -2
- package/hooks/features/listView/useGridListView.d.ts +1 -1
- package/hooks/features/pagination/gridPaginationInterfaces.d.ts +3 -0
- package/hooks/features/pagination/gridPaginationSelector.d.ts +20 -1
- package/hooks/features/pagination/gridPaginationSelector.js +39 -1
- package/hooks/features/pagination/useGridPagination.d.ts +2 -2
- package/hooks/features/pagination/useGridPagination.js +5 -3
- package/hooks/features/pagination/useGridPaginationMeta.d.ts +1 -1
- package/hooks/features/pagination/useGridPaginationModel.d.ts +1 -1
- package/hooks/features/pagination/useGridPaginationModel.js +23 -1
- package/hooks/features/pagination/useGridRowCount.d.ts +1 -1
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +1 -1
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
- package/hooks/features/rowSelection/useGridRowSelection.d.ts +1 -1
- package/hooks/features/rowSelection/useGridRowSelectionPreProcessors.d.ts +1 -1
- package/hooks/features/rowSelection/utils.d.ts +2 -2
- package/hooks/features/rows/gridRowSpanningUtils.d.ts +1 -1
- package/hooks/features/rows/gridRowsSelector.js +1 -1
- package/hooks/features/rows/gridRowsUtils.d.ts +3 -3
- package/hooks/features/rows/useGridParamsApi.d.ts +1 -1
- package/hooks/features/rows/useGridRowSpanning.d.ts +1 -1
- package/hooks/features/rows/useGridRows.d.ts +1 -1
- package/hooks/features/rows/useGridRows.js +2 -2
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsPreProcessors.d.ts +1 -1
- package/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/hooks/features/sorting/gridSortingUtils.d.ts +2 -2
- package/hooks/features/sorting/gridSortingUtils.js +2 -2
- package/hooks/features/sorting/useGridSorting.d.ts +1 -1
- package/hooks/features/statePersistence/useGridStatePersistence.d.ts +1 -1
- package/hooks/features/virtualization/gridFocusedVirtualCellSelector.d.ts +6 -0
- package/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +5 -4
- package/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
- package/hooks/features/virtualization/useGridVirtualization.d.ts +1 -1
- package/hooks/utils/useGridApiContext.d.ts +1 -1
- package/hooks/utils/useGridApiEventHandler.d.ts +3 -3
- package/hooks/utils/useGridApiEventHandler.js +1 -1
- package/hooks/utils/useGridApiMethod.d.ts +1 -1
- package/hooks/utils/useGridApiRef.d.ts +1 -1
- package/hooks/utils/useGridInitializeState.d.ts +2 -2
- package/hooks/utils/useGridLogger.d.ts +1 -1
- package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
- package/hooks/utils/useGridPrivateApiContext.d.ts +1 -1
- package/hooks/utils/useGridSelector.d.ts +2 -2
- package/hooks/utils/useGridVisibleRows.d.ts +7 -5
- package/hooks/utils/useGridVisibleRows.js +5 -28
- package/index.js +1 -1
- package/internals/constants.d.ts +6 -0
- package/internals/constants.js +8 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +1 -0
- package/internals/utils/attachPinnedStyle.d.ts +2 -0
- package/internals/utils/attachPinnedStyle.js +9 -0
- package/internals/utils/getPinnedCellOffset.d.ts +3 -3
- package/internals/utils/getPinnedCellOffset.js +6 -7
- package/internals/utils/index.d.ts +1 -0
- package/internals/utils/index.js +2 -1
- package/locales/urPK.js +9 -10
- package/models/api/gridCoreApi.d.ts +7 -7
- package/models/api/gridDensityApi.d.ts +1 -1
- package/models/colDef/gridColDef.d.ts +8 -8
- package/models/events/gridEventLookup.d.ts +6 -1
- package/models/gridExport.d.ts +1 -1
- package/models/gridFilterOperator.d.ts +1 -1
- package/models/gridStateCommunity.d.ts +4 -0
- package/models/props/DataGridProps.d.ts +1 -1
- package/modern/DataGrid/DataGrid.js +4 -5
- package/modern/DataGrid/useDataGridComponent.js +1 -1
- package/modern/components/GridHeaders.js +2 -2
- package/modern/components/GridRow.js +28 -105
- package/modern/components/GridSkeletonLoadingOverlay.js +18 -18
- package/modern/components/cell/GridCell.js +17 -35
- package/modern/components/cell/GridEditDateCell.js +1 -1
- package/modern/components/cell/GridEditInputCell.js +1 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +2 -2
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +7 -10
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +13 -12
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +4 -3
- package/modern/components/columnSelection/GridHeaderCheckbox.js +6 -2
- package/modern/components/containers/GridRoot.js +14 -6
- package/modern/components/containers/GridRootStyles.js +1 -0
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +7 -10
- package/modern/components/virtualization/GridVirtualScrollbar.js +11 -12
- package/modern/components/virtualization/GridVirtualScroller.js +4 -4
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
- package/modern/hooks/core/useGridApiInitialization.js +2 -2
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
- package/modern/hooks/features/columnResize/useGridColumnResize.js +8 -6
- package/modern/hooks/features/dimensions/useGridDimensions.js +1 -1
- package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
- package/modern/hooks/features/export/useGridPrintExport.js +1 -1
- package/modern/hooks/features/filter/gridFilterSelector.js +6 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +3 -3
- package/modern/hooks/features/pagination/gridPaginationSelector.js +39 -1
- package/modern/hooks/features/pagination/useGridPagination.js +5 -3
- package/modern/hooks/features/pagination/useGridPaginationModel.js +23 -1
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
- package/modern/hooks/features/rows/gridRowsSelector.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +2 -2
- package/modern/hooks/features/sorting/gridSortingUtils.js +2 -2
- package/modern/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
- package/modern/hooks/utils/useGridApiEventHandler.js +1 -1
- package/modern/hooks/utils/useGridVisibleRows.js +5 -28
- package/modern/index.js +1 -1
- package/modern/internals/constants.js +8 -1
- package/modern/internals/index.js +1 -0
- package/modern/internals/utils/attachPinnedStyle.js +9 -0
- package/modern/internals/utils/getPinnedCellOffset.js +6 -7
- package/modern/internals/utils/index.js +2 -1
- package/modern/locales/urPK.js +9 -10
- package/modern/utils/cellBorderUtils.js +5 -5
- package/modern/utils/domUtils.js +7 -2
- package/modern/utils/rtlFlipSide.js +22 -0
- package/node/DataGrid/DataGrid.js +2 -3
- package/node/DataGrid/useDataGridComponent.js +1 -1
- package/node/components/GridHeaders.js +2 -2
- package/node/components/GridRow.js +27 -104
- package/node/components/GridSkeletonLoadingOverlay.js +17 -17
- package/node/components/cell/GridCell.js +18 -36
- package/node/components/cell/GridEditDateCell.js +1 -1
- package/node/components/cell/GridEditInputCell.js +1 -1
- package/node/components/cell/GridEditSingleSelectCell.js +2 -2
- package/node/components/columnHeaders/GridColumnGroupHeader.js +7 -10
- package/node/components/columnHeaders/GridColumnHeaderItem.js +13 -12
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +3 -2
- package/node/components/columnSelection/GridHeaderCheckbox.js +6 -2
- package/node/components/containers/GridRoot.js +14 -6
- package/node/components/containers/GridRootStyles.js +1 -0
- package/node/components/panel/filterPanel/GridFilterInputValue.js +7 -10
- package/node/components/virtualization/GridVirtualScrollbar.js +11 -12
- package/node/components/virtualization/GridVirtualScroller.js +4 -4
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +1 -1
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +1 -1
- package/node/hooks/core/useGridApiInitialization.js +2 -2
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +32 -74
- package/node/hooks/features/columnResize/useGridColumnResize.js +8 -6
- package/node/hooks/features/dimensions/useGridDimensions.js +1 -1
- package/node/hooks/features/editing/useGridRowEditing.js +1 -1
- package/node/hooks/features/export/useGridPrintExport.js +1 -1
- package/node/hooks/features/filter/gridFilterSelector.js +6 -1
- package/node/hooks/features/filter/gridFilterUtils.js +3 -3
- package/node/hooks/features/pagination/gridPaginationSelector.js +41 -3
- package/node/hooks/features/pagination/useGridPagination.js +5 -3
- package/node/hooks/features/pagination/useGridPaginationModel.js +23 -1
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +2 -2
- package/node/hooks/features/rows/gridRowsSelector.js +1 -1
- package/node/hooks/features/rows/useGridRows.js +1 -1
- package/node/hooks/features/sorting/gridSortingUtils.js +2 -2
- package/node/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +49 -0
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +96 -43
- package/node/hooks/utils/useGridApiEventHandler.js +1 -1
- package/node/hooks/utils/useGridVisibleRows.js +3 -28
- package/node/index.js +1 -1
- package/node/internals/constants.js +9 -2
- package/node/internals/index.js +12 -0
- package/node/internals/utils/attachPinnedStyle.js +15 -0
- package/node/internals/utils/getPinnedCellOffset.js +6 -7
- package/node/internals/utils/index.js +11 -0
- package/node/locales/urPK.js +9 -10
- package/node/utils/cellBorderUtils.js +5 -5
- package/node/utils/domUtils.js +7 -2
- package/node/utils/rtlFlipSide.js +29 -0
- package/package.json +2 -2
- package/utils/cellBorderUtils.d.ts +3 -3
- package/utils/cellBorderUtils.js +5 -5
- package/utils/createSelector.d.ts +2 -2
- package/utils/domUtils.js +7 -2
- package/utils/getPublicApiRef.d.ts +1 -1
- package/utils/rtlFlipSide.d.ts +2 -0
- package/utils/rtlFlipSide.js +22 -0
|
@@ -12,6 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
12
12
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
13
13
|
var _utils = require("@mui/utils");
|
|
14
14
|
var _fastMemo = require("@mui/x-internals/fastMemo");
|
|
15
|
+
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
15
16
|
var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
|
|
16
17
|
var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
|
|
17
18
|
var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
|
|
@@ -19,7 +20,8 @@ var _gridClasses = require("../../constants/gridClasses");
|
|
|
19
20
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
20
21
|
var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
|
|
21
22
|
var _domUtils = require("../../utils/domUtils");
|
|
22
|
-
var
|
|
23
|
+
var _constants = require("../../internals/constants");
|
|
24
|
+
var _utils2 = require("../../internals/utils");
|
|
23
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
26
|
const useUtilityClasses = ownerState => {
|
|
25
27
|
const {
|
|
@@ -39,7 +41,7 @@ const useUtilityClasses = ownerState => {
|
|
|
39
41
|
// todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work
|
|
40
42
|
const isColumnNumeric = colDef.type === 'number';
|
|
41
43
|
const slots = {
|
|
42
|
-
root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', pinnedPosition ===
|
|
44
|
+
root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', pinnedPosition === _constants.PinnedColumnPosition.LEFT && 'columnHeader--pinnedLeft', pinnedPosition === _constants.PinnedColumnPosition.RIGHT && 'columnHeader--pinnedRight',
|
|
43
45
|
// TODO: Remove classes below and restore `:has` selectors when they are supported in jsdom
|
|
44
46
|
// See https://github.com/mui/mui-x/pull/14559
|
|
45
47
|
isLastUnpinned && 'columnHeader--lastUnpinned', isSiblingFocused && 'columnHeader--siblingFocused'],
|
|
@@ -64,14 +66,14 @@ function GridColumnHeaderItem(props) {
|
|
|
64
66
|
tabIndex,
|
|
65
67
|
disableReorder,
|
|
66
68
|
separatorSide,
|
|
67
|
-
|
|
69
|
+
showLeftBorder,
|
|
70
|
+
showRightBorder,
|
|
68
71
|
pinnedPosition,
|
|
69
|
-
|
|
70
|
-
sectionLength,
|
|
71
|
-
gridHasFiller
|
|
72
|
+
pinnedOffset
|
|
72
73
|
} = props;
|
|
73
74
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
74
75
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
76
|
+
const isRtl = (0, _RtlProvider.useRtl)();
|
|
75
77
|
const headerCellRef = React.useRef(null);
|
|
76
78
|
const columnMenuId = (0, _utils.unstable_useId)();
|
|
77
79
|
const columnMenuButtonId = (0, _utils.unstable_useId)();
|
|
@@ -82,8 +84,6 @@ function GridColumnHeaderItem(props) {
|
|
|
82
84
|
if (colDef.renderHeader) {
|
|
83
85
|
headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
|
|
84
86
|
}
|
|
85
|
-
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
|
|
86
|
-
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showColumnVerticalBorder, gridHasFiller);
|
|
87
87
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
88
88
|
classes: rootProps.classes,
|
|
89
89
|
showRightBorder,
|
|
@@ -179,6 +179,7 @@ function GridColumnHeaderItem(props) {
|
|
|
179
179
|
colDef
|
|
180
180
|
}) : colDef.headerClassName;
|
|
181
181
|
const label = colDef.headerName ?? colDef.field;
|
|
182
|
+
const style = React.useMemo(() => (0, _utils2.attachPinnedStyle)((0, _extends2.default)({}, props.style), isRtl, pinnedPosition, pinnedOffset), [pinnedPosition, pinnedOffset, props.style, isRtl]);
|
|
182
183
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridGenericColumnHeaderItem.GridGenericColumnHeaderItem, (0, _extends2.default)({
|
|
183
184
|
ref: headerCellRef,
|
|
184
185
|
classes: classes,
|
|
@@ -217,18 +218,18 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
|
|
|
217
218
|
columnMenuOpen: _propTypes.default.bool.isRequired,
|
|
218
219
|
disableReorder: _propTypes.default.bool,
|
|
219
220
|
filterItemsCounter: _propTypes.default.number,
|
|
220
|
-
gridHasFiller: _propTypes.default.bool.isRequired,
|
|
221
221
|
hasFocus: _propTypes.default.bool,
|
|
222
222
|
headerHeight: _propTypes.default.number.isRequired,
|
|
223
|
-
indexInSection: _propTypes.default.number.isRequired,
|
|
224
223
|
isDragging: _propTypes.default.bool.isRequired,
|
|
225
224
|
isLast: _propTypes.default.bool.isRequired,
|
|
226
225
|
isLastUnpinned: _propTypes.default.bool.isRequired,
|
|
227
226
|
isResizing: _propTypes.default.bool.isRequired,
|
|
228
227
|
isSiblingFocused: _propTypes.default.bool.isRequired,
|
|
229
|
-
|
|
230
|
-
|
|
228
|
+
pinnedOffset: _propTypes.default.number,
|
|
229
|
+
pinnedPosition: _propTypes.default.oneOf([0, 1, 2, 3]),
|
|
231
230
|
separatorSide: _propTypes.default.oneOf(['left', 'right']),
|
|
231
|
+
showLeftBorder: _propTypes.default.bool.isRequired,
|
|
232
|
+
showRightBorder: _propTypes.default.bool.isRequired,
|
|
232
233
|
sortDirection: _propTypes.default.oneOf(['asc', 'desc']),
|
|
233
234
|
sortIndex: _propTypes.default.number,
|
|
234
235
|
style: _propTypes.default.object,
|
|
@@ -84,7 +84,7 @@ const GridCellCheckboxForwardRef = exports.GridCellCheckboxForwardRef = (0, _for
|
|
|
84
84
|
const {
|
|
85
85
|
isIndeterminate,
|
|
86
86
|
isChecked
|
|
87
|
-
} = (0, _useGridSelector.useGridSelector)(apiRef, checkboxPropsSelector);
|
|
87
|
+
} = (0, _useGridSelector.useGridSelector)(apiRef, checkboxPropsSelector, _useGridSelector.objectShallowCompare);
|
|
88
88
|
if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') {
|
|
89
89
|
return null;
|
|
90
90
|
}
|
|
@@ -96,7 +96,8 @@ const GridCellCheckboxForwardRef = exports.GridCellCheckboxForwardRef = (0, _for
|
|
|
96
96
|
onChange: handleChange,
|
|
97
97
|
className: classes.root,
|
|
98
98
|
inputProps: {
|
|
99
|
-
'aria-label': label
|
|
99
|
+
'aria-label': label,
|
|
100
|
+
name: 'select_row'
|
|
100
101
|
},
|
|
101
102
|
onKeyDown: handleKeyDown,
|
|
102
103
|
indeterminate: isIndeterminate,
|
|
@@ -50,13 +50,16 @@ const GridHeaderCheckbox = exports.GridHeaderCheckbox = (0, _forwardRef.forwardR
|
|
|
50
50
|
return selection;
|
|
51
51
|
}
|
|
52
52
|
return selection.filter(id => {
|
|
53
|
+
if (rootProps.keepNonExistentRowsSelected) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
53
56
|
// The row might have been deleted
|
|
54
57
|
if (!apiRef.current.getRow(id)) {
|
|
55
58
|
return false;
|
|
56
59
|
}
|
|
57
60
|
return rootProps.isRowSelectable(apiRef.current.getRowParams(id));
|
|
58
61
|
});
|
|
59
|
-
}, [apiRef, rootProps.isRowSelectable, selection]);
|
|
62
|
+
}, [apiRef, rootProps.isRowSelectable, selection, rootProps.keepNonExistentRowsSelected]);
|
|
60
63
|
|
|
61
64
|
// All the rows that could be selected / unselected by toggling this checkbox
|
|
62
65
|
const selectionCandidates = React.useMemo(() => {
|
|
@@ -109,7 +112,8 @@ const GridHeaderCheckbox = exports.GridHeaderCheckbox = (0, _forwardRef.forwardR
|
|
|
109
112
|
onChange: handleChange,
|
|
110
113
|
className: classes.root,
|
|
111
114
|
inputProps: {
|
|
112
|
-
'aria-label': label
|
|
115
|
+
'aria-label': label,
|
|
116
|
+
name: 'select_all_rows'
|
|
113
117
|
},
|
|
114
118
|
tabIndex: tabIndex,
|
|
115
119
|
onKeyDown: handleKeyDown,
|
|
@@ -12,6 +12,7 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
14
14
|
var _utils = require("@mui/utils");
|
|
15
|
+
var _fastMemo = require("@mui/x-internals/fastMemo");
|
|
15
16
|
var _forwardRef = require("@mui/x-internals/forwardRef");
|
|
16
17
|
var _GridRootStyles = require("./GridRootStyles");
|
|
17
18
|
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
@@ -19,8 +20,10 @@ var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiCont
|
|
|
19
20
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
20
21
|
var _gridClasses = require("../../constants/gridClasses");
|
|
21
22
|
var _densitySelector = require("../../hooks/features/density/densitySelector");
|
|
23
|
+
var _GridHeader = require("../GridHeader");
|
|
24
|
+
var _base = require("../base");
|
|
22
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
23
|
-
const _excluded = ["className"];
|
|
26
|
+
const _excluded = ["className", "children"];
|
|
24
27
|
const useUtilityClasses = (ownerState, density) => {
|
|
25
28
|
const {
|
|
26
29
|
autoHeight,
|
|
@@ -32,10 +35,11 @@ const useUtilityClasses = (ownerState, density) => {
|
|
|
32
35
|
};
|
|
33
36
|
return (0, _utils.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
34
37
|
};
|
|
35
|
-
const GridRoot =
|
|
38
|
+
const GridRoot = (0, _forwardRef.forwardRef)(function GridRoot(props, ref) {
|
|
36
39
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
37
40
|
const {
|
|
38
|
-
className
|
|
41
|
+
className,
|
|
42
|
+
children
|
|
39
43
|
} = props,
|
|
40
44
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
41
45
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
@@ -53,11 +57,14 @@ const GridRoot = exports.GridRoot = (0, _forwardRef.forwardRef)(function GridRoo
|
|
|
53
57
|
if (!mountedState) {
|
|
54
58
|
return null;
|
|
55
59
|
}
|
|
56
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
60
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridRootStyles.GridRootStyles, (0, _extends2.default)({
|
|
57
61
|
className: (0, _clsx.default)(classes.root, className),
|
|
58
62
|
ownerState: ownerState
|
|
59
63
|
}, other, {
|
|
60
|
-
ref: handleRef
|
|
64
|
+
ref: handleRef,
|
|
65
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeader.GridHeader, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridBody, {
|
|
66
|
+
children: children
|
|
67
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridFooterPlaceholder, {})]
|
|
61
68
|
}));
|
|
62
69
|
});
|
|
63
70
|
process.env.NODE_ENV !== "production" ? GridRoot.propTypes = {
|
|
@@ -69,4 +76,5 @@ process.env.NODE_ENV !== "production" ? GridRoot.propTypes = {
|
|
|
69
76
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
70
77
|
*/
|
|
71
78
|
sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
|
|
72
|
-
} : void 0;
|
|
79
|
+
} : void 0;
|
|
80
|
+
const MemoizedGridRoot = exports.GridRoot = (0, _fastMemo.fastMemo)(GridRoot);
|
|
@@ -30,17 +30,17 @@ function GridFilterInputValue(props) {
|
|
|
30
30
|
} = props,
|
|
31
31
|
others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
32
32
|
const filterTimeout = (0, _useTimeout.useTimeout)();
|
|
33
|
-
const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value
|
|
33
|
+
const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
|
|
34
34
|
const [applying, setIsApplying] = React.useState(false);
|
|
35
35
|
const id = (0, _utils.unstable_useId)();
|
|
36
36
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
37
37
|
const onFilterChange = React.useCallback(event => {
|
|
38
|
-
const value = sanitizeFilterItemValue(event.target.value
|
|
38
|
+
const value = sanitizeFilterItemValue(event.target.value);
|
|
39
39
|
setFilterValueState(value);
|
|
40
40
|
setIsApplying(true);
|
|
41
41
|
filterTimeout.start(rootProps.filterDebounceMs, () => {
|
|
42
42
|
const newItem = (0, _extends2.default)({}, item, {
|
|
43
|
-
value,
|
|
43
|
+
value: type === 'number' && !Number.isNaN(Number(value)) ? Number(value) : value,
|
|
44
44
|
fromInput: id
|
|
45
45
|
});
|
|
46
46
|
applyValue(newItem);
|
|
@@ -50,14 +50,14 @@ function GridFilterInputValue(props) {
|
|
|
50
50
|
React.useEffect(() => {
|
|
51
51
|
const itemPlusTag = item;
|
|
52
52
|
if (itemPlusTag.fromInput !== id || item.value == null) {
|
|
53
|
-
setFilterValueState(sanitizeFilterItemValue(item.value
|
|
53
|
+
setFilterValueState(sanitizeFilterItemValue(item.value));
|
|
54
54
|
}
|
|
55
|
-
}, [id, item
|
|
55
|
+
}, [id, item]);
|
|
56
56
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseTextField, (0, _extends2.default)({
|
|
57
57
|
id: id,
|
|
58
58
|
label: apiRef.current.getLocaleText('filterPanelInputLabel'),
|
|
59
59
|
placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),
|
|
60
|
-
value: filterValueState
|
|
60
|
+
value: filterValueState ?? '',
|
|
61
61
|
onChange: onFilterChange,
|
|
62
62
|
variant: variant,
|
|
63
63
|
type: type || 'text',
|
|
@@ -79,13 +79,10 @@ function GridFilterInputValue(props) {
|
|
|
79
79
|
inputRef: focusElementRef
|
|
80
80
|
}, others, rootProps.slotProps?.baseTextField));
|
|
81
81
|
}
|
|
82
|
-
function sanitizeFilterItemValue(value
|
|
82
|
+
function sanitizeFilterItemValue(value) {
|
|
83
83
|
if (value == null || value === '') {
|
|
84
84
|
return undefined;
|
|
85
85
|
}
|
|
86
|
-
if (type === 'number') {
|
|
87
|
-
return Number(value);
|
|
88
|
-
}
|
|
89
86
|
return String(value);
|
|
90
87
|
}
|
|
91
88
|
process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
|
|
@@ -29,6 +29,9 @@ const Scrollbar = (0, _system.styled)('div')({
|
|
|
29
29
|
position: 'absolute',
|
|
30
30
|
display: 'inline-block',
|
|
31
31
|
zIndex: 6,
|
|
32
|
+
'&:hover': {
|
|
33
|
+
zIndex: 7
|
|
34
|
+
},
|
|
32
35
|
// In macOS Safari and Gnome Web, scrollbars are overlaid and don't affect the layout. So we consider
|
|
33
36
|
// their size to be 0px throughout all the calculations, but the floating scrollbar container does need
|
|
34
37
|
// to appear and have a real size. We set it to 14px because it seems like an acceptable value and we
|
|
@@ -110,19 +113,15 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forw
|
|
|
110
113
|
(0, _useOnMount.useOnMount)(() => {
|
|
111
114
|
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
112
115
|
const scrollbar = scrollbarRef.current;
|
|
113
|
-
|
|
114
|
-
capture: true
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
const options = {
|
|
117
|
+
capture: true,
|
|
118
|
+
passive: true
|
|
119
|
+
};
|
|
120
|
+
scroller.addEventListener('scroll', onScrollerScroll, options);
|
|
121
|
+
scrollbar.addEventListener('scroll', onScrollbarScroll, options);
|
|
119
122
|
return () => {
|
|
120
|
-
scroller.removeEventListener('scroll', onScrollerScroll,
|
|
121
|
-
|
|
122
|
-
});
|
|
123
|
-
scrollbar.removeEventListener('scroll', onScrollbarScroll, {
|
|
124
|
-
capture: true
|
|
125
|
-
});
|
|
123
|
+
scroller.removeEventListener('scroll', onScrollerScroll, options);
|
|
124
|
+
scrollbar.removeEventListener('scroll', onScrollbarScroll, options);
|
|
126
125
|
};
|
|
127
126
|
});
|
|
128
127
|
React.useEffect(() => {
|
|
@@ -106,10 +106,10 @@ function GridVirtualScroller(props) {
|
|
|
106
106
|
virtualScroller: virtualScroller
|
|
107
107
|
})
|
|
108
108
|
})]
|
|
109
|
-
})), dimensions.
|
|
110
|
-
position: "vertical"
|
|
111
|
-
}, getScrollbarVerticalProps())), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
|
|
109
|
+
})), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
|
|
112
110
|
position: "horizontal"
|
|
113
|
-
}, getScrollbarHorizontalProps())),
|
|
111
|
+
}, getScrollbarHorizontalProps())), dimensions.hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
|
|
112
|
+
position: "vertical"
|
|
113
|
+
}, getScrollbarVerticalProps())), props.children]
|
|
114
114
|
}));
|
|
115
115
|
}
|
|
@@ -8,7 +8,7 @@ exports.useGridRegisterPipeApplier = void 0;
|
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _useFirstRender = require("../../utils/useFirstRender");
|
|
10
10
|
const useGridRegisterPipeApplier = (apiRef, group, callback) => {
|
|
11
|
-
const cleanup = React.useRef();
|
|
11
|
+
const cleanup = React.useRef(null);
|
|
12
12
|
const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);
|
|
13
13
|
const registerPreProcessor = React.useCallback(() => {
|
|
14
14
|
cleanup.current = apiRef.current.registerPipeApplier(group, id.current, callback);
|
|
@@ -8,7 +8,7 @@ exports.useGridRegisterPipeProcessor = void 0;
|
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _useFirstRender = require("../../utils/useFirstRender");
|
|
10
10
|
const useGridRegisterPipeProcessor = (apiRef, group, callback) => {
|
|
11
|
-
const cleanup = React.useRef();
|
|
11
|
+
const cleanup = React.useRef(null);
|
|
12
12
|
const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);
|
|
13
13
|
const registerPreProcessor = React.useCallback(() => {
|
|
14
14
|
cleanup.current = apiRef.current.registerPipeProcessor(group, id.current, callback);
|
|
@@ -76,8 +76,8 @@ function createPublicAPI(privateApiRef) {
|
|
|
76
76
|
return publicApi;
|
|
77
77
|
}
|
|
78
78
|
function useGridApiInitialization(inputApiRef, props) {
|
|
79
|
-
const publicApiRef = React.useRef();
|
|
80
|
-
const privateApiRef = React.useRef();
|
|
79
|
+
const publicApiRef = React.useRef(null);
|
|
80
|
+
const privateApiRef = React.useRef(null);
|
|
81
81
|
if (!privateApiRef.current) {
|
|
82
82
|
privateApiRef.current = createPrivateAPI(publicApiRef);
|
|
83
83
|
}
|
|
@@ -10,7 +10,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
12
12
|
var _styles = require("@mui/material/styles");
|
|
13
|
-
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
14
13
|
var _utils = require("../../utils");
|
|
15
14
|
var _useGridRootProps = require("../../utils/useGridRootProps");
|
|
16
15
|
var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
|
|
@@ -26,6 +25,8 @@ var _GridScrollbarFillerCell = require("../../../components/GridScrollbarFillerC
|
|
|
26
25
|
var _getPinnedCellOffset = require("../../../internals/utils/getPinnedCellOffset");
|
|
27
26
|
var _GridColumnHeaderSeparator = require("../../../components/columnHeaders/GridColumnHeaderSeparator");
|
|
28
27
|
var _gridClasses = require("../../../constants/gridClasses");
|
|
28
|
+
var _cellBorderUtils = require("../../../utils/cellBorderUtils");
|
|
29
|
+
var _constants = require("../../../internals/constants");
|
|
29
30
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
30
31
|
const GridColumnHeaderRow = exports.GridColumnHeaderRow = (0, _styles.styled)('div', {
|
|
31
32
|
name: 'MuiDataGrid',
|
|
@@ -52,10 +53,8 @@ const useGridColumnHeaders = props => {
|
|
|
52
53
|
const [dragCol, setDragCol] = React.useState('');
|
|
53
54
|
const [resizeCol, setResizeCol] = React.useState('');
|
|
54
55
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
55
|
-
const isRtl = (0, _RtlProvider.useRtl)();
|
|
56
56
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
57
57
|
const dimensions = (0, _utils.useGridSelector)(apiRef, _dimensions.gridDimensionsSelector);
|
|
58
|
-
const hasColumnVirtualization = (0, _utils.useGridSelector)(apiRef, _virtualization.gridVirtualizationColumnEnabledSelector);
|
|
59
58
|
const columnGroupsModel = (0, _utils.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridColumnGroupsUnwrappedModelSelector);
|
|
60
59
|
const columnPositions = (0, _utils.useGridSelector)(apiRef, _columns.gridColumnPositionsSelector);
|
|
61
60
|
const renderContext = (0, _utils.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
|
|
@@ -92,18 +91,10 @@ const useGridColumnHeaders = props => {
|
|
|
92
91
|
// Helper for computation common between getColumnHeaders and getColumnGroupHeaders
|
|
93
92
|
const getColumnsToRender = params => {
|
|
94
93
|
const {
|
|
95
|
-
renderContext: currentContext = renderContext
|
|
96
|
-
maxLastColumn = visibleColumns.length
|
|
94
|
+
renderContext: currentContext = renderContext
|
|
97
95
|
} = params || {};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (!rootProps.disableVirtualization && !hasColumnVirtualization) {
|
|
101
|
-
firstColumnToRender = 0;
|
|
102
|
-
lastColumnToRender = maxLastColumn;
|
|
103
|
-
} else {
|
|
104
|
-
firstColumnToRender = currentContext.firstColumnIndex;
|
|
105
|
-
lastColumnToRender = currentContext.lastColumnIndex;
|
|
106
|
-
}
|
|
96
|
+
const firstColumnToRender = currentContext.firstColumnIndex;
|
|
97
|
+
const lastColumnToRender = currentContext.lastColumnIndex;
|
|
107
98
|
const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
|
|
108
99
|
return {
|
|
109
100
|
renderedColumns,
|
|
@@ -112,7 +103,7 @@ const useGridColumnHeaders = props => {
|
|
|
112
103
|
};
|
|
113
104
|
};
|
|
114
105
|
const getFillers = (params, children, leftOverflow, borderBottom = false) => {
|
|
115
|
-
const isPinnedRight = params?.position ===
|
|
106
|
+
const isPinnedRight = params?.position === _constants.PinnedColumnPosition.RIGHT;
|
|
116
107
|
const isNotPinned = params?.position === undefined;
|
|
117
108
|
const hasScrollbarFiller = pinnedColumns.right.length > 0 && isPinnedRight || pinnedColumns.right.length === 0 && isNotPinned;
|
|
118
109
|
const leftOffsetWidth = offsetLeft - leftOverflow;
|
|
@@ -133,33 +124,6 @@ const useGridColumnHeaders = props => {
|
|
|
133
124
|
})]
|
|
134
125
|
});
|
|
135
126
|
};
|
|
136
|
-
const getCellOffsetStyle = ({
|
|
137
|
-
pinnedPosition,
|
|
138
|
-
columnIndex,
|
|
139
|
-
computedWidth
|
|
140
|
-
}) => {
|
|
141
|
-
let style;
|
|
142
|
-
const isLeftPinned = pinnedPosition === _columns.GridPinnedColumnPosition.LEFT;
|
|
143
|
-
const isRightPinned = pinnedPosition === _columns.GridPinnedColumnPosition.RIGHT;
|
|
144
|
-
if (isLeftPinned || isRightPinned) {
|
|
145
|
-
const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, computedWidth, columnIndex, columnPositions, dimensions);
|
|
146
|
-
let side = isLeftPinned ? 'left' : 'right';
|
|
147
|
-
if (isRtl) {
|
|
148
|
-
side = isLeftPinned ? 'right' : 'left';
|
|
149
|
-
}
|
|
150
|
-
if (pinnedPosition === 'left') {
|
|
151
|
-
style = {
|
|
152
|
-
[side]: pinnedOffset
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
if (pinnedPosition === 'right') {
|
|
156
|
-
style = {
|
|
157
|
-
[side]: pinnedOffset
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return style;
|
|
162
|
-
};
|
|
163
127
|
const getColumnHeaders = (params, other = {}) => {
|
|
164
128
|
const {
|
|
165
129
|
renderedColumns,
|
|
@@ -174,14 +138,15 @@ const useGridColumnHeaders = props => {
|
|
|
174
138
|
const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === colDef.field;
|
|
175
139
|
const open = columnMenuState.open && columnMenuState.field === colDef.field;
|
|
176
140
|
const pinnedPosition = params?.position;
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
computedWidth: colDef.computedWidth
|
|
181
|
-
});
|
|
182
|
-
const siblingWithBorderingSeparator = pinnedPosition === _columns.GridPinnedColumnPosition.RIGHT ? renderedColumns[i - 1] : renderedColumns[i + 1];
|
|
141
|
+
const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
|
|
142
|
+
const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, colDef.computedWidth, columnIndex, columnPositions, dimensions.columnsTotalWidth, scrollbarWidth);
|
|
143
|
+
const siblingWithBorderingSeparator = pinnedPosition === _constants.PinnedColumnPosition.RIGHT ? renderedColumns[i - 1] : renderedColumns[i + 1];
|
|
183
144
|
const isSiblingFocused = siblingWithBorderingSeparator ? columnHeaderFocus !== null && columnHeaderFocus.field === siblingWithBorderingSeparator.field : false;
|
|
184
145
|
const isLastUnpinned = columnIndex + 1 === columnPositions.length - pinnedColumns.right.length;
|
|
146
|
+
const indexInSection = i;
|
|
147
|
+
const sectionLength = renderedColumns.length;
|
|
148
|
+
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
|
|
149
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
185
150
|
columns.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderItem.GridColumnHeaderItem, (0, _extends2.default)({}, sortColumnLookup[colDef.field], {
|
|
186
151
|
columnMenuOpen: open,
|
|
187
152
|
filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,
|
|
@@ -194,12 +159,11 @@ const useGridColumnHeaders = props => {
|
|
|
194
159
|
hasFocus: hasFocus,
|
|
195
160
|
tabIndex: tabIndex,
|
|
196
161
|
pinnedPosition: pinnedPosition,
|
|
197
|
-
|
|
198
|
-
indexInSection: i,
|
|
199
|
-
sectionLength: renderedColumns.length,
|
|
200
|
-
gridHasFiller: gridHasFiller,
|
|
162
|
+
pinnedOffset: pinnedOffset,
|
|
201
163
|
isLastUnpinned: isLastUnpinned,
|
|
202
|
-
isSiblingFocused: isSiblingFocused
|
|
164
|
+
isSiblingFocused: isSiblingFocused,
|
|
165
|
+
showLeftBorder: showLeftBorder,
|
|
166
|
+
showRightBorder: showRightBorder
|
|
203
167
|
}, other), colDef.field));
|
|
204
168
|
}
|
|
205
169
|
return getFillers(params, columns, 0);
|
|
@@ -211,18 +175,15 @@ const useGridColumnHeaders = props => {
|
|
|
211
175
|
ownerState: rootProps,
|
|
212
176
|
className: _gridClasses.gridClasses['row--borderBottom'],
|
|
213
177
|
children: [leftRenderContext && getColumnHeaders({
|
|
214
|
-
position:
|
|
215
|
-
renderContext: leftRenderContext
|
|
216
|
-
maxLastColumn: leftRenderContext.lastColumnIndex
|
|
178
|
+
position: _constants.PinnedColumnPosition.LEFT,
|
|
179
|
+
renderContext: leftRenderContext
|
|
217
180
|
}, {
|
|
218
181
|
disableReorder: true
|
|
219
182
|
}), getColumnHeaders({
|
|
220
|
-
renderContext
|
|
221
|
-
maxLastColumn: visibleColumns.length - pinnedColumns.right.length
|
|
183
|
+
renderContext
|
|
222
184
|
}), rightRenderContext && getColumnHeaders({
|
|
223
|
-
position:
|
|
224
|
-
renderContext: rightRenderContext
|
|
225
|
-
maxLastColumn: rightRenderContext.lastColumnIndex
|
|
185
|
+
position: _constants.PinnedColumnPosition.RIGHT,
|
|
186
|
+
renderContext: rightRenderContext
|
|
226
187
|
}, {
|
|
227
188
|
disableReorder: true,
|
|
228
189
|
separatorSide: _GridColumnHeaderSeparator.GridColumnHeaderSeparatorSides.Left
|
|
@@ -281,14 +242,11 @@ const useGridColumnHeaders = props => {
|
|
|
281
242
|
tabIndex
|
|
282
243
|
};
|
|
283
244
|
const pinnedPosition = params.position;
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
columnIndex,
|
|
287
|
-
computedWidth: headerInfo.width
|
|
288
|
-
});
|
|
245
|
+
const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
|
|
246
|
+
const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, headerInfo.width, columnIndex, columnPositions, dimensions.columnsTotalWidth, scrollbarWidth);
|
|
289
247
|
columnIndex += columnFields.length;
|
|
290
248
|
let indexInSection = index;
|
|
291
|
-
if (pinnedPosition ===
|
|
249
|
+
if (pinnedPosition === _constants.PinnedColumnPosition.LEFT) {
|
|
292
250
|
// Group headers can expand to multiple columns, we need to adjust the index
|
|
293
251
|
indexInSection = columnIndex - 1;
|
|
294
252
|
}
|
|
@@ -304,10 +262,9 @@ const useGridColumnHeaders = props => {
|
|
|
304
262
|
hasFocus: hasFocus,
|
|
305
263
|
tabIndex: tabIndex,
|
|
306
264
|
pinnedPosition: pinnedPosition,
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
gridHasFiller: gridHasFiller
|
|
265
|
+
pinnedOffset: pinnedOffset,
|
|
266
|
+
showLeftBorder: (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection),
|
|
267
|
+
showRightBorder: (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, visibleColumnGroupHeader.length, rootProps.showCellVerticalBorder, gridHasFiller)
|
|
311
268
|
}, index);
|
|
312
269
|
});
|
|
313
270
|
return getFillers(params, children, leftOverflow);
|
|
@@ -325,7 +282,7 @@ const useGridColumnHeaders = props => {
|
|
|
325
282
|
children: [leftRenderContext && getColumnGroupHeaders({
|
|
326
283
|
depth,
|
|
327
284
|
params: {
|
|
328
|
-
position:
|
|
285
|
+
position: _constants.PinnedColumnPosition.LEFT,
|
|
329
286
|
renderContext: leftRenderContext,
|
|
330
287
|
maxLastColumn: leftRenderContext.lastColumnIndex
|
|
331
288
|
}
|
|
@@ -337,7 +294,7 @@ const useGridColumnHeaders = props => {
|
|
|
337
294
|
}), rightRenderContext && getColumnGroupHeaders({
|
|
338
295
|
depth,
|
|
339
296
|
params: {
|
|
340
|
-
position:
|
|
297
|
+
position: _constants.PinnedColumnPosition.RIGHT,
|
|
341
298
|
renderContext: rightRenderContext,
|
|
342
299
|
maxLastColumn: rightRenderContext.lastColumnIndex
|
|
343
300
|
}
|
|
@@ -352,11 +309,12 @@ const useGridColumnHeaders = props => {
|
|
|
352
309
|
rightRenderContext,
|
|
353
310
|
pinnedColumns,
|
|
354
311
|
visibleColumns,
|
|
355
|
-
|
|
312
|
+
columnPositions,
|
|
356
313
|
getFillers,
|
|
357
314
|
getColumnHeadersRow,
|
|
358
315
|
getColumnsToRender,
|
|
359
316
|
getColumnGroupHeadersRows,
|
|
317
|
+
getPinnedCellOffset: _getPinnedCellOffset.getPinnedCellOffset,
|
|
360
318
|
isDragging: !!dragCol,
|
|
361
319
|
getInnerProps: () => ({
|
|
362
320
|
role: 'rowgroup'
|
|
@@ -78,7 +78,7 @@ function preventClick(event) {
|
|
|
78
78
|
* is disabled.
|
|
79
79
|
*/
|
|
80
80
|
function useColumnVirtualizationDisabled(apiRef) {
|
|
81
|
-
const promise = React.useRef();
|
|
81
|
+
const promise = React.useRef(undefined);
|
|
82
82
|
const selector = () => (0, _virtualization.gridVirtualizationColumnEnabledSelector)(apiRef);
|
|
83
83
|
const value = (0, _utils2.useGridSelector)(apiRef, selector);
|
|
84
84
|
React.useEffect(() => {
|
|
@@ -193,17 +193,19 @@ const useGridColumnResize = (apiRef, props) => {
|
|
|
193
193
|
// To improve accessibility, the separator has padding on both sides.
|
|
194
194
|
// Clicking inside the padding area should be treated as a click in the separator.
|
|
195
195
|
// This ref stores the offset between the click and the separator.
|
|
196
|
-
const initialOffsetToSeparator = React.useRef();
|
|
197
|
-
const resizeDirection = React.useRef();
|
|
196
|
+
const initialOffsetToSeparator = React.useRef(null);
|
|
197
|
+
const resizeDirection = React.useRef(null);
|
|
198
198
|
const stopResizeEventTimeout = (0, _useTimeout.useTimeout)();
|
|
199
|
-
const touchId = React.useRef();
|
|
199
|
+
const touchId = React.useRef(undefined);
|
|
200
200
|
const updateWidth = newWidth => {
|
|
201
201
|
logger.debug(`Updating width to ${newWidth} for col ${refs.colDef.field}`);
|
|
202
202
|
const prevWidth = refs.columnHeaderElement.offsetWidth;
|
|
203
203
|
const widthDiff = newWidth - prevWidth;
|
|
204
204
|
const columnWidthDiff = newWidth - refs.initialColWidth;
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
if (columnWidthDiff > 0) {
|
|
206
|
+
const newTotalWidth = refs.initialTotalWidth + columnWidthDiff;
|
|
207
|
+
apiRef.current.rootElementRef?.current?.style.setProperty('--DataGrid-rowWidth', `${newTotalWidth}px`);
|
|
208
|
+
}
|
|
207
209
|
refs.colDef.computedWidth = newWidth;
|
|
208
210
|
refs.colDef.width = newWidth;
|
|
209
211
|
refs.colDef.flex = 0;
|
|
@@ -77,7 +77,7 @@ function useGridDimensions(apiRef, props) {
|
|
|
77
77
|
const [savedSize, setSavedSize] = React.useState();
|
|
78
78
|
const debouncedSetSavedSize = React.useMemo(() => (0, _throttle.throttle)(setSavedSize, props.resizeThrottleMs), [props.resizeThrottleMs]);
|
|
79
79
|
React.useEffect(() => debouncedSetSavedSize.clear, [debouncedSetSavedSize]);
|
|
80
|
-
const previousSize = React.useRef();
|
|
80
|
+
const previousSize = React.useRef(undefined);
|
|
81
81
|
const getRootDimensions = () => apiRef.current.state.dimensions;
|
|
82
82
|
const setDimensions = (0, _utils.unstable_useEventCallback)(dimensions => {
|
|
83
83
|
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
@@ -29,7 +29,7 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
29
29
|
const [rowModesModel, setRowModesModel] = React.useState({});
|
|
30
30
|
const rowModesModelRef = React.useRef(rowModesModel);
|
|
31
31
|
const prevRowModesModel = React.useRef({});
|
|
32
|
-
const focusTimeout = React.useRef();
|
|
32
|
+
const focusTimeout = React.useRef(undefined);
|
|
33
33
|
const nextFocusedCell = React.useRef(null);
|
|
34
34
|
const {
|
|
35
35
|
processRowUpdate,
|
|
@@ -52,7 +52,7 @@ const useGridPrintExport = (apiRef, props) => {
|
|
|
52
52
|
const previousGridState = React.useRef(null);
|
|
53
53
|
const previousColumnVisibility = React.useRef({});
|
|
54
54
|
const previousRows = React.useRef([]);
|
|
55
|
-
const previousVirtualizationState = React.useRef();
|
|
55
|
+
const previousVirtualizationState = React.useRef(null);
|
|
56
56
|
React.useEffect(() => {
|
|
57
57
|
doc.current = (0, _utils.unstable_ownerDocument)(apiRef.current.rootElementRef.current);
|
|
58
58
|
}, [apiRef, hasRootReference]);
|
|
@@ -55,7 +55,12 @@ const gridFilteredDescendantCountLookupSelector = exports.gridFilteredDescendant
|
|
|
55
55
|
* Does not contain the collapsed children.
|
|
56
56
|
* @category Filtering
|
|
57
57
|
*/
|
|
58
|
-
const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows
|
|
58
|
+
const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, _gridRowsSelector.gridRowMaximumTreeDepthSelector, gridFilterModelSelector, gridQuickFilterValuesSelector, (visibleRowsLookup, sortedRows, maxDepth, filterModel, quickFilterValues) => {
|
|
59
|
+
if (maxDepth < 2 && !filterModel.items.length && !quickFilterValues?.length) {
|
|
60
|
+
return sortedRows;
|
|
61
|
+
}
|
|
62
|
+
return sortedRows.filter(row => visibleRowsLookup[row.id] !== false);
|
|
63
|
+
});
|
|
59
64
|
|
|
60
65
|
/**
|
|
61
66
|
* Get the id of the rows accessible after the filtering process.
|