@mui/x-data-grid 7.0.0-beta.7 → 7.0.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 +195 -12
- package/DataGrid/DataGrid.js +13 -17
- package/DataGrid/useDataGridProps.js +3 -5
- package/README.md +1 -1
- package/components/GridFooter.js +2 -3
- package/components/GridHeader.js +1 -2
- package/components/GridPagination.d.ts +6 -5
- package/components/GridPagination.js +12 -4
- package/components/GridRow.js +13 -17
- package/components/base/GridFooterPlaceholder.js +1 -2
- package/components/base/GridOverlays.js +3 -6
- package/components/cell/GridActionsCell.js +4 -6
- package/components/cell/GridActionsCellItem.d.ts +8 -25
- package/components/cell/GridActionsCellItem.js +8 -5
- package/components/cell/GridBooleanCell.d.ts +1 -0
- package/components/cell/GridBooleanCell.js +3 -2
- package/components/cell/GridCell.js +7 -8
- package/components/cell/GridEditBooleanCell.js +1 -2
- package/components/cell/GridEditDateCell.js +2 -3
- package/components/cell/GridEditInputCell.js +2 -2
- package/components/cell/GridEditSingleSelectCell.js +5 -8
- package/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -3
- package/components/columnHeaders/GridColumnGroupHeader.js +4 -5
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +2 -3
- package/components/columnHeaders/GridColumnHeaderItem.js +5 -6
- package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -2
- package/components/columnHeaders/GridColumnHeaderTitle.js +2 -3
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +1 -1
- package/components/columnSelection/GridCellCheckboxRenderer.js +3 -5
- package/components/columnSelection/GridHeaderCheckbox.js +1 -2
- package/components/columnsManagement/GridColumnsManagement.js +17 -21
- package/components/containers/GridRoot.js +3 -3
- package/components/menu/GridMenu.js +4 -6
- package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -3
- package/components/panel/GridColumnsPanel.js +1 -2
- package/components/panel/GridPanel.d.ts +1 -10
- package/components/panel/GridPanel.js +1 -2
- package/components/panel/GridPreferencesPanel.js +2 -3
- package/components/panel/filterPanel/GridFilterForm.js +24 -27
- package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
- package/components/panel/filterPanel/GridFilterInputDate.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterInputDate.js +3 -4
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +11 -15
- package/components/panel/filterPanel/GridFilterInputMultipleValue.js +10 -14
- package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +10 -11
- package/components/panel/filterPanel/GridFilterInputValue.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterInputValue.js +5 -7
- package/components/panel/filterPanel/GridFilterPanel.js +5 -9
- package/components/panel/filterPanel/filterPanelUtils.js +1 -1
- package/components/toolbar/GridToolbarColumnsButton.js +3 -5
- package/components/toolbar/GridToolbarDensitySelector.js +8 -10
- package/components/toolbar/GridToolbarExport.js +2 -2
- package/components/toolbar/GridToolbarExportContainer.js +3 -5
- package/components/toolbar/GridToolbarFilterButton.js +3 -5
- package/components/toolbar/GridToolbarQuickFilter.js +4 -5
- package/components/virtualization/GridVirtualScrollerContent.js +1 -2
- package/components/virtualization/GridVirtualScrollerRenderZone.js +1 -2
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +1 -2
- package/hooks/core/useGridApiInitialization.js +4 -6
- package/hooks/features/clipboard/useGridClipboard.js +6 -5
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -16
- package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +4 -8
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +12 -23
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +6 -8
- package/hooks/features/columnMenu/useGridColumnMenuSlots.js +2 -2
- package/hooks/features/columnResize/useGridColumnResize.js +9 -19
- package/hooks/features/columns/gridColumnsSelector.js +1 -2
- package/hooks/features/columns/gridColumnsUtils.d.ts +0 -9
- package/hooks/features/columns/gridColumnsUtils.js +2 -22
- package/hooks/features/columns/useGridColumnSpanning.js +1 -2
- package/hooks/features/columns/useGridColumns.js +11 -19
- package/hooks/features/density/densitySelector.d.ts +4 -2
- package/hooks/features/density/densitySelector.js +8 -2
- package/hooks/features/density/densityState.d.ts +1 -4
- package/hooks/features/density/useGridDensity.d.ts +2 -4
- package/hooks/features/density/useGridDensity.js +21 -29
- package/hooks/features/dimensions/useGridDimensions.js +3 -5
- package/hooks/features/editing/useGridCellEditing.js +4 -6
- package/hooks/features/editing/useGridEditing.js +1 -2
- package/hooks/features/editing/useGridRowEditing.js +4 -6
- package/hooks/features/export/serializers/csvSerializer.d.ts +2 -0
- package/hooks/features/export/serializers/csvSerializer.js +25 -16
- package/hooks/features/export/useGridCsvExport.js +9 -10
- package/hooks/features/export/useGridPrintExport.js +9 -15
- package/hooks/features/export/utils.js +2 -3
- package/hooks/features/filter/gridFilterSelector.js +15 -22
- package/hooks/features/filter/gridFilterUtils.js +10 -16
- package/hooks/features/filter/useGridFilter.js +9 -15
- package/hooks/features/focus/useGridFocus.js +5 -6
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +1 -4
- package/hooks/features/headerFiltering/useGridHeaderFiltering.js +12 -17
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +1 -2
- package/hooks/features/pagination/gridPaginationSelector.js +1 -2
- package/hooks/features/pagination/useGridPagination.js +2 -3
- package/hooks/features/pagination/useGridPaginationModel.js +6 -11
- package/hooks/features/pagination/useGridRowCount.js +3 -6
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +7 -12
- package/hooks/features/rowSelection/useGridRowSelection.js +11 -16
- package/hooks/features/rows/gridRowsSelector.js +11 -19
- package/hooks/features/rows/gridRowsUtils.js +7 -9
- package/hooks/features/rows/useGridParamsApi.js +1 -1
- package/hooks/features/rows/useGridRows.js +4 -13
- package/hooks/features/rows/useGridRowsMeta.js +7 -13
- package/hooks/features/scroll/useGridScroll.js +2 -3
- package/hooks/features/sorting/gridSortingSelector.js +4 -7
- package/hooks/features/sorting/useGridSorting.js +8 -14
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +220 -71
- package/hooks/utils/useGridApiEventHandler.js +5 -10
- package/hooks/utils/useGridNativeEventListener.js +1 -2
- package/index.js +1 -1
- package/internals/index.d.ts +2 -0
- package/internals/index.js +1 -0
- package/internals/utils/useProps.js +1 -2
- package/joy/joySlots.js +7 -13
- package/models/api/gridRowsMetaApi.d.ts +1 -1
- package/models/api/index.d.ts +1 -1
- package/models/api/index.js +0 -1
- package/models/events/gridEventLookup.d.ts +7 -0
- package/models/gridExport.d.ts +6 -0
- package/models/gridStateCommunity.d.ts +1 -0
- package/models/props/DataGridProps.d.ts +23 -27
- package/modern/DataGrid/DataGrid.js +13 -17
- package/modern/DataGrid/useDataGridProps.js +3 -5
- package/modern/components/GridPagination.js +11 -2
- package/modern/components/cell/GridActionsCell.js +1 -1
- package/modern/components/cell/GridActionsCellItem.js +4 -0
- package/modern/components/cell/GridBooleanCell.js +3 -2
- package/modern/components/containers/GridRoot.js +3 -3
- package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
- package/modern/components/toolbar/GridToolbarDensitySelector.js +5 -5
- package/modern/hooks/features/clipboard/useGridClipboard.js +4 -2
- package/modern/hooks/features/columnResize/useGridColumnResize.js +1 -1
- package/modern/hooks/features/columns/gridColumnsUtils.js +0 -19
- package/modern/hooks/features/density/densitySelector.js +8 -2
- package/modern/hooks/features/density/useGridDensity.js +21 -29
- package/modern/hooks/features/editing/useGridCellEditing.js +1 -1
- package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
- package/modern/hooks/features/export/serializers/csvSerializer.js +23 -12
- package/modern/hooks/features/export/useGridCsvExport.js +2 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
- package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -2
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -0
- package/modern/models/api/index.js +0 -1
- package/modern/utils/createSelector.js +1 -1
- package/modern/utils/domUtils.js +1 -1
- package/modern/utils/keyboardUtils.js +1 -1
- package/node/DataGrid/DataGrid.js +13 -17
- package/node/DataGrid/useDataGridProps.js +3 -5
- package/node/components/GridPagination.js +9 -1
- package/node/components/cell/GridActionsCell.js +1 -1
- package/node/components/cell/GridActionsCellItem.js +4 -0
- package/node/components/cell/GridBooleanCell.js +3 -2
- package/node/components/containers/GridRoot.js +2 -2
- package/node/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
- package/node/components/toolbar/GridToolbarDensitySelector.js +4 -4
- package/node/hooks/features/clipboard/useGridClipboard.js +4 -2
- package/node/hooks/features/columnResize/useGridColumnResize.js +1 -1
- package/node/hooks/features/columns/gridColumnsUtils.js +0 -20
- package/node/hooks/features/density/densitySelector.js +9 -3
- package/node/hooks/features/density/useGridDensity.js +22 -30
- package/node/hooks/features/editing/useGridCellEditing.js +1 -1
- package/node/hooks/features/editing/useGridRowEditing.js +1 -1
- package/node/hooks/features/export/serializers/csvSerializer.js +23 -12
- package/node/hooks/features/export/useGridCsvExport.js +2 -1
- package/node/hooks/features/filter/gridFilterUtils.js +1 -1
- package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
- package/node/index.js +1 -1
- package/node/internals/index.js +12 -0
- package/node/models/api/index.js +0 -11
- package/node/utils/createSelector.js +1 -1
- package/node/utils/domUtils.js +1 -1
- package/node/utils/keyboardUtils.js +1 -1
- package/package.json +4 -4
- package/utils/createSelector.js +9 -9
- package/utils/domUtils.js +4 -7
- package/utils/getGridLocalization.js +9 -12
- package/utils/keyboardUtils.js +1 -1
|
@@ -15,7 +15,7 @@ var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
|
15
15
|
var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
16
16
|
var _gridRowsUtils = require("../../hooks/features/rows/gridRowsUtils");
|
|
17
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
-
const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "hasFocus", "tabIndex"];
|
|
18
|
+
const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "hasFocus", "tabIndex", "hideDescendantCount"];
|
|
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 useUtilityClasses = ownerState => {
|
|
@@ -85,6 +85,7 @@ process.env.NODE_ENV !== "production" ? GridBooleanCellRaw.propTypes = {
|
|
|
85
85
|
* If true, the cell is the active element.
|
|
86
86
|
*/
|
|
87
87
|
hasFocus: _propTypes.default.bool.isRequired,
|
|
88
|
+
hideDescendantCount: _propTypes.default.bool,
|
|
88
89
|
/**
|
|
89
90
|
* The grid row id.
|
|
90
91
|
*/
|
|
@@ -113,7 +114,7 @@ process.env.NODE_ENV !== "production" ? GridBooleanCellRaw.propTypes = {
|
|
|
113
114
|
} : void 0;
|
|
114
115
|
const GridBooleanCell = exports.GridBooleanCell = /*#__PURE__*/React.memo(GridBooleanCellRaw);
|
|
115
116
|
const renderBooleanCell = params => {
|
|
116
|
-
if ((0, _gridRowsUtils.isAutoGeneratedRow)(params.rowNode)) {
|
|
117
|
+
if (params.field !== '__row_group_by_columns_group__' && (0, _gridRowsUtils.isAutoGeneratedRow)(params.rowNode)) {
|
|
117
118
|
return '';
|
|
118
119
|
}
|
|
119
120
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridBooleanCell, (0, _extends2.default)({}, params));
|
|
@@ -47,11 +47,11 @@ const GridRoot = exports.GridRoot = /*#__PURE__*/React.forwardRef(function GridR
|
|
|
47
47
|
} = props,
|
|
48
48
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
49
49
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
50
|
-
const
|
|
50
|
+
const density = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensitySelector);
|
|
51
51
|
const rootElementRef = apiRef.current.rootElementRef;
|
|
52
52
|
const handleRef = (0, _utils.unstable_useForkRef)(rootElementRef, ref);
|
|
53
53
|
const ownerState = (0, _extends2.default)({}, rootProps, {
|
|
54
|
-
density
|
|
54
|
+
density
|
|
55
55
|
});
|
|
56
56
|
const classes = useUtilityClasses(ownerState);
|
|
57
57
|
|
|
@@ -107,7 +107,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputBoolean.propTypes = {
|
|
|
107
107
|
focusElementRef: _utils.refType,
|
|
108
108
|
/**
|
|
109
109
|
* It is `true` if the filter either has a value or an operator with no value
|
|
110
|
-
* required is selected (
|
|
110
|
+
* required is selected (for example `isEmpty`)
|
|
111
111
|
*/
|
|
112
112
|
isFilterActive: _propTypes.default.bool,
|
|
113
113
|
item: _propTypes.default.shape({
|
|
@@ -108,7 +108,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputDate.propTypes = {
|
|
|
108
108
|
focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
|
109
109
|
/**
|
|
110
110
|
* It is `true` if the filter either has a value or an operator with no value
|
|
111
|
-
* required is selected (
|
|
111
|
+
* required is selected (for example `isEmpty`)
|
|
112
112
|
*/
|
|
113
113
|
isFilterActive: _propTypes.default.bool,
|
|
114
114
|
item: _propTypes.default.shape({
|
|
@@ -142,7 +142,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputSingleSelect.propTypes =
|
|
|
142
142
|
focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
|
143
143
|
/**
|
|
144
144
|
* It is `true` if the filter either has a value or an operator with no value
|
|
145
|
-
* required is selected (
|
|
145
|
+
* required is selected (for example `isEmpty`)
|
|
146
146
|
*/
|
|
147
147
|
isFilterActive: _propTypes.default.bool,
|
|
148
148
|
item: _propTypes.default.shape({
|
|
@@ -95,7 +95,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
|
|
|
95
95
|
focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
|
96
96
|
/**
|
|
97
97
|
* It is `true` if the filter either has a value or an operator with no value
|
|
98
|
-
* required is selected (
|
|
98
|
+
* required is selected (for example `isEmpty`)
|
|
99
99
|
*/
|
|
100
100
|
isFilterActive: _propTypes.default.bool,
|
|
101
101
|
item: _propTypes.default.shape({
|
|
@@ -30,7 +30,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
|
|
|
30
30
|
const tooltipProps = slotProps.tooltip || {};
|
|
31
31
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
32
32
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
33
|
-
const
|
|
33
|
+
const density = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensitySelector);
|
|
34
34
|
const densityButtonId = (0, _utils.unstable_useId)();
|
|
35
35
|
const densityMenuId = (0, _utils.unstable_useId)();
|
|
36
36
|
const [open, setOpen] = React.useState(false);
|
|
@@ -50,7 +50,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
|
|
|
50
50
|
value: 'comfortable'
|
|
51
51
|
}];
|
|
52
52
|
const startIcon = React.useMemo(() => {
|
|
53
|
-
switch (
|
|
53
|
+
switch (density) {
|
|
54
54
|
case 'compact':
|
|
55
55
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.densityCompactIcon, {});
|
|
56
56
|
case 'comfortable':
|
|
@@ -58,7 +58,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
|
|
|
58
58
|
default:
|
|
59
59
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.densityStandardIcon, {});
|
|
60
60
|
}
|
|
61
|
-
}, [
|
|
61
|
+
}, [density, rootProps]);
|
|
62
62
|
const handleDensitySelectorOpen = event => {
|
|
63
63
|
setOpen(prevOpen => !prevOpen);
|
|
64
64
|
buttonProps.onClick?.(event);
|
|
@@ -85,7 +85,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
|
|
|
85
85
|
}
|
|
86
86
|
const densityElements = densityOptions.map((option, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_MenuItem.default, {
|
|
87
87
|
onClick: () => handleDensityUpdate(option.value),
|
|
88
|
-
selected: option.value ===
|
|
88
|
+
selected: option.value === density,
|
|
89
89
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemIcon.default, {
|
|
90
90
|
children: option.icon
|
|
91
91
|
}), option.label]
|
|
@@ -75,7 +75,8 @@ const useGridClipboard = (apiRef, props) => {
|
|
|
75
75
|
textToCopy = apiRef.current.getDataAsCsv({
|
|
76
76
|
includeHeaders: false,
|
|
77
77
|
// TODO: make it configurable
|
|
78
|
-
delimiter: clipboardCopyCellDelimiter
|
|
78
|
+
delimiter: clipboardCopyCellDelimiter,
|
|
79
|
+
shouldAppendQuotes: false
|
|
79
80
|
});
|
|
80
81
|
} else {
|
|
81
82
|
const focusedCell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
|
|
@@ -83,7 +84,8 @@ const useGridClipboard = (apiRef, props) => {
|
|
|
83
84
|
const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);
|
|
84
85
|
textToCopy = (0, _csvSerializer.serializeCellValue)(cellParams, {
|
|
85
86
|
delimiterCharacter: clipboardCopyCellDelimiter,
|
|
86
|
-
ignoreValueFormatter
|
|
87
|
+
ignoreValueFormatter,
|
|
88
|
+
shouldAppendQuotes: false
|
|
87
89
|
});
|
|
88
90
|
}
|
|
89
91
|
}
|
|
@@ -135,7 +135,7 @@ function excludeOutliers(inputValues, factor) {
|
|
|
135
135
|
const iqr = q3 - q1;
|
|
136
136
|
|
|
137
137
|
// We make a small adjustment if `iqr < 5` for the cases where the IQR is
|
|
138
|
-
// very small (
|
|
138
|
+
// very small (for example zero) due to very close by values in the input data.
|
|
139
139
|
// Otherwise, with an IQR of `0`, anything outside that would be considered
|
|
140
140
|
// an outlier, but it makes more sense visually to allow for this 5px variance
|
|
141
141
|
// rather than showing a cropped cell.
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.applyInitialState = exports.COLUMNS_DIMENSION_PROPERTIES = void 0;
|
|
8
8
|
exports.computeFlexColumnsWidth = computeFlexColumnsWidth;
|
|
9
9
|
exports.createColumnsState = void 0;
|
|
10
|
-
exports.getFirstColumnIndexToRender = getFirstColumnIndexToRender;
|
|
11
10
|
exports.getFirstNonSpannedColumnToRender = getFirstNonSpannedColumnToRender;
|
|
12
11
|
exports.getTotalHeaderHeight = getTotalHeaderHeight;
|
|
13
12
|
exports.hydrateColumnsWidth = void 0;
|
|
@@ -320,25 +319,6 @@ function getFirstNonSpannedColumnToRender({
|
|
|
320
319
|
}
|
|
321
320
|
return firstNonSpannedColumnToRender;
|
|
322
321
|
}
|
|
323
|
-
function getFirstColumnIndexToRender({
|
|
324
|
-
firstColumnIndex,
|
|
325
|
-
minColumnIndex,
|
|
326
|
-
columnBuffer,
|
|
327
|
-
firstRowToRender,
|
|
328
|
-
lastRowToRender,
|
|
329
|
-
apiRef,
|
|
330
|
-
visibleRows
|
|
331
|
-
}) {
|
|
332
|
-
const initialFirstColumnToRender = Math.max(firstColumnIndex - columnBuffer, minColumnIndex);
|
|
333
|
-
const firstColumnToRender = getFirstNonSpannedColumnToRender({
|
|
334
|
-
firstColumnToRender: initialFirstColumnToRender,
|
|
335
|
-
apiRef,
|
|
336
|
-
firstRowToRender,
|
|
337
|
-
lastRowToRender,
|
|
338
|
-
visibleRows
|
|
339
|
-
});
|
|
340
|
-
return firstColumnToRender;
|
|
341
|
-
}
|
|
342
322
|
function getTotalHeaderHeight(apiRef, headerHeight) {
|
|
343
323
|
const densityFactor = (0, _densitySelector.gridDensityFactorSelector)(apiRef);
|
|
344
324
|
const maxDepth = (0, _gridColumnGroupsSelector.gridColumnGroupsHeaderMaxDepthSelector)(apiRef);
|
|
@@ -3,9 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.gridDensitySelector = exports.gridDensityFactorSelector = exports.COMPACT_DENSITY_FACTOR = exports.COMFORTABLE_DENSITY_FACTOR = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
|
+
const COMPACT_DENSITY_FACTOR = exports.COMPACT_DENSITY_FACTOR = 0.7;
|
|
9
|
+
const COMFORTABLE_DENSITY_FACTOR = exports.COMFORTABLE_DENSITY_FACTOR = 1.3;
|
|
10
|
+
const DENSITY_FACTORS = {
|
|
11
|
+
compact: COMPACT_DENSITY_FACTOR,
|
|
12
|
+
comfortable: COMFORTABLE_DENSITY_FACTOR,
|
|
13
|
+
standard: 1
|
|
14
|
+
};
|
|
8
15
|
const gridDensitySelector = state => state.density;
|
|
9
16
|
exports.gridDensitySelector = gridDensitySelector;
|
|
10
|
-
const
|
|
11
|
-
const gridDensityFactorSelector = exports.gridDensityFactorSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.factor);
|
|
17
|
+
const gridDensityFactorSelector = exports.gridDensityFactorSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => DENSITY_FACTORS[density]);
|
|
@@ -4,50 +4,42 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.useGridDensity = exports.densityStateInitializer =
|
|
7
|
+
exports.useGridDensity = exports.densityStateInitializer = void 0;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
10
11
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
11
12
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
12
13
|
var _densitySelector = require("./densitySelector");
|
|
13
|
-
var _utils = require("../../../utils/utils");
|
|
14
14
|
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); }
|
|
15
15
|
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; }
|
|
16
|
-
const COMPACT_DENSITY_FACTOR = exports.COMPACT_DENSITY_FACTOR = 0.7;
|
|
17
|
-
const COMFORTABLE_DENSITY_FACTOR = exports.COMFORTABLE_DENSITY_FACTOR = 1.3;
|
|
18
|
-
const DENSITY_FACTORS = {
|
|
19
|
-
compact: COMPACT_DENSITY_FACTOR,
|
|
20
|
-
comfortable: COMFORTABLE_DENSITY_FACTOR,
|
|
21
|
-
standard: 1
|
|
22
|
-
};
|
|
23
16
|
const densityStateInitializer = (state, props) => (0, _extends2.default)({}, state, {
|
|
24
|
-
density:
|
|
25
|
-
value: props.density,
|
|
26
|
-
factor: DENSITY_FACTORS[props.density]
|
|
27
|
-
}
|
|
17
|
+
density: props.initialState?.density ?? props.density ?? 'standard'
|
|
28
18
|
});
|
|
29
19
|
exports.densityStateInitializer = densityStateInitializer;
|
|
30
20
|
const useGridDensity = (apiRef, props) => {
|
|
31
21
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useDensity');
|
|
32
|
-
|
|
22
|
+
apiRef.current.registerControlState({
|
|
23
|
+
stateId: 'density',
|
|
24
|
+
propModel: props.density,
|
|
25
|
+
propOnChange: props.onDensityChange,
|
|
26
|
+
stateSelector: _densitySelector.gridDensitySelector,
|
|
27
|
+
changeEvent: 'densityChange'
|
|
28
|
+
});
|
|
29
|
+
const setDensity = (0, _useEventCallback.default)(newDensity => {
|
|
30
|
+
const currentDensity = (0, _densitySelector.gridDensitySelector)(apiRef.current.state);
|
|
31
|
+
if (currentDensity === newDensity) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
33
34
|
logger.debug(`Set grid density to ${newDensity}`);
|
|
34
|
-
apiRef.current.setState(state => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
factor: DENSITY_FACTORS[newDensity]
|
|
39
|
-
};
|
|
40
|
-
if ((0, _utils.isDeepEqual)(currentDensityState, newDensityState)) {
|
|
41
|
-
return state;
|
|
42
|
-
}
|
|
43
|
-
return (0, _extends2.default)({}, state, {
|
|
44
|
-
density: newDensityState
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
apiRef.current.forceUpdate();
|
|
48
|
-
}, [logger, apiRef]);
|
|
35
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
36
|
+
density: newDensity
|
|
37
|
+
}));
|
|
38
|
+
});
|
|
49
39
|
React.useEffect(() => {
|
|
50
|
-
|
|
40
|
+
if (props.density) {
|
|
41
|
+
apiRef.current.setDensity(props.density);
|
|
42
|
+
}
|
|
51
43
|
}, [apiRef, props.density]);
|
|
52
44
|
const densityApi = {
|
|
53
45
|
setDensity
|
|
@@ -23,7 +23,7 @@ const _excluded = ["id", "field"],
|
|
|
23
23
|
_excluded2 = ["id", "field"];
|
|
24
24
|
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); }
|
|
25
25
|
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; }
|
|
26
|
-
const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop,
|
|
26
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, for example `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
|
|
27
27
|
const useGridCellEditing = (apiRef, props) => {
|
|
28
28
|
const [cellModesModel, setCellModesModel] = React.useState({});
|
|
29
29
|
const cellModesModelRef = React.useRef(cellModesModel);
|
|
@@ -25,7 +25,7 @@ const _excluded = ["id"],
|
|
|
25
25
|
_excluded2 = ["id"];
|
|
26
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
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 missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop,
|
|
28
|
+
const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, for example `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
|
|
29
29
|
const useGridRowEditing = (apiRef, props) => {
|
|
30
30
|
const [rowModesModel, setRowModesModel] = React.useState({});
|
|
31
31
|
const rowModesModelRef = React.useRef(rowModesModel);
|
|
@@ -7,11 +7,14 @@ exports.buildCSV = buildCSV;
|
|
|
7
7
|
exports.serializeCellValue = void 0;
|
|
8
8
|
var _colDef = require("../../../../colDef");
|
|
9
9
|
var _warning = require("../../../../utils/warning");
|
|
10
|
-
function sanitizeCellValue(value, delimiterCharacter) {
|
|
10
|
+
function sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes) {
|
|
11
11
|
if (typeof value === 'string') {
|
|
12
12
|
// Make sure value containing delimiter or line break won't be split into multiple rows
|
|
13
13
|
if ([delimiterCharacter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
|
|
14
|
-
|
|
14
|
+
if (shouldAppendQuotes) {
|
|
15
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
16
|
+
}
|
|
17
|
+
return `${value.replace(/"/g, '""')}`;
|
|
15
18
|
}
|
|
16
19
|
return value;
|
|
17
20
|
}
|
|
@@ -20,7 +23,8 @@ function sanitizeCellValue(value, delimiterCharacter) {
|
|
|
20
23
|
const serializeCellValue = (cellParams, options) => {
|
|
21
24
|
const {
|
|
22
25
|
delimiterCharacter,
|
|
23
|
-
ignoreValueFormatter
|
|
26
|
+
ignoreValueFormatter,
|
|
27
|
+
shouldAppendQuotes
|
|
24
28
|
} = options;
|
|
25
29
|
let value;
|
|
26
30
|
if (ignoreValueFormatter) {
|
|
@@ -37,7 +41,7 @@ const serializeCellValue = (cellParams, options) => {
|
|
|
37
41
|
} else {
|
|
38
42
|
value = cellParams.formattedValue;
|
|
39
43
|
}
|
|
40
|
-
return sanitizeCellValue(value, delimiterCharacter);
|
|
44
|
+
return sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes);
|
|
41
45
|
};
|
|
42
46
|
exports.serializeCellValue = serializeCellValue;
|
|
43
47
|
const objectFormattedValueWarning = (0, _warning.buildWarning)(['MUI X: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
|
|
@@ -55,7 +59,7 @@ class CSVRow {
|
|
|
55
59
|
if (value === null || value === undefined) {
|
|
56
60
|
this.rowString += '';
|
|
57
61
|
} else if (typeof this.options.sanitizeCellValue === 'function') {
|
|
58
|
-
this.rowString += this.options.sanitizeCellValue(value, this.options.delimiterCharacter);
|
|
62
|
+
this.rowString += this.options.sanitizeCellValue(value, this.options.delimiterCharacter, this.options.shouldAppendQuotes);
|
|
59
63
|
} else {
|
|
60
64
|
this.rowString += value;
|
|
61
65
|
}
|
|
@@ -70,10 +74,12 @@ const serializeRow = ({
|
|
|
70
74
|
columns,
|
|
71
75
|
getCellParams,
|
|
72
76
|
delimiterCharacter,
|
|
73
|
-
ignoreValueFormatter
|
|
77
|
+
ignoreValueFormatter,
|
|
78
|
+
shouldAppendQuotes
|
|
74
79
|
}) => {
|
|
75
80
|
const row = new CSVRow({
|
|
76
|
-
delimiterCharacter
|
|
81
|
+
delimiterCharacter,
|
|
82
|
+
shouldAppendQuotes
|
|
77
83
|
});
|
|
78
84
|
columns.forEach(column => {
|
|
79
85
|
const cellParams = getCellParams(id, column.field);
|
|
@@ -84,7 +90,8 @@ const serializeRow = ({
|
|
|
84
90
|
}
|
|
85
91
|
row.addValue(serializeCellValue(cellParams, {
|
|
86
92
|
delimiterCharacter,
|
|
87
|
-
ignoreValueFormatter
|
|
93
|
+
ignoreValueFormatter,
|
|
94
|
+
shouldAppendQuotes
|
|
88
95
|
}));
|
|
89
96
|
});
|
|
90
97
|
return row.getRowString();
|
|
@@ -97,14 +104,16 @@ function buildCSV(options) {
|
|
|
97
104
|
includeHeaders,
|
|
98
105
|
includeColumnGroupsHeaders,
|
|
99
106
|
ignoreValueFormatter,
|
|
100
|
-
apiRef
|
|
107
|
+
apiRef,
|
|
108
|
+
shouldAppendQuotes
|
|
101
109
|
} = options;
|
|
102
110
|
const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({
|
|
103
111
|
id,
|
|
104
112
|
columns,
|
|
105
113
|
getCellParams: apiRef.current.getCellParams,
|
|
106
114
|
delimiterCharacter,
|
|
107
|
-
ignoreValueFormatter
|
|
115
|
+
ignoreValueFormatter,
|
|
116
|
+
shouldAppendQuotes
|
|
108
117
|
})}\r\n`, '').trim();
|
|
109
118
|
if (!includeHeaders) {
|
|
110
119
|
return CSVBody;
|
|
@@ -123,7 +132,8 @@ function buildCSV(options) {
|
|
|
123
132
|
for (let i = 0; i < maxColumnGroupsDepth; i += 1) {
|
|
124
133
|
const headerGroupRow = new CSVRow({
|
|
125
134
|
delimiterCharacter,
|
|
126
|
-
sanitizeCellValue
|
|
135
|
+
sanitizeCellValue,
|
|
136
|
+
shouldAppendQuotes
|
|
127
137
|
});
|
|
128
138
|
headerRows.push(headerGroupRow);
|
|
129
139
|
filteredColumns.forEach(column => {
|
|
@@ -135,7 +145,8 @@ function buildCSV(options) {
|
|
|
135
145
|
}
|
|
136
146
|
const mainHeaderRow = new CSVRow({
|
|
137
147
|
delimiterCharacter,
|
|
138
|
-
sanitizeCellValue
|
|
148
|
+
sanitizeCellValue,
|
|
149
|
+
shouldAppendQuotes
|
|
139
150
|
});
|
|
140
151
|
filteredColumns.forEach(column => {
|
|
141
152
|
mainHeaderRow.addValue(column.headerName || column.field);
|
|
@@ -43,7 +43,8 @@ const useGridCsvExport = (apiRef, props) => {
|
|
|
43
43
|
includeHeaders: options.includeHeaders ?? true,
|
|
44
44
|
includeColumnGroupsHeaders: options.includeColumnGroupsHeaders ?? true,
|
|
45
45
|
ignoreValueFormatter,
|
|
46
|
-
apiRef
|
|
46
|
+
apiRef,
|
|
47
|
+
shouldAppendQuotes: options.shouldAppendQuotes ?? true
|
|
47
48
|
});
|
|
48
49
|
}, [logger, apiRef, ignoreValueFormatter]);
|
|
49
50
|
const exportDataAsCsv = React.useCallback(options => {
|
|
@@ -167,7 +167,7 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
// We generate a new function with `new Function()` to avoid expensive patterns for JS engines
|
|
170
|
-
// such as a dynamic object assignment,
|
|
170
|
+
// such as a dynamic object assignment, for example `{ [dynamicKey]: value }`.
|
|
171
171
|
const filterItemCore = new Function('appliers', 'row', 'shouldApplyFilter', `"use strict";
|
|
172
172
|
${appliers.map((applier, i) => `const shouldApply${i} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(applier.item.field)});`).join('\n')}
|
|
173
173
|
|
|
@@ -284,7 +284,8 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
284
284
|
const handleHeaderSelectionCheckboxChange = React.useCallback(params => {
|
|
285
285
|
const shouldLimitSelectionToCurrentPage = props.checkboxSelectionVisibleOnly && props.pagination;
|
|
286
286
|
const rowsToBeSelected = shouldLimitSelectionToCurrentPage ? (0, _pagination.gridPaginatedVisibleSortedGridRowIdsSelector)(apiRef) : (0, _gridFilterSelector.gridExpandedSortedRowIdsSelector)(apiRef);
|
|
287
|
-
|
|
287
|
+
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
288
|
+
apiRef.current.selectRows(rowsToBeSelected, params.value, filterModel?.items.length > 0);
|
|
288
289
|
}, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination]);
|
|
289
290
|
const handleCellKeyDown = React.useCallback((params, event) => {
|
|
290
291
|
// Get the most recent cell mode because it may have been changed by another listener
|