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

Buttons block: Change position of the link popover #27408

Merged
merged 1 commit into from Dec 16, 2020

Conversation

Copy link
Member

@david-szabo97 david-szabo97 commented Dec 1, 2020

Description

Link popover in the Buttons block opens up in the bottom center relative to the Buttons block. It feels strange that it pops up so far from the button we are editing. To improve, this PR changes the position of the toolbar to be relative to the button component.

Alternatively, we could make it relative to the toolbar button (link button). So it appears right below the link toggle. Though I prefer the one above because we can see the text of the button that way.

How has this been tested?

  • Open block editor
  • Add Buttons block
  • Type some text for the button
  • Click on the Link icon in the toolbar
  • Link popover should open below the button rather than the center of the Buttons block
  • Keep adding more buttons and make sure the popover opens below the button component each time

Screenshots

before

after

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

@github-actions
Copy link

@github-actions github-actions bot commented Dec 1, 2020

Size Change: +32 B (0%)

Total Size: 1.19 MB

Filename Size Change
build/block-library/index.js 148 kB +32 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.8 kB 0 B
build/api-fetch/index.js 3.42 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/index.js 8.72 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 128 kB 0 B
build/block-editor/style-rtl.css 11.2 kB 0 B
build/block-editor/style.css 11.2 kB 0 B
build/block-library/editor-rtl.css 8.86 kB 0 B
build/block-library/editor.css 8.87 kB 0 B
build/block-library/style-rtl.css 8.27 kB 0 B
build/block-library/style.css 8.27 kB 0 B
build/block-library/theme-rtl.css 789 B 0 B
build/block-library/theme.css 790 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/components/index.js 172 kB 0 B
build/components/style-rtl.css 15.3 kB 0 B
build/components/style.css 15.3 kB 0 B
build/compose/index.js 9.95 kB 0 B
build/core-data/index.js 14.8 kB 0 B
build/data-controls/index.js 827 B 0 B
build/data/index.js 8.98 kB 0 B
build/date/index.js 11.2 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.95 kB 0 B
build/edit-navigation/index.js 11.1 kB 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.42 kB 0 B
build/edit-post/style.css 6.4 kB 0 B
build/edit-site/index.js 24.1 kB 0 B
build/edit-site/style-rtl.css 4.06 kB 0 B
build/edit-site/style.css 4.06 kB 0 B
build/edit-widgets/index.js 26.3 kB 0 B
build/edit-widgets/style-rtl.css 3.13 kB 0 B
build/edit-widgets/style.css 3.13 kB 0 B
build/editor/editor-styles-rtl.css 476 B 0 B
build/editor/editor-styles.css 478 B 0 B
build/editor/index.js 43.3 kB 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.85 kB 0 B
build/element/index.js 4.63 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.86 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.27 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 698 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.1 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.82 kB 0 B
build/nux/index.js 3.42 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.43 kB 0 B
build/priority-queue/index.js 791 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 2.92 kB 0 B
build/rich-text/index.js 13.4 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 2.84 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

@talldan
Copy link
Contributor

@talldan talldan commented Dec 2, 2020

Link popover in the Buttons block opens up in the bottom center relative to the Buttons block. It feels strange that it pops up so far from the button we are editing. To improve, this PR changes the position of the toolbar to be relative to the button component.

Good catch. Looking back at the history, I think this is an unexpected consequence of other changes made to the block. Popovers by default anchor to their parent element, and the component used to be inside the wrapping div. At some point the div was removed, so that was no longer the case. Then when the div was added back due to a back-compat issue, it looks like the popover was left outside of the div.

The anchor ref is at least a more explicit way that would avoid that happening in future, so I think this is a good option.

Looks like there are CI tests failing for some reason. Looks quite unusual, each check had the tests run twice. Might be worth rebasing and force pushing to see if that clears the failed tests.

@david-szabo97 david-szabo97 force-pushed the fix/button-link-popover-position branch from 9a2eb5b to 174ae97 Compare Dec 2, 2020
@skorasaurus
Copy link
Member

@skorasaurus skorasaurus commented Dec 2, 2020

If I recall correctly, there was an issue (later fixed) where the link popover (when it was not centered) was appearing off of the screen, particularly on small screens.

did you check whether your change would work on small screens (<600px width)?

@david-szabo97
Copy link
Member Author

@david-szabo97 david-szabo97 commented Dec 3, 2020

If I recall correctly, there was an issue (later fixed) where the link popover (when it was not centered) was appearing off of the screen, particularly on small screens.

did you check whether your change would work on small screens (<600px width)?

Yep! It works fine! Popover repositions itself if it can't position itself to the specified anchor. If it can't fit below the button then it positions itself above the button. Though we might think about anchoring the link popover to the toolbar 🤔
image

It would look better here on small screens:
image

What do you think?

@skorasaurus
Copy link
Member

@skorasaurus skorasaurus commented Dec 3, 2020

FYI, this is the issue that I was referring to #20146

@talldan
Copy link
Contributor

@talldan talldan commented Dec 4, 2020

Hmm, I'm still noticing that the popover is offscreen on small screens (testing in Firefox/Chrome dev tools using the mobile presets):
Screenshot 2020-12-04 at 1 41 50 pm

There's also a bit of thrashing where it looks like the popover continually tries to reposition itself.

@talldan
Copy link
Contributor

@talldan talldan commented Dec 4, 2020

Related #24592, #24532.

@david-szabo97
Copy link
Member Author

@david-szabo97 david-szabo97 commented Dec 4, 2020

@skorasaurus @talldan Gotcha! Thanks for the links, now I understand what you were referring to. On the other hand, those are different issues totally unrelated to this change. So I don't think those should be a blocker for this PR. Since the issue linked above is affecting both the master and this PR.

I don't see any PRs for those issues though, so I might take a look at them next week.

Copy link
Contributor

@talldan talldan left a comment

Lets get this in now that the popover flickering issues are solved. Thanks for working on both things!

@talldan talldan merged commit 373affc into master Dec 16, 2020
16 checks passed
@talldan talldan deleted the fix/button-link-popover-position branch Dec 16, 2020
@github-actions github-actions bot added this to the Gutenberg 9.6 milestone Dec 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Buttons [Type] Enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants