Skip to content

fix(mui): clear stale filter value on DataGrid filter row field swap#7424

Open
jwgmeligmeyling wants to merge 1 commit into
refinedev:mainfrom
athenagroup:fix/clear-stale-filter
Open

fix(mui): clear stale filter value on DataGrid filter row field swap#7424
jwgmeligmeyling wants to merge 1 commit into
refinedev:mainfrom
athenagroup:fix/clear-stale-filter

Conversation

@jwgmeligmeyling
Copy link
Copy Markdown
Contributor

When a user changed the column on an existing filter row in the MUI X DataGrid filter panel, MUI carried over the previous value to the new field. useDataGrid forwarded that value to the data provider as a CrudFilter, producing nonsensical queries for fields whose value space differs (enums, foreign-key references, booleans, etc.).

onFilterModelChange now keeps a ref to the previous filter model and, when the item count is unchanged, clears value on any row whose field changed. Items are matched by GridFilterItem.id (falling back to position when an id is absent) so reorders and single-step swap operations — e.g. delete + add in one model update — aren't misread as field changes. The cached previous model is also reset in search(), which replaces filters out-of-band and would otherwise leave a stale baseline that wipes the next user value edit. The caller's model is not mutated.

PR Checklist

Please check if your PR fulfills the following requirements:

Bugs / Features

What is the current behavior?

The value for the old filter is preserved when switching fields, causing issues, particularly when switching fields that have different types (i.e. text input to date input).

What is the new behavior?

Value is cleared.

fixes (issue)

Notes for reviewers

When a user changed the column on an existing filter row in the MUI X
DataGrid filter panel, MUI carried over the previous value to the new
field. `useDataGrid` forwarded that value to the data provider as a
CrudFilter, producing nonsensical queries for fields whose value space
differs (enums, foreign-key references, booleans, etc.).

`onFilterModelChange` now keeps a ref to the previous filter model and,
when the item count is unchanged, clears `value` on any row whose
`field` changed. Items are matched by `GridFilterItem.id` (falling back
to position when an id is absent) so reorders and single-step swap
operations — e.g. delete + add in one model update — aren't misread as
field changes. The cached previous model is also reset in `search()`,
which replaces filters out-of-band and would otherwise leave a stale
baseline that wipes the next user value edit. The caller's model is not
mutated.
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 17, 2026

🦋 Changeset detected

Latest commit: 39dca76

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 Patch

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