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

Fix text decoration on navigation submenus #37738

Closed
wants to merge 2 commits into from

Conversation

tellthemachines
Copy link
Contributor

Description

Fixes #37726.

Text-decoration isn't an inherited property, but it applies by default to all text children of the container it's set on. The text-decoration: inherit rules that this PR deletes were causing text-decoration of submenu items to be set to none, because not all of the intermediate containers were inheriting the property from the nav element where it's set.

How has this been tested?

Create a Navigation with links, submenus, and a page list.
Set Decoration (under Typography, in the block sidebar) to a non-default value.
Check that text decoration applies to all children of the Nav.

Screenshots

Types of changes

Bug fix (non-breaking change which fixes an issue)

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

@tellthemachines tellthemachines added [Block] Navigation Affects the Navigation Block [Block] Submenu Affects the Submenu Block - for submenus in navigation [Type] Bug An existing feature does not function as intended labels Jan 6, 2022
@github-actions
Copy link

github-actions bot commented Jan 6, 2022

Size Change: +1.21 kB (0%)

Total Size: 1.13 MB

Filename Size Change
build/block-editor/index.min.js 140 kB +2 B (0%)
build/block-library/blocks/audio/editor-rtl.css 150 B +92 B (+159%) 🆘
build/block-library/blocks/audio/editor.css 150 B +92 B (+159%) 🆘
build/block-library/blocks/code/theme-rtl.css 131 B -3 B (-2%)
build/block-library/blocks/code/theme.css 131 B -3 B (-2%)
build/block-library/blocks/navigation/style-rtl.css 1.87 kB +62 B (+3%)
build/block-library/blocks/navigation/style.css 1.86 kB +68 B (+4%)
build/block-library/blocks/navigation/view.min.js 2.82 kB +4 B (0%)
build/block-library/blocks/page-list/editor-rtl.css 385 B +8 B (+2%)
build/block-library/blocks/page-list/editor.css 387 B +10 B (+3%)
build/block-library/blocks/post-comments/style-rtl.css 521 B +12 B (+2%)
build/block-library/blocks/post-comments/style.css 521 B +12 B (+2%)
build/block-library/common-rtl.css 908 B -2 B (0%)
build/block-library/common.css 905 B -3 B (0%)
build/block-library/editor-rtl.css 10 kB +25 B (0%)
build/block-library/editor.css 10 kB +25 B (0%)
build/block-library/index.min.js 166 kB +190 B (0%)
build/block-library/style-rtl.css 10.8 kB +97 B (+1%)
build/block-library/style.css 10.8 kB +97 B (+1%)
build/block-library/theme-rtl.css 672 B -3 B (0%)
build/block-library/theme.css 676 B -3 B (0%)
build/blocks/index.min.js 46.3 kB +24 B (0%)
build/components/index.min.js 214 kB -69 B (0%)
build/edit-post/classic-rtl.css 546 B +54 B (+11%) ⚠️
build/edit-post/classic.css 547 B +53 B (+11%) ⚠️
build/edit-post/index.min.js 29.6 kB +81 B (0%)
build/edit-post/style-rtl.css 7.16 kB -4 B (0%)
build/edit-post/style.css 7.16 kB -5 B (0%)
build/edit-site/index.min.js 37.2 kB +74 B (0%)
build/edit-site/style-rtl.css 6.83 kB -5 B (0%)
build/edit-site/style.css 6.82 kB -5 B (0%)
build/edit-widgets/index.min.js 16.6 kB +63 B (0%)
build/edit-widgets/style-rtl.css 4.17 kB -8 B (0%)
build/edit-widgets/style.css 4.17 kB -9 B (0%)
build/editor/index.min.js 38.1 kB +219 B (+1%)
build/editor/style-rtl.css 3.72 kB -21 B (-1%)
build/editor/style.css 3.72 kB -21 B (-1%)
build/rich-text/index.min.js 11 kB +7 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 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.6 kB
build/block-editor/style.css 14.6 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/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 470 B
build/block-library/blocks/button/editor.css 470 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 90 B
build/block-library/blocks/code/style.css 90 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-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/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB
build/block-library/blocks/cover/style.css 1.22 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/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 966 B
build/block-library/blocks/gallery/editor.css 970 B
build/block-library/blocks/gallery/style-rtl.css 1.6 kB
build/block-library/blocks/gallery/style.css 1.6 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 810 B
build/block-library/blocks/image/editor.css 809 B
build/block-library/blocks/image/style-rtl.css 507 B
build/block-library/blocks/image/style.css 511 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 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 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.93 kB
build/block-library/blocks/navigation/editor.css 1.94 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/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-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 305 B
build/block-library/blocks/post-template/style.css 305 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 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 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 245 B
build/block-library/blocks/separator/style.css 245 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 670 B
build/block-library/blocks/social-links/editor.css 669 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 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 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 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/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.3 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/data/index.min.js 7.49 kB
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.58 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.71 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.72 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.92 kB
build/notices/index.min.js 925 B
build/nux/index.min.js 2.08 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.84 kB
build/primitives/index.min.js 924 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 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.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/server-side-render/index.min.js 1.57 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@jasmussen
Copy link
Contributor

As a code quality improvement, this one seems good to fix for the reasons you mention, text-decoration is unique when it comes to CSS inheritance, so this code isn't behaving as intended.

But I'm seeing some rather curious side effects that I can't quite explain. In TwentyTwentyTwo, navigation items are not underlined by default, only on hover:
Screenshot 2022-01-10 at 09 40 08

In this PR, suddenly they are underlined by default:

Screenshot 2022-01-10 at 09 40 43

This could very possibly be an issue for TT2 to fix. At the same time, I'm not seeing the text decoration actually inherited:
Screenshot 2022-01-10 at 09 33 18

Note the dual underlines on the top items, it seems the text decoration is applied in the wrong place. It's easier to see with strikethrough:
Screenshot 2022-01-10 at 09 35 37

There's a related issue, #34275 (with some gory details in #34379) which suggest that text decoration for the navigation block should be rethought mostly, and applied in a different way entirely, exactly because of how it gets inherited, whether it should be or not. #36345 I believe takes a stab at a different approach. What do you think?

@carolinan
Copy link
Contributor

carolinan commented Jan 10, 2022

I believe the not style not([style*=text-decoration]) needs to be kept, because that's what is preventing the link from using the browser default?

@tellthemachines
Copy link
Contributor Author

Thanks for the testing and feedback!

Yeah, the classnames approach in #36345 seems like the most solid option. In the meantime, I tried a similar approach here that might work as a quick fix. Let me know what you think! There's still a bit of weirdness in TT2 with submenu items, due to theme-specific styles clashing.

@carolinan carolinan requested a review from kjellr January 11, 2022 08:45
@jasmussen
Copy link
Contributor

Oh, that's a clever twist on the approach, nice!

