@mui/x-data-grid 5.11.0 → 5.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +237 -16
- package/DataGrid/DataGrid.js +26 -1
- package/README.md +3 -4
- package/components/GridRow.d.ts +1 -1
- package/components/GridRow.js +51 -12
- package/components/base/GridOverlays.js +1 -1
- package/components/cell/GridActionsCellItem.d.ts +1 -1
- package/components/cell/GridCell.d.ts +2 -1
- package/components/cell/GridCell.js +12 -7
- package/components/columnHeaders/GridColumnHeaderItem.js +4 -3
- package/components/containers/GridRoot.js +25 -5
- package/components/containers/GridRootStyles.js +7 -2
- package/components/menu/GridMenu.js +9 -2
- package/components/panel/GridColumnsPanel.js +10 -2
- package/components/panel/GridPanelWrapper.d.ts +1 -1
- package/components/panel/GridPanelWrapper.js +3 -3
- package/components/panel/filterPanel/GridFilterForm.d.ts +61 -4
- package/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -5
- package/components/panel/filterPanel/GridFilterPanel.js +25 -9
- package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
- package/components/toolbar/GridToolbarQuickFilter.d.ts +7 -0
- package/components/toolbar/GridToolbarQuickFilter.js +58 -6
- package/constants/defaultGridSlotsComponents.js +4 -2
- package/constants/gridClasses.d.ts +16 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +4 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- package/hooks/core/useGridStateInitialization.js +19 -6
- package/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -0
- package/hooks/features/columns/useGridColumns.js +13 -15
- package/hooks/features/editRows/useGridCellEditing.new.js +11 -4
- package/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/hooks/features/events/useGridEvents.d.ts +1 -1
- package/hooks/features/events/useGridEvents.js +2 -0
- package/hooks/features/filter/gridFilterSelector.d.ts +5 -0
- package/hooks/features/filter/gridFilterSelector.js +6 -0
- package/hooks/features/filter/gridFilterUtils.d.ts +10 -2
- package/hooks/features/filter/gridFilterUtils.js +3 -6
- package/hooks/features/filter/useGridFilter.js +29 -12
- package/hooks/features/pagination/useGridPage.js +1 -1
- package/hooks/features/pagination/useGridPageSize.js +1 -1
- package/hooks/features/rows/gridRowsState.d.ts +14 -5
- package/hooks/features/rows/gridRowsUtils.d.ts +13 -1
- package/hooks/features/rows/gridRowsUtils.js +54 -0
- package/hooks/features/rows/useGridRows.js +63 -102
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +107 -43
- package/hooks/features/selection/useGridSelection.js +1 -1
- package/hooks/features/sorting/useGridSorting.js +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/legacy/DataGrid/DataGrid.js +26 -1
- package/legacy/components/GridRow.js +56 -12
- package/legacy/components/base/GridOverlays.js +1 -1
- package/legacy/components/cell/GridCell.js +12 -7
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +6 -3
- package/legacy/components/containers/GridRoot.js +23 -5
- package/legacy/components/containers/GridRootStyles.js +9 -6
- package/legacy/components/menu/GridMenu.js +9 -2
- package/legacy/components/panel/GridColumnsPanel.js +12 -2
- package/legacy/components/panel/GridPanelWrapper.js +3 -3
- package/legacy/components/panel/filterPanel/GridFilterForm.js +89 -8
- package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +27 -10
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +68 -8
- package/legacy/constants/defaultGridSlotsComponents.js +4 -2
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -10
- package/legacy/hooks/core/useGridStateInitialization.js +18 -6
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/legacy/hooks/features/columns/useGridColumns.js +13 -15
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +14 -7
- package/legacy/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/legacy/hooks/features/events/useGridEvents.js +2 -0
- package/legacy/hooks/features/filter/gridFilterSelector.js +8 -0
- package/legacy/hooks/features/filter/gridFilterUtils.js +4 -7
- package/legacy/hooks/features/filter/useGridFilter.js +33 -12
- package/legacy/hooks/features/pagination/useGridPage.js +1 -1
- package/legacy/hooks/features/pagination/useGridPageSize.js +1 -1
- package/legacy/hooks/features/rows/gridRowsUtils.js +55 -0
- package/legacy/hooks/features/rows/useGridRows.js +75 -111
- package/legacy/hooks/features/rows/useGridRowsMeta.js +104 -41
- package/legacy/hooks/features/selection/useGridSelection.js +1 -1
- package/legacy/hooks/features/sorting/useGridSorting.js +1 -1
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +46 -22
- package/legacy/index.js +1 -1
- package/legacy/locales/heIL.js +9 -9
- package/legacy/locales/jaJP.js +28 -24
- package/legacy/locales/nbNO.js +127 -0
- package/legacy/locales/ruRU.js +9 -9
- package/legacy/locales/trTR.js +7 -7
- package/legacy/models/events/gridEvents.js +2 -0
- package/legacy/models/gridApiCaches.js +1 -0
- package/legacy/models/params/gridMenuParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/locales/heIL.js +9 -9
- package/locales/jaJP.js +24 -24
- package/locales/nbNO.d.ts +2 -0
- package/locales/nbNO.js +115 -0
- package/locales/ruRU.js +9 -9
- package/locales/trTR.js +7 -7
- package/models/api/gridCallbackDetails.d.ts +6 -1
- package/models/api/gridCoreApi.d.ts +2 -6
- package/models/api/gridFilterApi.d.ts +8 -1
- package/models/api/gridRowsMetaApi.d.ts +24 -0
- package/models/api/gridStateApi.d.ts +14 -3
- package/models/colDef/gridColDef.d.ts +3 -3
- package/models/events/gridEventLookup.d.ts +16 -1
- package/models/events/gridEvents.d.ts +3 -1
- package/models/events/gridEvents.js +2 -0
- package/models/gridApiCaches.d.ts +6 -0
- package/models/gridApiCaches.js +1 -0
- package/models/gridIconSlotsComponent.d.ts +10 -0
- package/models/params/gridMenuParams.d.ts +7 -0
- package/models/params/gridMenuParams.js +1 -0
- package/models/params/gridRowParams.d.ts +1 -1
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +24 -2
- package/modern/DataGrid/DataGrid.js +26 -1
- package/modern/components/GridRow.js +51 -12
- package/modern/components/base/GridOverlays.js +1 -1
- package/modern/components/cell/GridCell.js +12 -7
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +4 -3
- package/modern/components/containers/GridRoot.js +25 -3
- package/modern/components/containers/GridRootStyles.js +7 -2
- package/modern/components/menu/GridMenu.js +9 -2
- package/modern/components/panel/GridColumnsPanel.js +10 -2
- package/modern/components/panel/GridPanelWrapper.js +3 -3
- package/modern/components/panel/filterPanel/GridFilterForm.js +88 -8
- package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/modern/components/panel/filterPanel/GridFilterPanel.js +25 -9
- package/modern/components/toolbar/GridToolbarQuickFilter.js +58 -6
- package/modern/constants/defaultGridSlotsComponents.js +4 -2
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
- package/modern/hooks/core/useGridStateInitialization.js +19 -6
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/modern/hooks/features/columns/useGridColumns.js +12 -14
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +10 -3
- package/modern/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +9 -3
- package/modern/hooks/features/events/useGridEvents.js +2 -0
- package/modern/hooks/features/filter/gridFilterSelector.js +6 -0
- package/modern/hooks/features/filter/gridFilterUtils.js +3 -6
- package/modern/hooks/features/filter/useGridFilter.js +29 -12
- package/modern/hooks/features/pagination/useGridPage.js +1 -1
- package/modern/hooks/features/pagination/useGridPageSize.js +1 -1
- package/modern/hooks/features/rows/gridRowsUtils.js +54 -0
- package/modern/hooks/features/rows/useGridRows.js +63 -102
- package/modern/hooks/features/rows/useGridRowsMeta.js +105 -37
- package/modern/hooks/features/selection/useGridSelection.js +1 -1
- package/modern/hooks/features/sorting/useGridSorting.js +1 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
- package/modern/index.js +1 -1
- package/modern/locales/heIL.js +9 -9
- package/modern/locales/jaJP.js +24 -24
- package/modern/locales/nbNO.js +115 -0
- package/modern/locales/ruRU.js +9 -9
- package/modern/locales/trTR.js +7 -7
- package/modern/models/events/gridEvents.js +2 -0
- package/modern/models/gridApiCaches.js +1 -0
- package/modern/models/params/gridMenuParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/node/DataGrid/DataGrid.js +26 -1
- package/node/components/GridRow.js +53 -12
- package/node/components/base/GridOverlays.js +1 -1
- package/node/components/cell/GridCell.js +12 -7
- package/node/components/columnHeaders/GridColumnHeaderItem.js +4 -3
- package/node/components/containers/GridRoot.js +24 -3
- package/node/components/containers/GridRootStyles.js +7 -2
- package/node/components/menu/GridMenu.js +10 -2
- package/node/components/panel/GridColumnsPanel.js +10 -2
- package/node/components/panel/GridPanelWrapper.js +5 -3
- package/node/components/panel/filterPanel/GridFilterForm.js +91 -9
- package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
- package/node/components/panel/filterPanel/GridFilterPanel.js +27 -9
- package/node/components/toolbar/GridToolbarQuickFilter.js +61 -6
- package/node/constants/defaultGridSlotsComponents.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -8
- package/node/hooks/core/useGridStateInitialization.js +19 -6
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +23 -0
- package/node/hooks/features/columns/useGridColumns.js +13 -15
- package/node/hooks/features/editRows/useGridCellEditing.new.js +11 -4
- package/node/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/node/hooks/features/editRows/useGridRowEditing.new.js +10 -4
- package/node/hooks/features/events/useGridEvents.js +2 -0
- package/node/hooks/features/filter/gridFilterSelector.js +9 -2
- package/node/hooks/features/filter/gridFilterUtils.js +4 -5
- package/node/hooks/features/filter/useGridFilter.js +28 -11
- package/node/hooks/features/pagination/useGridPage.js +1 -1
- package/node/hooks/features/pagination/useGridPageSize.js +1 -1
- package/node/hooks/features/rows/gridRowsUtils.js +67 -1
- package/node/hooks/features/rows/useGridRows.js +63 -99
- package/node/hooks/features/rows/useGridRowsMeta.js +107 -43
- package/node/hooks/features/selection/useGridSelection.js +1 -1
- package/node/hooks/features/sorting/useGridSorting.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +27 -7
- package/node/index.js +1 -1
- package/node/locales/heIL.js +9 -9
- package/node/locales/jaJP.js +24 -24
- package/node/locales/nbNO.js +125 -0
- package/node/locales/ruRU.js +9 -9
- package/node/locales/trTR.js +7 -7
- package/node/models/events/gridEvents.js +2 -0
- package/node/models/gridApiCaches.js +5 -0
- package/node/models/params/gridMenuParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/package.json +7 -5
|
@@ -19,6 +19,8 @@ var _clsx = _interopRequireDefault(require("clsx"));
|
|
|
19
19
|
|
|
20
20
|
var _utils = require("@mui/material/utils");
|
|
21
21
|
|
|
22
|
+
var _material = require("@mui/material");
|
|
23
|
+
|
|
22
24
|
var _GridRootStyles = require("./GridRootStyles");
|
|
23
25
|
|
|
24
26
|
var _gridColumnsSelector = require("../../hooks/features/columns/gridColumnsSelector");
|
|
@@ -33,6 +35,8 @@ var _gridClasses = require("../../constants/gridClasses");
|
|
|
33
35
|
|
|
34
36
|
var _gridRowsSelector = require("../../hooks/features/rows/gridRowsSelector");
|
|
35
37
|
|
|
38
|
+
var _densitySelector = require("../../hooks/features/density/densitySelector");
|
|
39
|
+
|
|
36
40
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
37
41
|
|
|
38
42
|
const _excluded = ["children", "className"];
|
|
@@ -41,9 +45,19 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
41
45
|
|
|
42
46
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
47
|
|
|
44
|
-
const
|
|
45
|
-
|
|
48
|
+
const useUtilityClasses = ownerState => {
|
|
49
|
+
const {
|
|
50
|
+
autoHeight,
|
|
51
|
+
density,
|
|
52
|
+
classes
|
|
53
|
+
} = ownerState;
|
|
54
|
+
const slots = {
|
|
55
|
+
root: ['root', autoHeight && 'autoHeight', `root--density${(0, _utils.capitalize)(density)}`]
|
|
56
|
+
};
|
|
57
|
+
return (0, _material.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
58
|
+
};
|
|
46
59
|
|
|
60
|
+
const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
|
|
47
61
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
48
62
|
const {
|
|
49
63
|
children,
|
|
@@ -53,8 +67,15 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
|
|
|
53
67
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
54
68
|
const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector);
|
|
55
69
|
const totalRowCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowCountSelector);
|
|
70
|
+
const densityValue = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityValueSelector);
|
|
56
71
|
const rootContainerRef = React.useRef(null);
|
|
57
72
|
const handleRef = (0, _utils.useForkRef)(rootContainerRef, ref);
|
|
73
|
+
const ownerState = {
|
|
74
|
+
density: densityValue,
|
|
75
|
+
classes: rootProps.classes,
|
|
76
|
+
autoHeight: rootProps.autoHeight
|
|
77
|
+
};
|
|
78
|
+
const classes = useUtilityClasses(ownerState);
|
|
58
79
|
apiRef.current.rootElementRef = rootContainerRef; // Our implementation of <NoSsr />
|
|
59
80
|
|
|
60
81
|
const [mountedState, setMountedState] = React.useState(false);
|
|
@@ -73,7 +94,7 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
|
|
|
73
94
|
|
|
74
95
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridRootStyles.GridRootStyles, (0, _extends2.default)({
|
|
75
96
|
ref: handleRef,
|
|
76
|
-
className: (0, _clsx.default)(className,
|
|
97
|
+
className: (0, _clsx.default)(className, classes.root),
|
|
77
98
|
role: "grid",
|
|
78
99
|
"aria-colcount": visibleColumns.length,
|
|
79
100
|
"aria-rowcount": totalRowCount,
|
|
@@ -232,6 +232,9 @@ const GridRootStyles = (0, _styles.styled)('div', {
|
|
|
232
232
|
},
|
|
233
233
|
[`&.${_gridClasses.gridClasses['columnSeparator--resizing']}`]: {
|
|
234
234
|
color: theme.palette.text.primary
|
|
235
|
+
},
|
|
236
|
+
'& svg': {
|
|
237
|
+
pointerEvents: 'none'
|
|
235
238
|
}
|
|
236
239
|
},
|
|
237
240
|
[`& .${_gridClasses.gridClasses.iconSeparator}`]: {
|
|
@@ -285,10 +288,12 @@ const GridRootStyles = (0, _styles.styled)('div', {
|
|
|
285
288
|
[`& .${_gridClasses.gridClasses.cell}`]: {
|
|
286
289
|
display: 'flex',
|
|
287
290
|
alignItems: 'center',
|
|
288
|
-
overflow: 'hidden',
|
|
289
|
-
whiteSpace: 'nowrap',
|
|
290
291
|
borderBottom: `1px solid ${borderColor}`
|
|
291
292
|
},
|
|
293
|
+
[`& .${_gridClasses.gridClasses.row}:not(.${_gridClasses.gridClasses['row--dynamicHeight']}) > .${_gridClasses.gridClasses.cell}`]: {
|
|
294
|
+
overflow: 'hidden',
|
|
295
|
+
whiteSpace: 'nowrap'
|
|
296
|
+
},
|
|
292
297
|
[`& .${_gridClasses.gridClasses.cellContent}`]: {
|
|
293
298
|
overflow: 'hidden',
|
|
294
299
|
textOverflow: 'ellipsis'
|
|
@@ -35,6 +35,8 @@ var _gridClasses = require("../../constants/gridClasses");
|
|
|
35
35
|
|
|
36
36
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
37
37
|
|
|
38
|
+
var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
39
|
+
|
|
38
40
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
39
41
|
|
|
40
42
|
const _excluded = ["open", "target", "onClickAway", "children", "position", "className", "onExited"];
|
|
@@ -83,6 +85,7 @@ const GridMenu = props => {
|
|
|
83
85
|
onExited
|
|
84
86
|
} = props,
|
|
85
87
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
88
|
+
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
86
89
|
const prevTarget = React.useRef(target);
|
|
87
90
|
const prevOpen = React.useRef(open);
|
|
88
91
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
@@ -93,11 +96,16 @@ const GridMenu = props => {
|
|
|
93
96
|
React.useEffect(() => {
|
|
94
97
|
if (prevOpen.current && prevTarget.current) {
|
|
95
98
|
prevTarget.current.focus();
|
|
96
|
-
}
|
|
99
|
+
} // Emit menuOpen or menuClose events
|
|
100
|
+
|
|
97
101
|
|
|
102
|
+
const eventName = open ? 'menuOpen' : 'menuClose';
|
|
103
|
+
apiRef.current.publishEvent(eventName, {
|
|
104
|
+
target
|
|
105
|
+
});
|
|
98
106
|
prevOpen.current = open;
|
|
99
107
|
prevTarget.current = target;
|
|
100
|
-
}, [open, target]);
|
|
108
|
+
}, [apiRef, open, target]);
|
|
101
109
|
|
|
102
110
|
const handleExited = popperOnExited => node => {
|
|
103
111
|
if (popperOnExited) {
|
|
@@ -107,8 +107,16 @@ function GridColumnsPanel(props) {
|
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
const toggleAllColumns = React.useCallback(isVisible => {
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
if (apiRef.current.unstable_caches.columns.isUsingColumnVisibilityModel) {
|
|
111
|
+
if (isVisible) {
|
|
112
|
+
return apiRef.current.setColumnVisibilityModel({});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return apiRef.current.setColumnVisibilityModel(Object.fromEntries(columns.map(col => [col.field, false])));
|
|
116
|
+
} // TODO v6: Remove
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
return apiRef.current.updateColumns(columns.map(col => {
|
|
112
120
|
if (col.hideable !== false) {
|
|
113
121
|
return {
|
|
114
122
|
field: col.field,
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.GridPanelWrapper =
|
|
8
|
+
exports.GridPanelWrapper = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -58,7 +58,7 @@ const GridPanelWrapperRoot = (0, _styles.styled)('div', {
|
|
|
58
58
|
|
|
59
59
|
const isEnabled = () => true;
|
|
60
60
|
|
|
61
|
-
function GridPanelWrapper(props) {
|
|
61
|
+
const GridPanelWrapper = /*#__PURE__*/React.forwardRef(function GridPanelWrapper(props, ref) {
|
|
62
62
|
const {
|
|
63
63
|
className
|
|
64
64
|
} = props,
|
|
@@ -73,8 +73,10 @@ function GridPanelWrapper(props) {
|
|
|
73
73
|
disableEnforceFocus: true,
|
|
74
74
|
isEnabled: isEnabled,
|
|
75
75
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPanelWrapperRoot, (0, _extends2.default)({
|
|
76
|
+
ref: ref,
|
|
76
77
|
tabIndex: -1,
|
|
77
78
|
className: (0, _clsx.default)(className, classes.root)
|
|
78
79
|
}, other))
|
|
79
80
|
});
|
|
80
|
-
}
|
|
81
|
+
});
|
|
82
|
+
exports.GridPanelWrapper = GridPanelWrapper;
|
|
@@ -5,10 +5,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.GridFilterForm =
|
|
8
|
+
exports.GridFilterForm = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
12
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
13
|
+
|
|
12
14
|
var React = _interopRequireWildcard(require("react"));
|
|
13
15
|
|
|
14
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -43,6 +45,8 @@ var _gridClasses = require("../../../constants/gridClasses");
|
|
|
43
45
|
|
|
44
46
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
45
47
|
|
|
48
|
+
const _excluded = ["item", "hasMultipleFilters", "deleteFilter", "applyFilterChanges", "multiFilterOperator", "showMultiFilterOperators", "disableMultiFilterOperator", "applyMultiFilterOperatorChanges", "focusElementRef", "linkOperators", "columnsSort", "deleteIconProps", "linkOperatorInputProps", "operatorInputProps", "columnInputProps", "valueInputProps", "children"];
|
|
49
|
+
|
|
46
50
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
47
51
|
|
|
48
52
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -131,8 +135,7 @@ const getLinkOperatorLocaleKey = linkOperator => {
|
|
|
131
135
|
const getColumnLabel = col => col.headerName || col.field;
|
|
132
136
|
|
|
133
137
|
const collator = new Intl.Collator();
|
|
134
|
-
|
|
135
|
-
function GridFilterForm(props) {
|
|
138
|
+
const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props, ref) {
|
|
136
139
|
var _rootProps$components, _rootProps$components2, _baseSelectProps$nati, _rootProps$components3, _rootProps$components4, _rootProps$components5, _currentColumn$filter2;
|
|
137
140
|
|
|
138
141
|
const {
|
|
@@ -152,7 +155,8 @@ function GridFilterForm(props) {
|
|
|
152
155
|
operatorInputProps = {},
|
|
153
156
|
columnInputProps = {},
|
|
154
157
|
valueInputProps = {}
|
|
155
|
-
} = props
|
|
158
|
+
} = props,
|
|
159
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
156
160
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
157
161
|
const filterableColumns = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridFilterableColumnDefinitionsSelector);
|
|
158
162
|
const columnSelectId = (0, _utils.unstable_useId)();
|
|
@@ -252,8 +256,10 @@ function GridFilterForm(props) {
|
|
|
252
256
|
}
|
|
253
257
|
}
|
|
254
258
|
}), [currentOperator]);
|
|
255
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridFilterFormRoot, {
|
|
256
|
-
|
|
259
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridFilterFormRoot, (0, _extends2.default)({
|
|
260
|
+
ref: ref,
|
|
261
|
+
className: classes.root
|
|
262
|
+
}, other, {
|
|
257
263
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(FilterFormDeleteIcon, (0, _extends2.default)({
|
|
258
264
|
variant: "standard",
|
|
259
265
|
as: rootProps.components.BaseFormControl
|
|
@@ -348,35 +354,111 @@ function GridFilterForm(props) {
|
|
|
348
354
|
focusElementRef: valueRef
|
|
349
355
|
}, currentOperator.InputComponentProps)) : null
|
|
350
356
|
}))]
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
|
|
357
|
+
}));
|
|
358
|
+
});
|
|
359
|
+
exports.GridFilterForm = GridFilterForm;
|
|
354
360
|
process.env.NODE_ENV !== "production" ? GridFilterForm.propTypes = {
|
|
355
361
|
// ----------------------------- Warning --------------------------------
|
|
356
362
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
357
363
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
358
364
|
// ----------------------------------------------------------------------
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Callback called when the operator, column field or value is changed.
|
|
368
|
+
* @param {GridFilterItem} item The updated [[GridFilterItem]].
|
|
369
|
+
*/
|
|
359
370
|
applyFilterChanges: _propTypes.default.func.isRequired,
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Callback called when the logic operator is changed.
|
|
374
|
+
* @param {GridLinkOperator} operator The new logic operator.
|
|
375
|
+
*/
|
|
360
376
|
applyMultiFilterOperatorChanges: _propTypes.default.func.isRequired,
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Props passed to the column input component.
|
|
380
|
+
* @default {}
|
|
381
|
+
*/
|
|
361
382
|
columnInputProps: _propTypes.default.any,
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Changes how the options in the columns selector should be ordered.
|
|
386
|
+
* If not specified, the order is derived from the `columns` prop.
|
|
387
|
+
*/
|
|
362
388
|
columnsSort: _propTypes.default.oneOf(['asc', 'desc']),
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Callback called when the delete button is clicked.
|
|
392
|
+
* @param {GridFilterItem} item The deleted [[GridFilterItem]].
|
|
393
|
+
*/
|
|
363
394
|
deleteFilter: _propTypes.default.func.isRequired,
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Props passed to the delete icon.
|
|
398
|
+
* @default {}
|
|
399
|
+
*/
|
|
364
400
|
deleteIconProps: _propTypes.default.any,
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* If `true`, disables the logic operator field but still renders it.
|
|
404
|
+
*/
|
|
365
405
|
disableMultiFilterOperator: _propTypes.default.bool,
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* A ref allowing to set imperative focus.
|
|
409
|
+
* It can be passed to the el
|
|
410
|
+
*/
|
|
366
411
|
focusElementRef: _propTypes.default
|
|
367
412
|
/* @typescript-to-proptypes-ignore */
|
|
368
413
|
.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* If `true`, the logic operator field is rendered.
|
|
417
|
+
* The field will be invisible if `showMultiFilterOperators` is also `true`.
|
|
418
|
+
*/
|
|
369
419
|
hasMultipleFilters: _propTypes.default.bool.isRequired,
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* The [[GridFilterItem]] representing this form.
|
|
423
|
+
*/
|
|
370
424
|
item: _propTypes.default.shape({
|
|
371
425
|
columnField: _propTypes.default.string.isRequired,
|
|
372
426
|
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
373
427
|
operatorValue: _propTypes.default.string,
|
|
374
428
|
value: _propTypes.default.any
|
|
375
429
|
}).isRequired,
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Props passed to the logic operator input component.
|
|
433
|
+
* @default {}
|
|
434
|
+
*/
|
|
376
435
|
linkOperatorInputProps: _propTypes.default.any,
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* Sets the available logic operators.
|
|
439
|
+
* @default [GridLinkOperator.And, GridLinkOperator.Or]
|
|
440
|
+
*/
|
|
377
441
|
linkOperators: _propTypes.default.arrayOf(_propTypes.default.oneOf(['and', 'or']).isRequired),
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* The current logic operator applied.
|
|
445
|
+
*/
|
|
378
446
|
multiFilterOperator: _propTypes.default.oneOf(['and', 'or']),
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Props passed to the operator input component.
|
|
450
|
+
* @default {}
|
|
451
|
+
*/
|
|
379
452
|
operatorInputProps: _propTypes.default.any,
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* If `true`, the logic operator field is visible.
|
|
456
|
+
*/
|
|
380
457
|
showMultiFilterOperators: _propTypes.default.bool,
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Props passed to the value input component.
|
|
461
|
+
* @default {}
|
|
462
|
+
*/
|
|
381
463
|
valueInputProps: _propTypes.default.any
|
|
382
464
|
} : void 0;
|
|
@@ -106,7 +106,6 @@ function GridFilterInputMultipleSingleSelect(props) {
|
|
|
106
106
|
}, [applyValue, item]);
|
|
107
107
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Autocomplete.default, (0, _extends2.default)({
|
|
108
108
|
multiple: true,
|
|
109
|
-
freeSolo: false,
|
|
110
109
|
limitTags: 1,
|
|
111
110
|
options: resolvedValueOptions // TODO: avoid `any`?
|
|
112
111
|
,
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.GridFilterPanel =
|
|
8
|
+
exports.GridFilterPanel = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -39,13 +39,13 @@ var _gridColumnsSelector = require("../../../hooks/features/columns/gridColumnsS
|
|
|
39
39
|
|
|
40
40
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
41
41
|
|
|
42
|
-
const _excluded = ["linkOperators", "columnsSort", "filterFormProps"];
|
|
42
|
+
const _excluded = ["linkOperators", "columnsSort", "filterFormProps", "children"];
|
|
43
43
|
|
|
44
44
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
45
45
|
|
|
46
46
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
47
47
|
|
|
48
|
-
function GridFilterPanel(props) {
|
|
48
|
+
const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(props, ref) {
|
|
49
49
|
var _rootProps$components;
|
|
50
50
|
|
|
51
51
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
@@ -99,9 +99,7 @@ function GridFilterPanel(props) {
|
|
|
99
99
|
return;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
apiRef.current.
|
|
103
|
-
items: [...items, defaultItem]
|
|
104
|
-
}));
|
|
102
|
+
apiRef.current.upsertFilterItems([...items, defaultItem]);
|
|
105
103
|
};
|
|
106
104
|
|
|
107
105
|
const deleteFilter = React.useCallback(item => {
|
|
@@ -122,7 +120,9 @@ function GridFilterPanel(props) {
|
|
|
122
120
|
lastFilterRef.current.focus();
|
|
123
121
|
}
|
|
124
122
|
}, [items.length]);
|
|
125
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridPanelWrapper.GridPanelWrapper, (0, _extends2.default)({
|
|
123
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridPanelWrapper.GridPanelWrapper, (0, _extends2.default)({
|
|
124
|
+
ref: ref
|
|
125
|
+
}, other, {
|
|
126
126
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridPanelContent.GridPanelContent, {
|
|
127
127
|
children: items.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridFilterForm.GridFilterForm, (0, _extends2.default)({
|
|
128
128
|
item: item,
|
|
@@ -147,14 +147,23 @@ function GridFilterPanel(props) {
|
|
|
147
147
|
}))
|
|
148
148
|
})]
|
|
149
149
|
}));
|
|
150
|
-
}
|
|
151
|
-
|
|
150
|
+
});
|
|
151
|
+
exports.GridFilterPanel = GridFilterPanel;
|
|
152
152
|
process.env.NODE_ENV !== "production" ? GridFilterPanel.propTypes = {
|
|
153
153
|
// ----------------------------- Warning --------------------------------
|
|
154
154
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
155
155
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
156
156
|
// ----------------------------------------------------------------------
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Changes how the options in the columns selector should be ordered.
|
|
160
|
+
* If not specified, the order is derived from the `columns` prop.
|
|
161
|
+
*/
|
|
157
162
|
columnsSort: _propTypes.default.oneOf(['asc', 'desc']),
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Props passed to each filter form.
|
|
166
|
+
*/
|
|
158
167
|
filterFormProps: _propTypes.default.shape({
|
|
159
168
|
columnInputProps: _propTypes.default.any,
|
|
160
169
|
columnsSort: _propTypes.default.oneOf(['asc', 'desc']),
|
|
@@ -163,6 +172,15 @@ process.env.NODE_ENV !== "production" ? GridFilterPanel.propTypes = {
|
|
|
163
172
|
operatorInputProps: _propTypes.default.any,
|
|
164
173
|
valueInputProps: _propTypes.default.any
|
|
165
174
|
}),
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Sets the available logic operators.
|
|
178
|
+
* @default [GridLinkOperator.And, GridLinkOperator.Or]
|
|
179
|
+
*/
|
|
166
180
|
linkOperators: _propTypes.default.arrayOf(_propTypes.default.oneOf(['and', 'or']).isRequired),
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
184
|
+
*/
|
|
167
185
|
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])
|
|
168
186
|
} : void 0;
|
|
@@ -17,7 +17,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
17
17
|
|
|
18
18
|
var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
21
21
|
|
|
22
22
|
var _styles = require("@mui/material/styles");
|
|
23
23
|
|
|
@@ -27,9 +27,15 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
|
27
27
|
|
|
28
28
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
29
29
|
|
|
30
|
+
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
31
|
+
|
|
32
|
+
var _filter = require("../../hooks/features/filter");
|
|
33
|
+
|
|
34
|
+
var _utils2 = require("../../utils/utils");
|
|
35
|
+
|
|
30
36
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
31
37
|
|
|
32
|
-
const _excluded = ["quickFilterParser", "debounceMs"];
|
|
38
|
+
const _excluded = ["quickFilterParser", "quickFilterFormatter", "debounceMs"];
|
|
33
39
|
|
|
34
40
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
35
41
|
|
|
@@ -44,27 +50,54 @@ const GridToolbarQuickFilterRoot = (0, _styles.styled)(_TextField.default, {
|
|
|
44
50
|
}) => ({
|
|
45
51
|
width: 'auto',
|
|
46
52
|
paddingBottom: theme.spacing(0.5),
|
|
47
|
-
'&
|
|
48
|
-
|
|
53
|
+
'& input': {
|
|
54
|
+
marginLeft: theme.spacing(0.5)
|
|
49
55
|
},
|
|
50
56
|
'& .MuiInput-underline:before': {
|
|
51
57
|
borderBottom: `1px solid ${theme.palette.divider}`
|
|
58
|
+
},
|
|
59
|
+
[`& input[type=search]::-ms-clear,
|
|
60
|
+
& input[type=search]::-ms-reveal`]: {
|
|
61
|
+
/* clears the 'X' icon from IE */
|
|
62
|
+
display: 'none',
|
|
63
|
+
width: 0,
|
|
64
|
+
height: 0
|
|
65
|
+
},
|
|
66
|
+
[`& input[type="search"]::-webkit-search-decoration,
|
|
67
|
+
& input[type="search"]::-webkit-search-cancel-button,
|
|
68
|
+
& input[type="search"]::-webkit-search-results-button,
|
|
69
|
+
& input[type="search"]::-webkit-search-results-decoration`]: {
|
|
70
|
+
/* clears the 'X' icon from Chrome */
|
|
71
|
+
display: 'none'
|
|
52
72
|
}
|
|
53
73
|
}));
|
|
54
74
|
|
|
55
75
|
const defaultSearchValueParser = searchText => searchText.split(' ').filter(word => word !== '');
|
|
56
76
|
|
|
77
|
+
const defaultSearchValueFormatter = values => values.join(' ');
|
|
78
|
+
|
|
57
79
|
function GridToolbarQuickFilter(props) {
|
|
58
80
|
var _rootProps$components;
|
|
59
81
|
|
|
60
82
|
const {
|
|
61
83
|
quickFilterParser = defaultSearchValueParser,
|
|
84
|
+
quickFilterFormatter = defaultSearchValueFormatter,
|
|
62
85
|
debounceMs = 500
|
|
63
86
|
} = props,
|
|
64
87
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
65
88
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
66
89
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
67
|
-
const
|
|
90
|
+
const quickFilterValues = (0, _useGridSelector.useGridSelector)(apiRef, _filter.gridQuickFilterValuesSelector);
|
|
91
|
+
const [searchValue, setSearchValue] = React.useState(() => quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));
|
|
92
|
+
const [prevQuickFilterValues, setPrevQuickFilterValues] = React.useState(quickFilterValues);
|
|
93
|
+
React.useEffect(() => {
|
|
94
|
+
if (!(0, _utils2.isDeepEqual)(prevQuickFilterValues, quickFilterValues)) {
|
|
95
|
+
// The model of quick filter value has been updated
|
|
96
|
+
setPrevQuickFilterValues(quickFilterValues); // Update the input value if needed to match the new model
|
|
97
|
+
|
|
98
|
+
setSearchValue(prevSearchValue => (0, _utils2.isDeepEqual)(quickFilterParser(prevSearchValue), quickFilterValues) ? prevSearchValue : quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));
|
|
99
|
+
}
|
|
100
|
+
}, [prevQuickFilterValues, quickFilterValues, quickFilterFormatter, quickFilterParser]);
|
|
68
101
|
const updateSearchValue = React.useCallback(newSearchValue => {
|
|
69
102
|
apiRef.current.setQuickFilterValues(quickFilterParser(newSearchValue));
|
|
70
103
|
}, [apiRef, quickFilterParser]);
|
|
@@ -74,6 +107,10 @@ function GridToolbarQuickFilter(props) {
|
|
|
74
107
|
setSearchValue(newSearchValue);
|
|
75
108
|
debouncedUpdateSearchValue(newSearchValue);
|
|
76
109
|
}, [debouncedUpdateSearchValue]);
|
|
110
|
+
const handleSearchReset = React.useCallback(() => {
|
|
111
|
+
setSearchValue('');
|
|
112
|
+
updateSearchValue('');
|
|
113
|
+
}, [updateSearchValue]);
|
|
77
114
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridToolbarQuickFilterRoot, (0, _extends2.default)({
|
|
78
115
|
as: rootProps.components.BaseTextField,
|
|
79
116
|
variant: "standard",
|
|
@@ -83,8 +120,19 @@ function GridToolbarQuickFilter(props) {
|
|
|
83
120
|
"aria-label": apiRef.current.getLocaleText('toolbarQuickFilterLabel'),
|
|
84
121
|
type: "search",
|
|
85
122
|
InputProps: {
|
|
86
|
-
startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
123
|
+
startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.components.QuickFilterIcon, {
|
|
87
124
|
fontSize: "small"
|
|
125
|
+
}),
|
|
126
|
+
endAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
127
|
+
"aria-label": apiRef.current.getLocaleText('toolbarQuickFilterDeleteIconLabel'),
|
|
128
|
+
size: "small",
|
|
129
|
+
sx: {
|
|
130
|
+
visibility: searchValue ? 'visible' : 'hidden'
|
|
131
|
+
},
|
|
132
|
+
onClick: handleSearchReset,
|
|
133
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.components.QuickFilterClearIcon, {
|
|
134
|
+
fontSize: "small"
|
|
135
|
+
})
|
|
88
136
|
})
|
|
89
137
|
}
|
|
90
138
|
}, other, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.baseTextField));
|
|
@@ -102,6 +150,13 @@ process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
|
|
|
102
150
|
*/
|
|
103
151
|
debounceMs: _propTypes.default.number,
|
|
104
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Function responsible for formatting values of quick filter in a string when the model is modified
|
|
155
|
+
* @param {any[]} values The new values passed to the quick filter model
|
|
156
|
+
* @returns {string} The string to display in the text field
|
|
157
|
+
*/
|
|
158
|
+
quickFilterFormatter: _propTypes.default.func,
|
|
159
|
+
|
|
105
160
|
/**
|
|
106
161
|
* Function responsible for parsing text input in an array of independent values for quick filtering.
|
|
107
162
|
* @param {string} input The value entered by the user
|
|
@@ -56,7 +56,9 @@ const DEFAULT_GRID_ICON_SLOTS_COMPONENTS = {
|
|
|
56
56
|
GroupingCriteriaExpandIcon: _components.GridKeyboardArrowRight,
|
|
57
57
|
DetailPanelExpandIcon: _components.GridAddIcon,
|
|
58
58
|
DetailPanelCollapseIcon: _components.GridRemoveIcon,
|
|
59
|
-
RowReorderIcon: _components.GridDragIcon
|
|
59
|
+
RowReorderIcon: _components.GridDragIcon,
|
|
60
|
+
QuickFilterIcon: _components.GridSearchIcon,
|
|
61
|
+
QuickFilterClearIcon: _components.GridCloseIcon
|
|
60
62
|
};
|
|
61
63
|
/**
|
|
62
64
|
* TODO: Differentiate community and pro value and interface
|
|
@@ -12,5 +12,5 @@ function getDataGridUtilityClass(slot) {
|
|
|
12
12
|
return (0, _material.generateUtilityClass)('MuiDataGrid', slot);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
const gridClasses = (0, _material.generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle']);
|
|
15
|
+
const gridClasses = (0, _material.generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell', 'cellContent', 'cellCheckbox', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLinkOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle']);
|
|
16
16
|
exports.gridClasses = gridClasses;
|
|
@@ -62,29 +62,27 @@ const useGridPipeProcessing = apiRef => {
|
|
|
62
62
|
const registerPipeProcessor = React.useCallback((group, id, processor) => {
|
|
63
63
|
if (!processorsCache.current[group]) {
|
|
64
64
|
processorsCache.current[group] = {
|
|
65
|
-
processors:
|
|
65
|
+
processors: new Map(),
|
|
66
66
|
appliers: {}
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
const groupCache = processorsCache.current[group];
|
|
71
|
-
const oldProcessor = groupCache.processors
|
|
71
|
+
const oldProcessor = groupCache.processors.get(id);
|
|
72
72
|
|
|
73
73
|
if (oldProcessor !== processor) {
|
|
74
|
-
groupCache.processors
|
|
74
|
+
groupCache.processors.set(id, processor);
|
|
75
75
|
runAppliers(groupCache);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
return () => {
|
|
79
|
-
|
|
80
|
-
otherProcessors = (0, _objectWithoutPropertiesLoose2.default)(_processors, [id].map(_toPropertyKey2.default));
|
|
81
|
-
processorsCache.current[group].processors = otherProcessors;
|
|
79
|
+
processorsCache.current[group].processors.set(id, null);
|
|
82
80
|
};
|
|
83
81
|
}, [runAppliers]);
|
|
84
82
|
const registerPipeApplier = React.useCallback((group, id, applier) => {
|
|
85
83
|
if (!processorsCache.current[group]) {
|
|
86
84
|
processorsCache.current[group] = {
|
|
87
|
-
processors:
|
|
85
|
+
processors: new Map(),
|
|
88
86
|
appliers: {}
|
|
89
87
|
};
|
|
90
88
|
}
|
|
@@ -107,8 +105,12 @@ const useGridPipeProcessing = apiRef => {
|
|
|
107
105
|
return value;
|
|
108
106
|
}
|
|
109
107
|
|
|
110
|
-
const preProcessors =
|
|
108
|
+
const preProcessors = Array.from(processorsCache.current[group].processors.values());
|
|
111
109
|
return preProcessors.reduce((acc, preProcessor) => {
|
|
110
|
+
if (!preProcessor) {
|
|
111
|
+
return acc;
|
|
112
|
+
}
|
|
113
|
+
|
|
112
114
|
return preProcessor(acc, context);
|
|
113
115
|
}, value);
|
|
114
116
|
}, []);
|