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

Styles Screen: Add link to global styles revisions #51149

Merged

Conversation

andrewserong
Copy link
Contributor

What?

Fixes #50429

Add a revisions button to the Styles screen in the site editor's browse mode. Clicking the button exits browse mode, and opens up the site editor proper, with the Revisions screen open.

Why?

As mentioned in #50429, it's helpful to provide quick access to the revisions for global styles.

How?

  • Add a button to the footer area for the global styles screen in browse mode, displaying the last modified date of the latest revision, the human time, and a revisions icon
  • If there are no revisions, or if the revisions haven't loaded, don't display a button at all
  • Clicking the button switches to the edit mode for the canvas, and opens the global styles revisions container
  • Because we can't update navigation for the global styles sidebar within the editor from outside its navigation provider, add a useEffect so that switching to the global styles revisions editor canvas container causes the path to be updated to navigate to the revisions screen. This follows similar behaviour introduced in Global Styles: Link to the block type panel when selecting a block with Styles open #49350 by @ntsekouras for linking to the block type panel. I tried a few different approaches, and this seemed the simplest, but happy for any feedback if folks think there are any issues with it!

Testing Instructions

  1. In a blocks-based theme with global styles revisions, open up the site editor and navigate to Styles in browse mode
  2. Notice that there should now be a button in the footer area beneath the style variations for selecting revisions
  3. Click the button, and the Revisions view in the site editor should open up
  4. Click the W icon to go back to the Styles screen
  5. Click the editor canvas, and it should open up, but the Revisions screen should not be open
  6. Double-check that opening/closing the Revisions screen otherwise works as before

Questions for the reviewer

  • The button design doesn't quite match Details view → Styles #50429 — I tried to keep things simple and re-use the footer area of the screen. Please let me know if the button styling should be tweaked. For example, the text elements are spaced via space-between but I wasn't sure if more specific spacing was required.
  • The text says Last modified irrespective of the saved status of the current revision — so if changes have been made but not saved, the text is the same. Is this okay? We already have 1 unsaved change next to the Save button when there are unsaved changes, so I thought it could be redundant to swap out Last modified for unsaved 🤔

Testing Instructions for Keyboard

Check that the button on the Styles screen can be tabbed to. Is the label Revisions enough for this button?

Screenshots or screencast

The Styles screen — note the addition of the Last modified button / row at the bottom left:

image

2023-06-01.14.04.37.mp4

@andrewserong andrewserong mentioned this pull request Jun 1, 2023
3 tasks
@andrewserong andrewserong self-assigned this Jun 1, 2023
@andrewserong andrewserong added Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Type] Enhancement A suggestion for improvement. labels Jun 1, 2023
@github-actions
Copy link

github-actions bot commented Jun 1, 2023

Size Change: +1.02 kB (0%)

Total Size: 1.4 MB

