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 a useFocusReturn hook #27572

Merged
merged 8 commits into from Dec 10, 2020
Merged

Add a useFocusReturn hook #27572

merged 8 commits into from Dec 10, 2020

Conversation

youknowriad
Copy link
Contributor

This implementation is a bit different/simpler compared to the previous withFocusReturn HoC. I'd like to understand where it fails in order to come with the best strategy forward (re add the context or figure out something else)

@github-actions
Copy link

github-actions bot commented Dec 8, 2020

Size Change: -256 B (0%)

Total Size: 1.21 MB

Filename Size Change
build/a11y/index.js 1.14 kB +1 B
build/annotations/index.js 3.81 kB +4 B (0%)
build/api-fetch/index.js 3.42 kB -1 B
build/block-directory/index.js 8.72 kB +2 B (0%)
build/block-editor/index.js 128 kB +2 B (0%)
build/block-library/index.js 149 kB -7 B (0%)
build/block-serialization-default-parser/index.js 1.88 kB -1 B
build/blocks/index.js 48.1 kB +2 B (0%)
build/components/index.js 171 kB -407 B (0%)
build/compose/index.js 10.6 kB +140 B (1%)
build/core-data/index.js 15.4 kB +4 B (0%)
build/data/index.js 8.98 kB +1 B
build/date/index.js 31.8 kB -1 B
build/dom/index.js 4.95 kB +1 B
build/edit-navigation/index.js 11.1 kB -5 B (0%)
build/edit-post/index.js 306 kB -2 B (0%)
build/edit-site/index.js 24.7 kB -6 B (0%)
build/edit-widgets/index.js 26.3 kB -8 B (0%)
build/editor/index.js 43.4 kB +3 B (0%)
build/element/index.js 4.63 kB +6 B (0%)
build/format-library/index.js 6.74 kB -1 B
build/hooks/index.js 2.27 kB +3 B (0%)
build/html-entities/index.js 623 B +1 B
build/is-shallow-equal/index.js 697 B -1 B
build/keycodes/index.js 1.94 kB +1 B
build/list-reusable-blocks/index.js 3.1 kB +2 B (0%)
build/media-utils/index.js 5.32 kB +6 B (0%)
build/nux/index.js 3.42 kB +1 B
build/plugins/index.js 2.54 kB +2 B (0%)
build/priority-queue/index.js 790 B +1 B
build/redux-routine/index.js 2.84 kB +1 B
build/server-side-render/index.js 2.77 kB +1 B
build/url/index.js 2.84 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 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 9.07 kB 0 B
build/block-library/editor.css 9.07 kB 0 B
build/block-library/style-rtl.css 8.35 kB 0 B
build/block-library/style.css 8.35 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-spec-parser/index.js 3.06 kB 0 B
build/components/style-rtl.css 15.4 kB 0 B
build/components/style.css 15.3 kB 0 B
build/data-controls/index.js 827 B 0 B
build/deprecated/index.js 769 B 0 B
build/dom-ready/index.js 571 B 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/style-rtl.css 6.49 kB 0 B
build/edit-post/style.css 6.47 kB 0 B
build/edit-site/style-rtl.css 3.93 kB 0 B
build/edit-site/style.css 3.93 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/style-rtl.css 3.84 kB 0 B
build/editor/style.css 3.84 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/keyboard-shortcuts/index.js 2.54 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/notices/index.js 1.82 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/primitives/index.js 1.43 kB 0 B
build/reusable-blocks/index.js 2.92 kB 0 B
build/rich-text/index.js 13.4 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 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

@youknowriad youknowriad marked this pull request as ready for review December 9, 2020 07:49
@youknowriad youknowriad added the [Type] New API New API to be used by plugin developers or package users. label Dec 9, 2020
Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

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

The issue I raised in #27572 (comment) is fixed now so ✅

I see some test failures in e2e tests, any idea what could happen?

@youknowriad
Copy link
Contributor Author

@gziolo Yes, my fix for the previous issue introduced a new one in the inserter :P now they're both fixed.

@gziolo
Copy link
Member

gziolo commented Dec 10, 2020

Now I see a failing unit test but it's an issue with the test as far as I can tell.

@youknowriad
Copy link
Contributor Author

yes, the event was not firing properly in the test, something related to the test library.

@youknowriad youknowriad merged commit a110765 into master Dec 10, 2020
@youknowriad youknowriad deleted the add/use-focus-return branch December 10, 2020 10:23
@github-actions github-actions bot added this to the Gutenberg 9.6 milestone Dec 10, 2020

// Unmounting the reference
if ( ! newNode && focusedBeforeMount.current ) {
if ( newNode?.ownerDocument ) {
Copy link
Member

Choose a reason for hiding this comment

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

How can newNode.ownerDocument be defined if previously there's a check for ! newNode?

@ellatrix
Copy link
Member

I think there's a problem with the new implementation. The hooks (previously HoC) promises to return focus if a component unmounts, but it seems focus will now also be returned if the node change and focus is outside the component.

@youknowriad
Copy link
Contributor Author

It's intended, the focus must be returned not when the focus unmounts but when the node changes (the previous node unmounts if you want)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] New API New API to be used by plugin developers or package users.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants