Skip to content

Add a useFocusReturn hook#27572

Merged
youknowriad merged 8 commits into
masterfrom
add/use-focus-return
Dec 10, 2020
Merged

Add a useFocusReturn hook#27572
youknowriad merged 8 commits into
masterfrom
add/use-focus-return

Conversation

@youknowriad

Copy link
Copy Markdown
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

github-actions Bot commented Dec 8, 2020

Copy link
Copy Markdown

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

@gziolo gziolo left a comment

Copy link
Copy Markdown
Member

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
Copy Markdown
Contributor Author

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

@gziolo

gziolo commented Dec 10, 2020

Copy link
Copy Markdown
Member

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

@youknowriad

Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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.

3 participants