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

Add editor preference for default state of Link UI settings drawer #52321

Closed
wants to merge 5 commits into from

Conversation

getdave
Copy link
Contributor

@getdave getdave commented Jul 5, 2023

What?

Fixes regression where "optimising" the Link UI for 80% of users has made it worse for 20% who want to use "Open in new tab".

Sets an editor preference for the default open/closed state of the Link UI's settings drawer.

Closes #52216

Why?

Whilst we don't want to encourage usage of open in new tab it's still a use case for some. By adding a preference users can opt-in to always displaying the settings drawer which improves the UX for them.

How?

Add preference and use as default state for link UI.

Question: is there a way to get the appropriate preference store depending on which editor I'm in?

Testing Instructions

  • New Post
  • Add link
  • Click link - see settings drawer is closed by default.
  • Go to editor preferences modal.
  • Set preference to persist setting drawer for Link UI.
  • Return to editor.
  • Click link again.
  • See that now the settings drawer defaults to "open".
  • Make sure you can still toggle the open/closed state of drawer manually using the UI.
  • Repeat above steps in the Site Editor.

Testing Instructions for Keyboard

Screenshots or screencast

Screen Shot 2023-07-05 at 09 58 51

@getdave getdave added [Type] Regression Related to a regression in the latest release [Feature] Link Editing Link components (LinkControl, URLInput) and integrations (RichText link formatting) labels Jul 5, 2023
@getdave getdave self-assigned this Jul 5, 2023
@getdave getdave requested a review from talldan July 5, 2023 09:00
@github-actions
Copy link

github-actions bot commented Jul 5, 2023

Size Change: +6.6 kB (0%)

Total Size: 1.43 MB

Filename Size Change
build/block-editor/content-rtl.css 4.26 kB +12 B (0%)
build/block-editor/content.css 4.25 kB +12 B (0%)
build/block-editor/index.min.js 209 kB +83 B (0%)
build/block-editor/style-rtl.css 14.8 kB +79 B (+1%)
build/block-editor/style.css 14.8 kB +69 B (0%)
build/block-library/blocks/details/style-rtl.css 178 B +19 B (+12%) ⚠️
build/block-library/blocks/details/style.css 178 B +19 B (+12%) ⚠️
build/block-library/blocks/file/view.min.js 375 B +63 B (+20%) 🚨
build/block-library/blocks/footnotes/style-rtl.css 201 B +10 B (+5%) 🔍
build/block-library/blocks/footnotes/style.css 199 B +11 B (+6%) 🔍
build/block-library/blocks/navigation/style-rtl.css 2.23 kB +23 B (+1%)
build/block-library/blocks/navigation/style.css 2.22 kB +23 B (+1%)
build/block-library/blocks/navigation/view.min.js 438 B -468 B (-52%) 🏆
build/block-library/blocks/query-pagination/style-rtl.css 302 B +14 B (+5%) 🔍
build/block-library/blocks/query-pagination/style.css 299 B +15 B (+5%) 🔍
build/block-library/index.min.js 202 kB +399 B (0%)
build/block-library/style-rtl.css 13.7 kB +54 B (0%)
build/block-library/style.css 13.7 kB +54 B (0%)
build/components/index.min.js 240 kB +63 B (0%)
build/core-data/index.min.js 16.4 kB +239 B (+1%)
build/data/index.min.js 8.28 kB +7 B (0%)
build/edit-post/index.min.js 35.5 kB +167 B (0%)
build/edit-post/style-rtl.css 7.58 kB +3 B (0%)
build/edit-post/style.css 7.57 kB +3 B (0%)
build/edit-site/index.min.js 88.5 kB +3.1 kB (+4%)
build/edit-site/style-rtl.css 13.1 kB +508 B (+4%)
build/edit-site/style.css 13.1 kB +510 B (+4%)
build/edit-widgets/style-rtl.css 4.52 kB -4 B (0%)
build/edit-widgets/style.css 4.52 kB -6 B (0%)
build/editor/index.min.js 45.5 kB +136 B (0%)
build/editor/style-rtl.css 3.58 kB -2 B (0%)
build/editor/style.css 3.58 kB -2 B (0%)
build/interactivity/index.min.js 10.2 kB +134 B (+1%)
build/list-reusable-blocks/index.min.js 2.18 kB +52 B (+2%)
build/react-refresh-entry/index.min.js 9.47 kB +1.03 kB (+12%) ⚠️
build/reusable-blocks/index.min.js 2.54 kB +146 B (+6%) 🔍
build/rich-text/index.min.js 11 kB +27 B (0%)
ℹ️ 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 6.99 kB
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
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 104 B
build/block-library/blocks/avatar/style.css 104 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/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/style-rtl.css 269 B
build/block-library/blocks/file/style.css 270 B
build/block-library/blocks/file/view-interactivity.min.js 317 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/style-rtl.css 1.42 kB
build/block-library/blocks/image/style.css 1.42 kB
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/image/view-interactivity.min.js 1.46 kB
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.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/view-interactivity.min.js 988 B
build/block-library/blocks/navigation/view-modal.min.js 2.78 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 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-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 531 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.43 kB
build/block-library/blocks/social-links/style.css 1.42 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.1 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/reset-rtl.css 478 B
build/block-library/reset.css 478 B
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 51 kB
build/commands/index.min.js 14.9 kB
build/commands/style-rtl.css 827 B
build/commands/style.css 827 B
build/components/style-rtl.css 11.7 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12 kB
build/core-commands/index.min.js 2.26 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.46 kB
build/customize-widgets/style.css 1.45 kB
build/data-controls/index.min.js 640 B
build/date/index.min.js 17.8 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-widgets/index.min.js 16.9 kB
build/element/index.min.js 4.8 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.62 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.64 kB
build/keycodes/index.min.js 1.84 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.77 kB
build/preferences-persistence/index.min.js 1.84 kB
build/preferences/index.min.js 1.24 kB
build/primitives/index.min.js 943 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 943 B
build/react-i18n/index.min.js 615 B
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/router/index.min.js 1.77 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 1.83 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 958 B
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

