@mui/x-data-grid 9.10.1 → 9.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +283 -0
- package/DataGrid/DataGrid.js +3 -1
- package/DataGrid/DataGrid.mjs +3 -1
- package/DataGrid/useDataGridProps.d.mts +1 -1
- package/DataGrid/useDataGridProps.d.ts +1 -1
- package/README.md +1 -11
- package/components/cell/GridCell.js +14 -1
- package/components/cell/GridCell.mjs +14 -1
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
- package/components/columnHeaders/GridBaseColumnHeaders.mjs +1 -1
- package/components/columnHeaders/GridColumnHeaderItem.js +4 -0
- package/components/columnHeaders/GridColumnHeaderItem.mjs +4 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.mts +7 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +7 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +5 -4
- package/components/columnHeaders/GridGenericColumnHeaderItem.mjs +5 -4
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +18 -6
- package/components/panel/filterPanel/GridFilterInputSingleSelect.mjs +18 -6
- package/components/toolbarV8/Toolbar.js +2 -125
- package/components/toolbarV8/Toolbar.mjs +2 -125
- package/components/toolbarV8/ToolbarButton.js +11 -50
- package/components/toolbarV8/ToolbarButton.mjs +11 -50
- package/constants/gridClasses.d.mts +12 -0
- package/constants/gridClasses.d.ts +12 -0
- package/constants/gridClasses.js +1 -1
- package/constants/gridClasses.mjs +1 -1
- package/constants/localeTextConstants.js +4 -0
- package/constants/localeTextConstants.mjs +4 -0
- package/hooks/core/useGridApiInitialization.js +5 -1
- package/hooks/core/useGridApiInitialization.mjs +5 -1
- package/hooks/core/useGridStateInitialization.js +3 -1
- package/hooks/core/useGridStateInitialization.mjs +3 -1
- package/hooks/core/useGridVirtualizer.js +3 -0
- package/hooks/core/useGridVirtualizer.mjs +3 -0
- package/hooks/features/columnResize/useGridColumnResize.js +5 -0
- package/hooks/features/columnResize/useGridColumnResize.mjs +5 -0
- package/hooks/features/columns/gridColumnsUtils.d.mts +1 -1
- package/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
- package/hooks/features/columns/gridColumnsUtils.js +2 -2
- package/hooks/features/columns/gridColumnsUtils.mjs +2 -2
- package/hooks/features/dataSource/gridDataSourceSelector.js +6 -2
- package/hooks/features/dataSource/gridDataSourceSelector.mjs +6 -2
- package/hooks/features/dataSource/useGridDataSourceBase.js +47 -5
- package/hooks/features/dataSource/useGridDataSourceBase.mjs +47 -5
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.d.mts +9 -0
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.d.ts +9 -0
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.js +57 -0
- package/hooks/features/dataSource/useGridDataSourceFilterModelChange.mjs +49 -0
- package/hooks/features/editing/useGridCellEditing.js +3 -1
- package/hooks/features/editing/useGridCellEditing.mjs +3 -1
- package/hooks/features/editing/useGridRowEditing.js +3 -1
- package/hooks/features/editing/useGridRowEditing.mjs +3 -1
- package/hooks/features/filter/gridFilterUtils.d.mts +13 -0
- package/hooks/features/filter/gridFilterUtils.d.ts +13 -0
- package/hooks/features/filter/gridFilterUtils.js +32 -1
- package/hooks/features/filter/gridFilterUtils.mjs +29 -1
- package/hooks/features/filter/useGridFilter.js +1 -21
- package/hooks/features/filter/useGridFilter.mjs +2 -22
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +1 -1
- package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.mjs +1 -1
- package/hooks/features/rows/gridRowsUtils.js +17 -1
- package/hooks/features/rows/gridRowsUtils.mjs +17 -1
- package/hooks/features/rows/useGridRowSpanning.js +5 -0
- package/hooks/features/rows/useGridRowSpanning.mjs +5 -0
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.mts +1 -1
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/hooks/utils/useGridEvent.d.mts +2 -2
- package/hooks/utils/useGridEvent.d.ts +2 -2
- package/hooks/utils/useGridEvent.js +2 -0
- package/hooks/utils/useGridEvent.mjs +2 -0
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/internals/index.d.mts +2 -0
- package/internals/index.d.ts +2 -0
- package/internals/index.js +20 -0
- package/internals/index.mjs +2 -0
- package/locales/arSD.js +5 -0
- package/locales/arSD.mjs +5 -0
- package/locales/beBY.js +5 -0
- package/locales/beBY.mjs +5 -0
- package/locales/bgBG.js +5 -0
- package/locales/bgBG.mjs +5 -0
- package/locales/bnBD.js +5 -0
- package/locales/bnBD.mjs +5 -0
- package/locales/caES.js +5 -0
- package/locales/caES.mjs +5 -0
- package/locales/csCZ.js +5 -0
- package/locales/csCZ.mjs +5 -0
- package/locales/daDK.js +5 -0
- package/locales/daDK.mjs +5 -0
- package/locales/deDE.js +5 -0
- package/locales/deDE.mjs +5 -0
- package/locales/elGR.js +5 -0
- package/locales/elGR.mjs +5 -0
- package/locales/esES.js +5 -0
- package/locales/esES.mjs +5 -0
- package/locales/faIR.js +5 -0
- package/locales/faIR.mjs +5 -0
- package/locales/fiFI.js +5 -0
- package/locales/fiFI.mjs +5 -0
- package/locales/frFR.js +5 -0
- package/locales/frFR.mjs +5 -0
- package/locales/heIL.js +5 -0
- package/locales/heIL.mjs +5 -0
- package/locales/hrHR.js +5 -0
- package/locales/hrHR.mjs +5 -0
- package/locales/huHU.js +5 -0
- package/locales/huHU.mjs +5 -0
- package/locales/hyAM.js +5 -0
- package/locales/hyAM.mjs +5 -0
- package/locales/idID.js +5 -0
- package/locales/idID.mjs +5 -0
- package/locales/isIS.js +5 -0
- package/locales/isIS.mjs +5 -0
- package/locales/itIT.js +5 -0
- package/locales/itIT.mjs +5 -0
- package/locales/jaJP.js +5 -0
- package/locales/jaJP.mjs +5 -0
- package/locales/koKR.js +5 -0
- package/locales/koKR.mjs +5 -0
- package/locales/nbNO.js +5 -0
- package/locales/nbNO.mjs +5 -0
- package/locales/nlNL.js +5 -0
- package/locales/nlNL.mjs +5 -0
- package/locales/nnNO.js +5 -0
- package/locales/nnNO.mjs +5 -0
- package/locales/plPL.js +5 -0
- package/locales/plPL.mjs +5 -0
- package/locales/ptBR.js +5 -0
- package/locales/ptBR.mjs +5 -0
- package/locales/ptPT.js +5 -0
- package/locales/ptPT.mjs +5 -0
- package/locales/roRO.js +5 -0
- package/locales/roRO.mjs +5 -0
- package/locales/ruRU.js +5 -0
- package/locales/ruRU.mjs +5 -0
- package/locales/skSK.js +5 -0
- package/locales/skSK.mjs +5 -0
- package/locales/svSE.js +5 -0
- package/locales/svSE.mjs +5 -0
- package/locales/thTH.js +5 -0
- package/locales/thTH.mjs +5 -0
- package/locales/trTR.js +5 -0
- package/locales/trTR.mjs +5 -0
- package/locales/ukUA.js +5 -0
- package/locales/ukUA.mjs +5 -0
- package/locales/urPK.js +5 -0
- package/locales/urPK.mjs +5 -0
- package/locales/viVN.js +5 -0
- package/locales/viVN.mjs +5 -0
- package/locales/zhCN.js +5 -0
- package/locales/zhCN.mjs +5 -0
- package/locales/zhHK.js +5 -0
- package/locales/zhHK.mjs +5 -0
- package/locales/zhTW.js +5 -0
- package/locales/zhTW.mjs +5 -0
- package/models/api/gridApiCommon.d.mts +2 -2
- package/models/api/gridApiCommon.d.ts +2 -2
- package/models/api/gridCallbackDetails.d.mts +11 -1
- package/models/api/gridCallbackDetails.d.ts +11 -1
- package/models/api/gridLocaleTextApi.d.mts +3 -0
- package/models/api/gridLocaleTextApi.d.ts +3 -0
- package/models/api/gridRowApi.d.mts +12 -0
- package/models/api/gridRowApi.d.ts +12 -0
- package/models/api/gridStateApi.d.mts +3 -2
- package/models/api/gridStateApi.d.ts +3 -2
- package/models/api/index.d.mts +1 -1
- package/models/api/index.d.ts +1 -1
- package/models/colDef/gridColDef.d.mts +5 -0
- package/models/colDef/gridColDef.d.ts +5 -0
- package/models/configuration/gridConfiguration.d.mts +13 -1
- package/models/configuration/gridConfiguration.d.ts +13 -1
- package/models/controlStateItem.d.mts +3 -2
- package/models/controlStateItem.d.ts +3 -2
- package/models/events/gridEventListener.d.mts +3 -2
- package/models/events/gridEventListener.d.ts +3 -2
- package/models/props/DataGridProps.d.mts +38 -35
- package/models/props/DataGridProps.d.ts +38 -35
- package/package.json +4 -4
- package/utils/domUtils.js +1 -1
- package/utils/domUtils.mjs +1 -1
- package/utils/getPublicApiRef.d.mts +2 -2
- package/utils/getPublicApiRef.d.ts +2 -2
- package/utils/getPublicApiRef.js +15 -3
- package/utils/getPublicApiRef.mjs +15 -3
- package/components/toolbarV8/ToolbarContext.d.mts +0 -11
- package/components/toolbarV8/ToolbarContext.d.ts +0 -11
- package/components/toolbarV8/ToolbarContext.js +0 -21
- package/components/toolbarV8/ToolbarContext.mjs +0 -13
- package/components/toolbarV8/utils.d.mts +0 -5
- package/components/toolbarV8/utils.d.ts +0 -5
- package/components/toolbarV8/utils.js +0 -23
- package/components/toolbarV8/utils.mjs +0 -17
|
@@ -13,6 +13,7 @@ import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
|
13
13
|
import { isDeepEqual } from '@mui/x-internals/isDeepEqual';
|
|
14
14
|
import { useGridEvent, useGridEventPriority } from "../../utils/useGridEvent.mjs";
|
|
15
15
|
import { GridEditModes, GridCellModes } from "../../../models/gridEditRowModel.mjs";
|
|
16
|
+
import { getPublicApiRef } from "../../../utils/getPublicApiRef.mjs";
|
|
16
17
|
import { useGridApiMethod } from "../../utils/useGridApiMethod.mjs";
|
|
17
18
|
import { gridEditRowsStateSelector } from "./gridEditingSelectors.mjs";
|
|
18
19
|
import { isPrintableKey, isPasteShortcut } from "../../../utils/keyboardUtils.mjs";
|
|
@@ -188,7 +189,8 @@ export const useGridCellEditing = (apiRef, props) => {
|
|
|
188
189
|
const isNewModelDifferentFromProp = newModel !== props.cellModesModel;
|
|
189
190
|
if (onCellModesModelChange && isNewModelDifferentFromProp) {
|
|
190
191
|
onCellModesModelChange(newModel, {
|
|
191
|
-
api: apiRef.current
|
|
192
|
+
api: apiRef.current,
|
|
193
|
+
apiRef: getPublicApiRef(apiRef)
|
|
192
194
|
});
|
|
193
195
|
}
|
|
194
196
|
if (props.cellModesModel && isNewModelDifferentFromProp) {
|
|
@@ -18,6 +18,7 @@ var _warning = require("@mui/x-internals/warning");
|
|
|
18
18
|
var _isDeepEqual = require("@mui/x-internals/isDeepEqual");
|
|
19
19
|
var _useGridEvent = require("../../utils/useGridEvent");
|
|
20
20
|
var _gridEditRowModel = require("../../../models/gridEditRowModel");
|
|
21
|
+
var _getPublicApiRef = require("../../../utils/getPublicApiRef");
|
|
21
22
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
22
23
|
var _gridEditingSelectors = require("./gridEditingSelectors");
|
|
23
24
|
var _keyboardUtils = require("../../../utils/keyboardUtils");
|
|
@@ -265,7 +266,8 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
265
266
|
const isNewModelDifferentFromProp = newModel !== props.rowModesModel;
|
|
266
267
|
if (onRowModesModelChange && isNewModelDifferentFromProp) {
|
|
267
268
|
onRowModesModelChange(newModel, {
|
|
268
|
-
api: apiRef.current
|
|
269
|
+
api: apiRef.current,
|
|
270
|
+
apiRef: (0, _getPublicApiRef.getPublicApiRef)(apiRef)
|
|
269
271
|
});
|
|
270
272
|
}
|
|
271
273
|
if (props.rowModesModel && isNewModelDifferentFromProp) {
|
|
@@ -13,6 +13,7 @@ import { warnOnce } from '@mui/x-internals/warning';
|
|
|
13
13
|
import { isDeepEqual } from '@mui/x-internals/isDeepEqual';
|
|
14
14
|
import { useGridEvent, useGridEventPriority } from "../../utils/useGridEvent.mjs";
|
|
15
15
|
import { GridEditModes, GridRowModes } from "../../../models/gridEditRowModel.mjs";
|
|
16
|
+
import { getPublicApiRef } from "../../../utils/getPublicApiRef.mjs";
|
|
16
17
|
import { useGridApiMethod } from "../../utils/useGridApiMethod.mjs";
|
|
17
18
|
import { gridEditRowsStateSelector, gridRowIsEditingSelector } from "./gridEditingSelectors.mjs";
|
|
18
19
|
import { isPrintableKey, isPasteShortcut } from "../../../utils/keyboardUtils.mjs";
|
|
@@ -258,7 +259,8 @@ export const useGridRowEditing = (apiRef, props) => {
|
|
|
258
259
|
const isNewModelDifferentFromProp = newModel !== props.rowModesModel;
|
|
259
260
|
if (onRowModesModelChange && isNewModelDifferentFromProp) {
|
|
260
261
|
onRowModesModelChange(newModel, {
|
|
261
|
-
api: apiRef.current
|
|
262
|
+
api: apiRef.current,
|
|
263
|
+
apiRef: getPublicApiRef(apiRef)
|
|
262
264
|
});
|
|
263
265
|
}
|
|
264
266
|
if (props.rowModesModel && isNewModelDifferentFromProp) {
|
|
@@ -4,6 +4,7 @@ import type { GridColDef, GridFilterItem, GridFilterModel, GridRowModel } from "
|
|
|
4
4
|
import type { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.mjs";
|
|
5
5
|
import type { GridStateCommunity } from "../../../models/gridStateCommunity.mjs";
|
|
6
6
|
import type { GridAggregatedFilterItemApplier, GridFilterItemResult, GridQuickFilterValueResult } from "./gridFilterState.mjs";
|
|
7
|
+
import type { GridColumnLookup } from "../columns/index.mjs";
|
|
7
8
|
/**
|
|
8
9
|
* Pure helpers computing a new filter model from an existing one.
|
|
9
10
|
* Shared by the imperative `apiRef` methods (`useGridFilter`) and the controlled
|
|
@@ -15,6 +16,18 @@ export declare const upsertFilterItemInModel: (model: GridFilterModel, item: Gri
|
|
|
15
16
|
export declare const upsertFilterItemsInModel: (model: GridFilterModel, itemsToUpsert: GridFilterItem[]) => GridFilterModel;
|
|
16
17
|
export declare const deleteFilterItemFromModel: (model: GridFilterModel, itemToDelete: GridFilterItem) => GridFilterModel;
|
|
17
18
|
export declare const setFilterLogicOperatorInModel: (model: GridFilterModel, logicOperator: GridLogicOperator) => GridFilterModel;
|
|
19
|
+
/**
|
|
20
|
+
* Whether a filter item carries everything its operator needs to be applied.
|
|
21
|
+
* Operators declaring `requiresFilterValue: false` (`isEmpty`, `isNotEmpty`) stay complete
|
|
22
|
+
* without a value, see https://github.com/mui/mui-x/issues/5402
|
|
23
|
+
*/
|
|
24
|
+
export declare const isFilterItemComplete: (item: GridFilterItem, column: GridColDef | undefined) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Drops the filter items that cannot be applied, so incomplete items never reach a consumer
|
|
27
|
+
* that would treat them as a real constraint (`dataSource` sending them to a server, for one).
|
|
28
|
+
* Returns the same model reference when every item is complete.
|
|
29
|
+
*/
|
|
30
|
+
export declare const removeIncompleteFilterItems: (model: GridFilterModel, columnsLookup: GridColumnLookup) => GridFilterModel;
|
|
18
31
|
/**
|
|
19
32
|
* Adds default values to the optional fields of a filter items.
|
|
20
33
|
* @param {GridFilterItem} item The raw filter item.
|
|
@@ -4,6 +4,7 @@ import type { GridColDef, GridFilterItem, GridFilterModel, GridRowModel } from "
|
|
|
4
4
|
import type { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.js";
|
|
5
5
|
import type { GridStateCommunity } from "../../../models/gridStateCommunity.js";
|
|
6
6
|
import type { GridAggregatedFilterItemApplier, GridFilterItemResult, GridQuickFilterValueResult } from "./gridFilterState.js";
|
|
7
|
+
import type { GridColumnLookup } from "../columns/index.js";
|
|
7
8
|
/**
|
|
8
9
|
* Pure helpers computing a new filter model from an existing one.
|
|
9
10
|
* Shared by the imperative `apiRef` methods (`useGridFilter`) and the controlled
|
|
@@ -15,6 +16,18 @@ export declare const upsertFilterItemInModel: (model: GridFilterModel, item: Gri
|
|
|
15
16
|
export declare const upsertFilterItemsInModel: (model: GridFilterModel, itemsToUpsert: GridFilterItem[]) => GridFilterModel;
|
|
16
17
|
export declare const deleteFilterItemFromModel: (model: GridFilterModel, itemToDelete: GridFilterItem) => GridFilterModel;
|
|
17
18
|
export declare const setFilterLogicOperatorInModel: (model: GridFilterModel, logicOperator: GridLogicOperator) => GridFilterModel;
|
|
19
|
+
/**
|
|
20
|
+
* Whether a filter item carries everything its operator needs to be applied.
|
|
21
|
+
* Operators declaring `requiresFilterValue: false` (`isEmpty`, `isNotEmpty`) stay complete
|
|
22
|
+
* without a value, see https://github.com/mui/mui-x/issues/5402
|
|
23
|
+
*/
|
|
24
|
+
export declare const isFilterItemComplete: (item: GridFilterItem, column: GridColDef | undefined) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Drops the filter items that cannot be applied, so incomplete items never reach a consumer
|
|
27
|
+
* that would treat them as a real constraint (`dataSource` sending them to a server, for one).
|
|
28
|
+
* Returns the same model reference when every item is complete.
|
|
29
|
+
*/
|
|
30
|
+
export declare const removeIncompleteFilterItems: (model: GridFilterModel, columnsLookup: GridColumnLookup) => GridFilterModel;
|
|
18
31
|
/**
|
|
19
32
|
* Adds default values to the optional fields of a filter items.
|
|
20
33
|
* @param {GridFilterItem} item The raw filter item.
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.upsertFilterItemsInModel = exports.upsertFilterItemInModel = exports.shouldQuickFilterExcludeHiddenColumns = exports.setFilterLogicOperatorInModel = exports.sanitizeFilterModel = exports.removeDiacritics = exports.passFilterLogic = exports.mergeStateWithFilterModel = exports.deleteFilterItemFromModel = exports.cleanFilterItem = exports.buildAggregatedFilterApplier = void 0;
|
|
7
|
+
exports.upsertFilterItemsInModel = exports.upsertFilterItemInModel = exports.shouldQuickFilterExcludeHiddenColumns = exports.setFilterLogicOperatorInModel = exports.sanitizeFilterModel = exports.removeIncompleteFilterItems = exports.removeDiacritics = exports.passFilterLogic = exports.mergeStateWithFilterModel = exports.isFilterItemComplete = exports.deleteFilterItemFromModel = exports.cleanFilterItem = exports.buildAggregatedFilterApplier = void 0;
|
|
8
8
|
var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/formatErrorMessage"));
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _warning = require("@mui/x-internals/warning");
|
|
@@ -66,7 +66,38 @@ const setFilterLogicOperatorInModel = (model, logicOperator) => {
|
|
|
66
66
|
logicOperator
|
|
67
67
|
});
|
|
68
68
|
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Whether a filter item carries everything its operator needs to be applied.
|
|
72
|
+
* Operators declaring `requiresFilterValue: false` (`isEmpty`, `isNotEmpty`) stay complete
|
|
73
|
+
* without a value, see https://github.com/mui/mui-x/issues/5402
|
|
74
|
+
*/
|
|
69
75
|
exports.setFilterLogicOperatorInModel = setFilterLogicOperatorInModel;
|
|
76
|
+
const isFilterItemComplete = (item, column) => {
|
|
77
|
+
if (item.value !== undefined) {
|
|
78
|
+
// Some operators like `isAnyOf` take an array as `item.value`. An empty one filters nothing.
|
|
79
|
+
return !(Array.isArray(item.value) && item.value.length === 0);
|
|
80
|
+
}
|
|
81
|
+
const filterOperator = column?.filterOperators?.find(operator => operator.value === item.operator);
|
|
82
|
+
return filterOperator?.requiresFilterValue === false;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Drops the filter items that cannot be applied, so incomplete items never reach a consumer
|
|
87
|
+
* that would treat them as a real constraint (`dataSource` sending them to a server, for one).
|
|
88
|
+
* Returns the same model reference when every item is complete.
|
|
89
|
+
*/
|
|
90
|
+
exports.isFilterItemComplete = isFilterItemComplete;
|
|
91
|
+
const removeIncompleteFilterItems = (model, columnsLookup) => {
|
|
92
|
+
const items = model.items.filter(item => isFilterItemComplete(item, columnsLookup[item.field]));
|
|
93
|
+
if (items.length === model.items.length) {
|
|
94
|
+
return model;
|
|
95
|
+
}
|
|
96
|
+
return (0, _extends2.default)({}, model, {
|
|
97
|
+
items
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
exports.removeIncompleteFilterItems = removeIncompleteFilterItems;
|
|
70
101
|
let hasEval;
|
|
71
102
|
function getHasEval() {
|
|
72
103
|
if (hasEval !== undefined) {
|
|
@@ -5,7 +5,6 @@ import { GridLogicOperator } from "../../../models/index.mjs";
|
|
|
5
5
|
import { getDefaultGridFilterModel } from "./gridFilterState.mjs";
|
|
6
6
|
import { getPublicApiRef } from "../../../utils/getPublicApiRef.mjs";
|
|
7
7
|
import { gridColumnFieldsSelector, gridColumnLookupSelector, gridColumnVisibilityModelSelector } from "../columns/index.mjs";
|
|
8
|
-
|
|
9
8
|
/**
|
|
10
9
|
* Pure helpers computing a new filter model from an existing one.
|
|
11
10
|
* Shared by the imperative `apiRef` methods (`useGridFilter`) and the controlled
|
|
@@ -57,6 +56,35 @@ export const setFilterLogicOperatorInModel = (model, logicOperator) => {
|
|
|
57
56
|
logicOperator
|
|
58
57
|
});
|
|
59
58
|
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Whether a filter item carries everything its operator needs to be applied.
|
|
62
|
+
* Operators declaring `requiresFilterValue: false` (`isEmpty`, `isNotEmpty`) stay complete
|
|
63
|
+
* without a value, see https://github.com/mui/mui-x/issues/5402
|
|
64
|
+
*/
|
|
65
|
+
export const isFilterItemComplete = (item, column) => {
|
|
66
|
+
if (item.value !== undefined) {
|
|
67
|
+
// Some operators like `isAnyOf` take an array as `item.value`. An empty one filters nothing.
|
|
68
|
+
return !(Array.isArray(item.value) && item.value.length === 0);
|
|
69
|
+
}
|
|
70
|
+
const filterOperator = column?.filterOperators?.find(operator => operator.value === item.operator);
|
|
71
|
+
return filterOperator?.requiresFilterValue === false;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Drops the filter items that cannot be applied, so incomplete items never reach a consumer
|
|
76
|
+
* that would treat them as a real constraint (`dataSource` sending them to a server, for one).
|
|
77
|
+
* Returns the same model reference when every item is complete.
|
|
78
|
+
*/
|
|
79
|
+
export const removeIncompleteFilterItems = (model, columnsLookup) => {
|
|
80
|
+
const items = model.items.filter(item => isFilterItemComplete(item, columnsLookup[item.field]));
|
|
81
|
+
if (items.length === model.items.length) {
|
|
82
|
+
return model;
|
|
83
|
+
}
|
|
84
|
+
return _extends({}, model, {
|
|
85
|
+
items
|
|
86
|
+
});
|
|
87
|
+
};
|
|
60
88
|
let hasEval;
|
|
61
89
|
function getHasEval() {
|
|
62
90
|
if (hasEval !== undefined) {
|
|
@@ -103,27 +103,7 @@ const useGridFilter = (apiRef, props, configuration) => {
|
|
|
103
103
|
logger.debug('Displaying filter panel');
|
|
104
104
|
if (targetColumnField) {
|
|
105
105
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
106
|
-
const filterItemsWithValue = filterModel.items.filter(item =>
|
|
107
|
-
if (item.value !== undefined) {
|
|
108
|
-
// Some filters like `isAnyOf` support array as `item.value`.
|
|
109
|
-
// If array is empty, we want to remove it from the filter model.
|
|
110
|
-
if (Array.isArray(item.value) && item.value.length === 0) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
const column = apiRef.current.getColumn(item.field);
|
|
116
|
-
const filterOperator = column?.filterOperators?.find(operator => operator.value === item.operator);
|
|
117
|
-
const requiresFilterValue = typeof filterOperator?.requiresFilterValue === 'undefined' ? true : filterOperator?.requiresFilterValue;
|
|
118
|
-
|
|
119
|
-
// Operators like `isEmpty` don't have and don't require `item.value`.
|
|
120
|
-
// So we don't want to remove them from the filter model if `item.value === undefined`.
|
|
121
|
-
// See https://github.com/mui/mui-x/issues/5402
|
|
122
|
-
if (requiresFilterValue) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
return true;
|
|
126
|
-
});
|
|
106
|
+
const filterItemsWithValue = filterModel.items.filter(item => (0, _gridFilterUtils.isFilterItemComplete)(item, apiRef.current.getColumn(item.field)));
|
|
127
107
|
let newFilterItems;
|
|
128
108
|
const filterItemOnTarget = filterItemsWithValue.find(item => item.field === targetColumnField);
|
|
129
109
|
const targetColumn = apiRef.current.getColumn(targetColumnField);
|
|
@@ -15,7 +15,7 @@ import { useFirstRender } from "../../utils/useFirstRender.mjs";
|
|
|
15
15
|
import { gridRowsLookupSelector } from "../rows/index.mjs";
|
|
16
16
|
import { useGridRegisterPipeProcessor } from "../../core/pipeProcessing/index.mjs";
|
|
17
17
|
import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from "../../core/strategyProcessing/index.mjs";
|
|
18
|
-
import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel, cleanFilterItem, passFilterLogic, shouldQuickFilterExcludeHiddenColumns, upsertFilterItemInModel, upsertFilterItemsInModel, deleteFilterItemFromModel, setFilterLogicOperatorInModel } from "./gridFilterUtils.mjs";
|
|
18
|
+
import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel, cleanFilterItem, passFilterLogic, shouldQuickFilterExcludeHiddenColumns, upsertFilterItemInModel, upsertFilterItemsInModel, deleteFilterItemFromModel, setFilterLogicOperatorInModel, isFilterItemComplete } from "./gridFilterUtils.mjs";
|
|
19
19
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
20
|
export const filterStateInitializer = (state, props, apiRef) => {
|
|
21
21
|
const filterModel = props.filterModel ?? props.initialState?.filter?.filterModel ?? getDefaultGridFilterModel();
|
|
@@ -94,27 +94,7 @@ export const useGridFilter = (apiRef, props, configuration) => {
|
|
|
94
94
|
logger.debug('Displaying filter panel');
|
|
95
95
|
if (targetColumnField) {
|
|
96
96
|
const filterModel = gridFilterModelSelector(apiRef);
|
|
97
|
-
const filterItemsWithValue = filterModel.items.filter(item =>
|
|
98
|
-
if (item.value !== undefined) {
|
|
99
|
-
// Some filters like `isAnyOf` support array as `item.value`.
|
|
100
|
-
// If array is empty, we want to remove it from the filter model.
|
|
101
|
-
if (Array.isArray(item.value) && item.value.length === 0) {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
const column = apiRef.current.getColumn(item.field);
|
|
107
|
-
const filterOperator = column?.filterOperators?.find(operator => operator.value === item.operator);
|
|
108
|
-
const requiresFilterValue = typeof filterOperator?.requiresFilterValue === 'undefined' ? true : filterOperator?.requiresFilterValue;
|
|
109
|
-
|
|
110
|
-
// Operators like `isEmpty` don't have and don't require `item.value`.
|
|
111
|
-
// So we don't want to remove them from the filter model if `item.value === undefined`.
|
|
112
|
-
// See https://github.com/mui/mui-x/issues/5402
|
|
113
|
-
if (requiresFilterValue) {
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
return true;
|
|
117
|
-
});
|
|
97
|
+
const filterItemsWithValue = filterModel.items.filter(item => isFilterItemComplete(item, apiRef.current.getColumn(item.field)));
|
|
118
98
|
let newFilterItems;
|
|
119
99
|
const filterItemOnTarget = filterItemsWithValue.find(item => item.field === targetColumnField);
|
|
120
100
|
const targetColumn = apiRef.current.getColumn(targetColumnField);
|
|
@@ -7,7 +7,7 @@ exports.gridHeaderFilteringStateSelector = exports.gridHeaderFilteringMenuSelect
|
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
8
|
const gridHeaderFilteringStateSelector = exports.gridHeaderFilteringStateSelector = (0, _createSelector.createRootSelector)(state => state.headerFiltering);
|
|
9
9
|
const gridHeaderFilteringEnabledSelector = exports.gridHeaderFilteringEnabledSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector,
|
|
10
|
-
//
|
|
10
|
+
// The state is only initialized in Pro, so it is `undefined` on the MIT grid.
|
|
11
11
|
headerFilteringState => headerFilteringState?.enabled ?? false);
|
|
12
12
|
const gridHeaderFilteringEditFieldSelector = exports.gridHeaderFilteringEditFieldSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);
|
|
13
13
|
const gridHeaderFilteringMenuSelector = exports.gridHeaderFilteringMenuSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createSelector, createRootSelector } from "../../../utils/createSelector.mjs";
|
|
2
2
|
export const gridHeaderFilteringStateSelector = createRootSelector(state => state.headerFiltering);
|
|
3
3
|
export const gridHeaderFilteringEnabledSelector = createSelector(gridHeaderFilteringStateSelector,
|
|
4
|
-
//
|
|
4
|
+
// The state is only initialized in Pro, so it is `undefined` on the MIT grid.
|
|
5
5
|
headerFilteringState => headerFilteringState?.enabled ?? false);
|
|
6
6
|
export const gridHeaderFilteringEditFieldSelector = createSelector(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);
|
|
7
7
|
export const gridHeaderFilteringMenuSelector = createSelector(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);
|
|
@@ -261,7 +261,23 @@ const updateCacheWithNewRows = ({
|
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
// Update the data row lookups.
|
|
264
|
-
|
|
264
|
+
// Prototype-preservation rules:
|
|
265
|
+
// 1. If partialRow is a class instance (non-plain object), use its prototype — the
|
|
266
|
+
// caller is passing in a fully-constructed instance and owns the prototype chain.
|
|
267
|
+
// 2. If partialRow is a plain object (Object.prototype), prefer oldRow's prototype so
|
|
268
|
+
// that a partial-update object does not silently discard the existing row's class.
|
|
269
|
+
// 3. If both are plain objects the result is also a plain object (no-op).
|
|
270
|
+
//
|
|
271
|
+
// Note: private class fields (#field syntax) cannot be preserved through a spread-style
|
|
272
|
+
// merge because the brand check is tied to the original instance. Rows that rely on
|
|
273
|
+
// private fields must supply a fully-constructed instance as partialRow (rule 1 above)
|
|
274
|
+
// rather than a plain-object partial update.
|
|
275
|
+
const partialRowProto = Object.getPrototypeOf(partialRow);
|
|
276
|
+
const isPartialRowPlain = partialRowProto === Object.prototype || partialRowProto === null;
|
|
277
|
+
const proto = isPartialRowPlain ? Object.getPrototypeOf(oldRow) : partialRowProto;
|
|
278
|
+
const merged = Object.create(proto);
|
|
279
|
+
Object.assign(merged, oldRow, partialRow);
|
|
280
|
+
dataRowIdToModelLookup[id] = merged;
|
|
265
281
|
return;
|
|
266
282
|
}
|
|
267
283
|
|
|
@@ -242,7 +242,23 @@ export const updateCacheWithNewRows = ({
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
// Update the data row lookups.
|
|
245
|
-
|
|
245
|
+
// Prototype-preservation rules:
|
|
246
|
+
// 1. If partialRow is a class instance (non-plain object), use its prototype — the
|
|
247
|
+
// caller is passing in a fully-constructed instance and owns the prototype chain.
|
|
248
|
+
// 2. If partialRow is a plain object (Object.prototype), prefer oldRow's prototype so
|
|
249
|
+
// that a partial-update object does not silently discard the existing row's class.
|
|
250
|
+
// 3. If both are plain objects the result is also a plain object (no-op).
|
|
251
|
+
//
|
|
252
|
+
// Note: private class fields (#field syntax) cannot be preserved through a spread-style
|
|
253
|
+
// merge because the brand check is tied to the original instance. Rows that rely on
|
|
254
|
+
// private fields must supply a fully-constructed instance as partialRow (rule 1 above)
|
|
255
|
+
// rather than a plain-object partial update.
|
|
256
|
+
const partialRowProto = Object.getPrototypeOf(partialRow);
|
|
257
|
+
const isPartialRowPlain = partialRowProto === Object.prototype || partialRowProto === null;
|
|
258
|
+
const proto = isPartialRowPlain ? Object.getPrototypeOf(oldRow) : partialRowProto;
|
|
259
|
+
const merged = Object.create(proto);
|
|
260
|
+
Object.assign(merged, oldRow, partialRow);
|
|
261
|
+
dataRowIdToModelLookup[id] = merged;
|
|
246
262
|
return;
|
|
247
263
|
}
|
|
248
264
|
|
|
@@ -15,6 +15,7 @@ var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
|
15
15
|
var _gridVirtualizationSelectors = require("../virtualization/gridVirtualizationSelectors");
|
|
16
16
|
var _gridRowSpanningUtils = require("./gridRowSpanningUtils");
|
|
17
17
|
var _useGridEvent = require("../../utils/useGridEvent");
|
|
18
|
+
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
18
19
|
var _utils = require("../../../utils/utils");
|
|
19
20
|
var _useRunOncePerLoop = require("../../utils/useRunOncePerLoop");
|
|
20
21
|
const EMPTY_CACHES = {
|
|
@@ -200,6 +201,10 @@ const useGridRowSpanning = (apiRef, props) => {
|
|
|
200
201
|
(0, _useGridEvent.useGridEvent)(apiRef, 'filteredRowsSet', (0, _utils.runIf)(props.rowSpanning, resetRowSpanningState));
|
|
201
202
|
(0, _useGridEvent.useGridEvent)(apiRef, 'columnsChange', (0, _utils.runIf)(props.rowSpanning, resetRowSpanningState));
|
|
202
203
|
(0, _useGridEvent.useGridEvent)(apiRef, 'rowExpansionChange', (0, _utils.runIf)(props.rowSpanning, resetRowSpanningState));
|
|
204
|
+
const rowSpanningPrivateApi = {
|
|
205
|
+
resetRowSpanningState: (0, _utils.runIf)(props.rowSpanning, resetRowSpanningState)
|
|
206
|
+
};
|
|
207
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, rowSpanningPrivateApi, 'private');
|
|
203
208
|
React.useEffect(() => {
|
|
204
209
|
const store = apiRef.current.virtualizer?.store;
|
|
205
210
|
if (!store) {
|
|
@@ -8,6 +8,7 @@ import { getVisibleRows } from "../../utils/useGridVisibleRows.mjs";
|
|
|
8
8
|
import { gridRenderContextSelector } from "../virtualization/gridVirtualizationSelectors.mjs";
|
|
9
9
|
import { getUnprocessedRange, isRowContextInitialized, getCellValue } from "./gridRowSpanningUtils.mjs";
|
|
10
10
|
import { useGridEvent } from "../../utils/useGridEvent.mjs";
|
|
11
|
+
import { useGridApiMethod } from "../../utils/useGridApiMethod.mjs";
|
|
11
12
|
import { runIf } from "../../../utils/utils.mjs";
|
|
12
13
|
import { useRunOncePerLoop } from "../../utils/useRunOncePerLoop.mjs";
|
|
13
14
|
const EMPTY_CACHES = {
|
|
@@ -192,6 +193,10 @@ export const useGridRowSpanning = (apiRef, props) => {
|
|
|
192
193
|
useGridEvent(apiRef, 'filteredRowsSet', runIf(props.rowSpanning, resetRowSpanningState));
|
|
193
194
|
useGridEvent(apiRef, 'columnsChange', runIf(props.rowSpanning, resetRowSpanningState));
|
|
194
195
|
useGridEvent(apiRef, 'rowExpansionChange', runIf(props.rowSpanning, resetRowSpanningState));
|
|
196
|
+
const rowSpanningPrivateApi = {
|
|
197
|
+
resetRowSpanningState: runIf(props.rowSpanning, resetRowSpanningState)
|
|
198
|
+
};
|
|
199
|
+
useGridApiMethod(apiRef, rowSpanningPrivateApi, 'private');
|
|
195
200
|
React.useEffect(() => {
|
|
196
201
|
const store = apiRef.current.virtualizer?.store;
|
|
197
202
|
if (!store) {
|
|
@@ -34,7 +34,7 @@ export declare const gridVirtualizationRowEnabledSelector: (args_0: import("reac
|
|
|
34
34
|
*/
|
|
35
35
|
export declare const gridVirtualizationLayoutModeSelector: (args_0: import("react").RefObject<{
|
|
36
36
|
state: GridStateCommunity;
|
|
37
|
-
} | null>) => "controlled" | "uncontrolled";
|
|
37
|
+
} | null>) => "controlled" | "sticky" | "uncontrolled";
|
|
38
38
|
/**
|
|
39
39
|
* Get the render context
|
|
40
40
|
* @category Virtualization
|
|
@@ -34,7 +34,7 @@ export declare const gridVirtualizationRowEnabledSelector: (args_0: import("reac
|
|
|
34
34
|
*/
|
|
35
35
|
export declare const gridVirtualizationLayoutModeSelector: (args_0: import("react").RefObject<{
|
|
36
36
|
state: GridStateCommunity;
|
|
37
|
-
} | null>) => "controlled" | "uncontrolled";
|
|
37
|
+
} | null>) => "controlled" | "sticky" | "uncontrolled";
|
|
38
38
|
/**
|
|
39
39
|
* Get the render context
|
|
40
40
|
* @category Virtualization
|
|
@@ -4,8 +4,8 @@ import type { GridEventListener, GridEvents } from "../../models/events/index.mj
|
|
|
4
4
|
import { TimerBasedCleanupTracking } from "../../utils/cleanupTracking/TimerBasedCleanupTracking.mjs";
|
|
5
5
|
import { FinalizationRegistryBasedCleanupTracking } from "../../utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.mjs";
|
|
6
6
|
import type { GridApiCommon } from "../../models/index.mjs";
|
|
7
|
-
export declare function useGridEvent<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E>, options?: EventListenerOptions): void;
|
|
8
|
-
export declare function useGridEventPriority<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E>): void;
|
|
7
|
+
export declare function useGridEvent<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E, Api>, options?: EventListenerOptions): void;
|
|
8
|
+
export declare function useGridEventPriority<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E, Api>): void;
|
|
9
9
|
export declare function unstable_resetCleanupTracking(): void;
|
|
10
10
|
export declare const internal_registryContainer: {
|
|
11
11
|
current: FinalizationRegistryBasedCleanupTracking | TimerBasedCleanupTracking;
|
|
@@ -4,8 +4,8 @@ import type { GridEventListener, GridEvents } from "../../models/events/index.js
|
|
|
4
4
|
import { TimerBasedCleanupTracking } from "../../utils/cleanupTracking/TimerBasedCleanupTracking.js";
|
|
5
5
|
import { FinalizationRegistryBasedCleanupTracking } from "../../utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js";
|
|
6
6
|
import type { GridApiCommon } from "../../models/index.js";
|
|
7
|
-
export declare function useGridEvent<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E>, options?: EventListenerOptions): void;
|
|
8
|
-
export declare function useGridEventPriority<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E>): void;
|
|
7
|
+
export declare function useGridEvent<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E, Api>, options?: EventListenerOptions): void;
|
|
8
|
+
export declare function useGridEventPriority<Api extends GridApiCommon, E extends GridEvents>(apiRef: RefObject<Api>, eventName: E, handler?: GridEventListener<E, Api>): void;
|
|
9
9
|
export declare function unstable_resetCleanupTracking(): void;
|
|
10
10
|
export declare const internal_registryContainer: {
|
|
11
11
|
current: FinalizationRegistryBasedCleanupTracking | TimerBasedCleanupTracking;
|
|
@@ -32,6 +32,8 @@ function useGridEvent(apiRef, eventName, handler, options) {
|
|
|
32
32
|
handlerRef.current = handler;
|
|
33
33
|
const cleanupTokenRef = React.useRef(null);
|
|
34
34
|
if (!subscription.current && handlerRef.current) {
|
|
35
|
+
// The event system is typed against `GridApiCommon`, while the handler can be typed
|
|
36
|
+
// against the package-specific API: `any` bridges the two at this single boundary.
|
|
35
37
|
const enhancedHandler = (params, event, details) => {
|
|
36
38
|
// Check for the existence of the event once more to avoid Safari 26 issue
|
|
37
39
|
// https://github.com/mui/mui-x/issues/20159
|
|
@@ -23,6 +23,8 @@ export function useGridEvent(apiRef, eventName, handler, options) {
|
|
|
23
23
|
handlerRef.current = handler;
|
|
24
24
|
const cleanupTokenRef = React.useRef(null);
|
|
25
25
|
if (!subscription.current && handlerRef.current) {
|
|
26
|
+
// The event system is typed against `GridApiCommon`, while the handler can be typed
|
|
27
|
+
// against the package-specific API: `any` bridges the two at this single boundary.
|
|
26
28
|
const enhancedHandler = (params, event, details) => {
|
|
27
29
|
// Check for the existence of the event once more to avoid Safari 26 issue
|
|
28
30
|
// https://github.com/mui/mui-x/issues/20159
|
package/index.js
CHANGED
package/index.mjs
CHANGED
package/internals/index.d.mts
CHANGED
|
@@ -101,8 +101,10 @@ export { DataSourceRowsUpdateStrategy } from "../hooks/features/dataSource/utils
|
|
|
101
101
|
export { useGridDataSourceBase } from "../hooks/features/dataSource/useGridDataSourceBase.mjs";
|
|
102
102
|
export { CacheChunkManager } from "../hooks/features/dataSource/utils.mjs";
|
|
103
103
|
export { gridGetRowsParamsSelector } from "../hooks/features/dataSource/gridDataSourceSelector.mjs";
|
|
104
|
+
export { useGridDataSourceFilterModelChange } from "../hooks/features/dataSource/useGridDataSourceFilterModelChange.mjs";
|
|
104
105
|
export { getColumnsToExport, defaultGetRowsToExport } from "../hooks/features/export/utils.mjs";
|
|
105
106
|
export * from "../utils/createControllablePromise.mjs";
|
|
107
|
+
export * from "../utils/focusElement.mjs";
|
|
106
108
|
export * from "../utils/rtlFlipSide.mjs";
|
|
107
109
|
export { NotRendered } from "../utils/assert.mjs";
|
|
108
110
|
export { createSelector, createRootSelector, createSelectorMemoized } from "../utils/createSelector.mjs";
|
package/internals/index.d.ts
CHANGED
|
@@ -101,8 +101,10 @@ export { DataSourceRowsUpdateStrategy } from "../hooks/features/dataSource/utils
|
|
|
101
101
|
export { useGridDataSourceBase } from "../hooks/features/dataSource/useGridDataSourceBase.js";
|
|
102
102
|
export { CacheChunkManager } from "../hooks/features/dataSource/utils.js";
|
|
103
103
|
export { gridGetRowsParamsSelector } from "../hooks/features/dataSource/gridDataSourceSelector.js";
|
|
104
|
+
export { useGridDataSourceFilterModelChange } from "../hooks/features/dataSource/useGridDataSourceFilterModelChange.js";
|
|
104
105
|
export { getColumnsToExport, defaultGetRowsToExport } from "../hooks/features/export/utils.js";
|
|
105
106
|
export * from "../utils/createControllablePromise.js";
|
|
107
|
+
export * from "../utils/focusElement.js";
|
|
106
108
|
export * from "../utils/rtlFlipSide.js";
|
|
107
109
|
export { NotRendered } from "../utils/assert.js";
|
|
108
110
|
export { createSelector, createRootSelector, createSelectorMemoized } from "../utils/createSelector.js";
|
package/internals/index.js
CHANGED
|
@@ -117,6 +117,7 @@ var _exportNames = {
|
|
|
117
117
|
CacheChunkManager: true,
|
|
118
118
|
useGridDataSourceBase: true,
|
|
119
119
|
gridGetRowsParamsSelector: true,
|
|
120
|
+
useGridDataSourceFilterModelChange: true,
|
|
120
121
|
getColumnsToExport: true,
|
|
121
122
|
defaultGetRowsToExport: true,
|
|
122
123
|
NotRendered: true,
|
|
@@ -736,6 +737,12 @@ Object.defineProperty(exports, "useGridDataSourceBase", {
|
|
|
736
737
|
return _useGridDataSourceBase.useGridDataSourceBase;
|
|
737
738
|
}
|
|
738
739
|
});
|
|
740
|
+
Object.defineProperty(exports, "useGridDataSourceFilterModelChange", {
|
|
741
|
+
enumerable: true,
|
|
742
|
+
get: function () {
|
|
743
|
+
return _useGridDataSourceFilterModelChange.useGridDataSourceFilterModelChange;
|
|
744
|
+
}
|
|
745
|
+
});
|
|
739
746
|
Object.defineProperty(exports, "useGridDensity", {
|
|
740
747
|
enumerable: true,
|
|
741
748
|
get: function () {
|
|
@@ -1108,6 +1115,7 @@ var _usePinnedScrollOffset = require("../hooks/utils/usePinnedScrollOffset");
|
|
|
1108
1115
|
var _utils2 = require("../hooks/features/dataSource/utils");
|
|
1109
1116
|
var _useGridDataSourceBase = require("../hooks/features/dataSource/useGridDataSourceBase");
|
|
1110
1117
|
var _gridDataSourceSelector = require("../hooks/features/dataSource/gridDataSourceSelector");
|
|
1118
|
+
var _useGridDataSourceFilterModelChange = require("../hooks/features/dataSource/useGridDataSourceFilterModelChange");
|
|
1111
1119
|
var _utils3 = require("../hooks/features/export/utils");
|
|
1112
1120
|
var _createControllablePromise = require("../utils/createControllablePromise");
|
|
1113
1121
|
Object.keys(_createControllablePromise).forEach(function (key) {
|
|
@@ -1121,6 +1129,18 @@ Object.keys(_createControllablePromise).forEach(function (key) {
|
|
|
1121
1129
|
}
|
|
1122
1130
|
});
|
|
1123
1131
|
});
|
|
1132
|
+
var _focusElement = require("../utils/focusElement");
|
|
1133
|
+
Object.keys(_focusElement).forEach(function (key) {
|
|
1134
|
+
if (key === "default" || key === "__esModule") return;
|
|
1135
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
1136
|
+
if (key in exports && exports[key] === _focusElement[key]) return;
|
|
1137
|
+
Object.defineProperty(exports, key, {
|
|
1138
|
+
enumerable: true,
|
|
1139
|
+
get: function () {
|
|
1140
|
+
return _focusElement[key];
|
|
1141
|
+
}
|
|
1142
|
+
});
|
|
1143
|
+
});
|
|
1124
1144
|
var _rtlFlipSide = require("../utils/rtlFlipSide");
|
|
1125
1145
|
Object.keys(_rtlFlipSide).forEach(function (key) {
|
|
1126
1146
|
if (key === "default" || key === "__esModule") return;
|
package/internals/index.mjs
CHANGED
|
@@ -79,8 +79,10 @@ export { DataSourceRowsUpdateStrategy } from "../hooks/features/dataSource/utils
|
|
|
79
79
|
export { useGridDataSourceBase } from "../hooks/features/dataSource/useGridDataSourceBase.mjs";
|
|
80
80
|
export { CacheChunkManager } from "../hooks/features/dataSource/utils.mjs";
|
|
81
81
|
export { gridGetRowsParamsSelector } from "../hooks/features/dataSource/gridDataSourceSelector.mjs";
|
|
82
|
+
export { useGridDataSourceFilterModelChange } from "../hooks/features/dataSource/useGridDataSourceFilterModelChange.mjs";
|
|
82
83
|
export { getColumnsToExport, defaultGetRowsToExport } from "../hooks/features/export/utils.mjs";
|
|
83
84
|
export * from "../utils/createControllablePromise.mjs";
|
|
85
|
+
export * from "../utils/focusElement.mjs";
|
|
84
86
|
export * from "../utils/rtlFlipSide.mjs";
|
|
85
87
|
export { NotRendered } from "../utils/assert.mjs";
|
|
86
88
|
export { createSelector, createRootSelector, createSelectorMemoized } from "../utils/createSelector.mjs";
|
package/locales/arSD.js
CHANGED
|
@@ -51,6 +51,11 @@ const arSDGrid = {
|
|
|
51
51
|
// Toolbar AI Assistant button
|
|
52
52
|
// toolbarAssistant: 'AI Assistant',
|
|
53
53
|
|
|
54
|
+
// Formula bar (Premium formulas)
|
|
55
|
+
// formulaBarLabel: 'Formula bar',
|
|
56
|
+
// formulaBarInputLabel: 'Formula',
|
|
57
|
+
// formulaBarAddressLabel: 'Active cell',
|
|
58
|
+
|
|
54
59
|
// Columns management text
|
|
55
60
|
columnsManagementSearchTitle: 'بحث',
|
|
56
61
|
columnsManagementNoColumns: 'لا يوجد أعمدة',
|
package/locales/arSD.mjs
CHANGED
|
@@ -45,6 +45,11 @@ const arSDGrid = {
|
|
|
45
45
|
// Toolbar AI Assistant button
|
|
46
46
|
// toolbarAssistant: 'AI Assistant',
|
|
47
47
|
|
|
48
|
+
// Formula bar (Premium formulas)
|
|
49
|
+
// formulaBarLabel: 'Formula bar',
|
|
50
|
+
// formulaBarInputLabel: 'Formula',
|
|
51
|
+
// formulaBarAddressLabel: 'Active cell',
|
|
52
|
+
|
|
48
53
|
// Columns management text
|
|
49
54
|
columnsManagementSearchTitle: 'بحث',
|
|
50
55
|
columnsManagementNoColumns: 'لا يوجد أعمدة',
|
package/locales/beBY.js
CHANGED
|
@@ -64,6 +64,11 @@ const beBYGrid = {
|
|
|
64
64
|
// Toolbar AI Assistant button
|
|
65
65
|
// toolbarAssistant: 'AI Assistant',
|
|
66
66
|
|
|
67
|
+
// Formula bar (Premium formulas)
|
|
68
|
+
// formulaBarLabel: 'Formula bar',
|
|
69
|
+
// formulaBarInputLabel: 'Formula',
|
|
70
|
+
// formulaBarAddressLabel: 'Active cell',
|
|
71
|
+
|
|
67
72
|
// Columns management text
|
|
68
73
|
// columnsManagementSearchTitle: 'Search',
|
|
69
74
|
// columnsManagementNoColumns: 'No columns',
|
package/locales/beBY.mjs
CHANGED
|
@@ -58,6 +58,11 @@ const beBYGrid = {
|
|
|
58
58
|
// Toolbar AI Assistant button
|
|
59
59
|
// toolbarAssistant: 'AI Assistant',
|
|
60
60
|
|
|
61
|
+
// Formula bar (Premium formulas)
|
|
62
|
+
// formulaBarLabel: 'Formula bar',
|
|
63
|
+
// formulaBarInputLabel: 'Formula',
|
|
64
|
+
// formulaBarAddressLabel: 'Active cell',
|
|
65
|
+
|
|
61
66
|
// Columns management text
|
|
62
67
|
// columnsManagementSearchTitle: 'Search',
|
|
63
68
|
// columnsManagementNoColumns: 'No columns',
|
package/locales/bgBG.js
CHANGED
|
@@ -50,6 +50,11 @@ const bgBGGrid = {
|
|
|
50
50
|
// Toolbar AI Assistant button
|
|
51
51
|
// toolbarAssistant: 'AI Assistant',
|
|
52
52
|
|
|
53
|
+
// Formula bar (Premium formulas)
|
|
54
|
+
// formulaBarLabel: 'Formula bar',
|
|
55
|
+
// formulaBarInputLabel: 'Formula',
|
|
56
|
+
// formulaBarAddressLabel: 'Active cell',
|
|
57
|
+
|
|
53
58
|
// Columns management text
|
|
54
59
|
columnsManagementSearchTitle: 'Търсене',
|
|
55
60
|
columnsManagementNoColumns: 'Няма колони',
|