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

Refactor navigation block to use generic classnames. #34171

Merged
merged 2 commits into from
Aug 26, 2021

Conversation

jasmussen
Copy link
Contributor

Description

This is a work in progress and a followup to #33918. The goal of this PR is to simplify the navigation block CSS to target menu items in a generic way, so as to avoid drift when new menu items are added.

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).

@jasmussen jasmussen added the [Status] In Progress Tracking issues with work in progress label Aug 19, 2021
@jasmussen jasmussen self-assigned this Aug 19, 2021
@github-actions
Copy link

github-actions bot commented Aug 19, 2021

Size Change: -1.01 kB (0%)

Total Size: 1.04 MB

Filename Size Change
build/block-library/blocks/navigation-link/editor-rtl.css 470 B -4 B (-1%)
build/block-library/blocks/navigation-link/editor.css 470 B -4 B (-1%)
build/block-library/blocks/navigation/editor-rtl.css 1.7 kB +8 B (0%)
build/block-library/blocks/navigation/editor.css 1.7 kB +6 B (0%)
build/block-library/blocks/navigation/style-rtl.css 1.44 kB -238 B (-14%) 👏
build/block-library/blocks/navigation/style.css 1.44 kB -236 B (-14%) 👏
build/block-library/blocks/page-list/style-rtl.css 241 B -1 B (0%)
build/block-library/blocks/page-list/style.css 241 B -1 B (0%)
build/block-library/editor-rtl.css 9.95 kB -4 B (0%)
build/block-library/editor.css 9.93 kB -3 B (0%)
build/block-library/style-rtl.css 10.7 kB -262 B (-2%)
build/block-library/style.css 10.7 kB -266 B (-2%)
build/edit-navigation/style-rtl.css 3.15 kB -2 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.19 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/index.min.js 118 kB
build/block-editor/style-rtl.css 13.8 kB
build/block-editor/style.css 13.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 58 B
build/block-library/blocks/audio/editor.css 58 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 474 B
build/block-library/blocks/button/editor.css 474 B
build/block-library/blocks/button/style-rtl.css 605 B
build/block-library/blocks/button/style.css 604 B
build/block-library/blocks/buttons/editor-rtl.css 315 B
build/block-library/blocks/buttons/editor.css 315 B
build/block-library/blocks/buttons/style-rtl.css 370 B
build/block-library/blocks/buttons/style.css 370 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 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 194 B
build/block-library/blocks/columns/editor.css 193 B
build/block-library/blocks/columns/style-rtl.css 474 B
build/block-library/blocks/columns/style.css 475 B
build/block-library/blocks/cover/editor-rtl.css 666 B
build/block-library/blocks/cover/editor.css 670 B
build/block-library/blocks/cover/style-rtl.css 1.23 kB
build/block-library/blocks/cover/style.css 1.23 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 400 B
build/block-library/blocks/embed/style.css 400 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/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 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 879 B
build/block-library/blocks/gallery/editor.css 876 B
build/block-library/blocks/gallery/style-rtl.css 1.7 kB
build/block-library/blocks/gallery/style.css 1.7 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 70 B
build/block-library/blocks/group/theme.css 70 B
build/block-library/blocks/heading/editor-rtl.css 152 B
build/block-library/blocks/heading/editor.css 152 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 B
build/block-library/blocks/html/editor-rtl.css 283 B
build/block-library/blocks/html/editor.css 284 B
build/block-library/blocks/image/editor-rtl.css 728 B
build/block-library/blocks/image/editor.css 728 B
build/block-library/blocks/image/style-rtl.css 482 B
build/block-library/blocks/image/style.css 487 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 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 63 B
build/block-library/blocks/list/style.css 63 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 488 B
build/block-library/blocks/media-text/style.css 485 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/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation/view.min.js 2.52 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 310 B
build/block-library/blocks/page-list/editor.css 310 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 248 B
build/block-library/blocks/paragraph/style.css 248 B
build/block-library/blocks/post-author/editor-rtl.css 210 B
build/block-library/blocks/post-author/editor.css 210 B
build/block-library/blocks/post-author/style-rtl.css 182 B
build/block-library/blocks/post-author/style.css 181 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 B
build/block-library/blocks/post-content/editor-rtl.css 138 B
build/block-library/blocks/post-content/editor.css 138 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 398 B
build/block-library/blocks/post-featured-image/editor.css 398 B
build/block-library/blocks/post-featured-image/style-rtl.css 143 B
build/block-library/blocks/post-featured-image/style.css 143 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 378 B
build/block-library/blocks/post-template/style.css 379 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 60 B
build/block-library/blocks/post-title/style.css 60 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 361 B
build/block-library/blocks/pullquote/style.css 360 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 270 B
build/block-library/blocks/query-pagination/editor.css 262 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B
build/block-library/blocks/query-pagination/style.css 168 B
build/block-library/blocks/query-title/editor-rtl.css 85 B
build/block-library/blocks/query-title/editor.css 85 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 169 B
build/block-library/blocks/quote/style.css 169 B
build/block-library/blocks/quote/theme-rtl.css 220 B
build/block-library/blocks/quote/theme.css 222 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 374 B
build/block-library/blocks/search/style.css 375 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 250 B
build/block-library/blocks/separator/style.css 250 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 462 B
build/block-library/blocks/site-logo/editor.css 464 B
build/block-library/blocks/site-logo/style-rtl.css 153 B
build/block-library/blocks/site-logo/style.css 153 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 165 B
build/block-library/blocks/social-link/editor.css 165 B
build/block-library/blocks/social-links/editor-rtl.css 812 B
build/block-library/blocks/social-links/editor.css 811 B
build/block-library/blocks/social-links/style-rtl.css 1.33 kB
build/block-library/blocks/social-links/style.css 1.33 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 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 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 636 B
build/block-library/blocks/template-part/editor.css 635 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/editor-rtl.css 90 B
build/block-library/blocks/term-description/editor.css 90 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 1.29 kB
build/block-library/common.css 1.29 kB
build/block-library/index.min.js 150 kB
build/block-library/reset-rtl.css 527 B
build/block-library/reset.css 527 B
build/block-library/theme-rtl.css 658 B
build/block-library/theme.css 663 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 47 kB
build/components/index.min.js 209 kB
build/components/style-rtl.css 15.7 kB
build/components/style.css 15.8 kB
build/compose/index.min.js 10.2 kB
build/core-data/index.min.js 12.4 kB
build/customize-widgets/index.min.js 11.1 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.53 kB
build/edit-navigation/index.min.js 13.6 kB
build/edit-navigation/style.css 3.14 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 28.8 kB
build/edit-post/style-rtl.css 7.2 kB
build/edit-post/style.css 7.2 kB
build/edit-site/index.min.js 26.2 kB
build/edit-site/style-rtl.css 5.07 kB
build/edit-site/style.css 5.07 kB
build/edit-widgets/index.min.js 16 kB
build/edit-widgets/style-rtl.css 4.06 kB
build/edit-widgets/style.css 4.06 kB
build/editor/index.min.js 37.7 kB
build/editor/style-rtl.css 3.74 kB
build/editor/style.css 3.73 kB
build/element/index.min.js 3.17 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.36 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 669 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.59 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.49 kB
build/keycodes/index.min.js 1.25 kB
build/list-reusable-blocks/index.min.js 1.85 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.88 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.28 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.6 kB
build/server-side-render/index.min.js 1.32 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.72 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 6.27 kB
build/widgets/style-rtl.css 1.05 kB
build/widgets/style.css 1.05 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

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.