@getdave getdave changed the title Add preference and use as initial state for drawer open/closed Add preference to control default initial state of Link UI settings drawer Jul 5, 2023
@getdave getdave changed the title Add preference to control default initial state of Link UI settings drawer Add editor preference for default state of Link UI settings drawer Jul 5, 2023
@getdave
Copy link
Contributor Author

getdave commented Jul 5, 2023

I'll obviously fix the tests if folks agree this should land.

Comment on lines 150 to 152
settingsDrawerStatePreference:
postEditorEnabled || siteEditorEnabled,
};
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The return value should be determined based on which editor we are currently within. Else. setting from post editro will apply in Site Editor (and vice versa).

Any ideas or prior art on this. Maybe @talldan will know as he was the architect of the prefs store? 🙏

@getdave getdave mentioned this pull request Jul 5, 2023
13 tasks
@draganescu
Copy link
Contributor

Nit but this preference feels like it does not belong in General > Appearance. Either one of General > Publishing, Blocks >Block Interactions feels better to me.

@getdave
Copy link
Contributor Author

getdave commented Jul 6, 2023

Issues blocking this PR

@getdave
Copy link
Contributor Author

getdave commented Jul 7, 2023

@draganescu In all your work on DFM have you encountered a situation where you want to selectively get the preference for DFM from the relevant preference store depending on which editor you are in?

@draganescu
Copy link
Contributor

The preferences are scoped per editor.

* @param {string} scope The scope of the feature (e.g. core/edit-post).
so we can get and set them on a specific editor.

@getdave
Copy link
Contributor Author

getdave commented Jul 10, 2023

so we can get and set them on a specific editor.

Yes but is there any prior art for getting the scoped preference based on your current editor?

Update: I have a plan to pass the "scope" via the editor's settings in the block editor settings. Then it can be an optional thing. That should work.

@scruffian
Copy link
Contributor

This feels like a very niche setting. My concern is that its another thing to maintain forever. Is there another setting we could make this a part of - like a "power use" kind of setting so we can group all these things under it? Is my concern about maintenance valid even?

@richtabor
Copy link
Member

richtabor commented Jul 10, 2023