I guess when we're matching the whole string, we do need both with and without the space:

	&[style*="text-decoration: underline"],
	&[style*="text-decoration:underline"] {

that was the only thing that stumped me for a moment.

I'm happy to give a green check, but with the TT2 piece, I'd love a quick sanity check from Kjell which I see Carolina pinged as well.

@kjellr
Copy link
Contributor

kjellr commented Jan 11, 2022

But I'm seeing some rather curious side effects that I can't quite explain. In TwentyTwentyTwo, navigation items are not underlined by default, only on hover:

In this PR, suddenly they are underlined by default:

This could very possibly be an issue for TT2 to fix. At the same time, I'm not seeing the text decoration actually inherited:

For what it's worth, I'm not seeing that on my end. It looks identical to me with or without this PR:

menus

Can anyone else reproduce?

@carolinan
Copy link
Contributor

carolinan commented Jan 12, 2022

With TT2, when the underline option is enabled there are two underlines on the standard menu and one on the overlay.
Chrome.

@kjellr
Copy link
Contributor

kjellr commented Jan 12, 2022

That's really weird. I don't see the two underlines at all:

decoration

It looks the same on the front-end, and in the modal for me.

Twenty Twenty-Two is purposefully light in its definition of text-decoration styles. It doesn't actually add any underlines at all, except for on hover.

@jffng
Copy link
Contributor

jffng commented Jan 12, 2022

On TT2, I can confirm the double underlines appearing on the top-level menu on Chrome only:

Screen Shot 2022-01-12 at 5 02 33 PM

This conflict seems connected to the text-underline-offset: 0.25ch rule in TT2. I don't know why it's only causing an issue for the top-level menu only, and not the sub-menus. The double underline isn't present in Firefox:

Screen Shot 2022-01-12 at 5 13 57 PM

If this PR were merged, maybe we would need to add some CSS in TT2 so the offset doesn't apply when text-decoration is present on the nav, or remove the offset entirely.

@tellthemachines
Copy link
Contributor Author

With TT2, I can also see a double underline only on Chrome.

Is there anything further I can do in this PR? Can we merge it (assuming approval) or should we hold off until the issue is fixed in TT2?

@jasmussen
Copy link
Contributor

jasmussen commented Jan 13, 2022

Just as a quick additional test, I see the double underline in Chrome:
Screenshot 2022-01-13 at 10 08 37

I only see a single underline in Empty Theme, but this is misleading as I'll get to in a second:

Screenshot 2022-01-13 at 10 11 29

As it turns out, what's going on here is another example of the curious inheritance properties of text-decoration, applying all the way down the hierarchy and not able to be unset. And so when TT2 applies text-decoration properties for the a element, the li element is also getting an underline, inherited from the nav element. It's enough to apply text-underline-offset: 0.25ch; to Empty Theme, as @jffng notes, to get the same result in Empty Theme:

Screenshot 2022-01-13 at 10 29 55

So effectively, as long as text-decoration is implemented the way it is, simply targetting the nav element, we'll keep running into issues like this one:

inspect

For that reason, it might make the most sense to turn off text-decoration entirely for the navigation block, at least until such a time as #36345 or someting like it might be able to reactivate it.

@kjellr
Copy link
Contributor

kjellr commented Jan 13, 2022

So effectively, as long as text-decoration is implemented the way it is, simply targetting the nav element, we'll keep running into issues like this one

I'm not sure I follow 100%, but would more specificity (on the part of Gutenberg, or in Twenty Twenty-Two) allow us to work around this?

@jasmussen
Copy link
Contributor

Just to be clearer, themes should be allowed to do what TT2 does in all permutations. What I'm suggesting is that the following user control gets removed from the navigation block temporarily, until it can apply the text-decoration property only to the a element for each item, rather than across the cascade:
Screenshot 2022-01-13 at 17 05 59

but would more specificity (on the part of Gutenberg, or in Twenty Twenty-Two) allow us to work around this?

That's the problem: text-decoration cannot be unset (outside of hacks) by a child if inherited by a parent, as I found out in my own failed attempt at fixing it. Here's a codepen to tinker a bit with: https://codepen.io/joen/pen/gOGZgvV?editors=1100

So theoretically, TT2 could apply its specific text-underline-offset on nav.wp-block-navigation, and in doing so the multiple inherited underlines should at least "stack" so they appear as a single underline. But it's hacky to the point that the feature itself feels broken, IMO.

@kjellr
Copy link
Contributor

kjellr commented Jan 13, 2022

Ah ok, got it. That codepen is a great illustration of the issue, thanks for it.

@tellthemachines
Copy link
Contributor Author

For that reason, it might make the most sense to turn off text-decoration entirely for the navigation block, at least until such a time as #36345 or someting like it might be able to reactivate it.

That makes sense; if we output a class on the nav element instead of an inline style, we can target only the relevant children with the style. #36345 sounds like a better solution. I'll close this PR; thanks again for the feedback!

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 [Block] Submenu Affects the Submenu Block - for submenus in navigation [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Text decoration setting does not work on the Navigation block overlay or submenus
5 participants