'How to open a custom column filter from a button in the header in ag-grid?
I am using ag-grid in React.
I have created a custom header component and a custom filter component (both functional components).
The custom filter works fine when I use it from the filter icon in the floating filters line.
Now, I would like to open the custom filter component by pressing the filter icon in my custom header component.
Header filter button vs Floating filter button
The popup filter I want to trigger & corresponding ag-grid element
I have the option of implementing the custom filtering completely independently, but would like to use the existing integration.
Is there a way to do that?
My Custom Filter Component:
const MyCustomFilter = forwardRef((props, ref) => {
const [filter, setFilter] = useState([]);
useEffect(() => {
filterChangedCallback();
}, [filter]);
useImperativeHandle(ref, () => {
return {
isFilterActive() {
return filter && filter.length !== 0;
},
doesFilterPass(params) {
return true;
},
getModel() {
return { filter: filter, filterType: 'set', type: 'equals' };
},
setModel(model) {
const filter = model ? model.filter : [];
setFilter(filter);
},
onNewRowsLoaded() {
console.log('PriorityFilter onNewRowsLoaded');
},
onAnyFilterChanged() {
console.log('PriorityFilter onAnyFilterChanged');
},
getModelAsString(model) {
return filter.join(',');
},
afterGuiAttached(params) {
},
};
});
const onChanged = useCallback((newSelectedOptions) => {
setFilter(newSelectedOptions);
}, []);
return <PrioritySetSelect onSelectionChanged={onChanged} selectedPriorityKeysInitial={filter} />;
});
export default PriorityFilter;
My Custom Header Component:
const CustomColumnHeader = forwardRef((props, ref) => {
useImperativeHandle(ref, () => {
return {
init(params) {
return;
},
refresh(params) {
return false;
},
destroy() {
return;
},
};
});
const handleFilterClick = () => {
//TODO: trigger ag-grid filter popup
};
return (
<div>
....
<FilterIcon onClick={handleFilterClick} />
</div>
);
});
export default CustomColumnHeader;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