This feels like a very niche setting. My concern is that it's another thing to maintain forever. Is there another setting we could make this a part of - like a "power use" kind of setting so we can group all these things under it?

It does. Another idea would be to persist the "Advanced" open/closed state instead of a control to explicitly set it.

@richtabor
Copy link
Member

like a "power use" kind of setting so we can group all these things under it?

Perhaps. Advanced editing controls could be an interesting area to explore. Not sure what else would be included.

@scruffian
Copy link
Contributor

Another idea (I think) is to just save the state of the advanced section across all instances of the component - so once it's open in one place its open everywhere, until you close it...

@t-hamano
Copy link
Contributor

This PR would also fix the recently submitted #52489.

@getdave
Copy link
Contributor Author

getdave commented Jul 13, 2023

@scruffian That's a nice idea, but should we not try to land this preference first and then come back to automated behaviours?

@getdave
Copy link
Contributor Author

getdave commented Jul 13, 2023

I pushed a commit which shows an alternative route of providing the preference via the block editor settings. Now need to work out how to do the same as I've done for edit/site in edit/post.

@scruffian
Copy link
Contributor

@scruffian That's a nice idea, but should we not try to land this preference first and then come back to automated behaviours?

I'm not sure if we want to commit to a preference like this. Do you think we'd be able to remove it in the future?

@github-actions
Copy link

Flaky tests detected in 6bc1af6.
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/5543933497
📝 Reported issues:

@getdave
Copy link
Contributor Author

getdave commented Jul 13, 2023

@scruffian That's a nice idea, but should we not try to land this preference first and then come back to automated behaviours?

I'm not sure if we want to commit to a preference like this. Do you think we'd be able to remove it in the future?

Yes. If the UI doesn't have "Advanced" then we can just remove it surely?

@getdave
Copy link
Contributor Author

getdave commented Jul 13, 2023

Is there another setting we could make this a part of - like a "power use" kind of setting so we can group all these things under it? Is my concern about maintenance valid even?

You could do that if you wanted. I didn't want to over engineer anything at this stage.

@WordPress/gutenberg-design what do we think about

  • adding this setting and similar ones for fairly "niche" preferences?
  • backwards compatibility commitment implied by adding a setting if the UI changes in the future?
  • the behaviour in this PR?

@getdave getdave added the Needs Design Feedback Needs general design feedback. label Jul 13, 2023
@ricjcs
Copy link

ricjcs commented Jul 13, 2023

Is there really a need to have the hidden option to open a link in a new tab, and to resolve this, have an option in the preferences panel?

As it stands in previous versions of Gutenberg, and in the current version of WordPress, it's simple and works perfectly well. Why not leave it like that?

Is it worth spending time and energy on this when there is so much in WordPress that could really be improved?

These are just some of my thoughts...

@jameskoster
Copy link
Contributor

I agree that a preference to force the drawer open seems a little arbitrary.

Looking at the original issue, the problem seems most prominent when you always want links to open in a new tab/window. So if we went down the preferences road, I wonder if it should be framed that way instead. IE allow the user to specify that links open in a new tab by default.

All that said, persisting the "Advanced" open/closed state might be a simpler thing to try?

@getdave
Copy link
Contributor Author

getdave commented Jul 14, 2023

@ricjcs Thanks for your feedback.

Is there really a need to have the hidden option to open a link in a new tab...

No - this is a good point. Not whilst there is only a single setting. There are better options (see what I suggest below in response to @jameskoster ).

...and to resolve this, have an option in the preferences panel?

It is an option that I'm proposing based on feedback left by other WordPress community users/contributors. If folks disagree (as they have done) then this is the ideal forum to voice objections and offer counter proposals.

As it stands in previous versions of Gutenberg, and in the current version of WordPress, it's simple and works perfectly well. Why not leave it like that?

Because (unfortunately) it doesn't (seem to) work really well. See the Issue linked to this PR.

Is it worth spending time and energy on this when there is so much in WordPress that could really be improved?

Yes it is. There are lots of things contributors could/should work on and this is one of them. It's entirely valid to try and resolve this issue when a users has expressed frustration with how it behaves. This is particular so during this stage in the WP release process where major changes cannot be committed to the 6.3 release anyway.

