Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

File block: Try refreshing styles #39118

Closed
wants to merge 4 commits into from
Closed

Conversation

jasmussen
Copy link
Contributor

Description

The file block default visuals are a bit out of date:

before

Although basics can be styled using theme.json, it's not very dark mode or theme aware out of the box. There are also missing focus styles and some baked in very opinionated styles we arguably no longer need. This PR does a few things:

  • It simplifies settings in the inspector
  • It simplifies and reduces the CSS a great deal, relying on inheritance.
  • It adds a new default style that is less specific, easier to override, and inherits more from the theme.
  • It fixes the focus style issue, and should be dark theme aware due to color inheritance.

After:

after

After in TT2:

tt2

The new style should also make it vastly simpler to bring various block supports, such as border, radius, font and more to the block.

Although this fixes and tweaks a few things, it does change a style that has been default for a long time. I'd love your thoughts on the impact of this. I personally think it's worth it, given the benefits it brings, and how simpler it is to style.

Testing Instructions

Please test the file block with and without a separate download button, with and without a PDF preview (see also #30857), with the various alignments available, with a few themes, and on mobile.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).
  • I've updated related schemas if appropriate.

@jasmussen jasmussen added [Type] Enhancement A suggestion for improvement. Needs Design Feedback Needs general design feedback. [Block] File Affects the File Block labels Feb 28, 2022
@jasmussen jasmussen requested a review from ajitbohra as a code owner February 28, 2022 09:28
@jasmussen jasmussen self-assigned this Feb 28, 2022
@github-actions
Copy link

github-actions bot commented Feb 28, 2022

Size Change: +641 B (0%)

Total Size: 1.15 MB

Filename Size Change
build/block-editor/index.min.js 143 kB -45 B (0%)
build/block-library/blocks/file/editor-rtl.css 282 B -18 B (-6%)
build/block-library/blocks/file/editor.css 283 B -17 B (-6%)
build/block-library/blocks/file/style-rtl.css 243 B -12 B (-5%)
build/block-library/blocks/file/style.css 244 B -11 B (-4%)
build/block-library/editor-rtl.css 9.89 kB -4 B (0%)
build/block-library/editor.css 9.89 kB -4 B (0%)
build/block-library/index.min.js 167 kB +28 B (0%)
build/block-library/style-rtl.css 11.3 kB -42 B (0%)
build/block-library/style.css 11.3 kB -39 B (0%)
build/components/index.min.js 215 kB +68 B (0%)
build/components/style-rtl.css 15.6 kB +31 B (0%)
build/components/style.css 15.6 kB +32 B (0%)
build/data/index.min.js 7.57 kB -87 B (-1%)
build/edit-post/index.min.js 29.8 kB -124 B (0%)
build/edit-post/style-rtl.css 7.14 kB -43 B (-1%)
build/edit-post/style.css 7.13 kB -43 B (-1%)
build/edit-site/index.min.js 42.1 kB -20 B (0%)
build/edit-site/style-rtl.css 7.23 kB +5 B (0%)
build/edit-site/style.css 7.22 kB +5 B (0%)
build/element/index.min.js 4.29 kB +971 B (+29%) 🚨
build/nux/style-rtl.css 751 B +4 B (+1%)
build/nux/style.css 749 B +6 B (+1%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/admin-manifest/index.min.js 1.24 kB
build/annotations/index.min.js 2.77 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 487 B
build/block-directory/index.min.js 6.49 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 14.8 kB
build/block-editor/style.css 14.8 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 445 B
build/block-library/blocks/button/editor.css 445 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 103 B
build/block-library/blocks/code/style.css 103 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.56 kB
build/block-library/blocks/cover/style.css 1.56 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 518 B
build/block-library/blocks/image/style.css 523 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 375 B
build/block-library/blocks/navigation/editor-rtl.css 2.01 kB
build/block-library/blocks/navigation/editor.css 2.02 kB
build/block-library/blocks/navigation/style-rtl.css 1.89 kB
build/block-library/blocks/navigation/style.css 1.88 kB
build/block-library/blocks/navigation/view.min.js 2.85 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 363 B
build/block-library/blocks/page-list/editor.css 363 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 389 B
build/block-library/blocks/pullquote/style.css 388 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 201 B
build/block-library/blocks/quote/style.css 201 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 233 B
build/block-library/blocks/separator/style.css 233 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 226 B
build/block-library/blocks/tag-cloud/style.css 227 B
build/block-library/blocks/template-part/editor-rtl.css 235 B
build/block-library/blocks/template-part/editor.css 235 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 934 B
build/block-library/common.css 932 B
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 665 B
build/block-library/theme.css 670 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 46.4 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.9 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.39 kB
build/customize-widgets/style.css 1.39 kB
build/data-controls/index.min.js 663 B
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.53 kB
build/edit-navigation/index.min.js 16.2 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-widgets/index.min.js 16.5 kB
build/edit-widgets/style-rtl.css 4.12 kB
build/edit-widgets/style.css 4.13 kB
build/editor/index.min.js 38.5 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 6.62 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.83 kB
build/keycodes/index.min.js 1.41 kB
build/list-reusable-blocks/index.min.js 1.75 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.94 kB
build/notices/index.min.js 957 B
build/nux/index.min.js 2.12 kB
build/plugins/index.min.js 1.98 kB
build/preferences/index.min.js 1.2 kB
build/primitives/index.min.js 949 B
build/priority-queue/index.min.js 611 B
build/react-i18n/index.min.js 704 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.24 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11.1 kB
build/server-side-render/index.min.js 1.61 kB
build/shortcode/index.min.js 1.52 kB
build/token-list/index.min.js 668 B
build/url/index.min.js 1.94 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.18 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.07 kB

compressed-size-action

Copy link
Contributor

@ntsekouras ntsekouras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for exploring this Joen!

While this looks good, it will affect all existing File blocks. Using flex sounds good, but adding a border in front end where it didn't exist seems a rather big opinionated change to me. Do you think it will still be an improvement without the border?

packages/block-library/src/file/inspector.js Outdated Show resolved Hide resolved
@jasmussen
Copy link
Contributor Author

Do you think it will still be an improvement without the border?

I'm not sure, no, I think it needs to be a "card" of sorts lest the change to have link left and download button on the right just spaces them apart.

Perhaps the PR needs to be combined with adding border and background support?


// The file block already has a border, so don't show the extra border of the placceholder.
.components-placeholder.components-placeholder {
box-shadow: none;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose if we do add border support, you could set the border to zero which might be weird in the placeholder state 🤔

Then again, it seems like the placeholder state itself could do with a great deal of iteration to be more minimal — almost just a small dashed-line dropzone of the same size as the resulting block? Probably best to explore separately.

@scruffian
Copy link
Contributor

This is how it looks in Livro when I remove the file block CSS from the theme:
Screenshot 2022-03-11 at 12 08 29

This avoids us needing to style the button, although with those styles there it still looks fine:

Screenshot 2022-03-11 at 12 09 35

I think we should move forward with this approach but I'm curious what @kjellr and @beafialho think...

@@ -29,16 +23,27 @@
left: 0;
}

// This is an extra container present only in the editor view.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still need to have different markup in the editor?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably not. The block feels somewhat oldish. Feel free to commit to the PR if you like!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be better as a follow up!

@beafialho
Copy link

I think we should move forward with this approach but I'm curious what @kjellr and @beafialho think...

I think these options look good. @scruffian just to understand why the screenshots are different, is the first one the default and the one below styled?

@scruffian
Copy link
Contributor

@scruffian just to understand why the screenshots are different, is the first one the default and the one below styled?

The top one is what it should look like without any custom CSS. The bottom one is what it looks like with the custom CSS that we have in place to "fix" the old block. I think we should remove that CSS but until we do so it doesn't look broken anyway :)

@jasmussen
Copy link
Contributor Author

A bit of context on the "Button" style differences: the old block was designed as if the Download link looked like the Button block. But it wasn't a button, and it would be styled differently.

This PR rethinks the role of the download button to be just an explicit separate link, where the whole "card" (hence the border) is the file. It's a bit of an opinionated change, thus the trickiness in landing this as is. Thank you all for looking!

@beafialho
Copy link

I think we should remove that CSS but until we do so it doesn't look broken anyway :)

I agree 👍

@scruffian
Copy link
Contributor

The remaining concern here is the impact that this will have on existing blocks. Do you think we need a way to mitigate this and ensure this change only applies to new blocks?

@jasmussen
Copy link
Contributor Author

Do you think we need a way to mitigate this and ensure this change only applies to new blocks?

It's an excellent question.

On the one hand, it's a big enough visual change to consider it. On the other hand, the older design was lacking in so many ways there's an argument to be made this falls in the category of a bugfix.

If we were able to find some existing content (theme plus use of the block) in the wild, see how it would be affected by this, it might help inform a decision.

@scruffian
Copy link
Contributor

scruffian commented Mar 14, 2022

Here are some examples across some popular themes:

Intergalactic 2
Before
Screenshot 2022-03-14 at 15 19 14
After
Screenshot 2022-03-14 at 15 20 10

Canard
Before
Screenshot 2022-03-14 at 15 18 45
After
Screenshot 2022-03-14 at 15 17 52

Hever
Before
Screenshot 2022-03-14 at 15 21 24
After
Screenshot 2022-03-14 at 15 22 24

Twenty Twenty One
Before
Screenshot 2022-03-14 at 15 21 03
After
Screenshot 2022-03-14 at 15 20 31

I think the 2 main things are

  1. The button is now on the right - in most cases I think this will be preferable.
  2. The block has a border - I think some users might find this change surprising and not always want it...

Curious what @kjellr thinks...

@jasmussen
Copy link
Contributor Author

The button is now on the right - in most cases I think this will be preferable.
The block has a border - I think some users might find this change surprising and not always want it...

Yes, that's a good summary.

The inspiration for both of these, is this design:
Screenshot 2022-02-10 at 09 38 39

The border and the background makes this feel like a file. Filename on the left, download button on the right, a single unit. We can't adopt that design wholesale, at least yet, the main challenge being finding colors that are agnostic across themes and working in dark contexts (hence the liberal use of currentColor).

Given that's the original motivation, are there ways to move towards that? Is this PR a good step towards it? Given all the testing (thank you!) I personally feel more confident that this is a nice iteration of the block, and that next steps would be to add border and background controls to the block.

Copy link
Contributor

@scruffian scruffian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, I think this is a good iteration. I'd feel more comfortable to merge with a review from @kjellr though!

@kjellr
Copy link
Contributor

kjellr commented Mar 15, 2022

I think the design here could use a little bit of iteration. I like the reference, but I think the outline we're using in the PR feels a bit bland? I know we're aiming to keep it un-opinionated, but it currently looks like something that a theme would be required to style in order to make it feel like a considered part of the UI.

I think it would be worthwhile to explore some slightly more opinionated versions of the block. Some potential ideas:

  • What if we did add an "attachment" icon next to the filename? Yes, the icon may not match with every theme, but themes would be free to change it if they needed to.
  • Could we combine this so that the filename is inside of the button?
  • What if the background of this area was currentColor at a very low opacity? (Might be technically tricky, but maybe we could achieve this by using a SVG background?)

@jasmussen
Copy link
Contributor Author

Excellent thoughts, I echo them, and in fact I explored a few of them as part of the PR.

What ultimately made me pause was for the same reason Ben mentioned, it's been in a bad state for so long, that even tiny changes might make ripples, and I was hoping to take it in small steps. That said, it might be worth having more of a "vision" mockup for where this could go, rather than go by a mental image mainly.

What if the background of this area was currentColor at a very low opacity? (Might be technically tricky, but maybe we could achieve this by using a SVG background?)

I like this idea a fair bit! Can you clarify what you mean by an SVG background, though?

Ideally we find a way to add a currentColor background that can then trivially be changed using theme.json and background tools, such as this:

			"core/file": {
				"color": {
					"background": "var(--wp--preset--color--primary)",
					"text": "var(--wp--preset--color--background)"
				},
			},

The problem with currentColor is (barring any SVG tricks you have in your sleeve), it has to sit in an abs-positioned pseudo element in order to function, right? I wonder if we can use __experimentalSelector to target pseudo elements? 🤔

@kjellr
Copy link
Contributor

kjellr commented Mar 16, 2022

The problem with currentColor is (barring any SVG tricks you have in your sleeve), it has to sit in an abs-positioned pseudo element in order to function, right? I wonder if we can use __experimentalSelector to target pseudo elements?

I'd been hoping that SVG would let you use fill-opacity along with currentColor, but I just tried it out and unfortunately it doesn't. 😭 I don't think the absolute positioning hack is all that bad for now. Especially if we can hook it up to editor controls.

https://codepen.io/kjellr/pen/LYepWPP

@jasmussen
Copy link
Contributor Author

jasmussen commented Mar 17, 2022

I like a challenge. I'm going to marinate on how we can add a semi opaque currentcolor somehow, and see if I can figure something out. I'd love to avoid a pseudo element if possible!

@jasmussen
Copy link
Contributor Author

I tried a number of things, including backdrop-filter, and filter/opacity, but nothing that worked. The closest I got was an inner box-shadow set to current color, where the blur applied did actually add some opacity. But of course it appeared as a halo inside.

So I'm not sure how best to proceed here. It may need a design re-think?

@kjellr
Copy link
Contributor

kjellr commented Mar 21, 2022

Yeah, maybe we should take a step back, mock up a few options for what we want, and then figure out which of them we can build.

@jasmussen
Copy link
Contributor Author

Oh, one idea that inspires a question: can we make a new default style variation, but keep existing content as style variation two? Then we could potentially make the new default more opinionated, but keep the old one around.

@kjellr
Copy link
Contributor

kjellr commented Mar 28, 2022

I think that sounds reasonable. 👍

@jasmussen
Copy link
Contributor Author

Alright, I took a look at this one today, and as it turns out, there is a path forward as outlined above using block styles. Let's say we created "Default" and "Plain" to match Quote names; default would be this new bordered version, and would attach to .is-style-default. The trick could then be to make the existing styles attach to both .is-style-plain, and :not(.is-style-default). That way, any existing content would remain as is, since the is-style-default class only gets added for new file blocks, or existing file blocks that get edited/saved.

Cool!

However, this recent comments on block styles reminded me that we mean for most block styles to be absorbed by theme.json and design tools. I.e. instead of having a is-style-default for the classic Quote with a border on the left, that block would actually come with a border-left applied using the Border control.

Would style variations set CSS classes in that case? My instinct is no, but I'd love to hear your insights if you have any, CC: @scruffian. In the mean time, I'm going to let this one sit while I extract some of the safe changes to a separate PR.

@scruffian
Copy link
Contributor

Maybe we should wait to see what happens with the move of block styles to theme.json...

@jasmussen
Copy link
Contributor Author

Yep, that's my instinct too. I'm going to close this one for now, and we'll revisit! Thanks for all the good thoughts shared.

@jasmussen jasmussen closed this Apr 12, 2022
@scruffian scruffian deleted the try/refresh-file-style branch April 12, 2022 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] File Affects the File Block Needs Design Feedback Needs general design feedback. [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants