Skip to content

feat(mui): propagate DataGrid quickFilter values via meta in useDataGrid#7425

Open
jwgmeligmeyling wants to merge 2 commits into
refinedev:mainfrom
athenagroup:feat/mui-quickfilter
Open

feat(mui): propagate DataGrid quickFilter values via meta in useDataGrid#7425
jwgmeligmeyling wants to merge 2 commits into
refinedev:mainfrom
athenagroup:feat/mui-quickfilter

Conversation

@jwgmeligmeyling
Copy link
Copy Markdown
Contributor

PR Checklist

Please check if your PR fulfills the following requirements:

Bugs / Features

What is the current behavior?

Quick filters from the MUI filter state not propagated to the data provider

What is the new behavior?

Quick filters from the MUI filter state propagated to the data provider

Notes for reviewers

useDataGrid returned dataGridProps.filterModel as a freshly-allocated
object on every render, even when the underlying filter state was
unchanged. Consumers feeding it into MUI X DataGrid or to useEffect deps
keyed on its identity hit unnecessary work and could trigger effect
loops in user code.

Wrap the filterModel computation in useMemo keyed on muiCrudFilters,
the permanent filters, and the column-type map — mirroring the existing
memoization already used for sortModel a few lines above. The column-
type map is still tracked via the same useRef as before; including
columnsTypes.current in the deps array means the next render after
onStateChange reassigns the ref picks up the change, matching the
previous per-render computation.

Behavior is otherwise unchanged: the value still updates whenever the
underlying filter state — or the DataGrid-reported column types —
actually changes.
`quickFilterValues` and `quickFilterLogicOperator` from MUI's GridFilterModel
are now forwarded to the data provider's `getList` call via `meta`. Previously
both fields were dropped at the transformation boundary, so the toolbar's
quick filter input had no effect in server-side filtering mode.

The values bypass CrudFilters (which map 1:1 to per-column GridFilterItems)
and are placed on `meta` instead, so the data provider can interpret them as
a free-text search parameter or ignore them. The toolbar input is kept in
sync via the returned filterModel so it stays responsive while the server
query is debounced.

In client filterMode, the DataGrid handles quickFilterValues locally and the
data provider is never told about them — `meta` always reaches `getList`,
so propagating in that mode would cause needless refetches. The exclusion
is gated on `isServerSideFilteringEnabled` so a runtime switch from server
to client mode also drops any stale quick-filter values from `meta`.
`quickFilterLogicOperator` is only emitted alongside non-empty
`quickFilterValues`, since the operator has a default that can linger after
the user clears the search input.
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 17, 2026

🦋 Changeset detected

Latest commit: 1f55d78

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@refinedev/mui Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant