WordPress / gutenberg

The Block Editor project for WordPress and beyond. Plugin is available from the official repository.
https://wordpress.org/gutenberg/
Other
10.52k stars 4.21k forks source link

Fix hardcoded colors in Data Views #65215

Closed stokesman closed 1 month ago

stokesman commented 2 months ago

The list view has some hardcoded colors that are most noticeable with admin theme that uses a warm color for buttons (e.g. Midnight or Sunrise). Note the item actions in this screenshot.

image

The relevant section in the codebase: https://github.com/WordPress/gutenberg/blob/1cc30c5cac8c4ba33e0b61c4de20ed618a4166b9/packages/dataviews/src/dataviews-layouts/list/style.scss#L60-L65

Those are the ones noticeable in the screenshot. That file has some other hardcoded values (like #f8f8f8) that seem like they may need to be updated as well.

colorful-tones commented 2 months ago

I feel like the background-color and box-shadow are unnecessary here. 🤔 I've opened #65218 to address this.

ciampo commented 2 months ago

Maybe we could achieve the same result without using hardcoded colors:

stokesman commented 2 months ago
  • use inherit for the background color

The catch is that the selected state background color is mostly transparent so won’t obscure what’s under it. It could work if an opaque version of it were available. Which is something that has been proposed as worthwhile before https://github.com/WordPress/gutenberg/pull/63299#discussion_r1671967330.

  • for the fade, if still necessary

The fade feels like a compromised decision and if the truncation is there shouldn’t be needed.


I’ve made #65376. While it’s a lot of ++-- it’s mostly just moving things around.

ciampo commented 1 month ago

I looked more into this, and one aspect to consider if we want to cause "real" truncation by making the container narrower (add padding, reduce the width, ...), is what would happen to the "field" elements in the bottom row:

Screenshot 2024-09-19 at 10 38 14

We can't know for sure how many items would be in that row. And if we were to make the container narrower, there's a risk they would "wrap" to a new line, which would cause the whole row height to "jump".

Personally, I think that the best long-term solution is to re-design the list view and give the action buttons a fixed place (ie. always visible), which would greatly simplify UX and code. (@WordPress/gutenberg-design )

If we need a short-term solution, we'd need to stick with overlapping the actions on top of the content (basically what we do at the moment). The only improvement that we could make (and that would fix this specific issue) is to apply whatever background color is required to the list wrapper, and then use background-color: inherit to the action items wrapper.


Separately, the code in the list view could do with some polishing:

jameskoster commented 1 month ago

Personally, I think that the best long-term solution is to re-design the list view and give the action buttons a fixed place (ie. always visible), which would greatly simplify UX and code

The problem is permanently visible icons add a lot of noise to the UI.

The only improvement that we could make (and that would fix this specific issue) is to apply whatever background color is required to the list wrapper, and then use background-color: inherit to the action items wrapper.

This wouldn't fix the shadow/mask/truncation effect though, would it? 🤔

I don't love it, but an alternative short-term option could be to go back to the solid background color. Then the shadow can utilise the theme color and work regardless:

Screenshot 2024-09-19 at 16 36 53 Screenshot 2024-09-19 at 16 38 50

We can't know for sure how many items would be in that row

This is already the case since users can figure field visibility. Currently they wrap:

Screenshot 2024-09-19 at 16 40 26
ciampo commented 1 month ago

This wouldn't fix the shadow/mask/truncation effect though, would it? 🤔

It kind of would in the way it does currently — just by applying the same background color as the item (via background-color: inherit), so make sure that the colors are always in sync, whatever theme is applied. So, not a real truncation, but more of a UI overlap, which hides the content under it.

This is already the case since users can figure field visibility. Currently they wrap:

Yup! My point is that, if we want "real" truncation by making the item content narrower, that will potentially push the items on more rows, causing the height of the list item to increase. Applying truncation to that part of the UI isn't easy since we're not dealing with simple text either.

jameskoster commented 1 month ago

So, not a real truncation, but more of a UI overlap, which hides the content under it.

I don't think this would look very good 😬

Edit: I suppose something like this might work:

https://github.com/user-attachments/assets/40ad6f5e-22a1-4fb1-a370-11182e958a29

Yup! My point is that, if we want "real" truncation by making the item content narrower, that will potentially push the items on more rows, causing the height of the list item to increase.

Oh, yes it would be good to avoid that. In fact that's one of the reasons we swapped to the current implementation; the actions 'column' in the row was causing the fields to wrap and leave a lot of empty space on the right-hand side of the row.


Another short-term option would be to keep the hard-coded value, but generate it from the theme color variable using a function to lighten it accordingly (if that's possible). This would fix the color mis-match when using an admin theme other than Modern.

stokesman commented 1 month ago

Oh, yes it would be good to avoid that. In fact that's one of the reasons we swapped to the current implementation; the actions 'column' in the row was causing the fields to wrap and leave a lot of empty space on the right-hand side of the row.

This is true, but the context back then was that the actions were vertically centered. Now they are vertically aligned to the first row so they don’t have to push any other rows, just the first/title.

As such, it appears that #65376 is ticking all the boxes. If I'm missing something I’d appreciate being made aware.