Looks good! Much nicer without all the extra classnames. I left a few minor comments, but this is already a huge improvement over the current state of things 😄

@@ -1,8 +1,12 @@
// Navigation block and menu item styles.
// This also styles navigation links inside the Page List block,
// as that block is meant to behave as menu items when leveraged.
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't this line also be removed?

.submenu-container, // This target items created by the Page List block.
.wp-block-navigation__container .wp-block-navigation-link__container {
.wp-block-navigation__container .wp-block-navigation__submenu-container {
Copy link
Contributor

Choose a reason for hiding this comment

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

We should be able to remove submenu-container here, and use just .wp-block-navigation__submenu-container to target all submenus. I'm not sure why the .wp-block-navigation__container was added in the first place; it's not needed to target only the submenus, because the submenu classname does that already, so it may have been added to increase specificity. But if we do need additional specificity, we can just duplicate .wp-block-navigation__submenu-container.

@jasmussen
Copy link
Contributor Author

Thanks so much for the review 👌 — I will address your feedback and return!

@jasmussen jasmussen force-pushed the update/navigation-generic-classes branch from afee40f to 01189e1 Compare August 24, 2021 08:32
@jasmussen jasmussen marked this pull request as ready for review August 24, 2021 09:08
@jasmussen jasmussen added [Block] Navigation Affects the Navigation Block and removed [Status] In Progress Tracking issues with work in progress labels Aug 24, 2021
@jasmussen
Copy link
Contributor Author

Thanks again for the review, I've addressed your points by implementing your suggestions one by one and it appears to be working really well all over. I'd still appreciate a good thorough review on this one, here's some example content:

<!-- wp:paragraph -->
<p>Horizontal nav</p>
<!-- /wp:paragraph -->

<!-- wp:navigation {"orientation":"horizontal"} -->
<!-- wp:navigation-link {"label":"Home","type":"page","id":11,"url":"http://localhost:8888/","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Journal","type":"page","id":13,"url":"http://localhost:8888/?page_id=13","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Contact","type":"page","id":15,"url":"http://localhost:8888/?page_id=15","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"About","type":"page","id":648,"url":"http://localhost:8888/?page_id=648","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Services","type":"page","id":656,"url":"http://localhost:8888/?page_id=656","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Properties","type":"page","id":657,"url":"http://localhost:8888/?page_id=657","kind":"post-type","isTopLevelLink":false} -->
<!-- wp:navigation-link {"label":"Test","type":"page","id":2976,"url":"http://localhost:8888/?page_id=2976","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Qualities","type":"page","id":658,"url":"http://localhost:8888/?page_id=658","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Contact","type":"page","id":3056,"url":"http://localhost:8888/?page_id=3056","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Directions","type":"page","id":6,"url":"http://localhost:8888/?page_id=6","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Make a donation","type":"page","id":3057,"url":"http://localhost:8888/?page_id=3057","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"About","type":"page","id":3055,"url":"http://localhost:8888/?page_id=3055","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"History","type":"page","id":45,"url":"http://localhost:8888/?page_id=45","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Faculty","type":"page","id":57,"url":"http://localhost:8888/?page_id=57","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Distinguished Alumni","type":"page","id":59,"url":"http://localhost:8888/?page_id=59","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Diversity and Inclusion","type":"page","id":61,"url":"http://localhost:8888/?page_id=61","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Leadership","type":"page","id":63,"url":"http://localhost:8888/?page_id=63","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Admissions","type":"page","id":3058,"url":"http://localhost:8888/?page_id=3058","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Career Paths","type":"page","id":65,"url":"http://localhost:8888/?page_id=65","kind":"post-type","isTopLevelLink":false} -->
<!-- wp:navigation-link {"label":"Technology","type":"page","id":67,"url":"http://localhost:8888/?page_id=67","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Business","type":"page","id":68,"url":"http://localhost:8888/?page_id=68","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Design","type":"page","id":3062,"url":"http://localhost:8888/?page_id=3062","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Scholarship \u0026#038; Financial Aid","type":"page","id":33,"url":"http://localhost:8888/?page_id=33","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Tuition","type":"page","id":31,"url":"http://localhost:8888/?page_id=31","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Programs","type":"page","id":12,"url":"http://localhost:8888/?page_id=12","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Undergraduate Admissions","type":"page","id":3059,"url":"http://localhost:8888/?page_id=3059","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Graduate Admissions","type":"page","id":3060,"url":"http://localhost:8888/?page_id=3060","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Student Life","type":"page","id":14,"url":"http://localhost:8888/?page_id=14","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Services","type":"page","id":39,"url":"http://localhost:8888/?page_id=39","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Athletics","type":"page","id":41,"url":"http://localhost:8888/?page_id=41","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Study Abroad Opportunities","type":"page","id":43,"url":"http://localhost:8888/?page_id=43","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"FAQs","type":"page","id":47,"url":"http://localhost:8888/?page_id=47","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Tutoring Services","type":"page","id":49,"url":"http://localhost:8888/?page_id=49","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Research","type":"page","id":16,"url":"http://localhost:8888/?page_id=16","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Awards \u0026#038; Honors","type":"page","id":51,"url":"http://localhost:8888/?page_id=51","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Undergraduate Research","type":"page","id":53,"url":"http://localhost:8888/?page_id=53","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Graduate Research","type":"page","id":55,"url":"http://localhost:8888/?page_id=55","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Partnerships","type":"page","id":35,"url":"http://localhost:8888/?page_id=35","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"News","type":"page","id":17,"url":"http://localhost:8888/?page_id=17","kind":"post-type","isTopLevelLink":true} /-->
<!-- /wp:navigation -->

<!-- wp:spacer -->
<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:paragraph -->
<p>Horizontal page list</p>
<!-- /wp:paragraph -->

<!-- wp:navigation {"orientation":"horizontal"} -->
<!-- wp:page-list {"isNavigationChild":true} /-->
<!-- /wp:navigation -->

<!-- wp:spacer -->
<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:paragraph -->
<p>Vertical page list</p>
<!-- /wp:paragraph -->

<!-- wp:navigation {"orientation":"vertical"} -->
<!-- wp:page-list {"isNavigationChild":true} /-->
<!-- /wp:navigation -->

<!-- wp:spacer -->
<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:paragraph -->
<p>Vertical nav</p>
<!-- /wp:paragraph -->

<!-- wp:navigation {"orientation":"vertical"} -->
<!-- wp:navigation-link {"label":"Home","type":"page","id":11,"url":"http://localhost:8888/","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Journal","type":"page","id":13,"url":"http://localhost:8888/?page_id=13","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Contact","type":"page","id":15,"url":"http://localhost:8888/?page_id=15","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"About","type":"page","id":648,"url":"http://localhost:8888/?page_id=648","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Services","type":"page","id":656,"url":"http://localhost:8888/?page_id=656","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Properties","type":"page","id":657,"url":"http://localhost:8888/?page_id=657","kind":"post-type","isTopLevelLink":false} -->
<!-- wp:navigation-link {"label":"Test","type":"page","id":2976,"url":"http://localhost:8888/?page_id=2976","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Qualities","type":"page","id":658,"url":"http://localhost:8888/?page_id=658","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"About","type":"page","id":3055,"url":"http://localhost:8888/?page_id=3055","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"History","type":"page","id":45,"url":"http://localhost:8888/?page_id=45","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Faculty","type":"page","id":57,"url":"http://localhost:8888/?page_id=57","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Distinguished Alumni","type":"page","id":59,"url":"http://localhost:8888/?page_id=59","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Diversity and Inclusion","type":"page","id":61,"url":"http://localhost:8888/?page_id=61","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Leadership","type":"page","id":63,"url":"http://localhost:8888/?page_id=63","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Contact","type":"page","id":3056,"url":"http://localhost:8888/?page_id=3056","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Directions","type":"page","id":6,"url":"http://localhost:8888/?page_id=6","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Make a donation","type":"page","id":3057,"url":"http://localhost:8888/?page_id=3057","kind":"post-type","isTopLevelLink":true} /-->

<!-- wp:navigation-link {"label":"Admissions","type":"page","id":3058,"url":"http://localhost:8888/?page_id=3058","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Career Paths","type":"page","id":65,"url":"http://localhost:8888/?page_id=65","kind":"post-type","isTopLevelLink":false} -->
<!-- wp:navigation-link {"label":"Technology","type":"page","id":67,"url":"http://localhost:8888/?page_id=67","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Business","type":"page","id":68,"url":"http://localhost:8888/?page_id=68","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Design","type":"page","id":3062,"url":"http://localhost:8888/?page_id=3062","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Scholarship \u0026#038; Financial Aid","type":"page","id":33,"url":"http://localhost:8888/?page_id=33","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Tuition","type":"page","id":31,"url":"http://localhost:8888/?page_id=31","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Programs","type":"page","id":12,"url":"http://localhost:8888/?page_id=12","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Undergraduate Admissions","type":"page","id":3059,"url":"http://localhost:8888/?page_id=3059","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Graduate Admissions","type":"page","id":3060,"url":"http://localhost:8888/?page_id=3060","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Student Life","type":"page","id":14,"url":"http://localhost:8888/?page_id=14","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Services","type":"page","id":39,"url":"http://localhost:8888/?page_id=39","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Athletics","type":"page","id":41,"url":"http://localhost:8888/?page_id=41","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Study Abroad Opportunities","type":"page","id":43,"url":"http://localhost:8888/?page_id=43","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"FAQs","type":"page","id":47,"url":"http://localhost:8888/?page_id=47","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Tutoring Services","type":"page","id":49,"url":"http://localhost:8888/?page_id=49","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"Research","type":"page","id":16,"url":"http://localhost:8888/?page_id=16","kind":"post-type","isTopLevelLink":true} -->
<!-- wp:navigation-link {"label":"Awards \u0026#038; Honors","type":"page","id":51,"url":"http://localhost:8888/?page_id=51","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Undergraduate Research","type":"page","id":53,"url":"http://localhost:8888/?page_id=53","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Graduate Research","type":"page","id":55,"url":"http://localhost:8888/?page_id=55","kind":"post-type","isTopLevelLink":false} /-->

<!-- wp:navigation-link {"label":"Partnerships","type":"page","id":35,"url":"http://localhost:8888/?page_id=35","kind":"post-type","isTopLevelLink":false} /-->
<!-- /wp:navigation-link -->

<!-- wp:navigation-link {"label":"News","type":"page","id":17,"url":"http://localhost:8888/?page_id=17","kind":"post-type","isTopLevelLink":true} /-->
<!-- /wp:navigation -->

One thing I noticed, the sub-submenu indicator in nav items look like this:

Screenshot 2021-08-24 at 11 08 20

The chevron is inside the a element:

Screenshot 2021-08-24 at 11 08 00

The Page List looks like this:

Screenshot 2021-08-24 at 11 08 23

The chevron is outside of the a element:

Screenshot 2021-08-24 at 11 08 12

I should be able to tweak that by editing the Page List block itself — any concerns with that?

As an additional question, now that we've refactored the nav block classnames, can we/should we retire or remove some of the existing CSS classes applied? Page list is probably a challenge since it's shipping, but what can or should we do for the nav block itself?


Note to self, as a followup I'd like to look at an issue where the submenus take up horizontal space even when they are invisible, in some cases causing horizontal scrollbars.

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.

This is looking good!

Unfortunately the example markup doesn't work on my local because all my post and page URLs are different 😅 but I tested with both horizontal and vertical variations of Navigation, with multiple nested submenus on both Navigation items and Page list, so I think all the possibilities have been covered.

(I did come across a couple of styling issues, but they're already on trunk so we can deal with them separately)

I should be able to tweak that by editing the Page List block itself — any concerns with that?

It might be good to address that separately too, because it might conflict with the work we're doing in #33775 to enable open on click instead of focus. That PR doesn't touch Page List, but we will want Page List submenus to also open on click so they match the rest of the Nav, right?

As an additional question, now that we've refactored the nav block classnames, can we/should we retire or remove some of the existing CSS classes applied? Page list is probably a challenge since it's shipping, but what can or should we do for the nav block itself?

Yes, we definitely should! And yes, we might want to leave Page List classes alone because the block is already in Core, but for the Navigation block and its specific children, we can remove the old classes. Again, best do a follow-up PR so we can merge this one already 😄

@jasmussen jasmussen force-pushed the update/navigation-generic-classes branch from 15fb931 to 8994a78 Compare August 25, 2021 12:28
@jasmussen
Copy link
Contributor Author

Rebased, it seems like this one could be good to land soon!

That PR doesn't touch Page List, but we will want Page List submenus to also open on click so they match the rest of the Nav, right?

Ideally the Page List would behave the same as any other menu items, yes. Speaking of, I've explored some designs that leverage such a dropdown menu block but with a parent link inside, that considers the Page List as part of the equation.

@mkaz
Copy link
Member

mkaz commented Aug 25, 2021

The justify items do not seem to be working properly in the editor, but do appear to be in published view.
Both for horizontal and vertical navigation.

@vcanales
Copy link
Member

I should be able to tweak that by editing the Page List block itself — any concerns with that?

Navigation links look like this on TT1; on your branch, and on trunk:

image

I'm wondering if the arrow being stuck to the text is what's expected here, or if the separation would be better. If the former is true, then I think modifying the Page List block would be OK! Otherwise, we might win something by changing the navigation link markup instead, and helping TT1 to not look — in my humble opinion — this wonky.

@tellthemachines
Copy link
Contributor

Navigation links look like this on TT1; on your branch, and on trunk:

Yeah, this is one of the issues I mentioned above. It's happening across the board, not only on TT1. It should also be mentioned that the formatting is different depending on whether the submenu is selected, or its parent.
With parent selected:
Screen Shot 2021-08-26 at 11 27 03 am
With submenu selected:
Screen Shot 2021-08-26 at 11 27 11 am

@tellthemachines
Copy link
Contributor

The justify items do not seem to be working properly in the editor, but do appear to be in published view.
Both for horizontal and vertical navigation.

Oh, well spotted, @mkaz ! Justification isn't working at all for vertical nav on trunk either, so not a problem specific to this PR. For the horizontal nav though, it's the margins on the children that are being overridden by general block styles:

So I reckon we'll need to bump the specificity on .wp-block-navigation__container>.wp-block-navigation-item, .wp-block-page-list, .wp-block-page-list>.wp-block-navigation-item to fix it.

@jasmussen
Copy link
Contributor Author

So I reckon we'll need to bump the specificity on .wp-block-navigation__container>.wp-block-navigation-item, .wp-block-page-list, .wp-block-page-list>.wp-block-navigation-item to fix it.

Great call and thanks for the advice.

I'm hesitant to do it in this PR, though, and in fact I'm hesitant to even do it at all. The rules are output by classic.scss file, i.e. the issue should not be present on block themes. In #32659 I tried my best to reduce the specificity of those classic styles so that we wouldn't have to increase specificity otherwise. The problem with increasing specificity is that we need low specificity for global styles/theme.json to be able to set the margins, as #31878 sought to achieve. There's likely still a solution for classic themes, but I'd like to explore it separately.

In addition to this, TT1 has obsolete rules for styling the navigation block, which is causing those extra paddings. I've tracked that here: https://core.trac.wordpress.org/ticket/53220

So unless there are any objections, I think I'll land this in an hour or so, just to unblock other related PRs that rely on this. Let me know otherwise!

@jasmussen
Copy link
Contributor Author

Alright, landing this one and as always, happy to do followups.

@jasmussen jasmussen merged commit fe7c73d into trunk Aug 26, 2021
@jasmussen jasmussen deleted the update/navigation-generic-classes branch August 26, 2021 08:21
@github-actions github-actions bot added this to the Gutenberg 11.5 milestone Aug 26, 2021
@jasmussen
Copy link
Contributor Author

Should this one get a dev note? In case yes, here's a suggested note:

In 34171 the structural CSS for the navigation block was refactored to target new generic classsnames across menu items of multiple types including the Page List block.
The visual appearance should remain identical to before, but the changes may affect specificity in case your theme styles the navigation block beyond theme.json properties. Changed classes:

  • .submenu-container and .wp-block-navigation-link__container is now replaced by .wp-block-navigation__submenu-container (submenu containers)
  • .wp-block-pages-list__item and .wp-block-navigation-link is now replaced by .wp-block-navigation-item (menu items)
  • .wp-block-navigation-link__content is now replaced by .wp-block-navigation-item__content (the link inside a menu item)
  • .wp-block-page-list__submenu-icon and .wp-block-navigation-link__submenu-icon is now replaced by .wp-block-navigation__submenu-icon (dropdown chevron indicator)

@tellthemachines
Copy link
Contributor

It won't need an actual dev note on make/core because this block isn't in core yet, but it might be good to mention it in the plugin release notes.

@talldan
Copy link
Contributor

talldan commented Aug 27, 2021

@jasmussen @tellthemachines Please can you make a point of testing the navigation editor with any block changes.

Things are looking a bit of a mess with all the changes to the block over the last couple of months.

@@ -131,15 +131,15 @@

// Override for deeply nested submenus.
.has-child .wp-block-navigation__container .wp-block-navigation__container,
.has-child .wp-block-navigation__container .wp-block-navigation-link__container {
.has-child .wp-block-navigation__container .wp-block-navigation__submenu-container {
left: auto;
}

// When editing a link with children, highlight the parent
// and adjust the spacing and submenu icon.
.wp-block-navigation-link.has-child.is-editing {
Copy link
Contributor

Choose a reason for hiding this comment

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

Is .wp-block-navigation-link still a valid classname? I think this might be where the problem is. Should it be wp-block-navigation-item?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It should be, yes. Fixed in #34344.

@@ -43,8 +43,8 @@ $z-layers: (
".wp-block-template-part__placeholder-preview-filter-input": 1,

// Navigation menu dropdown.
".has-child .wp-block-navigation-link__container": 28,
".has-child:hover .wp-block-navigation-link__container": 29,
".has-child .wp-block-navigation__submenu-container": 28,
Copy link
Contributor

Choose a reason for hiding this comment

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

It'd be great to have some docs in the navigation block's readme about how these classnames work.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@talldan
Copy link
Contributor

talldan commented Aug 27, 2021

Ok, I think I've managed to fix up many of the broken styles in the nav editor as part of #34281

@jasmussen
Copy link
Contributor Author

Thanks for looking, Dan, sorry about the nav screen issues. I will create PRs for your points and let me know how I can help with 34281.

@talldan
Copy link
Contributor

talldan commented Aug 27, 2021

@jasmussen No worries, no need to make PRs as the issues should be fixed in #34281. A review would be appreciated 😄

I think we just need to make sure the nav editor undergoes a comparison with trunk with any changes to the block. Hopefully we can come up with a better solution so that isn't always required.

@jasmussen
Copy link
Contributor Author

I know you already have some of the navigation screen issues fixed, thanks for that. Nevertheless I created #34344 to fix a few additional issues, so some overlap did happen. However your #34281 still includes some fixes to the chevron open/close behavior that 34344 does not, so we'll eventually need both.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Navigation Affects the Navigation Block [Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants