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

Link Control: persist advanced settings toggle state to preferences if available #52799

Merged
merged 21 commits into from
Aug 2, 2023

Conversation

scruffian
Copy link
Contributor

@scruffian scruffian commented Jul 20, 2023

This is an alternative to #52321. Fixes #52216.

What?

Once a user opens the advanced section of link control it will stay open until they close it again.

Why?

This retains the UI state which will be useful for people who often use the "open in new tab" option.

How?

Adds a new preference that gets toggled when you open the advanced section of link control.

Testing Instructions

  1. Add a paragraph
  2. Add a link to some of the text
  3. Open the advanced section of link control
  4. Close the link editing UI
  5. Reopen the link editing UI and confirm that the advanced section is open
  6. Close the advanced option
  7. Close the link editing UI
  8. Reopen the link editing UI and confirm that the advanced section is still closed.
  9. Also try reloading the edftor and checking the setting persists across reloads.
  10. Also try in different editor environments and check the setting persists.

Automated Tests

e2e tests - npm run test:e2e:playwright test/e2e/specs/editor/blocks/links.spec.js -- -g "toggle state of advanced link settings is preserved across editing links"

Co-authored-by: Dave Smith 444434+getdave@users.noreply.github.com

@scruffian scruffian added [Type] Feature New feature to highlight in changelogs. [Feature] Link Editing Link components (LinkControl, URLInput) and integrations (RichText link formatting) labels Jul 20, 2023
@scruffian scruffian self-assigned this Jul 20, 2023
@scruffian scruffian requested a review from getdave as a code owner July 20, 2023 14:48
@github-actions
Copy link

github-actions bot commented Jul 20, 2023

Size Change: +318 B (0%)

Total Size: 1.44 MB

Filename Size Change
build/block-editor/index.min.js 210 kB -35 B (0%)
build/components/index.min.js 241 kB +430 B (0%)
build/edit-post/index.min.js 35.6 kB +14 B (0%)
build/edit-site/index.min.js 89.8 kB +2 B (0%)
build/edit-site/style-rtl.css 13.2 kB -3 B (0%)
build/edit-site/style.css 13.2 kB -4 B (0%)
build/editor/index.min.js 45.3 kB -47 B (0%)
build/interactivity/index.min.js 10.4 kB -39 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/content-rtl.css 4.26 kB
build/block-editor/content.css 4.25 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
build/block-editor/style-rtl.css 14.8 kB
build/block-editor/style.css 14.8 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 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/details/style-rtl.css 178 B
build/block-library/blocks/details/style.css 178 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/file/view.min.js 375 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 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/style-rtl.css 2.23 kB
build/block-library/blocks/navigation/style.css 2.22 kB
build/block-library/blocks/navigation/view-interactivity.min.js 988 B
build/block-library/blocks/navigation/view-modal.min.js 2.85 kB
build/block-library/blocks/navigation/view.min.js 469 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 401 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 319 B
build/block-library/blocks/post-featured-image/style.css 319 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 314 B
build/block-library/blocks/post-template/style.css 314 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 302 B
build/block-library/blocks/query-pagination/style.css 299 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 631 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.44 kB
build/block-library/blocks/social-links/style.css 1.43 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 185 B
build/block-library/blocks/video/style.css 185 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/index.min.js 202 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 13.7 kB
build/block-library/style.css 13.8 kB
build/block-library/theme-rtl.css 686 B
build/block-library/theme.css 691 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 51 kB
build/commands/index.min.js 15.1 kB
build/commands/style-rtl.css 835 B
build/commands/style.css 834 B
build/components/style-rtl.css 11.8 kB
build/components/style.css 11.8 kB
build/compose/index.min.js 12.1 kB
build/core-commands/index.min.js 2.44 kB
build/core-data/index.min.js 16.4 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/data/index.min.js 8.28 kB
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-post/style-rtl.css 7.58 kB
build/edit-post/style.css 7.58 kB
build/edit-widgets/index.min.js 16.9 kB
build/edit-widgets/style-rtl.css 4.52 kB
build/edit-widgets/style.css 4.52 kB
build/editor/style-rtl.css 3.54 kB
build/editor/style.css 3.53 kB
build/element/index.min.js 4.8 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.59 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/index.min.js 2.18 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/nux/index.min.js 1.99 kB
build/nux/style-rtl.css 735 B
build/nux/style.css 732 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 951 B
build/react-i18n/index.min.js 615 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.71 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/rich-text/index.min.js 11 kB
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

@draganescu
Copy link
Contributor

I like the idea of this automagic behavior. In this PR the option does reset if I click a link that is already linked.

Comment on lines 143 to 144
return select( blockEditorStore ).getSettings()
.setLinkControlAdvancedSettingsPreference;
Copy link
Contributor

Choose a reason for hiding this comment

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

I updated so the setter is provided by the block editor settings. This means any editor can provide their own preference store rather than having these hard coded to WP only as was previously the case.

@@ -133,15 +139,33 @@ function LinkControl( {
withCreateSuggestion = true;
}

const [ settingsOpen, setSettingsOpen ] = useState( false );
Copy link
Contributor

Choose a reason for hiding this comment

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

We need the local state as a fallback in case that the preference isn't supplied. I considered using a local state as the value passed as the setting but I realised that is also no good because the editor might not pass the settings at all so we cannot rely on their presence.

@github-actions
Copy link

github-actions bot commented Jul 26, 2023

Flaky tests detected in 10834d1.
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/5678980933
📝 Reported issues:

@getdave
Copy link
Contributor

getdave commented Jul 26, 2023

When you open the advanced section the Link UI state is reset - I don't know why but this is the wrong behaviour!

@scruffian please can you explain this a little more? Replication steps and exactly what you saw and expected? If you pull the latest changes does it still happen? 🙏 🙏

@getdave
Copy link
Contributor

getdave commented Jul 26, 2023

Needs unit test coverage before merging to test that the toggle behaviour works when a preference is available.

@getdave
Copy link
Contributor

getdave commented Jul 26, 2023

When you open the advanced section the Link UI state is reset - I don't know why but this is the wrong behaviour!

@scruffian please can you explain this a little more? Replication steps and exactly what you saw and expected? If you pull the latest changes does it still happen? 🙏 🙏

@scruffian @draganescu I think the reason this is happening is because toggling the setting resets the internal state which then causes the value syncing to run. We've been looking at this value syncing and whether it should be removed in this PR.

@scruffian

This comment was marked as outdated.

@getdave
Copy link
Contributor

getdave commented Jul 27, 2023

I'm concerned about this change. I think adding this preference to the editor settings means that each time you toggle the "drawer" it will cause the memoization of the settings to be invalidated which will cause the editor to re-render. That's probably what's contributing to the state reset we're seeing.

I'm wondering if there are other options we could consider. For example, only persisting the preference when the current <LinkControl> is "unmounted". Perhaps in an effect.

@Mamaduka I know you're really great an optimisations such as these. I'd greatly value your perspective here 🙇

@getdave
Copy link
Contributor

getdave commented Jul 27, 2023

With the change in facd271 it's harder to replicate the "wiping out state" bug, but here is a new video with replicate steps:

Screen.Capture.on.2023-07-27.at.10-25-44.mp4

@Mamaduka
Copy link
Member

I think this is one of those options that doesn't have to be editor specific. Maybe we could use a general preference store and avoid funneling value/setter via settings.

The Hint components use core as the store name. Examples:

@getdave
Copy link
Contributor

getdave commented Jul 27, 2023

Thank you for highlighting this.

The approach is interesting to me as that seems like coupling block editor code to a concept of "Core". What is Core in Drupal? It seems like WP specific code which I understood should not exist in the block editor package 🤔

avoid funneling value/setter via settings.

This would be preferable though...

@Mamaduka
Copy link
Member

Mamaduka commented Jul 27, 2023

The preference scope can also be a core/block-editor if we want to use a package as scope name conventions. The preference package isn't WP-specific; you can use different persistence layers.

cc @talldan

@draganescu
Copy link
Contributor

Can't help to wonder if this is the case where we actually need a simpler solution like for this component only just use local storage. What's wrong with that?

@getdave
Copy link
Contributor

getdave commented Jul 27, 2023

Can't help to wonder if this is the case where we actually need a simpler solution like for this component only just use local storage.

The preference layer can be configured to do that. But I assume you're talking about a standalone localstorage value for this UI only.

What's wrong with that?

I'm not sure that's a great precedent to set. We'd end up with a tonne of "one off" things set in local storage.

I think @Mamaduka is probably on to the right track with having a generic scope. But what I want to know is that another consumer of the block-editor package can somehow pass their own preferences system into the editor and have it work. If that's the case then we don't need to pass stuff via settings anymore and can simply interact with the registered preferences system.

@Mamaduka
Copy link
Member

But what I want to know is that another consumer of the block-editor package can somehow pass their own preferences system into the editor and have it work.

They can. This is how WP does it - https://github.com/WordPress/wordpress-develop/blob/12a0205829c1411f16b4e216a713a153bcc62e2f/src/wp-includes/script-loader.php#L372-L388.

@EW0JY
Copy link

EW0JY commented Aug 11, 2023

Hi guys,

I appreciate the work you put into trying to fix the problem regarding links which were introduced with the latest 6.3 release.

I've dug into this the last few hours and saw that there are multiple threads dealing with possible solutions.

My question is this:

I'm a bit confused as to why this current thread here is closed and you guys consider it solved:

Great job on this folks.

I'm afraid that it hasn't been resolved, here's why:

You still have to go through the following tedious process:

  1. select text and "insert link" (crtl+k)
  2. hit enter to create / insert the link
  3. click on the newly created link again to be able to edit it
  4. click "edit link"
  5. open "advanced"
  6. select "open in new tab"
  7. click "save"

So in anticipation of a fix, I've downloaded the latest Gutenberg 16.4 and tested the alleged solution.

While it is true that now at least the "advanced" toggle remains open when editing links after opening it once, the fact remains that it still takes considerably more clicks and time to get a link to open in a new tab than in WP 6.2.

Here's the current process after the "fix":

  1. select text and "insert link" (crtl+k)
  2. hit enter to create / insert the link
  3. click on the newly created link again to be able to edit it
  4. click "edit link"
  5. select "open in new tab"
  6. click "save"

As you can see, the only thing that has been improved is that you don't have to click to open the "advanced" toggle each time (after you've clicked it once, that is).

But why do you still make all users go through 6 clicks, just to create a link which opens in a new tab?

Particularly, why do we have to click on the link again after creating it before even getting the "edit" option?

Why not display the check box "open in new tab" right away at step 2 as it used to be before 6.3?

So clearly, this issue has not been resolved and shouldn't be closed imho.

Furthermore, the point brought up in #52216 still remains true:

As explained above, it does still take a lot more clicks to insert a link and get it to open in a new tab than previously.

I'm not sure why almost all threads which brought up this issue are closed, even though the issue persists and has only been improved a tiny bit with Gutenberg 16.4, but not really solved?

Thanks guys!

@draganescu
Copy link
Contributor

@EW0JY thanks for the report 👏🏻

I don't think the number of clicks is something more valuable in itself than the overal experience. Reducing visual clutter is also a valuable and it's a complicated process to figure out the trade offs. The aim is to, eventually, make things seamless.

Currently with this PR tho the example you gave would be different, once you did steps 1 to 6 once, for all other links the settings drawer would remain open and the open in new tab be visible, right?

@getdave
Copy link
Contributor

getdave commented Aug 11, 2023

this current thread here is closed

Just noting this is a PR and not an Issue. Therefore when the PR is merged the "thread" is closed.

Myself, @richtabor and other contributors are currently exploring other ways to improve the common use case of Opens in new tab. For example #53531 and #53566

@EW0JY
Copy link

EW0JY commented Aug 11, 2023

@getdave:

Just noting this is a PR and not an Issue. Therefore when the PR is merged the "thread" is closed.

Apologies, I'm not an experienced GitHub user, my mistake. Your explanation makes perfect sense for closing this PR.

Myself, @richtabor and other contributors are currently exploring other ways to improve the common use case of Opens in new tab. For example #53531 and #53566

That's amazing!

In fact, your screen capture here already shows the perfect solution!

As we can see in your screen grab, we would no longer have to click a second time on the link to be able to edit it and in addition to that, the "open in new tab" option is directly accessible from the preview window.

Once the reviewers have confirmed your solution, will it be available through the next Gutenberg plugin update?

Thanks so much!

@elgato91
Copy link

You are changing something that was already good enough, to make it worse. It's incredible!

Anyone working with content writing NEEDS to be able to set at least "no follow" and "open in new window" with just one click. It's absolutely insane that I've to do even just one more click to do this. These two features are very commonly used, given the impact on SEO and UX.

I don't know why you guys are doing this, but it's really nonsense. We, who work with the editor on a daily basis, simply need to be able to enter the url and check the "no follow" and "open in new window" boxes when relevant. And this must be done with lightning speed. We don't need a clean interface if it complicates our work. The number of clicks is crucial, and in doing so you are going in a useless and harmful direction. If you design user experiences, design them for people! The world is full of useless beautiful designs.

@getdave
Copy link
Contributor

getdave commented Aug 11, 2023

Apologies, I'm not an experienced GitHub user, my mistake. Your explanation makes perfect sense for closing this PR.

Absolutely fine. Not intended as a criticism.

Once the reviewers have confirmed your solution, will it be available through the next Gutenberg plugin update?

If contributors are happy with the direction then the next step is to update the test coverage on the PR to ensure the tests provide coverage for the new behaviour. Once done then it will merge into the Gutenberg Plugin can land in the appropriate release. I intend to work on it today and next week but I can't promise exactly which release it will land in.

Once merged, a Milestone will be assigned (see right hand sidebar on the PR) which will allow you to know which release it will land in.

You are changing something that was already good enough, to make it worse. It's incredible!

As noted above, we've noted the feedback and are making changes to accommodate. Please bear in mind that no one is intentionally trying to make things harder but sometimes (despite our best efforts) changes have unintended consequences or impact more widely than we would have anticipated. The nature of the project means we can pivot and make changes in response to constructive feedback. In short - we are listening.

@EW0JY
Copy link

EW0JY commented Aug 11, 2023

If contributors are happy with the direction then the next step is to update the test coverage on the PR to ensure the tests provide coverage for the new behaviour. Once done then it will merge into the Gutenberg Plugin can land in the appropriate release. I intend to work on it today and next week but I can't promise exactly which release it will land in.

Once merged, a Milestone will be assigned (see right hand sidebar on the PR) which will allow you to know which release it will land in.

Awesome, thanks so much for the detailed explanation, Dave, I appreciate it!

Also, no rush, I understand that it needs to be tested thoroughly so if it takes a few days or a week, then that's still pretty timely, which is great.

I'll keep an eye on the milestone, like you suggested, as soon as it becomes available.

I for one am pleasantly surprised that you and the other contributors are so open to feedback and willing to make changes asap where necessary, useful and requested.

Much appreciated!

@richtabor
Copy link
Member

Anyone working with content writing NEEDS to be able to set at least "no follow" and "open in new window" with just one click.

That's subjective. There's always a balance and we're consistently iterating to get closer towards that. #53566 is a step in that direction, along with all the improvements outlined in #50891.

@elgato91
Copy link

As mentioned by others, I also appreciate your openness to feedback, primarily because the choices made here could potentially impact the work of millions. This isn't intended as criticism, but rather a constructive suggestion for the greater good.

That's subjective. There's always a balance and we're consistently iterating to get closer towards that.

@richtabor

Rich, it might be subjective, but the real question is: has anyone ever done a serious user needs analysis? Has anyone ever tried to validate the concept with a significant number of professional users?

I don't think the number of clicks is something more valuable in itself than the overal experience. Reducing visual clutter is also a valuable and it's a complicated process to figure out the trade offs. The aim is to, eventually, make things seamless.

This, too, is deeply subjective and obviously does not stem from any scientifically validated insights. None of us likely have insights from usability testing and A/B testing. However, it's a bit counterintuitive to believe that people prefer to do things with more effort.

Personally, I seriously struggle to understand the "why" of the implementation of this feature. Basically, what could be the benefit of link preview? And which for the field for the anchor text? Does it make sense to be able to create a new blank page while I'm just inserting a link? All of these things are scattered throughout the mockups here and in #50891.

However, perhaps we should ask ourselves whether developing this really helps users, or if for them the speed and ease of completing tasks is what really matters. Perhaps along these lines, doing some serious customer discovery, maybe we might have realized that it would have been more beneficial to direct efforts towards a different aspect. In enhancing the ability to search through posts and pages when attempting to add a link, for example.

From experience, when you're developing something, you shouldn't just talk to the developers, but to the users. Otherwise, you'll end up expending a lot of energy on something that doesn't provide real benefits. The question here, in my humble opinion, isn't about releasing something that's not perfect, but about the stubbornness to persist in searching for a patch in a certain direction, instead of considering the feedback from users who clearly say: let us do things with 1 click.

@TapiwaZvaks
Copy link

@elgato91 sounds like you feel exactly how I am feeling right now. I have just spent hours researching this. Seems there is an insistence on cleaning up the UI that does not take into account ease of use. I spend maybe 8 hours per day working in WordPress and I always want all my links to open in a new tab. It's hard to imagine how that can be bad in the world of SEO. The previous setting before this latest update worked perfectly. Just as there was previously an "i" to the top left of the screen that showed the the header structure of a page, but that's hidden as well. Anyway, that's another issue altogether.

Back to the open links in new tab issue, the entire debate here and elsewhere reminds me of a story that I heard of programmers who were hired to program earthmoving equipment (to use automation instead of humans). The programmers were very good at their work (and much appreciated), but since they had never used earthmoving equipment, they programmed in unnecessarily complex steps. They didn't understand the user environment.

The entire project had to be scrapped and people went back to operating the graders, etc. This change feels as if it was pushed by someone that does not spend even a few minutes inside WordPress creating posts. If you did you would understand the frustration. For us, a clean interface is one that simplifies tasks. Having 6 clicks where there were previously two is very much cluttered. As it is, I may have to revert to creating posts in Microsoft Word and then pasting them to WordPress. That change has added loads of frustration to my work. Sorry if I sound a bit caustic. I had to get that off my chest, it was bugging me for a while...

@getdave
Copy link
Contributor

getdave commented Aug 14, 2023

Thanks to everyone for your feedback. As contributors have noted above, we are listening and making changes in response to feedback.

I appreciate it can be cathartic to express frustration when it appears as though decisions were made in a manner that didn't consider your use case. However, what would really help at this stage in order improve things for everyone is to review and test the PRs that are already open to address the issues noted above. Namely:

As an open source project, WordPress relies on everyone working together to improve the software. Anyone is allowed to submit PRs and regular contributors will always try to be proactive in supporting with code reviews. If folks aren't able to contribute code then it's equally valuable to test PRs and check they are going in the direction that works for you.

We anticipate the Link interface will continue to undergo iterations in the near future, so it would be hugely valuable if you felt able to follow PRs tagged with the associated label and provide feedback on their direction.

Contributors look forward to working with the wider WP community to improve things for everyone.

@elgato91
Copy link

I believe that many of us can readily understand the situation, and the fact that we are commenting here is already symptomatic that we want to help you create something good. In my case, I can contribute some feedback on UX/Interaction Design, but honestly it seems to me that the entire Link UI design is against human-centered design principles, with useless functionality detrimental to the overall user experience. Unfortunately, many of us have only come to realize this now that we've been directly impacted by the issue.

We can also comment on every single attempt to make this new UI better, but I think we should honestly acknowledge that there has been a significant regression from the old Link UI, which was better designed to be easier to use.