Filename Size Change
build/edit-site/index.min.js 67.7 kB +389 B (+1%)
build/edit-site/style-rtl.css 11.3 kB +315 B (+3%)
build/edit-site/style.css 11.3 kB +316 B (+3%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.69 kB
build/api-fetch/index.min.js 2.28 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 451 B
build/block-directory/index.min.js 7.05 kB
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/content-rtl.css 4.22 kB
build/block-editor/content.css 4.22 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
build/block-editor/index.min.js 195 kB
build/block-editor/style-rtl.css 14.9 kB
build/block-editor/style.css 14.9 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 90 B
build/block-library/blocks/archives/style.css 90 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 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 126 B
build/block-library/blocks/audio/theme.css 126 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 91 B
build/block-library/blocks/avatar/style.css 91 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 584 B
build/block-library/blocks/button/editor.css 582 B
build/block-library/blocks/button/style-rtl.css 624 B
build/block-library/blocks/button/style.css 623 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 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 409 B
build/block-library/blocks/columns/style.css 409 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-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 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-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.61 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 159 B
build/block-library/blocks/details/style.css 159 B
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 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/interactivity.min.js 395 B
build/block-library/blocks/file/style-rtl.css 269 B
build/block-library/blocks/file/style.css 270 B
build/block-library/blocks/file/view.min.js 375 B
build/block-library/blocks/freeform/editor-rtl.css 2.58 kB
build/block-library/blocks/freeform/editor.css 2.58 kB
build/block-library/blocks/gallery/editor-rtl.css 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.53 kB
build/block-library/blocks/gallery/style.css 1.53 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 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 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 834 B
build/block-library/blocks/image/editor.css 833 B
build/block-library/blocks/image/interactivity.min.js 783 B
build/block-library/blocks/image/style-rtl.css 1.07 kB
build/block-library/blocks/image/style.css 1.07 kB
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 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 507 B
build/block-library/blocks/media-text/style.css 505 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 712 B
build/block-library/blocks/navigation-link/editor.css 711 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.35 kB
build/block-library/blocks/navigation/editor.css 2.36 kB
build/block-library/blocks/navigation/interactivity.min.js 976 B
build/block-library/blocks/navigation/style-rtl.css 2.21 kB
build/block-library/blocks/navigation/style.css 2.2 kB
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 438 B
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 401 B
build/block-library/blocks/page-list/editor.css 401 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 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 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/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 319 B
build/block-library/blocks/post-featured-image/style.css 319 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/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 314 B
build/block-library/blocks/post-template/style.css 314 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 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 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 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 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 450 B
build/block-library/blocks/query/editor.css 449 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 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 149 B
build/block-library/blocks/rss/editor.css 149 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 178 B
build/block-library/blocks/search/editor.css 178 B
build/block-library/blocks/search/style-rtl.css 587 B
build/block-library/blocks/search/style.css 584 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 528 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 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 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 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.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 348 B
build/block-library/blocks/spacer/editor.css 348 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 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 645 B
build/block-library/blocks/table/style.css 644 B
build/block-library/blocks/table/theme-rtl.css 146 B
build/block-library/blocks/table/theme.css 146 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 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/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 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 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 174 B
build/block-library/blocks/video/style.css 174 B
build/block-library/blocks/video/theme-rtl.css 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12.2 kB
build/block-library/editor.css 12.1 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 201 kB
build/block-library/interactivity/runtime.min.js 2.71 kB
build/block-library/interactivity/vendors.min.js 8.2 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 13.2 kB
build/block-library/style.css 13.2 kB
build/block-library/theme-rtl.css 686 B
build/block-library/theme.css 691 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 50.3 kB
build/commands/index.min.js 14.9 kB
build/commands/style-rtl.css 827 B
build/commands/style.css 827 B
build/components/index.min.js 231 kB
build/components/style-rtl.css 11.8 kB
build/components/style.css 11.8 kB
build/compose/index.min.js 12.1 kB
build/core-commands/index.min.js 1.74 kB
build/core-data/index.min.js 15.7 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.38 kB
build/customize-widgets/style.css 1.38 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 8.23 kB
build/date/index.min.js 40.4 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.63 kB
build/edit-post/classic-rtl.css 544 B
build/edit-post/classic.css 545 B
build/edit-post/index.min.js 33.9 kB
build/edit-post/style-rtl.css 7.57 kB
build/edit-post/style.css 7.56 kB
build/edit-widgets/index.min.js 16.8 kB
build/edit-widgets/style-rtl.css 4.53 kB
build/edit-widgets/style.css 4.53 kB
build/editor/index.min.js 44.7 kB
build/editor/style-rtl.css 3.54 kB
build/editor/style.css 3.53 kB
build/element/index.min.js 4.8 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.57 kB
build/format-library/style-rtl.css 554 B
build/format-library/style.css 553 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.71 kB
build/keycodes/index.min.js 1.84 kB
build/list-reusable-blocks/index.min.js 2.13 kB
build/list-reusable-blocks/style-rtl.css 836 B
build/list-reusable-blocks/style.css 836 B
build/media-utils/index.min.js 2.9 kB
build/notices/index.min.js 948 B
build/plugins/index.min.js 1.84 kB
build/preferences-persistence/index.min.js 1.84 kB
build/preferences/index.min.js 1.24 kB
build/primitives/index.min.js 941 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 939 B
build/react-i18n/index.min.js 696 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.7 kB
build/reusable-blocks/index.min.js 2.21 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/rich-text/index.min.js 10.7 kB
build/router/index.min.js 1.77 kB
build/server-side-render/index.min.js 2.02 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 1.42 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.57 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 1.04 kB
build/warning/index.min.js 268 B
build/widgets/index.min.js 7.16 kB
build/widgets/style-rtl.css 1.15 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

Copy link
Member

@ramonjd ramonjd left a comment

Choose a reason for hiding this comment

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

This is working as described for me! Checked in Chrome, FF and Safari.

2023-06-01 15 26 09

Even redirects me to /revisions when I click while the site editor loading wheel is still displayed 😄

Just left a few questions, but it LGTM for now

@andrewserong
Copy link
Contributor Author

Just left a few questions, but it LGTM for now

Thanks for testing, @ramonjd! I was a little stumped with this one until figuring out the useEffect in the fake component to handle the redirect. Glad that it's working well in testing — sounds like the next steps will most likely be some design tweaks to make sure it's all looking correct 🙂

Copy link
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

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

Code LGTM! Just a minor question below.

Also, in testing I noticed that if there are unsaved changes, the revision timestamp doesn't seem to move on from "a few seconds ago", though I don't think that's related to these changes.

Are we waiting on design review? Happy to approve otherwise 😄

@jasmussen
Copy link
Contributor

Oh that's cool work. GIF showing the revisions button under Styles:

revisions

I would love @jameskoster (back next week) and @SaxonF feedback if either has time, as I know they've worked a lot on these pieces, and are a better canonical source for design feedback.

But from my angle, a few things:

Screenshot 2023-06-01 at 10 34 59

The revisions area should stick to the bottom closer to the save hub, even when there's scroll-space. Technically I don't know if it should be part of the save dock (Jay can probably speak better to this), but I suspect we'll want to surface buttons that look almost exactly like this one in a few other sections than just the Styles section, so there could be something to it.

Screenshot 2023-06-01 at 10 35 04

We can probably get a bit closer to Jay's design here:

The spacing is a bit tighter between borders, and there's no border above the revisions bar.

@jasmussen
Copy link
Contributor

Almost certainly separate, and related to conversations about modals and their initial focus management very probably, but this is a good example of why setting focus on the first interactive element inside isn't that useful:

Screenshot 2023-06-01 at 10 35 42

The close button gets way too much prominence when immediately focused like this, which isn't that useful since clicking it takes you here:

Screenshot 2023-06-01 at 10 35 48

Again, not blocking for this PR, but just an example of some of the modal conversations that I believe @ciampo has been looking into.

@ciampo
Copy link
Contributor

ciampo commented Jun 1, 2023

Again, not blocking for this PR, but just an example of some of the modal conversations that I believe @ciampo has been looking into.

Will keep it in mind when we'll start looking into refreshing the Modal component (right now, not as high of a priority as DropdownMenu and a few other components)

@andrewserong
Copy link
Contributor Author

Thanks for taking this for a spin @jasmussen!

The revisions area should stick to the bottom closer to the save hub, even when there's scroll-space. Technically I don't know if it should be part of the save dock (Jay can probably speak better to this), but I suspect we'll want to surface buttons that look almost exactly like this one in a few other sections than just the Styles section, so there could be something to it.

Good question. For implementation in this PR, I went with adding the button to the footer area of the SidebarNavigationScreen, which was added in #50767 by @SaxonF and @ramonjd for the page detail screen. I imagine whichever direction we go with here, we might want consistency, since they both display Last modified text? Here's how the page detail screen currently looks:

image

For this PR, would it be worth us merging this in as-is and follow up separately with how we want the footer area to be displayed, or would folks prefer us to fix up the styling of the footer area in this PR? Since the design shows the button being directly above the save dock's top border (SaveHub component), I imagine the fix would mostly be about adjusting the styling of the SidebarNavigationScreen component. Happy to go either way 🙂

@andrewserong andrewserong requested a review from SaxonF June 2, 2023 02:50
@SaxonF
Copy link
Contributor

SaxonF commented Jun 2, 2023

I went with adding the button to the footer area of the SidebarNavigationScreen

👍 This is the right approach and was the reason for adding the footer prop.

would folks prefer us to fix up the styling of the footer area in this PR?

It is a bit of a pain because the structure of the sidebar is a little messy but I think it's worth fixing in this PR.

@andrewserong
Copy link
Contributor Author

It is a bit of a pain because the structure of the sidebar is a little messy but I think it's worth fixing in this PR.

Thanks for confirming! I'm happy to work on it in this PR 👍

So it sounds like we want to:

  • Reduce the spacing within the footer area
  • Stick the footer to the bottom of the sidebar in all cases, not just when there's enough content to push it right to the bottom
  • Remove the top grey line?

I can chip away at that, so we've got something closer to Jay's design.

@jasmussen
Copy link
Contributor

Reduce the spacing within the footer area
Stick the footer to the bottom of the sidebar in all cases, not just when there's enough content to push it right to the bottom
Remove the top grey line?

That sounds right to me, but I'll let Saxon correct me if I'm off on this.

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.

Code wise this looks good, thanks @andrewserong !

label={ __( 'Revisions' ) }
onClick={ onClickRevisions }
>
<HStack
Copy link
Contributor

@ntsekouras ntsekouras Jun 2, 2023

Choose a reason for hiding this comment

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

Technically we need phrasing content elements inside button, so these should be spans. Also there are some existing divs inside SidebarNavigationItem - not introduced here.

@andrewserong
Copy link
Contributor Author

andrewserong commented Jun 5, 2023

Thanks folks! Update: I think I've managed to get the sticky footer area of the navigation screen to work correctly. I've pushed an update in cee7081. The changes involved:

  • In the sidebar, set the parent navigation screen (where the scrollbar exists) to be flex with column flex direction and height of 100% — this allows us to grow the child content area to fill the available space, while also sticking the footer area to the bottom.
  • Set the main area for the SidebarNavigationScreen to flex-grow: 1 so that it expands to fill the available area.
  • Move the footer area to be a sibling of that main area so that it can always stick to the bottom.
  • Add a new edit-site-sidebar-navigation-screen__footer className for the footer area, with more limited styling (basically just the background color and padding)
  • Update the page details screen so that the footer details are correctly aligned

Here's how it's looking now, along with the sticky footer behaviour:

Styles Screen

2023-06-05.16.38.31.mp4

Page Details

2023-06-05.16.39.12.mp4

I think this is ready for another round of design feedback — is this closer to the intended result? And do the changes here cause any other issues across any of the screens?

@andrewserong andrewserong force-pushed the add/revisions-button-to-styles-screen-in-browse-mode branch from f126caf to cee7081 Compare June 5, 2023 06:55
@github-actions
Copy link

github-actions bot commented Jun 5, 2023

Flaky tests detected in e35f61b.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/5184113576
📝 Reported issues:

@jameskoster
Copy link
Contributor

Stickiness is working well 👍

The dimensions are technically correct, and match other menu items. It looks a little off due to the left/right margins not aligning nicely with the save dock stroke, but that's a separate issue.

The only (tiny) detail missing is the rounded corners.

@andrewserong
Copy link
Contributor Author

The dimensions are technically correct, and match other menu items. It looks a little off due to the left/right margins not aligning nicely with the save dock stroke, but that's a separate issue.

Thanks @jameskoster, I've updated the dimensions slightly so that it lines up with the save dock stroke — I think this should be the right position now, but we'll have a better idea of where it all sits once the update to the SaveHub lands in #50567 where the stroke will then be full width.

I've also added in the border radius using $radius-block-ui, so here's how the button is now looking:

image

This PR should be ready for a final review I think now. Unless there are any blockers, I'd probably lean toward landing this PR in pretty close to its current shape now and looking at tweaks in follow-ups, since it looks like there are a few different styling things changing across multiple PRs. That said, happy to keep chipping away here if folks would prefer to wait for other PRs to land first 🙂

@@ -326,6 +344,7 @@ function GlobalStylesUI() {

<GlobalStylesActionMenu />
<GlobalStylesBlockLink />
<GlobalStylesRevisionLink />
Copy link
Member

Choose a reason for hiding this comment

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

I think we might need to feed some more context to this hook. It seems to prevent switching between revisions and the stylebook.

2023-06-06.10.59.50.mp4

My assumption is that editorCanvasContainerView === 'global-styles-revisions' is already true so the panel doesn't switch.

Maybe we need something like canvasMode === 'edit' or something?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh, good catch! I'll look into it, but yes, hopefully something like canvasMode === 'edit' might work.

Copy link
Contributor Author

@andrewserong andrewserong Jun 6, 2023

Choose a reason for hiding this comment

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

I think I've figured it out @ramonjd — it seems that the useEffect was firing correctly (only when the container is updated to global-styles-revisions), but that the Style Book button didn't appear to play nicely when the path was explicitly set to /revisions. That is to say, opening the Style Book doesn't update the path again. As a fix, I've updated this useEffect so that it also handles redirects for when the canvas container is updated to style-book, by redirecting to the root.

I believe this is needed because the style book button lives outside of the navigation provider for global styles, so it's probably good for consistency for us to handle the redirects in the one place.

I've updated in 51e26bc and 8ae9c7a — the latter ensures that we only redirect to the root path when we're on the revisions screen. I think the revisions screen is the only one where the style book won't work nicely, and this ensures that if someone is deeply nested within the global styles screens, opening the style book doesn't unexpectedly redirect back to root.

Let me know if you think this is an okay direction or if we should go in a different route... so to speak! 😄

Copy link
Member

Choose a reason for hiding this comment

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

Let me know if you think this is an okay direction or if we should go in a different route... so to speak!

I'm sure we can navigate towards a good solution :trollface:

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Zing! 🤣

Copy link
Member

@ramonjd ramonjd left a comment

Choose a reason for hiding this comment

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

Tested in Safari/Chrome/Firefox

Thanks for working on this and coming up with a nice footer solution!

If possible, it would be great to have a generic check for editorCanvasContainerView in GlobalStylesEditorCanvasContainerLink()... only if you think it matches the behavior you're after, otherwise LGTM.

// redirect to the revisions screen.
goTo( '/revisions' );
} else if (
editorCanvasContainerView === 'style-book' &&
Copy link
Member

Choose a reason for hiding this comment

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

Thanks for working this one out! I can now switch between views.

Do you think it would be okay to keep it generic, that is, if any container view is open? I'm wondering in case another container view is added down the road.

I tested and it appears to work for this situation.

Suggested change
editorCanvasContainerView === 'style-book' &&
!! editorCanvasContainerView &&

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good call! Yes, keeping it generic will help if and when we add any other container views as this logic should redirect away from the revisions screen if the container view is anything other than revisions and we're on the revisions screen 👍

That appears to work well to me, too, so I've committed in e35f61b with a slightly updated comment.

@andrewserong
Copy link
Contributor Author

If possible, it would be great to have a generic check for editorCanvasContainerView in GlobalStylesEditorCanvasContainerLink()... only if you think it matches the behavior you're after, otherwise LGTM.

Looks good to me, thanks for the suggestion and for re-testing! I've committed that. Once the tests pass, I'll merge this in and happy to continue with tweaks in follow-ups.

@andrewserong andrewserong merged commit a1d941e into trunk Jun 6, 2023
@andrewserong andrewserong deleted the add/revisions-button-to-styles-screen-in-browse-mode branch June 6, 2023 04:06
@github-actions github-actions bot added this to the Gutenberg 16.0 milestone Jun 6, 2023
@jameskoster
Copy link
Contributor

I've updated the dimensions slightly so that it lines up with the save dock stroke

Apologies, I should have been clearer in my last comment. The revisions button had the correct dimensions, it was the stroke on the save dock that we needed to update 🙈

No worries, I'll try to open a PR to address this.

@andrewserong
Copy link
Contributor Author

The revisions button had the correct dimensions, it was the stroke on the save dock that we needed to update 🙈 No worries, I'll try to open a PR to address this.

Thanks for opening up the follow-up PR! I left a comment on it, but the additional padding was added to ensure that the button lines up correctly with the save dock's new save button dimensions. It sounds like we might need to find a balance between aligning with other elements within the content area, and aligning with the save button 🤔

@femkreations femkreations added the Needs User Documentation Needs new user documentation label Jun 14, 2023
sethrubenstein pushed a commit to pewresearch/gutenberg that referenced this pull request Jul 13, 2023
* Styles Screen: Add link to global styles revisions

* Add button label

* Update packages/edit-site/src/components/global-styles/ui.js

Co-authored-by: Ramon <[email protected]>

* Small code quality improvements

* Try sticking the navigation screen footer to the bottom of the screen at all times

* Add as span to the HStack

* Update border radius and left padding so that the button lines up

* Remove classnames call

* Add redirect for style book, too

* Only redirect to root when opening the style book on the revisions screen

* Use truthy check for editor canvas container when redirecting from the revisions screen.

Co-authored-by: ramon <[email protected]>

---------

Co-authored-by: Ramon <[email protected]>
Co-authored-by: ramon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json Needs User Documentation Needs new user documentation [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Details view → Styles
9 participants