@mui/x-data-grid-pro 6.4.0 → 6.5.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 +56 -0
- package/DataGridPro/DataGridPro.js +5 -0
- package/DataGridPro/useDataGridProComponent.js +3 -1
- package/DataGridPro/useDataGridProProps.js +7 -13
- package/components/GridColumnHeaders.js +15 -1
- package/components/GridDetailPanel.js +1 -1
- package/components/headerFiltering/GridHeaderFilterAdornment.d.ts +14 -0
- package/components/headerFiltering/GridHeaderFilterAdornment.js +99 -0
- package/components/headerFiltering/GridHeaderFilterCell.d.ts +20 -0
- package/components/headerFiltering/GridHeaderFilterCell.js +224 -0
- package/components/headerFiltering/GridHeaderFilterClearButton.d.ts +6 -0
- package/components/headerFiltering/GridHeaderFilterClearButton.js +25 -0
- package/components/headerFiltering/GridHeaderFilterMenu.d.ts +14 -0
- package/components/headerFiltering/GridHeaderFilterMenu.js +69 -0
- package/components/headerFiltering/constants.d.ts +3 -0
- package/components/headerFiltering/constants.js +30 -0
- package/components/headerFiltering/index.d.ts +2 -0
- package/components/headerFiltering/index.js +2 -0
- package/components/index.d.ts +1 -0
- package/components/index.js +2 -1
- package/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +21 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +111 -0
- package/hooks/features/columnResize/useGridColumnResize.js +12 -1
- package/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/hooks/features/treeData/useGridTreeDataPreProcessors.js +1 -0
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +4 -0
- package/legacy/DataGridPro/DataGridPro.js +5 -0
- package/legacy/DataGridPro/useDataGridProComponent.js +3 -1
- package/legacy/DataGridPro/useDataGridProProps.js +10 -9
- package/legacy/components/GridColumnHeaders.js +15 -1
- package/legacy/components/GridDetailPanel.js +1 -1
- package/legacy/components/headerFiltering/GridHeaderFilterAdornment.js +97 -0
- package/legacy/components/headerFiltering/GridHeaderFilterCell.js +230 -0
- package/legacy/components/headerFiltering/GridHeaderFilterClearButton.js +24 -0
- package/legacy/components/headerFiltering/GridHeaderFilterMenu.js +68 -0
- package/legacy/components/headerFiltering/constants.js +30 -0
- package/legacy/components/headerFiltering/index.js +2 -0
- package/legacy/components/index.js +2 -1
- package/legacy/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +120 -0
- package/legacy/hooks/features/columnResize/useGridColumnResize.js +12 -1
- package/legacy/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +1 -0
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +4 -0
- package/legacy/material/icons.js +4 -1
- package/legacy/material/index.js +3 -2
- package/legacy/models/gridProSlotProps.js +1 -0
- package/legacy/utils/releaseInfo.js +1 -1
- package/legacy/utils/tree/createRowTree.js +1 -0
- package/legacy/utils/tree/insertDataRowInTree.js +4 -0
- package/legacy/utils/tree/removeDataRowFromTree.js +1 -0
- package/legacy/utils/tree/updateRowTree.js +2 -0
- package/legacy/utils/tree/utils.js +20 -12
- package/material/icons.d.ts +3 -0
- package/material/icons.js +4 -1
- package/material/index.d.ts +1 -0
- package/material/index.js +3 -2
- package/models/dataGridProProps.d.ts +16 -1
- package/models/gridProIconSlotsComponent.d.ts +5 -0
- package/models/gridProSlotProps.d.ts +9 -0
- package/models/gridProSlotProps.js +1 -0
- package/models/gridProSlotsComponent.d.ts +13 -2
- package/modern/DataGridPro/DataGridPro.js +5 -0
- package/modern/DataGridPro/useDataGridProComponent.js +3 -1
- package/modern/DataGridPro/useDataGridProProps.js +7 -13
- package/modern/components/GridColumnHeaders.js +15 -1
- package/modern/components/GridDetailPanel.js +1 -1
- package/modern/components/headerFiltering/GridHeaderFilterAdornment.js +98 -0
- package/modern/components/headerFiltering/GridHeaderFilterCell.js +222 -0
- package/modern/components/headerFiltering/GridHeaderFilterClearButton.js +24 -0
- package/modern/components/headerFiltering/GridHeaderFilterMenu.js +68 -0
- package/modern/components/headerFiltering/constants.js +30 -0
- package/modern/components/headerFiltering/index.js +2 -0
- package/modern/components/index.js +2 -1
- package/modern/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +110 -0
- package/modern/hooks/features/columnResize/useGridColumnResize.js +11 -0
- package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +1 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.js +4 -0
- package/modern/material/icons.js +4 -1
- package/modern/material/index.js +3 -2
- package/modern/models/gridProSlotProps.js +1 -0
- package/modern/utils/releaseInfo.js +1 -1
- package/modern/utils/tree/createRowTree.js +1 -0
- package/modern/utils/tree/insertDataRowInTree.js +4 -0
- package/modern/utils/tree/removeDataRowFromTree.js +1 -0
- package/modern/utils/tree/updateRowTree.js +2 -0
- package/modern/utils/tree/utils.js +19 -13
- package/node/DataGridPro/DataGridPro.js +5 -0
- package/node/DataGridPro/useDataGridProComponent.js +2 -0
- package/node/DataGridPro/useDataGridProProps.js +6 -12
- package/node/components/GridColumnHeaders.js +15 -1
- package/node/components/GridDetailPanel.js +2 -2
- package/node/components/headerFiltering/GridHeaderFilterAdornment.js +105 -0
- package/node/components/headerFiltering/GridHeaderFilterCell.js +230 -0
- package/node/components/headerFiltering/GridHeaderFilterClearButton.js +32 -0
- package/node/components/headerFiltering/GridHeaderFilterMenu.js +75 -0
- package/node/components/headerFiltering/constants.js +37 -0
- package/node/components/headerFiltering/index.js +27 -0
- package/node/components/index.js +11 -0
- package/node/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +120 -0
- package/node/hooks/features/columnResize/useGridColumnResize.js +11 -0
- package/node/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +1 -0
- package/node/index.js +1 -1
- package/node/internals/index.js +8 -0
- package/node/material/icons.js +6 -2
- package/node/material/index.js +2 -1
- package/node/models/gridProSlotProps.js +5 -0
- package/node/utils/releaseInfo.js +1 -1
- package/node/utils/tree/createRowTree.js +1 -0
- package/node/utils/tree/insertDataRowInTree.js +4 -0
- package/node/utils/tree/removeDataRowFromTree.js +1 -0
- package/node/utils/tree/updateRowTree.js +2 -0
- package/node/utils/tree/utils.js +19 -13
- package/package.json +2 -2
- package/typeOverloads/modules.d.ts +13 -1
- package/utils/releaseInfo.js +1 -1
- package/utils/tree/createRowTree.d.ts +2 -0
- package/utils/tree/createRowTree.js +1 -0
- package/utils/tree/insertDataRowInTree.d.ts +5 -1
- package/utils/tree/insertDataRowInTree.js +4 -0
- package/utils/tree/removeDataRowFromTree.js +1 -0
- package/utils/tree/updateRowTree.js +2 -0
- package/utils/tree/utils.d.ts +4 -2
- package/utils/tree/utils.js +19 -13
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import MenuList from '@mui/material/MenuList';
|
|
4
|
+
import MenuItem from '@mui/material/MenuItem';
|
|
5
|
+
import ListItemIcon from '@mui/material/ListItemIcon';
|
|
6
|
+
import ListItemText from '@mui/material/ListItemText';
|
|
7
|
+
import { unstable_capitalize as capitalize } from '@mui/utils';
|
|
8
|
+
import { useGridApiContext, GridMenu } from '@mui/x-data-grid';
|
|
9
|
+
import { OPERATOR_SYMBOL_MAPPING } from './constants';
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
function GridHeaderFilterMenu({
|
|
13
|
+
open,
|
|
14
|
+
field,
|
|
15
|
+
targetRef,
|
|
16
|
+
applyFilterChanges,
|
|
17
|
+
operators,
|
|
18
|
+
item,
|
|
19
|
+
id,
|
|
20
|
+
labelledBy
|
|
21
|
+
}) {
|
|
22
|
+
const apiRef = useGridApiContext();
|
|
23
|
+
const hideMenu = React.useCallback(() => {
|
|
24
|
+
apiRef.current.hideHeaderFilterMenu();
|
|
25
|
+
}, [apiRef]);
|
|
26
|
+
const handleListKeyDown = React.useCallback(event => {
|
|
27
|
+
if (event.key === 'Tab') {
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
}
|
|
30
|
+
if (event.key === 'Escape' || event.key === 'Tab') {
|
|
31
|
+
hideMenu();
|
|
32
|
+
}
|
|
33
|
+
}, [hideMenu]);
|
|
34
|
+
if (!targetRef.current) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return /*#__PURE__*/_jsx(GridMenu, {
|
|
38
|
+
placement: "bottom-start",
|
|
39
|
+
open: open,
|
|
40
|
+
target: targetRef.current,
|
|
41
|
+
onClickAway: hideMenu,
|
|
42
|
+
onExited: hideMenu,
|
|
43
|
+
children: /*#__PURE__*/_jsx(MenuList, {
|
|
44
|
+
"aria-labelledby": labelledBy,
|
|
45
|
+
id: id,
|
|
46
|
+
onKeyDown: handleListKeyDown,
|
|
47
|
+
children: operators.map((op, i) => {
|
|
48
|
+
var _op$headerLabel;
|
|
49
|
+
const label = (_op$headerLabel = op == null ? void 0 : op.headerLabel) != null ? _op$headerLabel : apiRef.current.getLocaleText(`headerFilterOperator${capitalize(op.value)}`);
|
|
50
|
+
return /*#__PURE__*/_jsxs(MenuItem, {
|
|
51
|
+
onClick: () => {
|
|
52
|
+
applyFilterChanges(_extends({}, item, {
|
|
53
|
+
operator: op.value
|
|
54
|
+
}));
|
|
55
|
+
hideMenu();
|
|
56
|
+
},
|
|
57
|
+
autoFocus: i === 0 ? open : false,
|
|
58
|
+
selected: op.value === item.operator,
|
|
59
|
+
children: [/*#__PURE__*/_jsx(ListItemIcon, {
|
|
60
|
+
children: OPERATOR_SYMBOL_MAPPING[op.value]
|
|
61
|
+
}), /*#__PURE__*/_jsx(ListItemText, {
|
|
62
|
+
children: label
|
|
63
|
+
})]
|
|
64
|
+
}, `${field}-${op.value}`);
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
export { GridHeaderFilterMenu };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const OPERATOR_SYMBOL_MAPPING = {
|
|
2
|
+
contains: '∋',
|
|
3
|
+
equals: '=',
|
|
4
|
+
'=': '=',
|
|
5
|
+
'!=': '≠',
|
|
6
|
+
'>': '>',
|
|
7
|
+
'>=': '≥',
|
|
8
|
+
'<': '<',
|
|
9
|
+
'<=': '≤',
|
|
10
|
+
startsWith: '⊃',
|
|
11
|
+
endsWith: '⊂',
|
|
12
|
+
is: '=',
|
|
13
|
+
not: '≠',
|
|
14
|
+
isNot: '≠',
|
|
15
|
+
isEmpty: '∅',
|
|
16
|
+
isNotEmpty: '∉',
|
|
17
|
+
isIn: '∈',
|
|
18
|
+
isNotIn: '∉',
|
|
19
|
+
isLessThan: '<',
|
|
20
|
+
isLessThanOrEqual: '≤',
|
|
21
|
+
isGreaterThan: '>',
|
|
22
|
+
isGreaterThanOrEqual: '≥',
|
|
23
|
+
isBetween: '∈',
|
|
24
|
+
isNotBetween: '∉',
|
|
25
|
+
isAnyOf: '∈',
|
|
26
|
+
after: '>',
|
|
27
|
+
onOrAfter: '≥',
|
|
28
|
+
before: '<',
|
|
29
|
+
onOrBefore: '≤'
|
|
30
|
+
};
|
package/components/index.d.ts
CHANGED
package/components/index.js
CHANGED
|
@@ -2,8 +2,12 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import { DATA_GRID_DEFAULT_SLOTS_COMPONENTS } from '@mui/x-data-grid/internals';
|
|
3
3
|
import { GridProColumnMenu } from '../components/GridProColumnMenu';
|
|
4
4
|
import { GridColumnHeaders } from '../components/GridColumnHeaders';
|
|
5
|
+
import { GridHeaderFilterMenu } from '../components/headerFiltering/GridHeaderFilterMenu';
|
|
6
|
+
import { GridHeaderFilterCell } from '../components/headerFiltering/GridHeaderFilterCell';
|
|
5
7
|
import materialSlots from '../material';
|
|
6
8
|
export const DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS = _extends({}, DATA_GRID_DEFAULT_SLOTS_COMPONENTS, materialSlots, {
|
|
7
9
|
ColumnMenu: GridProColumnMenu,
|
|
8
|
-
ColumnHeaders: GridColumnHeaders
|
|
10
|
+
ColumnHeaders: GridColumnHeaders,
|
|
11
|
+
HeaderFilterCell: GridHeaderFilterCell,
|
|
12
|
+
HeaderFilterMenu: GridHeaderFilterMenu
|
|
9
13
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { UseGridColumnHeadersProps, GetHeadersParams } from '@mui/x-data-grid/internals';
|
|
3
|
+
export declare const useGridColumnHeaders: (props: UseGridColumnHeadersProps) => {
|
|
4
|
+
getColumnFilters: (params?: GetHeadersParams, other?: {}) => JSX.Element | null;
|
|
5
|
+
getRootProps: (other?: {} | undefined) => {
|
|
6
|
+
style: {
|
|
7
|
+
minHeight: number;
|
|
8
|
+
maxHeight: number;
|
|
9
|
+
lineHeight: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
renderContext: import("@mui/x-data-grid").GridRenderContext | null;
|
|
13
|
+
getColumnHeaders: (params?: GetHeadersParams | undefined, other?: {} | undefined) => JSX.Element | null;
|
|
14
|
+
getColumnGroupHeaders: (params?: GetHeadersParams | undefined) => JSX.Element[] | null;
|
|
15
|
+
isDragging: boolean;
|
|
16
|
+
getInnerProps: () => {
|
|
17
|
+
ref: ((instance: HTMLDivElement | null) => void) | null;
|
|
18
|
+
role: string;
|
|
19
|
+
};
|
|
20
|
+
headerHeight: number;
|
|
21
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["getColumnsToRender", "getRootProps"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { unstable_gridFocusColumnHeaderFilterSelector, useGridSelector, gridFilterModelSelector, unstable_gridTabIndexColumnHeaderFilterSelector } from '@mui/x-data-grid';
|
|
6
|
+
import { styled } from '@mui/system';
|
|
7
|
+
import { useGridColumnHeaders as useGridColumnHeadersCommunity, getTotalHeaderHeight, useGridPrivateApiContext, getGridFilter } from '@mui/x-data-grid/internals';
|
|
8
|
+
import { useGridRootProps } from '../../utils/useGridRootProps';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
const GridHeaderFilterRow = styled('div', {
|
|
11
|
+
name: 'MuiDataGrid',
|
|
12
|
+
slot: 'HeaderFilterRow',
|
|
13
|
+
overridesResolver: (props, styles) => styles.headerFilterRow
|
|
14
|
+
})(() => ({
|
|
15
|
+
display: 'flex',
|
|
16
|
+
borderTop: '1px solid rgba(224, 224, 224, 1)'
|
|
17
|
+
}));
|
|
18
|
+
export const useGridColumnHeaders = props => {
|
|
19
|
+
const apiRef = useGridPrivateApiContext();
|
|
20
|
+
const {
|
|
21
|
+
headerGroupingMaxDepth,
|
|
22
|
+
hasOtherElementInTabSequence
|
|
23
|
+
} = props;
|
|
24
|
+
const columnHeaderFilterTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnHeaderFilterSelector);
|
|
25
|
+
const _useGridColumnHeaders = useGridColumnHeadersCommunity(_extends({}, props, {
|
|
26
|
+
hasOtherElementInTabSequence: hasOtherElementInTabSequence || columnHeaderFilterTabIndexState !== null
|
|
27
|
+
})),
|
|
28
|
+
{
|
|
29
|
+
getColumnsToRender,
|
|
30
|
+
getRootProps
|
|
31
|
+
} = _useGridColumnHeaders,
|
|
32
|
+
otherProps = _objectWithoutPropertiesLoose(_useGridColumnHeaders, _excluded);
|
|
33
|
+
const headerFiltersRef = React.useRef(null);
|
|
34
|
+
apiRef.current.register('private', {
|
|
35
|
+
headerFiltersElementRef: headerFiltersRef
|
|
36
|
+
});
|
|
37
|
+
const headerFilterMenuRef = React.useRef(null);
|
|
38
|
+
const rootProps = useGridRootProps();
|
|
39
|
+
const disableHeaderFiltering = !rootProps.unstable_headerFilters;
|
|
40
|
+
const headerHeight = Math.floor(rootProps.columnHeaderHeight * props.densityFactor);
|
|
41
|
+
const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
|
|
42
|
+
const totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps.columnHeaderHeight) + (disableHeaderFiltering ? 0 : headerHeight);
|
|
43
|
+
const columnHeaderFilterFocus = useGridSelector(apiRef, unstable_gridFocusColumnHeaderFilterSelector);
|
|
44
|
+
const getColumnFilters = (params, other = {}) => {
|
|
45
|
+
if (disableHeaderFiltering) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const columnsToRender = getColumnsToRender(params);
|
|
49
|
+
if (columnsToRender == null) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const {
|
|
53
|
+
renderedColumns,
|
|
54
|
+
firstColumnToRender
|
|
55
|
+
} = columnsToRender;
|
|
56
|
+
const filters = [];
|
|
57
|
+
for (let i = 0; i < renderedColumns.length; i += 1) {
|
|
58
|
+
var _colDef$filterOperato, _colDef$filterOperato2, _filterModel$items$fi, _rootProps$slotProps;
|
|
59
|
+
const colDef = renderedColumns[i];
|
|
60
|
+
const columnIndex = firstColumnToRender + i;
|
|
61
|
+
const hasFocus = (columnHeaderFilterFocus == null ? void 0 : columnHeaderFilterFocus.field) === colDef.field;
|
|
62
|
+
const isFirstColumn = columnIndex === 0;
|
|
63
|
+
const tabIndexField = columnHeaderFilterTabIndexState == null ? void 0 : columnHeaderFilterTabIndexState.field;
|
|
64
|
+
const tabIndex = tabIndexField === colDef.field || isFirstColumn && !props.hasOtherElementInTabSequence ? 0 : -1;
|
|
65
|
+
let headerFilterComponent;
|
|
66
|
+
if (colDef.renderHeaderFilter) {
|
|
67
|
+
headerFilterComponent = colDef.renderHeaderFilter(apiRef.current.getColumnHeaderParams(colDef.field));
|
|
68
|
+
}
|
|
69
|
+
const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({
|
|
70
|
+
field: colDef.field,
|
|
71
|
+
colDef
|
|
72
|
+
}) : colDef.headerClassName;
|
|
73
|
+
|
|
74
|
+
// TODO: Support for `isAnyOf` operator
|
|
75
|
+
const filterOperators = (_colDef$filterOperato = (_colDef$filterOperato2 = colDef.filterOperators) == null ? void 0 : _colDef$filterOperato2.filter(operator => operator.value !== 'isAnyOf')) != null ? _colDef$filterOperato : [];
|
|
76
|
+
const item = (_filterModel$items$fi = filterModel == null ? void 0 : filterModel.items.find(it => it.field === colDef.field && it.operator !== 'isAnyOf')) != null ? _filterModel$items$fi : getGridFilter(colDef);
|
|
77
|
+
filters.push( /*#__PURE__*/_jsx(rootProps.slots.headerFilterCell, _extends({
|
|
78
|
+
colIndex: columnIndex,
|
|
79
|
+
height: headerHeight,
|
|
80
|
+
width: colDef.computedWidth,
|
|
81
|
+
colDef: colDef,
|
|
82
|
+
hasFocus: hasFocus,
|
|
83
|
+
tabIndex: tabIndex,
|
|
84
|
+
headerFilterMenuRef: headerFilterMenuRef,
|
|
85
|
+
headerFilterComponent: headerFilterComponent,
|
|
86
|
+
headerClassName: headerClassName,
|
|
87
|
+
filterOperators: filterOperators,
|
|
88
|
+
"data-field": colDef.field,
|
|
89
|
+
item: item
|
|
90
|
+
}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.headerFilterCell, other), `${colDef.field}-filter`));
|
|
91
|
+
}
|
|
92
|
+
return /*#__PURE__*/_jsx(GridHeaderFilterRow, {
|
|
93
|
+
ref: headerFiltersRef,
|
|
94
|
+
ownerState: rootProps,
|
|
95
|
+
role: "row",
|
|
96
|
+
"aria-rowindex": headerGroupingMaxDepth + 2,
|
|
97
|
+
children: filters
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
const rootStyle = {
|
|
101
|
+
minHeight: totalHeaderHeight,
|
|
102
|
+
maxHeight: totalHeaderHeight,
|
|
103
|
+
lineHeight: `${headerHeight}px`
|
|
104
|
+
};
|
|
105
|
+
return _extends({}, otherProps, {
|
|
106
|
+
getColumnFilters,
|
|
107
|
+
getRootProps: disableHeaderFiltering ? getRootProps : (other = {}) => _extends({
|
|
108
|
+
style: rootStyle
|
|
109
|
+
}, other)
|
|
110
|
+
});
|
|
111
|
+
};
|
|
@@ -87,6 +87,7 @@ export const useGridColumnResize = (apiRef, props) => {
|
|
|
87
87
|
const logger = useGridLogger(apiRef, 'useGridColumnResize');
|
|
88
88
|
const colDefRef = React.useRef();
|
|
89
89
|
const colElementRef = React.useRef();
|
|
90
|
+
const headerFilterElementRef = React.useRef();
|
|
90
91
|
const colGroupingElementRef = React.useRef();
|
|
91
92
|
const colCellElementsRef = React.useRef();
|
|
92
93
|
const theme = useTheme();
|
|
@@ -108,6 +109,12 @@ export const useGridColumnResize = (apiRef, props) => {
|
|
|
108
109
|
colElementRef.current.style.width = `${newWidth}px`;
|
|
109
110
|
colElementRef.current.style.minWidth = `${newWidth}px`;
|
|
110
111
|
colElementRef.current.style.maxWidth = `${newWidth}px`;
|
|
112
|
+
const headerFilterElement = headerFilterElementRef.current;
|
|
113
|
+
if (headerFilterElement) {
|
|
114
|
+
headerFilterElement.style.width = `${newWidth}px`;
|
|
115
|
+
headerFilterElement.style.minWidth = `${newWidth}px`;
|
|
116
|
+
headerFilterElement.style.maxWidth = `${newWidth}px`;
|
|
117
|
+
}
|
|
111
118
|
[...colCellElementsRef.current, ...colGroupingElementRef.current].forEach(element => {
|
|
112
119
|
const div = element;
|
|
113
120
|
let finalWidth;
|
|
@@ -160,7 +167,7 @@ export const useGridColumnResize = (apiRef, props) => {
|
|
|
160
167
|
const handleColumnResizeMouseDown = useEventCallback(({
|
|
161
168
|
colDef
|
|
162
169
|
}, event) => {
|
|
163
|
-
var _apiRef$current$colum, _apiRef$current$colum2;
|
|
170
|
+
var _apiRef$current$colum, _apiRef$current$heade, _apiRef$current$colum2;
|
|
164
171
|
// Only handle left clicks
|
|
165
172
|
if (event.button !== 0) {
|
|
166
173
|
return;
|
|
@@ -179,6 +186,10 @@ export const useGridColumnResize = (apiRef, props) => {
|
|
|
179
186
|
}, event);
|
|
180
187
|
colDefRef.current = colDef;
|
|
181
188
|
colElementRef.current = (_apiRef$current$colum = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum.current.querySelector(`[data-field="${colDef.field}"]`);
|
|
189
|
+
const headerFilterRowElement = (_apiRef$current$heade = apiRef.current.headerFiltersElementRef) == null ? void 0 : _apiRef$current$heade.current;
|
|
190
|
+
if (headerFilterRowElement) {
|
|
191
|
+
headerFilterElementRef.current = headerFilterRowElement.querySelector(`[data-field="${colDef.field}"]`);
|
|
192
|
+
}
|
|
182
193
|
colGroupingElementRef.current = findGroupHeaderElementsFromField((_apiRef$current$colum2 = apiRef.current.columnHeadersContainerElementRef) == null ? void 0 : _apiRef$current$colum2.current, colDef.field);
|
|
183
194
|
colCellElementsRef.current = findGridCellElementsFromCol(colElementRef.current, apiRef.current);
|
|
184
195
|
const doc = ownerDocument(apiRef.current.rootElementRef.current);
|
|
@@ -78,6 +78,7 @@ export const useGridTreeDataPreProcessors = (privateApiRef, props) => {
|
|
|
78
78
|
};
|
|
79
79
|
if (params.updates.type === 'full') {
|
|
80
80
|
return createRowTree({
|
|
81
|
+
previousTree: params.previousTree,
|
|
81
82
|
nodes: params.updates.rows.map(getRowTreeBuilderNode),
|
|
82
83
|
defaultGroupingExpansionDepth: props.defaultGroupingExpansionDepth,
|
|
83
84
|
isGroupExpandedByDefault: props.isGroupExpandedByDefault,
|
package/index.js
CHANGED
package/internals/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from '@mui/x-data-grid/internals';
|
|
|
2
2
|
export { DataGridProVirtualScroller } from '../components/DataGridProVirtualScroller';
|
|
3
3
|
export { GridColumnHeaders } from '../components/GridColumnHeaders';
|
|
4
4
|
export { DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS } from '../constants/dataGridProDefaultSlotsComponents';
|
|
5
|
+
export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
|
|
5
6
|
export { useGridColumnResize, columnResizeStateInitializer, } from '../hooks/features/columnResize/useGridColumnResize';
|
|
6
7
|
export { useGridColumnPinning, columnPinningStateInitializer, } from '../hooks/features/columnPinning/useGridColumnPinning';
|
|
7
8
|
export { useGridColumnPinningPreProcessors } from '../hooks/features/columnPinning/useGridColumnPinningPreProcessors';
|
package/internals/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
// eslint-disable-next-line import/export
|
|
1
2
|
export * from '@mui/x-data-grid/internals';
|
|
2
3
|
export { DataGridProVirtualScroller } from '../components/DataGridProVirtualScroller';
|
|
3
4
|
export { GridColumnHeaders } from '../components/GridColumnHeaders';
|
|
4
5
|
export { DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS } from '../constants/dataGridProDefaultSlotsComponents';
|
|
6
|
+
|
|
7
|
+
// eslint-disable-next-line import/export
|
|
8
|
+
export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
|
|
5
9
|
export { useGridColumnResize, columnResizeStateInitializer } from '../hooks/features/columnResize/useGridColumnResize';
|
|
6
10
|
export { useGridColumnPinning, columnPinningStateInitializer } from '../hooks/features/columnPinning/useGridColumnPinning';
|
|
7
11
|
export { useGridColumnPinningPreProcessors } from '../hooks/features/columnPinning/useGridColumnPinningPreProcessors';
|
|
@@ -827,6 +827,11 @@ DataGridProRaw.propTypes = {
|
|
|
827
827
|
* @default false
|
|
828
828
|
*/
|
|
829
829
|
treeData: PropTypes.bool,
|
|
830
|
+
/**
|
|
831
|
+
* If `true`, enables the data grid filtering on header feature.
|
|
832
|
+
* @default false
|
|
833
|
+
*/
|
|
834
|
+
unstable_headerFilters: PropTypes.bool,
|
|
830
835
|
/**
|
|
831
836
|
* If `true`, the grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.
|
|
832
837
|
* If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useGridInitialization, useGridInitializeState, useGridClipboard, useGridColumnMenu, useGridColumns, columnsStateInitializer, useGridDensity, useGridCsvExport, useGridPrintExport, useGridFilter, filterStateInitializer, useGridFocus, useGridKeyboardNavigation, useGridPagination, paginationStateInitializer, useGridPreferencesPanel, useGridEditing, editingStateInitializer, useGridRows, useGridRowsPreProcessors, rowsStateInitializer, useGridRowsMeta, useGridParamsApi, useGridRowSelection, useGridSorting, sortingStateInitializer, useGridScroll, useGridEvents, useGridDimensions, useGridStatePersistence, useGridRowSelectionPreProcessors, useGridColumnSpanning, columnMenuStateInitializer, densityStateInitializer, focusStateInitializer, preferencePanelStateInitializer, rowsMetaStateInitializer, rowSelectionStateInitializer, useGridColumnGrouping, columnGroupsStateInitializer } from '@mui/x-data-grid/internals';
|
|
1
|
+
import { useGridInitialization, useGridInitializeState, useGridClipboard, useGridColumnMenu, useGridColumns, columnsStateInitializer, useGridDensity, useGridCsvExport, useGridPrintExport, useGridFilter, filterStateInitializer, useGridFocus, useGridKeyboardNavigation, useGridPagination, paginationStateInitializer, useGridPreferencesPanel, useGridEditing, editingStateInitializer, useGridRows, useGridRowsPreProcessors, rowsStateInitializer, useGridRowsMeta, useGridParamsApi, useGridRowSelection, useGridSorting, sortingStateInitializer, useGridScroll, useGridEvents, useGridDimensions, useGridStatePersistence, useGridRowSelectionPreProcessors, useGridColumnSpanning, columnMenuStateInitializer, densityStateInitializer, focusStateInitializer, preferencePanelStateInitializer, rowsMetaStateInitializer, rowSelectionStateInitializer, useGridColumnGrouping, columnGroupsStateInitializer, headerFilteringStateInitializer, useGridHeaderFiltering } from '@mui/x-data-grid/internals';
|
|
2
2
|
// Pro-only features
|
|
3
3
|
import { useGridInfiniteLoader } from '../hooks/features/infiniteLoader/useGridInfiniteLoader';
|
|
4
4
|
import { useGridColumnReorder, columnReorderStateInitializer } from '../hooks/features/columnReorder/useGridColumnReorder';
|
|
@@ -35,6 +35,7 @@ export var useDataGridProComponent = function useDataGridProComponent(inputApiRe
|
|
|
35
35
|
/**
|
|
36
36
|
* Register all state initializers here.
|
|
37
37
|
*/
|
|
38
|
+
useGridInitializeState(headerFilteringStateInitializer, apiRef, props);
|
|
38
39
|
useGridInitializeState(rowSelectionStateInitializer, apiRef, props);
|
|
39
40
|
useGridInitializeState(detailPanelStateInitializer, apiRef, props);
|
|
40
41
|
useGridInitializeState(columnPinningStateInitializer, apiRef, props);
|
|
@@ -53,6 +54,7 @@ export var useDataGridProComponent = function useDataGridProComponent(inputApiRe
|
|
|
53
54
|
useGridInitializeState(rowsMetaStateInitializer, apiRef, props);
|
|
54
55
|
useGridInitializeState(columnMenuStateInitializer, apiRef, props);
|
|
55
56
|
useGridInitializeState(columnGroupsStateInitializer, apiRef, props);
|
|
57
|
+
useGridHeaderFiltering(apiRef, props);
|
|
56
58
|
useGridTreeData(apiRef);
|
|
57
59
|
useGridKeyboardNavigation(apiRef, props);
|
|
58
60
|
useGridRowSelection(apiRef, props);
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
var _excluded = ["components", "componentsProps"];
|
|
4
3
|
import * as React from 'react';
|
|
5
4
|
import { useThemeProps } from '@mui/material/styles';
|
|
6
5
|
import { GRID_DEFAULT_LOCALE_TEXT, DATA_GRID_PROPS_DEFAULT_VALUES } from '@mui/x-data-grid';
|
|
7
|
-
import { computeSlots, uncapitalizeObjectKeys } from '@mui/x-data-grid/internals';
|
|
6
|
+
import { computeSlots, uncapitalizeObjectKeys, useProps } from '@mui/x-data-grid/internals';
|
|
8
7
|
import { DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS } from '../constants/dataGridProDefaultSlotsComponents';
|
|
9
8
|
|
|
10
9
|
/**
|
|
@@ -22,17 +21,19 @@ export var DATA_GRID_PRO_PROPS_DEFAULT_VALUES = _extends({}, DATA_GRID_PROPS_DEF
|
|
|
22
21
|
rowsLoadingMode: 'client',
|
|
23
22
|
getDetailPanelHeight: function getDetailPanelHeight() {
|
|
24
23
|
return 500;
|
|
25
|
-
}
|
|
24
|
+
},
|
|
25
|
+
unstable_headerFilters: false
|
|
26
26
|
});
|
|
27
27
|
var defaultSlots = uncapitalizeObjectKeys(DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS);
|
|
28
28
|
export var useDataGridProProps = function useDataGridProProps(inProps) {
|
|
29
|
-
var
|
|
29
|
+
var _useProps = useProps(useThemeProps({
|
|
30
30
|
props: inProps,
|
|
31
31
|
name: 'MuiDataGrid'
|
|
32
|
-
}),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
})),
|
|
33
|
+
_useProps2 = _slicedToArray(_useProps, 3),
|
|
34
|
+
components = _useProps2[0],
|
|
35
|
+
componentsProps = _useProps2[1],
|
|
36
|
+
themedProps = _useProps2[2];
|
|
36
37
|
var localeText = React.useMemo(function () {
|
|
37
38
|
return _extends({}, GRID_DEFAULT_LOCALE_TEXT, themedProps.localeText);
|
|
38
39
|
}, [themedProps.localeText]);
|
|
@@ -8,11 +8,12 @@ import PropTypes from 'prop-types';
|
|
|
8
8
|
import { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
|
|
9
9
|
import { styled, alpha, useTheme } from '@mui/material/styles';
|
|
10
10
|
import { getDataGridUtilityClass, gridClasses, useGridApiEventHandler, GridColumnHeaderSeparatorSides } from '@mui/x-data-grid';
|
|
11
|
-
import { GridBaseColumnHeaders, GridColumnHeadersInner
|
|
11
|
+
import { GridBaseColumnHeaders, GridColumnHeadersInner } from '@mui/x-data-grid/internals';
|
|
12
12
|
import { useGridRootProps } from '../hooks/utils/useGridRootProps';
|
|
13
13
|
import { useGridApiContext } from '../hooks/utils/useGridApiContext';
|
|
14
14
|
import { GridPinnedPosition } from '../hooks/features/columnPinning';
|
|
15
15
|
import { filterColumns } from './DataGridProVirtualScroller';
|
|
16
|
+
import { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
|
|
16
17
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
18
|
var useUtilityClasses = function useUtilityClasses(ownerState) {
|
|
18
19
|
var leftPinnedColumns = ownerState.leftPinnedColumns,
|
|
@@ -144,6 +145,7 @@ var GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeaders
|
|
|
144
145
|
getRootProps = _useGridColumnHeaders.getRootProps,
|
|
145
146
|
getInnerProps = _useGridColumnHeaders.getInnerProps,
|
|
146
147
|
getColumnHeaders = _useGridColumnHeaders.getColumnHeaders,
|
|
148
|
+
getColumnFilters = _useGridColumnHeaders.getColumnFilters,
|
|
147
149
|
getColumnGroupHeaders = _useGridColumnHeaders.getColumnGroupHeaders;
|
|
148
150
|
var ownerState = _extends({}, rootProps, {
|
|
149
151
|
leftPinnedColumns: leftPinnedColumns,
|
|
@@ -184,6 +186,10 @@ var GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeaders
|
|
|
184
186
|
maxLastColumn: leftRenderContext.lastColumnIndex
|
|
185
187
|
}, {
|
|
186
188
|
disableReorder: true
|
|
189
|
+
}), getColumnFilters({
|
|
190
|
+
renderContext: leftRenderContext,
|
|
191
|
+
minFirstColumn: leftRenderContext.firstColumnIndex,
|
|
192
|
+
maxLastColumn: leftRenderContext.lastColumnIndex
|
|
187
193
|
})]
|
|
188
194
|
})), /*#__PURE__*/_jsxs(GridColumnHeadersInner, _extends({
|
|
189
195
|
isDragging: isDragging
|
|
@@ -196,6 +202,10 @@ var GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeaders
|
|
|
196
202
|
renderContext: renderContext,
|
|
197
203
|
minFirstColumn: leftPinnedColumns.length,
|
|
198
204
|
maxLastColumn: visibleColumnFields.length - rightPinnedColumns.length
|
|
205
|
+
}), getColumnFilters({
|
|
206
|
+
renderContext: renderContext,
|
|
207
|
+
minFirstColumn: leftPinnedColumns.length,
|
|
208
|
+
maxLastColumn: visibleColumnFields.length - rightPinnedColumns.length
|
|
199
209
|
})]
|
|
200
210
|
})), rightRenderContext && /*#__PURE__*/_jsxs(GridColumnHeadersPinnedColumnHeaders, _extends({
|
|
201
211
|
ownerState: _extends({}, ownerState, {
|
|
@@ -218,6 +228,10 @@ var GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeaders
|
|
|
218
228
|
}, {
|
|
219
229
|
disableReorder: true,
|
|
220
230
|
separatorSide: GridColumnHeaderSeparatorSides.Left
|
|
231
|
+
}), getColumnFilters({
|
|
232
|
+
renderContext: rightRenderContext,
|
|
233
|
+
minFirstColumn: rightRenderContext.firstColumnIndex,
|
|
234
|
+
maxLastColumn: rightRenderContext.lastColumnIndex
|
|
221
235
|
})]
|
|
222
236
|
}))]
|
|
223
237
|
}));
|
|
@@ -5,7 +5,7 @@ var _excluded = ["rowId", "height", "style"];
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import Box from '@mui/material/Box';
|
|
7
7
|
import { styled } from '@mui/material/styles';
|
|
8
|
-
import { useGridRootProps } from '
|
|
8
|
+
import { useGridRootProps } from '../hooks/utils/useGridRootProps';
|
|
9
9
|
import { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext';
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
var DetailPanel = styled(Box, {
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["operators", "item", "field", "buttonRef", "headerFilterMenuRef"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import { useGridApiContext } from '@mui/x-data-grid';
|
|
7
|
+
import { unstable_useId as useId } from '@mui/utils';
|
|
8
|
+
import { unstable_gridHeaderFilteringMenuSelector } from '@mui/x-data-grid/internals';
|
|
9
|
+
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
10
|
+
import { OPERATOR_SYMBOL_MAPPING } from './constants';
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
var sx = {
|
|
14
|
+
width: 22,
|
|
15
|
+
height: 22,
|
|
16
|
+
padding: '0px 0px 2px 2px'
|
|
17
|
+
};
|
|
18
|
+
function GridHeaderFilterAdornment(props) {
|
|
19
|
+
var _rootProps$slotProps, _OPERATOR_SYMBOL_MAPP;
|
|
20
|
+
var operators = props.operators,
|
|
21
|
+
item = props.item,
|
|
22
|
+
field = props.field,
|
|
23
|
+
buttonRef = props.buttonRef,
|
|
24
|
+
headerFilterMenuRef = props.headerFilterMenuRef,
|
|
25
|
+
others = _objectWithoutProperties(props, _excluded);
|
|
26
|
+
var buttonId = useId();
|
|
27
|
+
var menuId = useId();
|
|
28
|
+
var rootProps = useGridRootProps();
|
|
29
|
+
var apiRef = useGridApiContext();
|
|
30
|
+
var open = Boolean(unstable_gridHeaderFilteringMenuSelector(apiRef) === field && headerFilterMenuRef.current);
|
|
31
|
+
var handleClick = function handleClick(event) {
|
|
32
|
+
headerFilterMenuRef.current = event.currentTarget;
|
|
33
|
+
apiRef.current.showHeaderFilterMenu(field);
|
|
34
|
+
};
|
|
35
|
+
if (!rootProps.slots.headerFilterMenu) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
39
|
+
children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputAdornment, {
|
|
40
|
+
position: "start",
|
|
41
|
+
children: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({
|
|
42
|
+
id: buttonId,
|
|
43
|
+
ref: buttonRef,
|
|
44
|
+
"aria-label": apiRef.current.getLocaleText('filterPanelOperator'),
|
|
45
|
+
title: apiRef.current.getLocaleText('filterPanelOperator'),
|
|
46
|
+
"aria-controls": menuId,
|
|
47
|
+
"aria-expanded": open ? 'true' : undefined,
|
|
48
|
+
"aria-haspopup": "true",
|
|
49
|
+
tabIndex: -1,
|
|
50
|
+
size: "small",
|
|
51
|
+
onClick: handleClick,
|
|
52
|
+
sx: sx
|
|
53
|
+
}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {
|
|
54
|
+
children: (_OPERATOR_SYMBOL_MAPP = OPERATOR_SYMBOL_MAPPING[item == null ? void 0 : item.operator]) != null ? _OPERATOR_SYMBOL_MAPP : '='
|
|
55
|
+
}))
|
|
56
|
+
}), /*#__PURE__*/_jsx(rootProps.slots.headerFilterMenu, _extends({
|
|
57
|
+
field: field,
|
|
58
|
+
open: open,
|
|
59
|
+
item: item,
|
|
60
|
+
targetRef: headerFilterMenuRef,
|
|
61
|
+
operators: operators,
|
|
62
|
+
labelledBy: buttonId,
|
|
63
|
+
id: menuId
|
|
64
|
+
}, others))]
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
process.env.NODE_ENV !== "production" ? GridHeaderFilterAdornment.propTypes = {
|
|
68
|
+
// ----------------------------- Warning --------------------------------
|
|
69
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
70
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
71
|
+
// ----------------------------------------------------------------------
|
|
72
|
+
applyFilterChanges: PropTypes.func.isRequired,
|
|
73
|
+
buttonRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
|
|
74
|
+
current: PropTypes.object
|
|
75
|
+
})]),
|
|
76
|
+
field: PropTypes.string.isRequired,
|
|
77
|
+
headerFilterMenuRef: PropTypes.shape({
|
|
78
|
+
current: PropTypes.object
|
|
79
|
+
}).isRequired,
|
|
80
|
+
item: PropTypes.shape({
|
|
81
|
+
field: PropTypes.string.isRequired,
|
|
82
|
+
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
83
|
+
operator: PropTypes.string.isRequired,
|
|
84
|
+
value: PropTypes.any
|
|
85
|
+
}).isRequired,
|
|
86
|
+
operators: PropTypes.arrayOf(PropTypes.shape({
|
|
87
|
+
getApplyFilterFn: PropTypes.func.isRequired,
|
|
88
|
+
getValueAsString: PropTypes.func,
|
|
89
|
+
headerLabel: PropTypes.string,
|
|
90
|
+
InputComponent: PropTypes.elementType,
|
|
91
|
+
InputComponentProps: PropTypes.object,
|
|
92
|
+
label: PropTypes.string,
|
|
93
|
+
requiresFilterValue: PropTypes.bool,
|
|
94
|
+
value: PropTypes.string.isRequired
|
|
95
|
+
})).isRequired
|
|
96
|
+
} : void 0;
|
|
97
|
+
export { GridHeaderFilterAdornment };
|