We're insisting on cleaning up the interface, hiding the only controls that make sense. But we are also introducing a link preview. Who needs this? What advantages does it bring? Unfortunately, there has been no response on this.

Similarly, we're implementing a text field for modifying the anchor text of a link, which is essentially a redundant function that can already be performed directly within the editor. Once again, we need to consider: Who benefits from this? What purpose does it serve?

Guys, cleaning the interface in this way is a huge misstep. To achieve a purely aesthetic result, we are adding complexity to the interface and introducing unnecessary steps. A multi-level, multi-step interface is more complex. You cannot deny this. Even the choice of introducing advanced controls in the Link UI is flawed from the outset, and increases the general complexity of the WP user experience, because it would be more intuitive to place all the advanced controls in the sidebar, akin to other blocks.

We can continue to give you feedback on your attempts to make it work, but be honest. This new Link UI is poorly designed. It doesn't take into account use cases at all, it highlights a lack of understanding of how WP is used by users and neglects basic principles of UX and ergonomics. It's the sort of outcome one might expect from novices, not from a globally collaborative project like WordPress. We need to approach this situation with honesty and humility and explore alternative paths: either reverting to the previous Link UI or re-design something more human-friendly.

@tellthemachines tellthemachines added the Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release label Aug 15, 2023
@tellthemachines
Copy link
Contributor

I just cherry-picked this PR to the update/bugfixes-6-3-1 branch to get it included in the next release: a3d7887

