@mui/x-data-grid 7.0.0-beta.5 → 7.0.0-beta.7
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 +252 -50
- package/DataGrid/DataGrid.js +44 -0
- package/DataGrid/useDataGridComponent.js +3 -0
- package/DataGrid/useDataGridProps.js +3 -2
- package/components/GridColumnHeaders.d.ts +1 -2
- package/components/GridColumnHeaders.js +6 -17
- package/components/GridHeaders.js +1 -4
- package/components/GridPagination.js +2 -7
- package/components/GridPinnedRows.d.ts +1 -2
- package/components/GridRow.d.ts +1 -1
- package/components/GridRow.js +9 -26
- package/components/GridScrollArea.d.ts +10 -0
- package/components/GridScrollArea.js +150 -0
- package/components/cell/GridCell.d.ts +7 -2
- package/components/cell/GridCell.js +14 -10
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +18 -8
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +21 -6
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
- package/components/containers/GridRootStyles.js +12 -22
- package/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/components/virtualization/GridVirtualScroller.js +11 -4
- package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
- package/constants/gridClasses.d.ts +6 -32
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -99
- package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
- package/hooks/features/columnResize/columnResizeSelector.js +3 -0
- package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
- package/hooks/features/columnResize/columnResizeState.js +1 -0
- package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
- package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
- package/hooks/features/columnResize/index.d.ts +3 -0
- package/hooks/features/columnResize/index.js +3 -0
- package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
- package/hooks/features/columnResize/useGridColumnResize.js +563 -0
- package/hooks/features/columns/gridColumnsUtils.js +4 -1
- package/hooks/features/dimensions/useGridDimensions.js +5 -5
- package/hooks/features/editing/useGridCellEditing.js +21 -2
- package/hooks/features/export/useGridPrintExport.js +8 -7
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +6 -0
- package/hooks/features/headerFiltering/useGridHeaderFiltering.js +30 -7
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +1 -0
- package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
- package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
- package/hooks/features/pagination/gridPaginationSelector.js +8 -2
- package/hooks/features/pagination/useGridPagination.d.ts +1 -6
- package/hooks/features/pagination/useGridPagination.js +9 -157
- package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
- package/hooks/features/pagination/useGridPaginationModel.js +170 -0
- package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
- package/hooks/features/pagination/useGridRowCount.js +97 -0
- package/hooks/features/rows/useGridParamsApi.js +6 -10
- package/hooks/features/scroll/useGridScroll.js +1 -1
- package/hooks/features/sorting/useGridSorting.js +2 -2
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
- package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
- package/hooks/features/virtualization/useGridVirtualScroller.js +6 -0
- package/hooks/utils/useLazyRef.d.ts +1 -2
- package/hooks/utils/useLazyRef.js +1 -11
- package/hooks/utils/useOnMount.d.ts +1 -2
- package/hooks/utils/useOnMount.js +1 -7
- package/hooks/utils/useTimeout.d.ts +1 -11
- package/hooks/utils/useTimeout.js +1 -36
- package/index.js +1 -1
- package/internals/index.d.ts +2 -2
- package/internals/index.js +2 -2
- package/internals/utils/getPinnedCellOffset.d.ts +3 -0
- package/internals/utils/getPinnedCellOffset.js +17 -0
- package/joy/joySlots.js +13 -52
- package/locales/jaJP.js +3 -4
- package/material/index.js +0 -2
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridCoreApi.d.ts +1 -5
- package/models/api/gridInfiniteLoaderApi.d.ts +6 -0
- package/models/api/gridInfiniteLoaderApi.js +1 -0
- package/models/events/gridEventLookup.d.ts +6 -0
- package/models/gridHeaderFilteringModel.d.ts +1 -0
- package/models/gridSlotsComponent.d.ts +0 -5
- package/models/gridStateCommunity.d.ts +2 -0
- package/models/params/gridScrollParams.d.ts +5 -3
- package/models/props/DataGridProps.d.ts +35 -1
- package/modern/DataGrid/DataGrid.js +44 -0
- package/modern/DataGrid/useDataGridComponent.js +3 -0
- package/modern/DataGrid/useDataGridProps.js +3 -2
- package/modern/components/GridColumnHeaders.js +6 -17
- package/modern/components/GridHeaders.js +1 -4
- package/modern/components/GridPagination.js +2 -4
- package/modern/components/GridRow.js +9 -26
- package/modern/components/GridScrollArea.js +150 -0
- package/modern/components/cell/GridCell.js +14 -10
- package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
- package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
- package/modern/components/containers/GridRootStyles.js +12 -22
- package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/modern/components/virtualization/GridVirtualScroller.js +11 -4
- package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
- package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
- package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
- package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
- package/modern/hooks/features/columnResize/index.js +3 -0
- package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
- package/modern/hooks/features/columns/gridColumnsUtils.js +4 -1
- package/modern/hooks/features/dimensions/useGridDimensions.js +5 -5
- package/modern/hooks/features/editing/useGridCellEditing.js +21 -2
- package/modern/hooks/features/export/useGridPrintExport.js +8 -7
- package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
- package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
- package/modern/hooks/features/index.js +1 -0
- package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
- package/modern/hooks/features/pagination/useGridPagination.js +8 -149
- package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
- package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
- package/modern/hooks/features/rows/useGridParamsApi.js +6 -10
- package/modern/hooks/features/scroll/useGridScroll.js +1 -1
- package/modern/hooks/features/sorting/useGridSorting.js +2 -2
- package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +5 -0
- package/modern/hooks/utils/useLazyRef.js +1 -11
- package/modern/hooks/utils/useOnMount.js +1 -7
- package/modern/hooks/utils/useTimeout.js +1 -36
- package/modern/index.js +1 -1
- package/modern/internals/index.js +2 -2
- package/modern/internals/utils/getPinnedCellOffset.js +17 -0
- package/modern/joy/joySlots.js +11 -50
- package/modern/locales/jaJP.js +3 -4
- package/modern/material/index.js +0 -2
- package/modern/models/api/gridInfiniteLoaderApi.js +1 -0
- package/modern/utils/cellBorderUtils.js +8 -0
- package/modern/utils/createSelector.js +12 -20
- package/modern/utils/domUtils.js +144 -0
- package/node/DataGrid/DataGrid.js +44 -0
- package/node/DataGrid/useDataGridComponent.js +3 -0
- package/node/DataGrid/useDataGridProps.js +3 -2
- package/node/components/GridColumnHeaders.js +6 -16
- package/node/components/GridHeaders.js +1 -4
- package/node/components/GridPagination.js +1 -3
- package/node/components/GridRow.js +8 -25
- package/node/components/GridScrollArea.js +158 -0
- package/node/components/cell/GridCell.js +15 -11
- package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
- package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
- package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
- package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
- package/node/components/containers/GridRootStyles.js +12 -22
- package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
- package/node/components/virtualization/GridVirtualScroller.js +11 -4
- package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
- package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
- package/node/hooks/features/columnResize/columnResizeState.js +5 -0
- package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
- package/node/hooks/features/columnResize/index.js +38 -0
- package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
- package/node/hooks/features/columns/gridColumnsUtils.js +4 -1
- package/node/hooks/features/dimensions/useGridDimensions.js +5 -5
- package/node/hooks/features/editing/useGridCellEditing.js +21 -2
- package/node/hooks/features/export/useGridPrintExport.js +8 -7
- package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
- package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
- package/node/hooks/features/index.js +11 -0
- package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
- package/node/hooks/features/pagination/useGridPagination.js +9 -153
- package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
- package/node/hooks/features/pagination/useGridRowCount.js +103 -0
- package/node/hooks/features/rows/useGridParamsApi.js +6 -10
- package/node/hooks/features/scroll/useGridScroll.js +1 -1
- package/node/hooks/features/sorting/useGridSorting.js +2 -2
- package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +5 -0
- package/node/hooks/utils/useLazyRef.js +7 -13
- package/node/hooks/utils/useOnMount.js +8 -10
- package/node/hooks/utils/useTimeout.js +7 -37
- package/node/index.js +1 -1
- package/node/internals/index.js +15 -15
- package/node/internals/utils/getPinnedCellOffset.js +24 -0
- package/node/joy/joySlots.js +11 -50
- package/node/locales/jaJP.js +3 -4
- package/node/material/index.js +0 -2
- package/node/models/api/gridInfiniteLoaderApi.js +5 -0
- package/node/utils/cellBorderUtils.js +16 -0
- package/node/utils/createSelector.js +14 -23
- package/node/utils/domUtils.js +155 -0
- package/package.json +2 -2
- package/utils/cellBorderUtils.d.ts +3 -0
- package/utils/cellBorderUtils.js +8 -0
- package/utils/createSelector.d.ts +0 -1
- package/utils/createSelector.js +12 -22
- package/utils/domUtils.d.ts +14 -1
- package/utils/domUtils.js +147 -0
- package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
- package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
- package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
- package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
|
@@ -12,7 +12,6 @@ var _styles = require("@mui/material/styles");
|
|
|
12
12
|
var _useGridSelector = require("../hooks/utils/useGridSelector");
|
|
13
13
|
var _useGridApiContext = require("../hooks/utils/useGridApiContext");
|
|
14
14
|
var _useGridRootProps = require("../hooks/utils/useGridRootProps");
|
|
15
|
-
var _filter = require("../hooks/features/filter");
|
|
16
15
|
var _gridPaginationSelector = require("../hooks/features/pagination/gridPaginationSelector");
|
|
17
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
17
|
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); }
|
|
@@ -40,8 +39,7 @@ const GridPagination = exports.GridPagination = /*#__PURE__*/React.forwardRef(fu
|
|
|
40
39
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
41
40
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
42
41
|
const paginationModel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPaginationSelector.gridPaginationModelSelector);
|
|
43
|
-
const
|
|
44
|
-
const rowCount = React.useMemo(() => rootProps.rowCount ?? visibleTopLevelRowCount ?? 0, [rootProps.rowCount, visibleTopLevelRowCount]);
|
|
42
|
+
const rowCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridPaginationSelector.gridPaginationRowCountSelector);
|
|
45
43
|
const lastPage = React.useMemo(() => {
|
|
46
44
|
const calculatedValue = Math.ceil(rowCount / (paginationModel.pageSize || 1)) - 1;
|
|
47
45
|
return Math.max(0, calculatedValue);
|
|
@@ -29,6 +29,7 @@ var _gridColumnGroupsSelector = require("../hooks/features/columnGrouping/gridCo
|
|
|
29
29
|
var _gridEditingSelectors = require("../hooks/features/editing/gridEditingSelectors");
|
|
30
30
|
var _GridCell = require("./cell/GridCell");
|
|
31
31
|
var _GridScrollbarFillerCell = require("./GridScrollbarFillerCell");
|
|
32
|
+
var _getPinnedCellOffset = require("../internals/utils/getPinnedCellOffset");
|
|
32
33
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
33
34
|
const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
|
|
34
35
|
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); }
|
|
@@ -223,7 +224,8 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
|
|
|
223
224
|
const rowStyle = (0, _extends2.default)({}, styleProp, {
|
|
224
225
|
maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,
|
|
225
226
|
// max-height doesn't support "auto"
|
|
226
|
-
minHeight
|
|
227
|
+
minHeight,
|
|
228
|
+
'--height': typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight
|
|
227
229
|
});
|
|
228
230
|
if (sizes?.spacingTop) {
|
|
229
231
|
const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';
|
|
@@ -258,21 +260,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
|
|
|
258
260
|
}
|
|
259
261
|
const width = cellColSpanInfo?.cellProps.width ?? column.computedWidth;
|
|
260
262
|
const colSpan = cellColSpanInfo?.cellProps.colSpan ?? 1;
|
|
261
|
-
|
|
262
|
-
// FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
|
|
263
|
-
// eslint-disable-next-line default-case
|
|
264
|
-
switch (pinnedPosition) {
|
|
265
|
-
case _GridCell.PinnedPosition.LEFT:
|
|
266
|
-
pinnedOffset = columnPositions[indexRelativeToAllColumns];
|
|
267
|
-
break;
|
|
268
|
-
case _GridCell.PinnedPosition.RIGHT:
|
|
269
|
-
pinnedOffset = dimensions.columnsTotalWidth - columnPositions[indexRelativeToAllColumns] - column.computedWidth + scrollbarWidth;
|
|
270
|
-
break;
|
|
271
|
-
case _GridCell.PinnedPosition.NONE:
|
|
272
|
-
case _GridCell.PinnedPosition.VIRTUAL:
|
|
273
|
-
pinnedOffset = 0;
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
263
|
+
const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(_GridCell.gridPinnedColumnPositionLookup[pinnedPosition], column.computedWidth, indexRelativeToAllColumns, columnPositions, dimensions);
|
|
276
264
|
if (rowNode?.type === 'skeletonRow') {
|
|
277
265
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(slots.skeletonCell, {
|
|
278
266
|
width: width,
|
|
@@ -295,20 +283,17 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
|
|
|
295
283
|
column: column,
|
|
296
284
|
width: width,
|
|
297
285
|
rowId: rowId,
|
|
298
|
-
height: rowHeight,
|
|
299
286
|
align: column.align || 'left',
|
|
300
287
|
colIndex: indexRelativeToAllColumns,
|
|
301
288
|
colSpan: colSpan,
|
|
302
289
|
disableDragEvents: disableDragEvents,
|
|
303
290
|
editCellState: editCellState,
|
|
304
|
-
isNotVisible: cellIsNotVisible
|
|
305
|
-
}, slotProps?.cell, {
|
|
291
|
+
isNotVisible: cellIsNotVisible,
|
|
306
292
|
pinnedOffset: pinnedOffset,
|
|
307
293
|
pinnedPosition: pinnedPosition,
|
|
308
294
|
sectionIndex: indexInSection,
|
|
309
|
-
sectionLength: sectionLength
|
|
310
|
-
|
|
311
|
-
}), column.field);
|
|
295
|
+
sectionLength: sectionLength
|
|
296
|
+
}, slotProps?.cell), column.field);
|
|
312
297
|
};
|
|
313
298
|
|
|
314
299
|
/* Start of rendering */
|
|
@@ -367,9 +352,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
|
|
|
367
352
|
width: emptyCellWidth
|
|
368
353
|
}), rightCells.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
369
354
|
role: "presentation",
|
|
370
|
-
|
|
371
|
-
flex: '1'
|
|
372
|
-
}
|
|
355
|
+
className: _gridClasses.gridClasses.filler
|
|
373
356
|
}), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
|
|
374
357
|
pinnedRight: pinnedColumns.right.length > 0
|
|
375
358
|
})]
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.GridScrollArea = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
12
|
+
var _utils = require("@mui/utils");
|
|
13
|
+
var _system = require("@mui/system");
|
|
14
|
+
var _useGridRootProps = require("../hooks/utils/useGridRootProps");
|
|
15
|
+
var _constants = require("../constants");
|
|
16
|
+
var _useGridApiContext = require("../hooks/utils/useGridApiContext");
|
|
17
|
+
var _useGridApiEventHandler = require("../hooks/utils/useGridApiEventHandler");
|
|
18
|
+
var _useGridSelector = require("../hooks/utils/useGridSelector");
|
|
19
|
+
var _gridDimensionsSelectors = require("../hooks/features/dimensions/gridDimensionsSelectors");
|
|
20
|
+
var _densitySelector = require("../hooks/features/density/densitySelector");
|
|
21
|
+
var _gridColumnsSelector = require("../hooks/features/columns/gridColumnsSelector");
|
|
22
|
+
var _useTimeout = require("../hooks/utils/useTimeout");
|
|
23
|
+
var _gridColumnsUtils = require("../hooks/features/columns/gridColumnsUtils");
|
|
24
|
+
var _fastMemo = require("../utils/fastMemo");
|
|
25
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
|
+
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); }
|
|
27
|
+
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; }
|
|
28
|
+
const CLIFF = 1;
|
|
29
|
+
const SLOP = 1.5;
|
|
30
|
+
const useUtilityClasses = ownerState => {
|
|
31
|
+
const {
|
|
32
|
+
scrollDirection,
|
|
33
|
+
classes
|
|
34
|
+
} = ownerState;
|
|
35
|
+
const slots = {
|
|
36
|
+
root: ['scrollArea', `scrollArea--${scrollDirection}`]
|
|
37
|
+
};
|
|
38
|
+
return (0, _utils.unstable_composeClasses)(slots, _constants.getDataGridUtilityClass, classes);
|
|
39
|
+
};
|
|
40
|
+
const GridScrollAreaRawRoot = (0, _system.styled)('div', {
|
|
41
|
+
name: 'MuiDataGrid',
|
|
42
|
+
slot: 'ScrollArea',
|
|
43
|
+
overridesResolver: (props, styles) => [{
|
|
44
|
+
[`&.${_constants.gridClasses['scrollArea--left']}`]: styles['scrollArea--left']
|
|
45
|
+
}, {
|
|
46
|
+
[`&.${_constants.gridClasses['scrollArea--right']}`]: styles['scrollArea--right']
|
|
47
|
+
}, styles.scrollArea]
|
|
48
|
+
})(() => ({
|
|
49
|
+
position: 'absolute',
|
|
50
|
+
top: 0,
|
|
51
|
+
zIndex: 101,
|
|
52
|
+
width: 20,
|
|
53
|
+
bottom: 0,
|
|
54
|
+
[`&.${_constants.gridClasses['scrollArea--left']}`]: {
|
|
55
|
+
left: 0
|
|
56
|
+
},
|
|
57
|
+
[`&.${_constants.gridClasses['scrollArea--right']}`]: {
|
|
58
|
+
right: 0
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
function GridScrollAreaRaw(props) {
|
|
62
|
+
const {
|
|
63
|
+
scrollDirection
|
|
64
|
+
} = props;
|
|
65
|
+
const rootRef = React.useRef(null);
|
|
66
|
+
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
67
|
+
const timeout = (0, _useTimeout.useTimeout)();
|
|
68
|
+
const densityFactor = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityFactorSelector);
|
|
69
|
+
const columnsTotalWidth = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridColumnsTotalWidthSelector);
|
|
70
|
+
const dimensions = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridDimensionsSelector);
|
|
71
|
+
const scrollPosition = React.useRef({
|
|
72
|
+
left: 0,
|
|
73
|
+
top: 0
|
|
74
|
+
});
|
|
75
|
+
const getCanScrollMore = () => {
|
|
76
|
+
if (scrollDirection === 'left') {
|
|
77
|
+
// Only render if the user has not reached yet the start of the list
|
|
78
|
+
return scrollPosition.current.left > 0;
|
|
79
|
+
}
|
|
80
|
+
if (scrollDirection === 'right') {
|
|
81
|
+
// Only render if the user has not reached yet the end of the list
|
|
82
|
+
const maxScrollLeft = columnsTotalWidth - dimensions.viewportInnerSize.width;
|
|
83
|
+
return scrollPosition.current.left < maxScrollLeft;
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
};
|
|
87
|
+
const [dragging, setDragging] = React.useState(false);
|
|
88
|
+
const [canScrollMore, setCanScrollMore] = React.useState(getCanScrollMore);
|
|
89
|
+
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
90
|
+
const ownerState = (0, _extends2.default)({}, rootProps, {
|
|
91
|
+
scrollDirection
|
|
92
|
+
});
|
|
93
|
+
const classes = useUtilityClasses(ownerState);
|
|
94
|
+
const totalHeaderHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, rootProps.columnHeaderHeight);
|
|
95
|
+
const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
|
|
96
|
+
const style = {
|
|
97
|
+
height: headerHeight,
|
|
98
|
+
top: totalHeaderHeight - headerHeight
|
|
99
|
+
};
|
|
100
|
+
if (scrollDirection === 'left') {
|
|
101
|
+
style.left = dimensions.leftPinnedWidth;
|
|
102
|
+
} else if (scrollDirection === 'right') {
|
|
103
|
+
style.right = dimensions.rightPinnedWidth + (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
|
|
104
|
+
}
|
|
105
|
+
const handleScrolling = newScrollPosition => {
|
|
106
|
+
scrollPosition.current = newScrollPosition;
|
|
107
|
+
setCanScrollMore(getCanScrollMore);
|
|
108
|
+
};
|
|
109
|
+
const handleDragOver = (0, _utils.unstable_useEventCallback)(event => {
|
|
110
|
+
let offset;
|
|
111
|
+
|
|
112
|
+
// Prevents showing the forbidden cursor
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
if (scrollDirection === 'left') {
|
|
115
|
+
offset = event.clientX - rootRef.current.getBoundingClientRect().right;
|
|
116
|
+
} else if (scrollDirection === 'right') {
|
|
117
|
+
offset = Math.max(1, event.clientX - rootRef.current.getBoundingClientRect().left);
|
|
118
|
+
} else {
|
|
119
|
+
throw new Error('MUI X: Wrong drag direction');
|
|
120
|
+
}
|
|
121
|
+
offset = (offset - CLIFF) * SLOP + CLIFF;
|
|
122
|
+
|
|
123
|
+
// Avoid freeze and inertia.
|
|
124
|
+
timeout.start(0, () => {
|
|
125
|
+
apiRef.current.scroll({
|
|
126
|
+
left: scrollPosition.current.left + offset,
|
|
127
|
+
top: scrollPosition.current.top
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
const handleColumnHeaderDragStart = (0, _utils.unstable_useEventCallback)(() => {
|
|
132
|
+
setDragging(true);
|
|
133
|
+
});
|
|
134
|
+
const handleColumnHeaderDragEnd = (0, _utils.unstable_useEventCallback)(() => {
|
|
135
|
+
setDragging(false);
|
|
136
|
+
});
|
|
137
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'scrollPositionChange', handleScrolling);
|
|
138
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleColumnHeaderDragStart);
|
|
139
|
+
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnd', handleColumnHeaderDragEnd);
|
|
140
|
+
if (!dragging || !canScrollMore) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridScrollAreaRawRoot, {
|
|
144
|
+
ref: rootRef,
|
|
145
|
+
className: (0, _clsx.default)(classes.root),
|
|
146
|
+
ownerState: ownerState,
|
|
147
|
+
onDragOver: handleDragOver,
|
|
148
|
+
style: style
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
process.env.NODE_ENV !== "production" ? GridScrollAreaRaw.propTypes = {
|
|
152
|
+
// ----------------------------- Warning --------------------------------
|
|
153
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
154
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
155
|
+
// ----------------------------------------------------------------------
|
|
156
|
+
scrollDirection: _propTypes.default.oneOf(['left', 'right']).isRequired
|
|
157
|
+
} : void 0;
|
|
158
|
+
const GridScrollArea = exports.GridScrollArea = (0, _fastMemo.fastMemo)(GridScrollAreaRaw);
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.PinnedPosition = exports.GridCell = void 0;
|
|
7
|
+
exports.gridPinnedColumnPositionLookup = exports.PinnedPosition = exports.GridCell = void 0;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
@@ -20,8 +20,10 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
|
20
20
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
21
21
|
var _gridFocusStateSelector = require("../../hooks/features/focus/gridFocusStateSelector");
|
|
22
22
|
var _useGridParamsApi = require("../../hooks/features/rows/useGridParamsApi");
|
|
23
|
+
var _cellBorderUtils = require("../../utils/cellBorderUtils");
|
|
24
|
+
var _gridColumnsInterfaces = require("../../hooks/features/columns/gridColumnsInterfaces");
|
|
23
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
|
-
const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "
|
|
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"],
|
|
25
27
|
_excluded2 = ["changeReason", "unstable_updateValueOnRender"];
|
|
26
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); }
|
|
27
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; }
|
|
@@ -32,6 +34,12 @@ let PinnedPosition = exports.PinnedPosition = /*#__PURE__*/function (PinnedPosit
|
|
|
32
34
|
PinnedPosition[PinnedPosition["VIRTUAL"] = 3] = "VIRTUAL";
|
|
33
35
|
return PinnedPosition;
|
|
34
36
|
}({});
|
|
37
|
+
const gridPinnedColumnPositionLookup = exports.gridPinnedColumnPositionLookup = {
|
|
38
|
+
[PinnedPosition.LEFT]: _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT,
|
|
39
|
+
[PinnedPosition.RIGHT]: _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT,
|
|
40
|
+
[PinnedPosition.NONE]: undefined,
|
|
41
|
+
[PinnedPosition.VIRTUAL]: undefined
|
|
42
|
+
};
|
|
35
43
|
const EMPTY_CELL_PARAMS = {
|
|
36
44
|
id: -1,
|
|
37
45
|
field: '__unset__',
|
|
@@ -83,7 +91,6 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
83
91
|
editCellState,
|
|
84
92
|
align,
|
|
85
93
|
colIndex,
|
|
86
|
-
height,
|
|
87
94
|
width,
|
|
88
95
|
className,
|
|
89
96
|
style: styleProp,
|
|
@@ -163,9 +170,9 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
163
170
|
const focusElementRef = React.useRef(null);
|
|
164
171
|
// @ts-expect-error To access `cellSelection` flag as it's a `premium` feature
|
|
165
172
|
const isSelectionMode = rootProps.cellSelection ?? false;
|
|
166
|
-
const
|
|
167
|
-
const showLeftBorder =
|
|
168
|
-
const showRightBorder =
|
|
173
|
+
const position = gridPinnedColumnPositionLookup[pinnedPosition];
|
|
174
|
+
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(position, sectionIndex);
|
|
175
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder);
|
|
169
176
|
const ownerState = {
|
|
170
177
|
align,
|
|
171
178
|
showLeftBorder,
|
|
@@ -212,8 +219,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
212
219
|
};
|
|
213
220
|
}
|
|
214
221
|
const cellStyle = (0, _extends2.default)({
|
|
215
|
-
'--width': `${width}px
|
|
216
|
-
'--height': typeof height === 'number' ? `${height}px` : height
|
|
222
|
+
'--width': `${width}px`
|
|
217
223
|
}, styleProp);
|
|
218
224
|
if (pinnedPosition === PinnedPosition.LEFT) {
|
|
219
225
|
cellStyle.left = pinnedOffset;
|
|
@@ -222,7 +228,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
222
228
|
cellStyle.right = pinnedOffset;
|
|
223
229
|
}
|
|
224
230
|
return cellStyle;
|
|
225
|
-
}, [width,
|
|
231
|
+
}, [width, isNotVisible, styleProp, pinnedOffset, pinnedPosition]);
|
|
226
232
|
React.useEffect(() => {
|
|
227
233
|
if (!hasFocus || cellMode === _models.GridCellModes.Edit) {
|
|
228
234
|
return;
|
|
@@ -332,8 +338,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
|
|
|
332
338
|
isValidating: _propTypes.default.bool,
|
|
333
339
|
value: _propTypes.default.any
|
|
334
340
|
}),
|
|
335
|
-
gridHasScrollX: _propTypes.default.bool.isRequired,
|
|
336
|
-
height: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]).isRequired,
|
|
337
341
|
isNotVisible: _propTypes.default.bool.isRequired,
|
|
338
342
|
onClick: _propTypes.default.func,
|
|
339
343
|
onDoubleClick: _propTypes.default.func,
|
|
@@ -32,6 +32,7 @@ const GridColumnHeadersRoot = (0, _system.styled)('div', {
|
|
|
32
32
|
overridesResolver: (props, styles) => styles.columnHeaders
|
|
33
33
|
})({
|
|
34
34
|
display: 'flex',
|
|
35
|
+
flexDirection: 'column',
|
|
35
36
|
borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
|
|
36
37
|
borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
|
|
37
38
|
});
|
|
@@ -15,6 +15,7 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
|
15
15
|
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
16
16
|
var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
|
|
17
17
|
var _domUtils = require("../../utils/domUtils");
|
|
18
|
+
var _cellBorderUtils = require("../../utils/cellBorderUtils");
|
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
20
|
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); }
|
|
20
21
|
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; }
|
|
@@ -23,11 +24,13 @@ const useUtilityClasses = ownerState => {
|
|
|
23
24
|
classes,
|
|
24
25
|
headerAlign,
|
|
25
26
|
isDragging,
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
showLeftBorder,
|
|
28
|
+
showRightBorder,
|
|
29
|
+
groupId,
|
|
30
|
+
pinnedPosition
|
|
28
31
|
} = ownerState;
|
|
29
32
|
const slots = {
|
|
30
|
-
root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving',
|
|
33
|
+
root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight'],
|
|
31
34
|
draggableContainer: ['columnHeaderDraggableContainer'],
|
|
32
35
|
titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'],
|
|
33
36
|
titleContainerContent: ['columnHeaderTitleContainerContent']
|
|
@@ -45,7 +48,11 @@ function GridColumnGroupHeader(props) {
|
|
|
45
48
|
colIndex,
|
|
46
49
|
hasFocus,
|
|
47
50
|
tabIndex,
|
|
48
|
-
isLastColumn
|
|
51
|
+
isLastColumn,
|
|
52
|
+
pinnedPosition,
|
|
53
|
+
style,
|
|
54
|
+
indexInSection,
|
|
55
|
+
sectionLength
|
|
49
56
|
} = props;
|
|
50
57
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
51
58
|
const headerCellRef = React.useRef(null);
|
|
@@ -72,10 +79,12 @@ function GridColumnGroupHeader(props) {
|
|
|
72
79
|
if (groupId && render) {
|
|
73
80
|
headerComponent = render(renderParams);
|
|
74
81
|
}
|
|
75
|
-
const
|
|
82
|
+
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
|
|
83
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
|
|
76
84
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
77
85
|
classes: rootProps.classes,
|
|
78
|
-
|
|
86
|
+
showLeftBorder,
|
|
87
|
+
showRightBorder,
|
|
79
88
|
headerAlign,
|
|
80
89
|
depth,
|
|
81
90
|
isDragging: false
|
|
@@ -126,11 +135,12 @@ function GridColumnGroupHeader(props) {
|
|
|
126
135
|
width: width,
|
|
127
136
|
columnMenuIconButton: null,
|
|
128
137
|
columnTitleIconButtons: null,
|
|
129
|
-
resizable:
|
|
138
|
+
resizable: true,
|
|
130
139
|
label: label,
|
|
131
140
|
"aria-colspan": fields.length
|
|
132
141
|
// The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
|
|
133
142
|
,
|
|
134
|
-
"data-fields": `|-${fields.join('-|-')}
|
|
143
|
+
"data-fields": `|-${fields.join('-|-')}-|`,
|
|
144
|
+
style: style
|
|
135
145
|
}, mouseEventsHandlers));
|
|
136
146
|
}
|
|
@@ -18,6 +18,7 @@ var _gridClasses = require("../../constants/gridClasses");
|
|
|
18
18
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
19
19
|
var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
|
|
20
20
|
var _domUtils = require("../../utils/domUtils");
|
|
21
|
+
var _cellBorderUtils = require("../../utils/cellBorderUtils");
|
|
21
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
23
|
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); }
|
|
23
24
|
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; }
|
|
@@ -28,14 +29,16 @@ const useUtilityClasses = ownerState => {
|
|
|
28
29
|
isDragging,
|
|
29
30
|
sortDirection,
|
|
30
31
|
showRightBorder,
|
|
31
|
-
|
|
32
|
+
showLeftBorder,
|
|
33
|
+
filterItemsCounter,
|
|
34
|
+
pinnedPosition
|
|
32
35
|
} = ownerState;
|
|
33
36
|
const isColumnSorted = sortDirection != null;
|
|
34
37
|
const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;
|
|
35
38
|
// todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work
|
|
36
39
|
const isColumnNumeric = colDef.type === 'number';
|
|
37
40
|
const slots = {
|
|
38
|
-
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'],
|
|
41
|
+
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 === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight'],
|
|
39
42
|
draggableContainer: ['columnHeaderDraggableContainer'],
|
|
40
43
|
titleContainer: ['columnHeaderTitleContainer'],
|
|
41
44
|
titleContainerContent: ['columnHeaderTitleContainerContent']
|
|
@@ -55,7 +58,11 @@ function GridColumnHeaderItem(props) {
|
|
|
55
58
|
hasFocus,
|
|
56
59
|
tabIndex,
|
|
57
60
|
disableReorder,
|
|
58
|
-
separatorSide
|
|
61
|
+
separatorSide,
|
|
62
|
+
style,
|
|
63
|
+
pinnedPosition,
|
|
64
|
+
indexInSection,
|
|
65
|
+
sectionLength
|
|
59
66
|
} = props;
|
|
60
67
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
61
68
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
@@ -69,9 +76,12 @@ function GridColumnHeaderItem(props) {
|
|
|
69
76
|
if (colDef.renderHeader) {
|
|
70
77
|
headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
|
|
71
78
|
}
|
|
79
|
+
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
|
|
80
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
|
|
72
81
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
73
82
|
classes: rootProps.classes,
|
|
74
|
-
showRightBorder
|
|
83
|
+
showRightBorder,
|
|
84
|
+
showLeftBorder
|
|
75
85
|
});
|
|
76
86
|
const classes = useUtilityClasses(ownerState);
|
|
77
87
|
const publish = React.useCallback(eventName => event => {
|
|
@@ -151,7 +161,7 @@ function GridColumnHeaderItem(props) {
|
|
|
151
161
|
const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
|
|
152
162
|
const elementToFocus = focusableElement || headerCellRef.current;
|
|
153
163
|
elementToFocus?.focus();
|
|
154
|
-
apiRef.current.
|
|
164
|
+
apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
|
|
155
165
|
}
|
|
156
166
|
}, [apiRef, hasFocus]);
|
|
157
167
|
const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({
|
|
@@ -183,7 +193,8 @@ function GridColumnHeaderItem(props) {
|
|
|
183
193
|
"data-field": colDef.field,
|
|
184
194
|
columnMenu: columnMenu,
|
|
185
195
|
draggableContainerProps: draggableEventHandlers,
|
|
186
|
-
columnHeaderSeparatorProps: columnHeaderSeparatorProps
|
|
196
|
+
columnHeaderSeparatorProps: columnHeaderSeparatorProps,
|
|
197
|
+
style: style
|
|
187
198
|
}, mouseEventsHandlers));
|
|
188
199
|
}
|
|
189
200
|
process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
|
|
@@ -198,11 +209,15 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
|
|
|
198
209
|
filterItemsCounter: _propTypes.default.number,
|
|
199
210
|
hasFocus: _propTypes.default.bool,
|
|
200
211
|
headerHeight: _propTypes.default.number.isRequired,
|
|
212
|
+
indexInSection: _propTypes.default.number.isRequired,
|
|
201
213
|
isDragging: _propTypes.default.bool.isRequired,
|
|
202
214
|
isResizing: _propTypes.default.bool.isRequired,
|
|
215
|
+
pinnedPosition: _propTypes.default.oneOf(['left', 'right']),
|
|
216
|
+
sectionLength: _propTypes.default.number.isRequired,
|
|
203
217
|
separatorSide: _propTypes.default.oneOf(['left', 'right']),
|
|
204
218
|
sortDirection: _propTypes.default.oneOf(['asc', 'desc']),
|
|
205
219
|
sortIndex: _propTypes.default.number,
|
|
220
|
+
style: _propTypes.default.object,
|
|
206
221
|
tabIndex: _propTypes.default.oneOf([-1, 0]).isRequired
|
|
207
222
|
} : void 0;
|
|
208
223
|
const Memoized = exports.GridColumnHeaderItem = (0, _fastMemo.fastMemo)(GridColumnHeaderItem);
|
|
@@ -15,7 +15,7 @@ var _GridColumnHeaderTitle = require("./GridColumnHeaderTitle");
|
|
|
15
15
|
var _GridColumnHeaderSeparator = require("./GridColumnHeaderSeparator");
|
|
16
16
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
17
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
-
const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps"];
|
|
18
|
+
const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "style"];
|
|
19
19
|
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); }
|
|
20
20
|
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; }
|
|
21
21
|
const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {
|
|
@@ -40,7 +40,8 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__P
|
|
|
40
40
|
label,
|
|
41
41
|
resizable,
|
|
42
42
|
draggableContainerProps,
|
|
43
|
-
columnHeaderSeparatorProps
|
|
43
|
+
columnHeaderSeparatorProps,
|
|
44
|
+
style
|
|
44
45
|
} = props,
|
|
45
46
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
46
47
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
@@ -63,18 +64,18 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__P
|
|
|
63
64
|
const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
|
|
64
65
|
const elementToFocus = focusableElement || headerCellRef.current;
|
|
65
66
|
elementToFocus?.focus();
|
|
66
|
-
apiRef.current.
|
|
67
|
+
apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
|
|
67
68
|
}
|
|
68
69
|
}, [apiRef, hasFocus]);
|
|
69
70
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
|
|
70
71
|
ref: handleRef,
|
|
71
72
|
className: (0, _clsx.default)(classes.root, headerClassName),
|
|
72
|
-
style: {
|
|
73
|
+
style: (0, _extends2.default)({}, style, {
|
|
73
74
|
height,
|
|
74
75
|
width,
|
|
75
76
|
minWidth: width,
|
|
76
77
|
maxWidth: width
|
|
77
|
-
},
|
|
78
|
+
}),
|
|
78
79
|
role: "columnheader",
|
|
79
80
|
tabIndex: tabIndex,
|
|
80
81
|
"aria-colindex": colIndex + 1,
|
|
@@ -314,14 +314,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
314
314
|
borderBottomStyle: 'solid',
|
|
315
315
|
boxSizing: 'border-box'
|
|
316
316
|
},
|
|
317
|
-
[`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']} .${_gridClasses.gridClasses.columnHeaderTitleContainer}`]: {
|
|
318
|
-
borderBottom: `none`
|
|
319
|
-
},
|
|
320
|
-
[`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']}`]: {
|
|
321
|
-
borderBottomWidth: '1px',
|
|
322
|
-
borderBottomStyle: 'solid',
|
|
323
|
-
boxSizing: 'border-box'
|
|
324
|
-
},
|
|
325
317
|
[`& .${_gridClasses.gridClasses.sortIcon}, & .${_gridClasses.gridClasses.filterIcon}`]: {
|
|
326
318
|
fontSize: 'inherit'
|
|
327
319
|
},
|
|
@@ -345,6 +337,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
345
337
|
[`& .${_gridClasses.gridClasses['columnHeader--moving']}`]: {
|
|
346
338
|
backgroundColor: (t.vars || t).palette.action.hover
|
|
347
339
|
},
|
|
340
|
+
[`& .${_gridClasses.gridClasses['columnHeader--pinnedLeft']}, & .${_gridClasses.gridClasses['columnHeader--pinnedRight']}`]: {
|
|
341
|
+
position: 'sticky',
|
|
342
|
+
zIndex: 4,
|
|
343
|
+
// Should be above the column separator
|
|
344
|
+
background: 'var(--DataGrid-pinnedBackground)'
|
|
345
|
+
},
|
|
348
346
|
[`& .${_gridClasses.gridClasses.columnSeparator}`]: {
|
|
349
347
|
visibility: 'hidden',
|
|
350
348
|
position: 'absolute',
|
|
@@ -435,9 +433,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
435
433
|
[`& .${_gridClasses.gridClasses['container--top']}, & .${_gridClasses.gridClasses['container--bottom']}`]: {
|
|
436
434
|
'[role=row]': {
|
|
437
435
|
background: 'var(--DataGrid-containerBackground)'
|
|
438
|
-
},
|
|
439
|
-
[`.${_gridClasses.gridClasses.pinnedColumnHeaders} [role=row]`]: {
|
|
440
|
-
background: 'var(--DataGrid-pinnedBackground)'
|
|
441
436
|
}
|
|
442
437
|
},
|
|
443
438
|
/* Cell styles */
|
|
@@ -448,8 +443,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
448
443
|
lineHeight: 'calc(var(--height) - 1px)',
|
|
449
444
|
// -1px for the border
|
|
450
445
|
|
|
451
|
-
'--width': '0px',
|
|
452
|
-
'--height': '0px',
|
|
453
446
|
boxSizing: 'border-box',
|
|
454
447
|
borderTop: `1px solid var(--rowBorderColor)`,
|
|
455
448
|
overflow: 'hidden',
|
|
@@ -529,20 +522,16 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
529
522
|
[`.${_gridClasses.gridClasses.withBorderColor}`]: {
|
|
530
523
|
borderColor
|
|
531
524
|
},
|
|
532
|
-
[`& .${_gridClasses.gridClasses['cell--withLeftBorder']}`]: {
|
|
525
|
+
[`& .${_gridClasses.gridClasses['cell--withLeftBorder']}, & .${_gridClasses.gridClasses['columnHeader--withLeftBorder']}`]: {
|
|
533
526
|
borderLeftColor: 'var(--DataGrid-rowBorderColor)',
|
|
534
527
|
borderLeftWidth: '1px',
|
|
535
528
|
borderLeftStyle: 'solid'
|
|
536
529
|
},
|
|
537
|
-
[`& .${_gridClasses.gridClasses['cell--withRightBorder']}`]: {
|
|
530
|
+
[`& .${_gridClasses.gridClasses['cell--withRightBorder']}, & .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
|
|
538
531
|
borderRightColor: 'var(--DataGrid-rowBorderColor)',
|
|
539
532
|
borderRightWidth: '1px',
|
|
540
533
|
borderRightStyle: 'solid'
|
|
541
534
|
},
|
|
542
|
-
[`& .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
|
|
543
|
-
borderRightWidth: '1px',
|
|
544
|
-
borderRightStyle: 'solid'
|
|
545
|
-
},
|
|
546
535
|
[`& .${_gridClasses.gridClasses['cell--flex']}`]: {
|
|
547
536
|
display: 'flex',
|
|
548
537
|
alignItems: 'center',
|
|
@@ -643,12 +632,13 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
643
632
|
borderTop: '1px solid var(--DataGrid-rowBorderColor)'
|
|
644
633
|
},
|
|
645
634
|
[`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}`]: {
|
|
646
|
-
backgroundColor: 'var(--DataGrid-pinnedBackground)'
|
|
647
|
-
},
|
|
648
|
-
[`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}:not(.${_gridClasses.gridClasses['scrollbarFiller--header']})`]: {
|
|
635
|
+
backgroundColor: 'var(--DataGrid-pinnedBackground)',
|
|
649
636
|
position: 'sticky',
|
|
650
637
|
right: 0
|
|
651
638
|
}
|
|
639
|
+
},
|
|
640
|
+
[`& .${_gridClasses.gridClasses.filler}`]: {
|
|
641
|
+
flex: 1
|
|
652
642
|
}
|
|
653
643
|
});
|
|
654
644
|
return gridStyle;
|