@mui/x-data-grid 5.12.0 → 5.12.3
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 +160 -7
- package/colDef/gridCheckboxSelectionColDef.d.ts +1 -0
- package/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/colDef/gridDateOperators.d.ts +1 -1
- package/colDef/gridNumericColDef.js +1 -1
- package/components/cell/GridBooleanCell.js +4 -3
- package/components/cell/GridEditBooleanCell.js +4 -3
- package/components/cell/GridEditDateCell.js +4 -3
- package/components/cell/GridEditInputCell.js +4 -3
- package/components/cell/GridEditSingleSelectCell.js +9 -7
- package/components/columnHeaders/GridColumnHeaderItem.js +5 -3
- package/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/components/containers/GridRootStyles.js +4 -1
- package/components/panel/GridColumnsPanel.js +3 -6
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +3 -2
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +12 -5
- package/components/panel/filterPanel/GridFilterPanel.js +2 -5
- package/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/components/toolbar/GridToolbarQuickFilter.d.ts +7 -0
- package/components/toolbar/GridToolbarQuickFilter.js +57 -4
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/localeTextConstants.js +1 -0
- package/hooks/core/useGridStateInitialization.js +19 -6
- package/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/hooks/features/columns/useGridColumnSpanning.d.ts +1 -1
- package/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/hooks/features/columns/useGridColumns.d.ts +1 -1
- package/hooks/features/columns/useGridColumns.js +1 -1
- package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
- package/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/hooks/features/filter/gridFilterSelector.d.ts +5 -0
- package/hooks/features/filter/gridFilterSelector.js +6 -0
- package/hooks/features/filter/gridFilterState.d.ts +1 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
- package/hooks/features/filter/gridFilterUtils.js +10 -9
- package/hooks/features/filter/useGridFilter.d.ts +1 -1
- package/hooks/features/filter/useGridFilter.js +24 -7
- package/hooks/features/pagination/useGridPage.js +1 -1
- package/hooks/features/pagination/useGridPageSize.js +1 -1
- package/hooks/features/rows/useGridRows.js +15 -2
- package/hooks/features/rows/useGridRowsMeta.js +79 -77
- package/hooks/features/selection/useGridSelection.js +1 -1
- package/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/hooks/features/sorting/useGridSorting.d.ts +1 -1
- package/hooks/features/sorting/useGridSorting.js +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +42 -8
- package/index.js +1 -1
- package/legacy/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/legacy/colDef/gridNumericColDef.js +1 -1
- package/legacy/components/cell/GridBooleanCell.js +3 -1
- package/legacy/components/cell/GridEditBooleanCell.js +4 -2
- package/legacy/components/cell/GridEditDateCell.js +4 -2
- package/legacy/components/cell/GridEditInputCell.js +4 -2
- package/legacy/components/cell/GridEditSingleSelectCell.js +9 -7
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +5 -3
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/legacy/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/legacy/components/containers/GridRootStyles.js +7 -5
- package/legacy/components/panel/GridColumnsPanel.js +5 -6
- package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +12 -5
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +3 -6
- package/legacy/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/legacy/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/legacy/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/legacy/components/toolbar/GridToolbarQuickFilter.js +67 -6
- package/legacy/constants/defaultGridSlotsComponents.js +2 -1
- package/legacy/constants/localeTextConstants.js +1 -0
- package/legacy/hooks/core/useGridStateInitialization.js +18 -6
- package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/legacy/hooks/features/columns/useGridColumns.js +1 -1
- package/legacy/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/legacy/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/legacy/hooks/features/filter/gridFilterSelector.js +8 -0
- package/legacy/hooks/features/filter/gridFilterUtils.js +11 -10
- package/legacy/hooks/features/filter/useGridFilter.js +28 -7
- package/legacy/hooks/features/pagination/useGridPage.js +1 -1
- package/legacy/hooks/features/pagination/useGridPageSize.js +1 -1
- package/legacy/hooks/features/rows/useGridRows.js +17 -2
- package/legacy/hooks/features/rows/useGridRowsMeta.js +81 -77
- package/legacy/hooks/features/selection/useGridSelection.js +1 -1
- package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/legacy/hooks/features/sorting/useGridSorting.js +1 -1
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +42 -8
- package/legacy/index.js +1 -1
- package/legacy/locales/arSD.js +1 -0
- package/legacy/locales/bgBG.js +1 -0
- package/legacy/locales/csCZ.js +1 -0
- package/legacy/locales/daDK.js +1 -0
- package/legacy/locales/deDE.js +1 -0
- package/legacy/locales/elGR.js +1 -0
- package/legacy/locales/esES.js +1 -0
- package/legacy/locales/faIR.js +1 -0
- package/legacy/locales/fiFI.js +1 -0
- package/legacy/locales/frFR.js +1 -0
- package/legacy/locales/heIL.js +1 -0
- package/legacy/locales/huHU.js +1 -0
- package/legacy/locales/index.js +1 -0
- package/legacy/locales/itIT.js +1 -0
- package/legacy/locales/jaJP.js +29 -24
- package/legacy/locales/koKR.js +1 -0
- package/legacy/locales/nbNO.js +1 -0
- package/legacy/locales/nlNL.js +1 -0
- package/legacy/locales/plPL.js +1 -0
- package/legacy/locales/ptBR.js +1 -0
- package/legacy/locales/ruRU.js +7 -6
- package/legacy/locales/skSK.js +1 -0
- package/legacy/locales/svSE.js +128 -0
- package/legacy/locales/trTR.js +1 -0
- package/legacy/locales/ukUA.js +1 -0
- package/legacy/locales/viVN.js +1 -0
- package/legacy/locales/zhCN.js +1 -0
- package/locales/arSD.js +1 -0
- package/locales/bgBG.js +1 -0
- package/locales/csCZ.js +1 -0
- package/locales/daDK.js +1 -0
- package/locales/deDE.js +1 -0
- package/locales/elGR.js +1 -0
- package/locales/esES.js +1 -0
- package/locales/faIR.js +1 -0
- package/locales/fiFI.js +1 -0
- package/locales/frFR.js +1 -0
- package/locales/heIL.js +1 -0
- package/locales/huHU.js +1 -0
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/itIT.js +1 -0
- package/locales/jaJP.js +25 -24
- package/locales/koKR.js +1 -0
- package/locales/nbNO.js +1 -0
- package/locales/nlNL.js +1 -0
- package/locales/plPL.js +1 -0
- package/locales/ptBR.js +1 -0
- package/locales/ruRU.js +7 -6
- package/locales/skSK.js +1 -0
- package/locales/svSE.d.ts +2 -0
- package/locales/svSE.js +116 -0
- package/locales/trTR.js +1 -0
- package/locales/ukUA.js +1 -0
- package/locales/viVN.js +1 -0
- package/locales/zhCN.js +1 -0
- package/models/api/gridCallbackDetails.d.ts +6 -1
- package/models/api/gridFilterApi.d.ts +8 -1
- package/models/api/gridLocaleTextApi.d.ts +1 -0
- package/models/api/gridStateApi.d.ts +14 -3
- package/models/colDef/gridColDef.d.ts +1 -1
- package/models/events/gridEventLookup.d.ts +3 -0
- package/models/gridIconSlotsComponent.d.ts +5 -0
- package/models/props/DataGridProps.d.ts +1 -1
- package/modern/colDef/gridCheckboxSelectionColDef.js +2 -1
- package/modern/colDef/gridNumericColDef.js +1 -1
- package/modern/components/cell/GridBooleanCell.js +4 -3
- package/modern/components/cell/GridEditBooleanCell.js +4 -3
- package/modern/components/cell/GridEditDateCell.js +4 -3
- package/modern/components/cell/GridEditInputCell.js +4 -3
- package/modern/components/cell/GridEditSingleSelectCell.js +9 -7
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +5 -3
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/modern/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/modern/components/containers/GridRootStyles.js +4 -1
- package/modern/components/panel/GridColumnsPanel.js +3 -6
- package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +12 -5
- package/modern/components/panel/filterPanel/GridFilterPanel.js +2 -5
- package/modern/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/modern/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/modern/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/modern/components/toolbar/GridToolbarQuickFilter.js +57 -4
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- package/modern/constants/localeTextConstants.js +1 -0
- package/modern/hooks/core/useGridStateInitialization.js +19 -6
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
- package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -1
- package/modern/hooks/features/columns/useGridColumns.js +1 -1
- package/modern/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/modern/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/modern/hooks/features/filter/gridFilterSelector.js +6 -0
- package/modern/hooks/features/filter/gridFilterUtils.js +10 -9
- package/modern/hooks/features/filter/useGridFilter.js +24 -7
- package/modern/hooks/features/pagination/useGridPage.js +1 -1
- package/modern/hooks/features/pagination/useGridPageSize.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +15 -2
- package/modern/hooks/features/rows/useGridRowsMeta.js +77 -75
- package/modern/hooks/features/selection/useGridSelection.js +1 -1
- package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
- package/modern/hooks/features/sorting/useGridSorting.js +1 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +42 -8
- package/modern/index.js +1 -1
- package/modern/locales/arSD.js +1 -0
- package/modern/locales/bgBG.js +1 -0
- package/modern/locales/csCZ.js +1 -0
- package/modern/locales/daDK.js +1 -0
- package/modern/locales/deDE.js +1 -0
- package/modern/locales/elGR.js +1 -0
- package/modern/locales/esES.js +1 -0
- package/modern/locales/faIR.js +1 -0
- package/modern/locales/fiFI.js +1 -0
- package/modern/locales/frFR.js +1 -0
- package/modern/locales/heIL.js +1 -0
- package/modern/locales/huHU.js +1 -0
- package/modern/locales/index.js +1 -0
- package/modern/locales/itIT.js +1 -0
- package/modern/locales/jaJP.js +25 -24
- package/modern/locales/koKR.js +1 -0
- package/modern/locales/nbNO.js +1 -0
- package/modern/locales/nlNL.js +1 -0
- package/modern/locales/plPL.js +1 -0
- package/modern/locales/ptBR.js +1 -0
- package/modern/locales/ruRU.js +7 -6
- package/modern/locales/skSK.js +1 -0
- package/modern/locales/svSE.js +116 -0
- package/modern/locales/trTR.js +1 -0
- package/modern/locales/ukUA.js +1 -0
- package/modern/locales/viVN.js +1 -0
- package/modern/locales/zhCN.js +1 -0
- package/node/colDef/gridCheckboxSelectionColDef.js +4 -2
- package/node/colDef/gridNumericColDef.js +1 -1
- package/node/components/cell/GridBooleanCell.js +5 -3
- package/node/components/cell/GridEditBooleanCell.js +5 -3
- package/node/components/cell/GridEditDateCell.js +5 -3
- package/node/components/cell/GridEditInputCell.js +5 -3
- package/node/components/cell/GridEditSingleSelectCell.js +10 -7
- package/node/components/columnHeaders/GridColumnHeaderItem.js +5 -3
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
- package/node/components/columnSelection/GridHeaderCheckbox.js +0 -1
- package/node/components/containers/GridRootStyles.js +4 -1
- package/node/components/panel/GridColumnsPanel.js +3 -6
- package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +12 -5
- package/node/components/panel/filterPanel/GridFilterPanel.js +2 -5
- package/node/components/toolbar/GridToolbarColumnsButton.js +0 -1
- package/node/components/toolbar/GridToolbarDensitySelector.js +0 -1
- package/node/components/toolbar/GridToolbarExportContainer.js +0 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +0 -1
- package/node/components/toolbar/GridToolbarQuickFilter.js +61 -4
- package/node/constants/defaultGridSlotsComponents.js +2 -1
- package/node/constants/localeTextConstants.js +1 -0
- package/node/hooks/core/useGridStateInitialization.js +19 -6
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +23 -0
- package/node/hooks/features/columns/useGridColumnSpanning.js +11 -16
- package/node/hooks/features/columns/useGridColumns.js +1 -1
- package/node/hooks/features/dimensions/useGridDimensions.js +9 -8
- package/node/hooks/features/editRows/useGridEditing.old.js +1 -1
- package/node/hooks/features/filter/gridFilterSelector.js +9 -2
- package/node/hooks/features/filter/gridFilterUtils.js +9 -8
- package/node/hooks/features/filter/useGridFilter.js +24 -7
- package/node/hooks/features/pagination/useGridPage.js +1 -1
- package/node/hooks/features/pagination/useGridPageSize.js +1 -1
- package/node/hooks/features/rows/useGridRows.js +15 -2
- package/node/hooks/features/rows/useGridRowsMeta.js +80 -77
- package/node/hooks/features/selection/useGridSelection.js +1 -1
- package/node/hooks/features/selection/useGridSelectionPreProcessors.js +7 -5
- package/node/hooks/features/sorting/useGridSorting.js +1 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +42 -9
- package/node/index.js +1 -1
- package/node/locales/arSD.js +1 -0
- package/node/locales/bgBG.js +1 -0
- package/node/locales/csCZ.js +1 -0
- package/node/locales/daDK.js +1 -0
- package/node/locales/deDE.js +1 -0
- package/node/locales/elGR.js +1 -0
- package/node/locales/esES.js +1 -0
- package/node/locales/faIR.js +1 -0
- package/node/locales/fiFI.js +1 -0
- package/node/locales/frFR.js +1 -0
- package/node/locales/heIL.js +1 -0
- package/node/locales/huHU.js +1 -0
- package/node/locales/index.js +13 -0
- package/node/locales/itIT.js +1 -0
- package/node/locales/jaJP.js +25 -24
- package/node/locales/koKR.js +1 -0
- package/node/locales/nbNO.js +1 -0
- package/node/locales/nlNL.js +1 -0
- package/node/locales/plPL.js +1 -0
- package/node/locales/ptBR.js +1 -0
- package/node/locales/ruRU.js +7 -6
- package/node/locales/skSK.js +1 -0
- package/node/locales/svSE.js +126 -0
- package/node/locales/trTR.js +1 -0
- package/node/locales/ukUA.js +1 -0
- package/node/locales/viVN.js +1 -0
- package/node/locales/zhCN.js +1 -0
- package/package.json +4 -3
|
@@ -17,6 +17,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
17
17
|
|
|
18
18
|
var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
|
|
19
19
|
|
|
20
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
21
|
+
|
|
20
22
|
var _styles = require("@mui/material/styles");
|
|
21
23
|
|
|
22
24
|
var _utils = require("@mui/material/utils");
|
|
@@ -25,9 +27,15 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
|
25
27
|
|
|
26
28
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
27
29
|
|
|
30
|
+
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
31
|
+
|
|
32
|
+
var _filter = require("../../hooks/features/filter");
|
|
33
|
+
|
|
34
|
+
var _utils2 = require("../../utils/utils");
|
|
35
|
+
|
|
28
36
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
37
|
|
|
30
|
-
const _excluded = ["quickFilterParser", "debounceMs"];
|
|
38
|
+
const _excluded = ["quickFilterParser", "quickFilterFormatter", "debounceMs"];
|
|
31
39
|
|
|
32
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); }
|
|
33
41
|
|
|
@@ -42,27 +50,54 @@ const GridToolbarQuickFilterRoot = (0, _styles.styled)(_TextField.default, {
|
|
|
42
50
|
}) => ({
|
|
43
51
|
width: 'auto',
|
|
44
52
|
paddingBottom: theme.spacing(0.5),
|
|
45
|
-
'&
|
|
46
|
-
|
|
53
|
+
'& input': {
|
|
54
|
+
marginLeft: theme.spacing(0.5)
|
|
47
55
|
},
|
|
48
56
|
'& .MuiInput-underline:before': {
|
|
49
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'
|
|
50
72
|
}
|
|
51
73
|
}));
|
|
52
74
|
|
|
53
75
|
const defaultSearchValueParser = searchText => searchText.split(' ').filter(word => word !== '');
|
|
54
76
|
|
|
77
|
+
const defaultSearchValueFormatter = values => values.join(' ');
|
|
78
|
+
|
|
55
79
|
function GridToolbarQuickFilter(props) {
|
|
56
80
|
var _rootProps$components;
|
|
57
81
|
|
|
58
82
|
const {
|
|
59
83
|
quickFilterParser = defaultSearchValueParser,
|
|
84
|
+
quickFilterFormatter = defaultSearchValueFormatter,
|
|
60
85
|
debounceMs = 500
|
|
61
86
|
} = props,
|
|
62
87
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
63
88
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
64
89
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
65
|
-
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]);
|
|
66
101
|
const updateSearchValue = React.useCallback(newSearchValue => {
|
|
67
102
|
apiRef.current.setQuickFilterValues(quickFilterParser(newSearchValue));
|
|
68
103
|
}, [apiRef, quickFilterParser]);
|
|
@@ -72,6 +107,10 @@ function GridToolbarQuickFilter(props) {
|
|
|
72
107
|
setSearchValue(newSearchValue);
|
|
73
108
|
debouncedUpdateSearchValue(newSearchValue);
|
|
74
109
|
}, [debouncedUpdateSearchValue]);
|
|
110
|
+
const handleSearchReset = React.useCallback(() => {
|
|
111
|
+
setSearchValue('');
|
|
112
|
+
updateSearchValue('');
|
|
113
|
+
}, [updateSearchValue]);
|
|
75
114
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridToolbarQuickFilterRoot, (0, _extends2.default)({
|
|
76
115
|
as: rootProps.components.BaseTextField,
|
|
77
116
|
variant: "standard",
|
|
@@ -83,6 +122,17 @@ function GridToolbarQuickFilter(props) {
|
|
|
83
122
|
InputProps: {
|
|
84
123
|
startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.components.QuickFilterIcon, {
|
|
85
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
|
+
})
|
|
86
136
|
})
|
|
87
137
|
}
|
|
88
138
|
}, other, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.baseTextField));
|
|
@@ -100,6 +150,13 @@ process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
|
|
|
100
150
|
*/
|
|
101
151
|
debounceMs: _propTypes.default.number,
|
|
102
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
|
+
|
|
103
160
|
/**
|
|
104
161
|
* Function responsible for parsing text input in an array of independent values for quick filtering.
|
|
105
162
|
* @param {string} input The value entered by the user
|
|
@@ -57,7 +57,8 @@ const DEFAULT_GRID_ICON_SLOTS_COMPONENTS = {
|
|
|
57
57
|
DetailPanelExpandIcon: _components.GridAddIcon,
|
|
58
58
|
DetailPanelCollapseIcon: _components.GridRemoveIcon,
|
|
59
59
|
RowReorderIcon: _components.GridDragIcon,
|
|
60
|
-
QuickFilterIcon: _components.GridSearchIcon
|
|
60
|
+
QuickFilterIcon: _components.GridSearchIcon,
|
|
61
|
+
QuickFilterClearIcon: _components.GridCloseIcon
|
|
61
62
|
};
|
|
62
63
|
/**
|
|
63
64
|
* TODO: Differentiate community and pro value and interface
|
|
@@ -111,6 +111,7 @@ const GRID_DEFAULT_LOCALE_TEXT = {
|
|
|
111
111
|
groupColumn: name => `Group by ${name}`,
|
|
112
112
|
unGroupColumn: name => `Stop grouping by ${name}`,
|
|
113
113
|
// Master/detail
|
|
114
|
+
detailPanelToggle: 'Detail panel toggle',
|
|
114
115
|
expandDetailPanel: 'Expand',
|
|
115
116
|
collapseDetailPanel: 'Collapse',
|
|
116
117
|
// Used core components translation keys
|
|
@@ -28,7 +28,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
28
28
|
const useGridStateInitialization = (apiRef, props) => {
|
|
29
29
|
const controlStateMapRef = React.useRef({});
|
|
30
30
|
const [, rawForceUpdate] = React.useState();
|
|
31
|
-
const
|
|
31
|
+
const registerControlState = React.useCallback(controlStateItem => {
|
|
32
32
|
const {
|
|
33
33
|
stateId
|
|
34
34
|
} = controlStateItem,
|
|
@@ -37,7 +37,7 @@ const useGridStateInitialization = (apiRef, props) => {
|
|
|
37
37
|
stateId
|
|
38
38
|
});
|
|
39
39
|
}, []);
|
|
40
|
-
const setState = React.useCallback(state => {
|
|
40
|
+
const setState = React.useCallback((state, reason) => {
|
|
41
41
|
let newState;
|
|
42
42
|
|
|
43
43
|
if ((0, _utils2.isFunction)(state)) {
|
|
@@ -98,23 +98,36 @@ const useGridStateInitialization = (apiRef, props) => {
|
|
|
98
98
|
|
|
99
99
|
if (controlState.propOnChange && hasPropChanged) {
|
|
100
100
|
const details = props.signature === _useGridApiEventHandler.GridSignature.DataGridPro ? {
|
|
101
|
-
api: apiRef.current
|
|
102
|
-
|
|
101
|
+
api: apiRef.current,
|
|
102
|
+
reason
|
|
103
|
+
} : {
|
|
104
|
+
reason
|
|
105
|
+
};
|
|
103
106
|
controlState.propOnChange(model, details);
|
|
104
107
|
}
|
|
105
108
|
|
|
106
109
|
if (!ignoreSetState) {
|
|
107
|
-
apiRef.current.publishEvent(controlState.changeEvent, model
|
|
110
|
+
apiRef.current.publishEvent(controlState.changeEvent, model, {
|
|
111
|
+
reason
|
|
112
|
+
});
|
|
108
113
|
}
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
return !ignoreSetState;
|
|
112
117
|
}, [apiRef, props.signature]);
|
|
118
|
+
const updateControlState = React.useCallback((key, state, reason) => {
|
|
119
|
+
return apiRef.current.setState(previousState => {
|
|
120
|
+
return (0, _extends2.default)({}, previousState, {
|
|
121
|
+
[key]: state(previousState[key])
|
|
122
|
+
});
|
|
123
|
+
}, reason);
|
|
124
|
+
}, [apiRef]);
|
|
113
125
|
const forceUpdate = React.useCallback(() => rawForceUpdate(() => apiRef.current.state), [apiRef]);
|
|
114
126
|
const stateApi = {
|
|
115
127
|
setState,
|
|
116
128
|
forceUpdate,
|
|
117
|
-
unstable_updateControlState: updateControlState
|
|
129
|
+
unstable_updateControlState: updateControlState,
|
|
130
|
+
unstable_registerControlState: registerControlState
|
|
118
131
|
};
|
|
119
132
|
(0, _utils.useGridApiMethod)(apiRef, stateApi, 'GridStateApi');
|
|
120
133
|
};
|
|
@@ -15,6 +15,8 @@ var _utils = require("../../utils");
|
|
|
15
15
|
|
|
16
16
|
var _columnMenuSelector = require("./columnMenuSelector");
|
|
17
17
|
|
|
18
|
+
var _gridClasses = require("../../../constants/gridClasses");
|
|
19
|
+
|
|
18
20
|
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); }
|
|
19
21
|
|
|
20
22
|
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; }
|
|
@@ -97,7 +99,28 @@ const useGridColumnMenu = apiRef => {
|
|
|
97
99
|
* EVENTS
|
|
98
100
|
*/
|
|
99
101
|
|
|
102
|
+
const handleColumnHeaderFocus = React.useCallback((params, event) => {
|
|
103
|
+
// Check if the column menu button received focus
|
|
104
|
+
if (!event.target.classList.contains(_gridClasses.gridClasses.menuIconButton)) {
|
|
105
|
+
return;
|
|
106
|
+
} // Check if there's an element which lost focus
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
if (!event.relatedTarget) {
|
|
110
|
+
return;
|
|
111
|
+
} // `true` if the focus was on the column menu itself, not on any item
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
const columnMenuLostFocus = event.relatedTarget.classList.contains(_gridClasses.gridClasses.menuList); // `true` if the focus was on an item from the column menu
|
|
115
|
+
|
|
116
|
+
const columnMenuItemLostFocus = event.relatedTarget.getAttribute('role') === 'menuitem';
|
|
117
|
+
|
|
118
|
+
if (columnMenuLostFocus || columnMenuItemLostFocus) {
|
|
119
|
+
apiRef.current.setColumnHeaderFocus(params.field);
|
|
120
|
+
}
|
|
121
|
+
}, [apiRef]);
|
|
100
122
|
(0, _utils.useGridApiEventHandler)(apiRef, 'columnResizeStart', hideColumnMenu);
|
|
123
|
+
(0, _utils.useGridApiEventHandler)(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);
|
|
101
124
|
(0, _utils.useGridApiEventHandler)(apiRef, 'virtualScrollerWheel', apiRef.current.hideColumnMenu);
|
|
102
125
|
(0, _utils.useGridApiEventHandler)(apiRef, 'virtualScrollerTouchMove', apiRef.current.hideColumnMenu);
|
|
103
126
|
};
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.useGridColumnSpanning = void 0;
|
|
9
7
|
|
|
10
|
-
var
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
9
|
|
|
12
10
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
13
11
|
|
|
14
12
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
15
13
|
|
|
14
|
+
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); }
|
|
15
|
+
|
|
16
|
+
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; }
|
|
17
|
+
|
|
16
18
|
/**
|
|
17
19
|
* @requires useGridColumns (method, event)
|
|
18
20
|
* @requires useGridParamsApi (method)
|
|
19
21
|
*/
|
|
20
22
|
const useGridColumnSpanning = apiRef => {
|
|
21
|
-
const lookup =
|
|
22
|
-
|
|
23
|
-
const setCellColSpanInfo = _react.default.useCallback((rowId, columnIndex, cellColSpanInfo) => {
|
|
23
|
+
const lookup = React.useRef({});
|
|
24
|
+
const setCellColSpanInfo = React.useCallback((rowId, columnIndex, cellColSpanInfo) => {
|
|
24
25
|
const sizes = lookup.current;
|
|
25
26
|
|
|
26
27
|
if (!sizes[rowId]) {
|
|
@@ -29,15 +30,13 @@ const useGridColumnSpanning = apiRef => {
|
|
|
29
30
|
|
|
30
31
|
sizes[rowId][columnIndex] = cellColSpanInfo;
|
|
31
32
|
}, []);
|
|
32
|
-
|
|
33
|
-
const getCellColSpanInfo = _react.default.useCallback((rowId, columnIndex) => {
|
|
33
|
+
const getCellColSpanInfo = React.useCallback((rowId, columnIndex) => {
|
|
34
34
|
var _lookup$current$rowId;
|
|
35
35
|
|
|
36
36
|
return (_lookup$current$rowId = lookup.current[rowId]) == null ? void 0 : _lookup$current$rowId[columnIndex];
|
|
37
37
|
}, []); // Calculate `colSpan` for the cell.
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
const calculateCellColSpan = _react.default.useCallback(params => {
|
|
39
|
+
const calculateCellColSpan = React.useCallback(params => {
|
|
41
40
|
const {
|
|
42
41
|
columnIndex,
|
|
43
42
|
rowId,
|
|
@@ -91,8 +90,7 @@ const useGridColumnSpanning = apiRef => {
|
|
|
91
90
|
};
|
|
92
91
|
}, [apiRef, setCellColSpanInfo]); // Calculate `colSpan` for each cell in the row
|
|
93
92
|
|
|
94
|
-
|
|
95
|
-
const calculateColSpan = _react.default.useCallback(({
|
|
93
|
+
const calculateColSpan = React.useCallback(({
|
|
96
94
|
rowId,
|
|
97
95
|
minFirstColumn,
|
|
98
96
|
maxLastColumn
|
|
@@ -110,18 +108,15 @@ const useGridColumnSpanning = apiRef => {
|
|
|
110
108
|
}
|
|
111
109
|
}
|
|
112
110
|
}, [calculateCellColSpan]);
|
|
113
|
-
|
|
114
111
|
const columnSpanningApi = {
|
|
115
112
|
unstable_getCellColSpanInfo: getCellColSpanInfo,
|
|
116
113
|
unstable_calculateColSpan: calculateColSpan
|
|
117
114
|
};
|
|
118
115
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, columnSpanningApi, 'GridColumnSpanningAPI');
|
|
119
|
-
|
|
120
|
-
const handleColumnReorderChange = _react.default.useCallback(() => {
|
|
116
|
+
const handleColumnReorderChange = React.useCallback(() => {
|
|
121
117
|
// `colSpan` needs to be recalculated after column reordering
|
|
122
118
|
lookup.current = {};
|
|
123
119
|
}, []);
|
|
124
|
-
|
|
125
120
|
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnOrderChange', handleColumnReorderChange);
|
|
126
121
|
};
|
|
127
122
|
|
|
@@ -69,7 +69,7 @@ function useGridColumns(apiRef, props) {
|
|
|
69
69
|
const columnTypes = React.useMemo(() => (0, _gridColumnsUtils.computeColumnTypes)(props.columnTypes), [props.columnTypes]);
|
|
70
70
|
const previousColumnsProp = React.useRef(props.columns);
|
|
71
71
|
const previousColumnTypesProp = React.useRef(columnTypes);
|
|
72
|
-
apiRef.current.
|
|
72
|
+
apiRef.current.unstable_registerControlState({
|
|
73
73
|
stateId: 'visibleColumns',
|
|
74
74
|
propModel: props.columnVisibilityModel,
|
|
75
75
|
propOnChange: props.onColumnVisibilityModelChange,
|
|
@@ -58,7 +58,7 @@ const hasScroll = ({
|
|
|
58
58
|
|
|
59
59
|
function useGridDimensions(apiRef, props) {
|
|
60
60
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useResizeContainer');
|
|
61
|
-
const
|
|
61
|
+
const errorShown = React.useRef(false);
|
|
62
62
|
const rootDimensionsRef = React.useRef(null);
|
|
63
63
|
const fullDimensionsRef = React.useRef(null);
|
|
64
64
|
const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
|
|
@@ -115,7 +115,8 @@ function useGridDimensions(apiRef, props) {
|
|
|
115
115
|
viewportOuterSize,
|
|
116
116
|
viewportInnerSize,
|
|
117
117
|
hasScrollX,
|
|
118
|
-
hasScrollY
|
|
118
|
+
hasScrollY,
|
|
119
|
+
scrollBarSize
|
|
119
120
|
};
|
|
120
121
|
const prevDimensions = fullDimensionsRef.current;
|
|
121
122
|
fullDimensionsRef.current = newFullDimensions;
|
|
@@ -165,14 +166,14 @@ function useGridDimensions(apiRef, props) {
|
|
|
165
166
|
|
|
166
167
|
const isJSDOM = /jsdom/.test(window.navigator.userAgent);
|
|
167
168
|
|
|
168
|
-
if (size.height === 0 && !
|
|
169
|
-
logger.
|
|
170
|
-
|
|
169
|
+
if (size.height === 0 && !errorShown.current && !props.autoHeight && !isJSDOM) {
|
|
170
|
+
logger.error(['The parent DOM element of the data grid has an empty height.', 'Please make sure that this element has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
171
|
+
errorShown.current = true;
|
|
171
172
|
}
|
|
172
173
|
|
|
173
|
-
if (size.width === 0 && !
|
|
174
|
-
logger.
|
|
175
|
-
|
|
174
|
+
if (size.width === 0 && !errorShown.current && !isJSDOM) {
|
|
175
|
+
logger.error(['The parent DOM element of the data grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
176
|
+
errorShown.current = true;
|
|
176
177
|
}
|
|
177
178
|
|
|
178
179
|
if (isTestEnvironment) {
|
|
@@ -49,7 +49,7 @@ function useGridEditing(apiRef, props) {
|
|
|
49
49
|
(0, _useGridCellEditing.useCellEditing)(apiRef, props);
|
|
50
50
|
(0, _useGridRowEditing.useGridRowEditing)(apiRef, props);
|
|
51
51
|
const debounceMap = React.useRef({});
|
|
52
|
-
apiRef.current.
|
|
52
|
+
apiRef.current.unstable_registerControlState({
|
|
53
53
|
stateId: 'editRows',
|
|
54
54
|
propModel: props.editRowsModel,
|
|
55
55
|
propOnChange: props.onEditRowsModelChange,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.gridVisibleTopLevelRowCountSelector = exports.gridVisibleSortedTopLevelRowEntriesSelector = exports.gridVisibleSortedRowIdsSelector = exports.gridVisibleSortedRowEntriesSelector = exports.gridVisibleRowsSelector = exports.gridVisibleRowsLookupSelector = exports.gridVisibleRowCountSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilterStateSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = void 0;
|
|
6
|
+
exports.gridVisibleTopLevelRowCountSelector = exports.gridVisibleSortedTopLevelRowEntriesSelector = exports.gridVisibleSortedRowIdsSelector = exports.gridVisibleSortedRowEntriesSelector = exports.gridVisibleRowsSelector = exports.gridVisibleRowsLookupSelector = exports.gridVisibleRowCountSelector = exports.gridQuickFilterValuesSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilterStateSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = void 0;
|
|
7
7
|
|
|
8
8
|
var _createSelector = require("../../../utils/createSelector");
|
|
9
9
|
|
|
@@ -26,11 +26,18 @@ const gridFilterStateSelector = state => state.filter;
|
|
|
26
26
|
exports.gridFilterStateSelector = gridFilterStateSelector;
|
|
27
27
|
const gridFilterModelSelector = (0, _createSelector.createSelector)(gridFilterStateSelector, filterState => filterState.filterModel);
|
|
28
28
|
/**
|
|
29
|
+
* Get the current quick filter values.
|
|
29
30
|
* @category Filtering
|
|
30
|
-
* @ignore - do not document.
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
33
|
exports.gridFilterModelSelector = gridFilterModelSelector;
|
|
34
|
+
const gridQuickFilterValuesSelector = (0, _createSelector.createSelector)(gridFilterModelSelector, filterModel => filterModel.quickFilterValues);
|
|
35
|
+
/**
|
|
36
|
+
* @category Filtering
|
|
37
|
+
* @ignore - do not document.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
exports.gridQuickFilterValuesSelector = gridQuickFilterValuesSelector;
|
|
34
41
|
const gridVisibleRowsLookupSelector = (0, _createSelector.createSelector)(gridFilterStateSelector, filterState => filterState.visibleRowsLookup);
|
|
35
42
|
/**
|
|
36
43
|
* @category Filtering
|
|
@@ -30,8 +30,9 @@ const cleanFilterItem = (item, apiRef) => {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
if (cleanItem.operatorValue == null) {
|
|
33
|
-
//
|
|
34
|
-
|
|
33
|
+
// Selects a default operator
|
|
34
|
+
// We don't use `apiRef.current.getColumn` because it is not ready during state initialization
|
|
35
|
+
const column = (0, _columns.gridColumnLookupSelector)(apiRef)[cleanItem.columnField];
|
|
35
36
|
cleanItem.operatorValue = column && column.filterOperators[0].value;
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -82,10 +83,8 @@ const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) =>
|
|
|
82
83
|
|
|
83
84
|
exports.sanitizeFilterModel = sanitizeFilterModel;
|
|
84
85
|
|
|
85
|
-
const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) =>
|
|
86
|
-
|
|
87
|
-
filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)
|
|
88
|
-
})
|
|
86
|
+
const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) => filteringState => (0, _extends2.default)({}, filteringState, {
|
|
87
|
+
filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)
|
|
89
88
|
});
|
|
90
89
|
/**
|
|
91
90
|
* Generates a method to easily check if a row is matching the current filter model.
|
|
@@ -210,14 +209,16 @@ const buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {
|
|
|
210
209
|
const sanitizedQuickFilterValues = quickFilterValues.filter((value, index) => Object.keys(appliersPerColumnField).some(field => appliersPerColumnField[field][index] != null));
|
|
211
210
|
return (rowId, shouldApplyFilter) => {
|
|
212
211
|
const usedCellParams = {};
|
|
212
|
+
const columnsFieldsToFilter = [];
|
|
213
213
|
Object.keys(appliersPerColumnField).forEach(columnField => {
|
|
214
214
|
if (!shouldApplyFilter || shouldApplyFilter(columnField)) {
|
|
215
215
|
usedCellParams[columnField] = apiRef.current.getCellParams(rowId, columnField);
|
|
216
|
+
columnsFieldsToFilter.push(columnField);
|
|
216
217
|
}
|
|
217
218
|
}); // Return `false` as soon as we have a quick filter value that does not match any column
|
|
218
219
|
|
|
219
220
|
if (quickFilterLogicOperator === _models.GridLinkOperator.And) {
|
|
220
|
-
return sanitizedQuickFilterValues.every((value, index) =>
|
|
221
|
+
return sanitizedQuickFilterValues.every((value, index) => columnsFieldsToFilter.some(field => {
|
|
221
222
|
var _appliersPerColumnFie, _appliersPerColumnFie2;
|
|
222
223
|
|
|
223
224
|
if (appliersPerColumnField[field][index] == null) {
|
|
@@ -229,7 +230,7 @@ const buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {
|
|
|
229
230
|
} // Return `true` as soon as we have have a quick filter value that match any column
|
|
230
231
|
|
|
231
232
|
|
|
232
|
-
return sanitizedQuickFilterValues.some((value, index) =>
|
|
233
|
+
return sanitizedQuickFilterValues.some((value, index) => columnsFieldsToFilter.some(field => {
|
|
233
234
|
var _appliersPerColumnFie3, _appliersPerColumnFie4;
|
|
234
235
|
|
|
235
236
|
if (appliersPerColumnField[field][index] == null) {
|
|
@@ -70,7 +70,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
70
70
|
var _props$componentsProp2;
|
|
71
71
|
|
|
72
72
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridFilter');
|
|
73
|
-
apiRef.current.
|
|
73
|
+
apiRef.current.unstable_registerControlState({
|
|
74
74
|
stateId: 'filter',
|
|
75
75
|
propModel: props.filterModel,
|
|
76
76
|
propOnChange: props.onFilterModelChange,
|
|
@@ -111,7 +111,23 @@ const useGridFilter = (apiRef, props) => {
|
|
|
111
111
|
|
|
112
112
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
113
113
|
items
|
|
114
|
-
}));
|
|
114
|
+
}), 'upsertFilterItem');
|
|
115
|
+
}, [apiRef]);
|
|
116
|
+
const upsertFilterItems = React.useCallback(items => {
|
|
117
|
+
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
118
|
+
const existingItems = [...filterModel.items];
|
|
119
|
+
items.forEach(item => {
|
|
120
|
+
const itemIndex = items.findIndex(filterItem => filterItem.id === item.id);
|
|
121
|
+
|
|
122
|
+
if (itemIndex === -1) {
|
|
123
|
+
existingItems.push(item);
|
|
124
|
+
} else {
|
|
125
|
+
existingItems[itemIndex] = item;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
129
|
+
items
|
|
130
|
+
}), 'upsertFilterItems');
|
|
115
131
|
}, [apiRef]);
|
|
116
132
|
const deleteFilterItem = React.useCallback(itemToDelete => {
|
|
117
133
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
@@ -123,7 +139,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
123
139
|
|
|
124
140
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
125
141
|
items
|
|
126
|
-
}));
|
|
142
|
+
}), 'deleteFilterItem');
|
|
127
143
|
}, [apiRef]);
|
|
128
144
|
const showFilterPanel = React.useCallback(targetColumnField => {
|
|
129
145
|
logger.debug('Displaying filter panel');
|
|
@@ -166,7 +182,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
166
182
|
|
|
167
183
|
apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
|
|
168
184
|
linkOperator
|
|
169
|
-
}));
|
|
185
|
+
}), 'changeLogicOperator');
|
|
170
186
|
}, [apiRef]);
|
|
171
187
|
const setQuickFilterValues = React.useCallback(values => {
|
|
172
188
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
@@ -179,12 +195,12 @@ const useGridFilter = (apiRef, props) => {
|
|
|
179
195
|
quickFilterValues: [...values]
|
|
180
196
|
}));
|
|
181
197
|
}, [apiRef]);
|
|
182
|
-
const setFilterModel = React.useCallback(model => {
|
|
198
|
+
const setFilterModel = React.useCallback((model, reason) => {
|
|
183
199
|
const currentModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
184
200
|
|
|
185
201
|
if (currentModel !== model) {
|
|
186
202
|
logger.debug('Setting filter model');
|
|
187
|
-
apiRef.current.
|
|
203
|
+
apiRef.current.unstable_updateControlState('filter', (0, _gridFilterUtils.mergeStateWithFilterModel)(model, props.disableMultipleColumnsFiltering, apiRef), reason);
|
|
188
204
|
apiRef.current.unstable_applyFilters();
|
|
189
205
|
}
|
|
190
206
|
}, [apiRef, logger, props.disableMultipleColumnsFiltering]);
|
|
@@ -197,6 +213,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
197
213
|
unstable_applyFilters: applyFilters,
|
|
198
214
|
deleteFilterItem,
|
|
199
215
|
upsertFilterItem,
|
|
216
|
+
upsertFilterItems,
|
|
200
217
|
setFilterModel,
|
|
201
218
|
showFilterPanel,
|
|
202
219
|
hideFilterPanel,
|
|
@@ -230,7 +247,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
230
247
|
return params;
|
|
231
248
|
}
|
|
232
249
|
|
|
233
|
-
apiRef.current.
|
|
250
|
+
apiRef.current.unstable_updateControlState('filter', (0, _gridFilterUtils.mergeStateWithFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef), 'restoreState');
|
|
234
251
|
return (0, _extends2.default)({}, params, {
|
|
235
252
|
callbacks: [...params.callbacks, apiRef.current.unstable_applyFilters]
|
|
236
253
|
});
|
|
@@ -61,7 +61,7 @@ const useGridPage = (apiRef, props) => {
|
|
|
61
61
|
|
|
62
62
|
const logger = (0, _utils.useGridLogger)(apiRef, 'useGridPage');
|
|
63
63
|
const visibleTopLevelRowCount = (0, _utils.useGridSelector)(apiRef, _filter.gridVisibleTopLevelRowCountSelector);
|
|
64
|
-
apiRef.current.
|
|
64
|
+
apiRef.current.unstable_registerControlState({
|
|
65
65
|
stateId: 'page',
|
|
66
66
|
propModel: props.page,
|
|
67
67
|
propOnChange: props.onPageChange,
|
|
@@ -42,7 +42,7 @@ const useGridPageSize = (apiRef, props) => {
|
|
|
42
42
|
|
|
43
43
|
const logger = (0, _utils.useGridLogger)(apiRef, 'useGridPageSize');
|
|
44
44
|
const rowHeight = (0, _utils.useGridSelector)(apiRef, _density.gridDensityRowHeightSelector);
|
|
45
|
-
apiRef.current.
|
|
45
|
+
apiRef.current.unstable_registerControlState({
|
|
46
46
|
stateId: 'pageSize',
|
|
47
47
|
propModel: props.pageSize,
|
|
48
48
|
propOnChange: props.onPageSizeChange,
|
|
@@ -349,10 +349,23 @@ const useGridRows = (apiRef, props) => {
|
|
|
349
349
|
if (isFirstRender.current) {
|
|
350
350
|
isFirstRender.current = false;
|
|
351
351
|
return;
|
|
352
|
-
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
const areNewRowsAlreadyInState = apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows;
|
|
355
|
+
const isNewLoadingAlreadyInState = apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates === props.loading; // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)
|
|
353
356
|
|
|
357
|
+
if (areNewRowsAlreadyInState) {
|
|
358
|
+
// If the loading prop has changed, we need to update its value in the state because it won't be done by `throttledRowsChange`
|
|
359
|
+
if (!isNewLoadingAlreadyInState) {
|
|
360
|
+
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
361
|
+
rows: (0, _extends2.default)({}, state.rows, {
|
|
362
|
+
loading: props.loading
|
|
363
|
+
})
|
|
364
|
+
}));
|
|
365
|
+
apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates = props.loading;
|
|
366
|
+
apiRef.current.forceUpdate();
|
|
367
|
+
}
|
|
354
368
|
|
|
355
|
-
if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows && apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates === props.loading) {
|
|
356
369
|
return;
|
|
357
370
|
}
|
|
358
371
|
|