tellthemachines pushed a commit that referenced this pull request Aug 15, 2023
…f available (#52799)

* Link Control: Create a preference for whether the advanced section is open

* move the useSelect to the component that uses it

* Supply preference setter via settings

* Pass setter to Post Editor

* Provide local state fallbacks in absence of preference store settings

* Conditionalise display of settings drawer to “edit” mode only

* Extract to constant to improve comprehension

* Fix bug in preferences resolution

* Improve comments

* Add e2e scaffold

* Fix e2e test to correctly assert on feature

* Remove focused test

* Reinstate original logic to hide settings when not required

* Scaffold documentation

* Revert providing prefs via settings

* Refactor to use `core/block-editor` as preference scope

* Update docs

* Reinstate remaining original conditional

* tentative fix for the e2e test

* Try a different syntax for shiftAlt

* another attempt to fix the e2e test

---------

Co-authored-by: Dave Smith <getdavemail@gmail.com>
Co-authored-by: MaggieCabrera <maggie.cabrera@automattic.com>
@tellthemachines tellthemachines removed the Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release label Aug 15, 2023
@pb7107
Copy link

pb7107 commented Aug 16, 2023

Just some feedback from a non-dev but a heavy WP user. If someone doesn't use new tab/nofollow/sponsored settings and just pastes links as is, they can do that and simply ignore the settings at the bottom. How does it help users to hide them away? I don't understand that logic. I think in this case, it's pretty clear that these link settings should be easy and quick to access, as they were before 6.3. I'm not seeing any "balance" that needs to be struck here. Just don't bury them behind several additional clicks.

@thewhitedrewcarey
Copy link

I'm 100% on board with what pb7107 mentioned above. I'm no dev, so most of what the smarter people are commenting here is well over my head. But I run a music news website and literally every post we write up has at least one, if not more, external links to a band's preorder, website, link page, etc. We ALWAYS want these links to open in a new tab, and there is very little reason at all to hide these "advanced options" that were there before.

It's not hyperbole for me to say this this is going to be huge PITA.

@TapiwaZvaks
Copy link

@thewhitedrewcarey it's exactly what we have been saying all along. As another heavy user who works on several websites, I always want my links to open in a new tab. As a web user, I also always want the links that I am clicking on to open in a new tab. I don't want to be taken away from what I am reading simply because I have clicked on a referenced article. The situation that was there before 6.3 was perfect. Unfortunately it doesn't seem like there is going back to that. Fortunately something is being done, at least for the new tab issue. But for all the other settings hidden under Advanced? Well... I repeat, the link preview that is being given prominence here does nothing. Maybe it's the one that should be hidden under Advanced.

@thewhitedrewcarey
Copy link

@TapiwaZvaks

I'll say this much: I just updated last night, have been using it last night and today, and I absolutely hate it. I don't know who it serves to remove this functionality, because it 100% was not hurting anyone at all to have these options immediately present when copy paste a link over text.

This is a prime example of a solution looking for a problem.

@elgato91 elgato91 mentioned this pull request Aug 17, 2023
13 tasks
@beixco
Copy link

beixco commented Aug 23, 2023

Noob dev here, but long-time user of WordPress with my team of 10. I created a profile just to comment on this thread. Because everyone's been complaining about this new link feature: Project Managers, Copywriters, and Content Editors. It doesn't make sense to have to click 5 times to simply open a link in a new tab. We've been churning hundreds of posts on a monthly basis, and we feel the pain.

The behavior in the previous WP version was way more user-friendly. And I hope this will be fixed in a coming version.

@draganescu
Copy link
Contributor

Hi @beixco and thank you for participating and offering your perspective. Improving the linking flows is still work in progress and all contribution is informed by helpful replies like yours.

In recent mock-up explorations just one more click is required, but also a global prefference is suggested - so most of the times not even that click is needed.

In the mean time, the original issues that this PR here tried to solved does not exist anymore (the original change where one had to create, click edit, click advanced, click save - is gone: now the advanced section stays open once it was open and also open in new tab is temporarily surfaced to be one click away).

@beixco
Copy link

beixco commented Aug 23, 2023

Thanks for sharing the mock-up explorations @draganescu - and sorry if I posted in the wrong thread, I followed a link from the WordPress forum.

@draganescu
Copy link
Contributor

It's perfectly fine @beixco 🙇🏻

tellthemachines pushed a commit that referenced this pull request Aug 31, 2023
…f available (#52799)

* Link Control: Create a preference for whether the advanced section is open

* move the useSelect to the component that uses it

* Supply preference setter via settings

* Pass setter to Post Editor

* Provide local state fallbacks in absence of preference store settings

* Conditionalise display of settings drawer to “edit” mode only

* Extract to constant to improve comprehension

* Fix bug in preferences resolution

* Improve comments

* Add e2e scaffold

* Fix e2e test to correctly assert on feature

* Remove focused test

* Reinstate original logic to hide settings when not required

* Scaffold documentation

* Revert providing prefs via settings

* Refactor to use `core/block-editor` as preference scope

* Update docs

* Reinstate remaining original conditional

* tentative fix for the e2e test

* Try a different syntax for shiftAlt

* another attempt to fix the e2e test

---------

Co-authored-by: Dave Smith <getdavemail@gmail.com>
Co-authored-by: MaggieCabrera <maggie.cabrera@automattic.com>
tellthemachines added a commit that referenced this pull request Sep 1, 2023
* Update document title buttons radius (#53221)

* Fix: Sync status overlaps for some languages in Patterns post type page (#53243)

* Image block: Fix stretched images constrained by max-width (#53274)

* Fix dragging to resize from stretching image in the frontend

* Add image block v7 deprecation

* Update deprecation comment

* Prevent image losing its aspect ratio at smaller window dimensions

* Revert "Prevent image losing its aspect ratio at smaller window dimensions"

This reverts commit 8ac9f8c.

---------

Co-authored-by: scruffian <ben@scruffian.com>

* Image Block: Don't render `DimensionsTool` if it is not resizable (#53181)

* Fix missing Replace button in content-locked Image blocks (#53410)

* Revert "don't display BlockContextualToolbar at all in contentonly locking (#53110)"

This reverts commit 5efce0e.

* Alternative fix to hide BlockContextualToolbar when there are no controls

* fix the go to for non pages by showing it only for pages (#53408)

* Site Editor: Fix document actions label helper method (#52974)

* Site Editor: Fix document actions label helper method
* Add missing useSelect dep
* Fix e2e tests
* Move the label map at the file level to avoid recreating the object on every render

* Image: Clear aspect ratio when wide aligned (#53439)

* RichText: Remove 'Footnotes' when interactive formatting is disabled (#53474)

Introduce a new 'interactive' setting for format types

* Preserve block style variations when securing theme json (#53466)

* Preserve block style variations when securing theme json

Valid and safe block style variations were being removed by
`WP_Theme_JSON_Gutenberg::remove_insecure_properties` when securing the
theme.json. When this was a problem varied depending upon site
configuration, but out-of-the-box it was a problem for administrators on
multi-site installs.

This change adds explicit processing of variations in
`remove_insecure_properties` so that they won't get removed.

* Add another variation sanitisation test

This test checks that when removing insecure properties an
unknown/unsupported property is removed from the variation.

* Site editor: add missing i18n in `HomeTemplateDetails` (#53543)

* Site editor: add missing i18n in `HomeTemplateDetails`

* Lint fix

* Fix: Snack bar not fixed on certain pages in the Site Editor (#53207)

* Fix document title alignment in command palette button (#53224)

* Fallback to default max viewport if layout wide size is fluid. (#53551)

* Link Control: persist advanced settings toggle state to preferences if available (#52799)

* Link Control: Create a preference for whether the advanced section is open

* move the useSelect to the component that uses it

* Supply preference setter via settings

* Pass setter to Post Editor

* Provide local state fallbacks in absence of preference store settings

* Conditionalise display of settings drawer to “edit” mode only

* Extract to constant to improve comprehension

* Fix bug in preferences resolution

* Improve comments

* Add e2e scaffold

* Fix e2e test to correctly assert on feature

* Remove focused test

* Reinstate original logic to hide settings when not required

* Scaffold documentation

* Revert providing prefs via settings

* Refactor to use `core/block-editor` as preference scope

* Update docs

* Reinstate remaining original conditional

* tentative fix for the e2e test

* Try a different syntax for shiftAlt

* another attempt to fix the e2e test

---------

Co-authored-by: Dave Smith <getdavemail@gmail.com>
Co-authored-by: MaggieCabrera <maggie.cabrera@automattic.com>

* Add tests for fluid layout + typography (#53554)

* Fix support of sticky position in non-iframed post editor (#53540)

* Fix support of sticky position in non-iframed post editor

* Revert "Footnotes: Fix recursion into updating attributes when attributes is not an object (#53257)"

This reverts commit ab04074.

* Fix: indicator style when block moving mode (#53972)

* Fix post editor top toolbar with custom fields in Safari (#53688)

* Set top toolbar size dynamically (#53526)

* fix the top toolbar size in the space remaining after plugin items are pinned

* only resize above the tablet breakpoint

* fix fixed block toolbar collapse button when icon labels are shown

* Update height and scroll behavior

* move the layout effect to the affected component, fixes for fullscreen, no block selected, icon labels height

---------

Co-authored-by: jasmussen <joen@automattic.com>

* Roll back camelCase change in 96b6b1e

---------

Co-authored-by: James Koster <james@jameskoster.co.uk>
Co-authored-by: Aki Hamano <54422211+t-hamano@users.noreply.github.com>
Co-authored-by: Alex Lende <alex+github.com@lende.xyz>
Co-authored-by: scruffian <ben@scruffian.com>
Co-authored-by: Robert Anderson <robert@noisysocks.com>
Co-authored-by: Andrei Draganescu <me@andreidraganescu.info>
Co-authored-by: George Mamadashvili <georgemamadashvili@gmail.com>
Co-authored-by: Dean Sas <dean.sas@automattic.com>
Co-authored-by: Pascal Birchler <pascalb@google.com>
Co-authored-by: Dave Smith <getdavemail@gmail.com>
Co-authored-by: MaggieCabrera <maggie.cabrera@automattic.com>
Co-authored-by: Mitchell Austin <mr.fye@oneandthesame.net>
Co-authored-by: jasmussen <joen@automattic.com>
Co-authored-by: ramon <ramonjd@gmail.com>
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 User Documentation Needs new user documentation [Type] Feature New feature to highlight in changelogs.
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