I would welcome any suggestions for alternatives to resolve the problem outlined in the linked Issue. For example, how do you see this working when (in the future) there are multiple settings in the "Advanced" drawer?


@jameskoster Thanks for your thoughts. The problem is we need so many clicks to access the new tab (see linked Issue) and that's annoying.

A good complimentary "fix" to this one would be to simply remove the link settings drawer altogether when there is only a single setting. @richtabor what do you think about that one?

However in the future we plan to add more settings here so its short term and is not a full resolution to the problem expressed in the Issue.

I'm happy to modify the PR to have a preference for default all links created using the LinkControl to be true for Opens in new tab. However, what happens when there are more settings? Do we just keep adding new preferences for each setting? It doesn't seem like it's any more sustainable.

Appreciate the setting seems arbitrary but one could argue the same for Always open List View preference.

The only alternative I can see if what @scruffian and others suggested, where once the drawer has been opened it toggles the preference to on and then remains on until such time as the drawer is manually closed. We would have to hide the preference from the UI though otherwise it would be super confusing to toggle a preference and then find it was disabled again due to "magic" behaviour.

I welcome further discussion here. This is a valid problem which will affect many users and thus it needs a solution.

Thanks all 🙇‍♂️

@ricjcs
Copy link

ricjcs commented Jul 14, 2023

Hi @getdave, thanks for your reply and clarification, what you say makes sense.

how do you see this working when (in the future) there are multiple settings in the "Advanced" drawer?

In that case, couldn't the "Open in new tab" option, which is used by many users, be left out of the "Advanced" drawer? In the "Advanced" drawer would be the options that are perhaps less used.

Thus, it would no longer be necessary to have an option that would allow the "Advanced" drawer to be opened by default, or persistence in open/closed state. I don't know if in the future there will be many options in the "Advanced" drawer, if there will be a good user experience to keep the drawer always open.

@scruffian
Copy link
Contributor

once the drawer has been opened it toggles the preference to on and then remains on until such time as the drawer is manually closed. We would have to hide the preference from the UI though otherwise it would be super confusing to toggle a preference and then find it was disabled again due to "magic" behaviour.

This seems like a good way forward.

@getdave
Copy link
Contributor Author

getdave commented Jul 14, 2023

In that case, couldn't the "Open in new tab" option, which is used by many users, be left out of the "Advanced" drawer? In the "Advanced" drawer would be the options that are perhaps less used.

In general I've been told we don't want to prioritise this setting because:

  • it's not necessarily more important than other settings (for everyone)
  • "Open in new tab" has accessibility issues so "promoting" it isn't desirable (so I've been informed by community members).

This seems like a good way forward.

@scruffian As few of us agree that having a concrete preference is a good idea, I'm happy to try this approach. Note that means it's not going to make 6.3 however.

@draganescu
Copy link
Contributor

I am also on the side of simply persisting the satte of the drawer - a soft of magic preference, instead of yet another toggle.

@ricjcs
Copy link

ricjcs commented Jul 14, 2023

In general I've been told we don't want to prioritise this setting because:

  • it's not necessarily more important than other settings (for everyone)

I think that if these future options had the same level of importance, they would already exist.

  • "Open in new tab" has accessibility issues so "promoting" it isn't desirable (so I've been informed by community members).

I think that by not being turned on by default already fulfills this purpose.

But, if "Open in new tab" is really going to stay inside the "Advanced" drawer, then persistence of the drawer state seems to be the best way.

@richtabor
Copy link
Member

A good complimentary "fix" to this one would be to simply remove the link settings drawer altogether when there is only a single setting. @richtabor what do you think about that one?

I'm not opposed to this tbh.

@getdave
Copy link
Contributor Author

getdave commented Jul 26, 2023

Closing in favour of #52799 which seems simpler and "just works" even if it might be a bit "magic". I think on balance it's a better solution.

@getdave getdave closed this Jul 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Link Editing Link components (LinkControl, URLInput) and integrations (RichText link formatting) Needs Design Feedback Needs general design feedback. [Type] Regression Related to a regression in the latest release
Projects
Development

Successfully merging this pull request may close these issues.

The new design of the link UI in 16.1.0 has turned one click into four
8 participants