mui-x icon indicating copy to clipboard operation
mui-x copied to clipboard

[data grid] Improved "Manage columns" panel

Open joserodolfofreitas opened this issue 3 years ago • 13 comments

Summary 💡

The current columns menu manages the visibility of individual columns. image

Besides an opportunity to improve the overall look and feel of the panel, and a refactory to enable more customizations, As a central panel listing all the columns, we could empower users to handle many features like column ordering, grouping, or pinning.

This menu might also be the perfect place to establish the interface for pivoting.

This is an umbrella issue for the initial concept.

Design

Early proposal

Screenshots Screen Shot 2022-10-07 at 10 45 38

Next iteration

We had another iteration on the columns management panel during Pivoting UI exploration: https://www.figma.com/file/tOAZwAT1ebcTH4tb4zv3Lo/Pivoting?type=design&node-id=1018-30840&mode=design&t=Q6uSdXTeJDFr77g5-0

While it focuses on column management in the sidebar (the sidebar will be a new type of panel on the right of the data grid), the same UI can be implemented in the current columns management panel (positioned top-left over the data grid).

Other features to consider

  • Add a "Reset state" button. From customer feedback: "The ability to reset the table columns view to its initial state would be very useful. This would allow users to revert the columns to their default state after users have made changes using the column selector."

Feature development roadmap

  • [x] Phase 1 - #8754
  • [ ] Phase 2 - Support pivoting
  • [ ] Phase 3 - Reflect and support for column reordering
  • [ ] Phase 4 - Reflect and support for column groups
  • [ ] Phase 5 - Reflect and support for column pinning
  • [ ] Phase 6 - Support submenus for touch devices

Motivation 🔦

  • Improved Look and feel
  • A centralized way to 'build your custom view' as an end-user of the Data Grid
  • Improved column management experience on mobile
  • Better accessibility (https://github.com/mui/mui-x/issues/9245)
  • Possibly the ideal place for pivoting.

Examples 🌈

Datatables has an interesting approach to manage column visibility without any extra elements.

image

Ag grid hierarchical column management

image

Ag grid pivoting menu

image

Gmail shows draggability indicator on hover

Screen Shot 2022-08-10 at 4 29 1

Notion — draggability (& other actions) indicator and tooltop appears on hover

Screen Shot 2022-08-10 at 5 46 1

Essential Studio for React

Screen Shot 2022-08-24 at 3 30 1 (1)

joserodolfofreitas avatar Aug 04 '22 10:08 joserodolfofreitas

Added a few more examples above!

And here's an exploration of ways to show this that allow for current features + upcoming ones:

All columns visible Mixed visibility All columns hidden Extra spacing around groups
V1 - on V1 - mixed V1 - off V1 - extra space

gerdadesign avatar Aug 24 '22 20:08 gerdadesign

Thank you for reviewing this during our check in @joserodolfofreitas ! Here is the update with adjusted sizes for minimum touch target size (44px). The eye icon was previously 36px; now 48px.

Light Dark
all visible light dark
mixed visibility light-mixed dark-mixed

NOTES

  • turning off visibility for a group turns off visibilty for children
  • when all items are visible, button at the bottom shows “HIDE ALL” option
  • when all items are hidden, button at the bottom shows “SHOW ALL” option
  • when mixed visibilty, both bottom buttons are shown

Figma link for reference

gerdadesign avatar Sep 08 '22 17:09 gerdadesign

Thanks, @gerdadesign! Those are looking great!

One more question, would it make sense to enable users to pin columns here too? It's potentially an interesting use case that enables users to customize further their view of the data. However, the panel might get too cluttered. cc @m4theushw

joserodolfofreitas avatar Sep 09 '22 09:09 joserodolfofreitas

@joserodolfofreitas that's an interesting point!

I think there's a larger question around the Columns menu vs the individual column menu when you click the More icon.

Theoretically, it seems this Columns menu allows you to manipulate many columns at one time vs the individual menu allowing you to manipulate multiple options of a single column at a time. I would assume that most people wouldn't pin many columns at a time — maybe 1-3 max, but definitely open to exploring adding pinning if we find it's important to have in this overview!

gerdadesign avatar Sep 10 '22 19:09 gerdadesign