Code Monkey home page Code Monkey logo

Comments (8)

apedretti avatar apedretti commented on September 7, 2024 1

Hi there @cherniavskii,

My bad, I kept testing around and forgot to revert the demo back to the bug. Corrected now:
image

Notice how after firing the columnsChange event (STEP 2) the custom filterModel.items get cleared (STEP 3).

Anecdotically, in my CustomDataGrid I've even gotten to fire columnsChange just by changing the filterModel, without even changing the state of the rows.

Solution / patch

I had to keep on going with my development, so what I ended up doing is to:

  • take the filters that use a field not present,
  • dinamically add columns with those fields,
  • hide those columns through the columnVisibilityModel, and
  • disable the column selection functionality from the user.

Expected behavior

I would love to be able to have filters with custom fields (and not have to use a patch), but I feel you guys are on a better position to define what the library should support or not so I'll leave that up to you.

In any case, the options are:

  • Not allow custom filters (i.e. filterModel with fields not present in the columns definition). In that case, what I'm reporting is not a bug, but a feature.
  • Allow custom filters. In this case, what I'm reporting is indeed a bug or needs a change.

from mui-x.

michelengelen avatar michelengelen commented on September 7, 2024 1

@cherniavskii gentle ping on this.

from mui-x.

cherniavskii avatar cherniavskii commented on September 7, 2024 1

Thanks @apedretti

The reason we only support filtering for the fields that are included in the columns prop is that we need to know the type of the field and filter operators available for the field:

Screenshot 2023-12-21 at 19 59 53 Screenshot 2023-12-21 at 19 59 39

Suppose the field is missing in the column definitions. In that case, it's not safe to assume the type, and keeping these filters in the filter model could lead to various inconsistencies in the Data Grid UI - this is why the Data Grid cleans the filter model and removes non-existent fields.

Your current solution to the problem is straightforward and makes sense to me 👍🏻

from mui-x.

cherniavskii avatar cherniavskii commented on September 7, 2024

Hey @apedretti
Could you clarify the expected behavior? This is what I see in the console:

from mui-x.

cherniavskii avatar cherniavskii commented on September 7, 2024

Also, could you clarify what is the expected behavior when the filterModel includes items referring to the non-existent columns?

from mui-x.

cherniavskii avatar cherniavskii commented on September 7, 2024

Here's a demo if anyone else has a similar use case: https://codesandbox.io/p/sandbox/summer-frost-lwsqyt?file=%2Fsrc%2FDemo.tsx%3A94%2C53

But I have to admit that when filtering by hidden fields, it's not clear why specific rows pass the filtering while others don't.
I think this is not great in terms of UX.

from mui-x.

cherniavskii avatar cherniavskii commented on September 7, 2024

I think we can close the issue as there's no action for us to take on the Data Grid side.
Thanks for your feedback!

from mui-x.

michelengelen avatar michelengelen commented on September 7, 2024

Thanks a lot @cherniavskii

from mui-x.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.