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

fix(useActiveElement): ignore blur for relatedTarget #2540

Conversation

dpschen
Copy link
Contributor

@dpschen dpschen commented Dec 13, 2022

Description

If a blur event has a relatedTarget that element will receive focus. For the short time between blur and focus the document.activeElement will be the body element. By ignoring the blur event here we simply wait for the computedWithControl to be triggered by the focus event that will follow as we know. By then the new element will have focus.

By doing this we prevent e.g. that stuff will be triggered that depends on the activeElement being inside a specific element. E.g. useFocusWithin will profit from this, since the focus will not be reset to <body> in between.

Additional context


What is the purpose of this pull request?

  • Bug fix
  • New Feature
  • Documentation update
  • Other

Before submitting the PR, please make sure you do the following

  • Read the Contributing Guidelines.
  • Read the Pull Request Guidelines.
  • Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
  • Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
  • Ideally, include relevant tests that fail without this PR but pass with it.

If a blur event has a `relatedTarget` that element will receive focus.
For the short time between blur and focus the `document.activeElement` will be the body element.
By ignoring the blur event here we simply wait for the computedWithControl to be triggered by the focus event that will follow as we know. By then the new element will have focus.

By doing this we prevent e.g. that stuff will be triggered that depends on the activeElement being inside a specific element.
E.g. `useFocusWithin` will profit from this, since the focus will not be reset to `<body>` in between.
@dpschen dpschen force-pushed the feature/useActiveElement-ignore-blur-for-relatedTarget branch from aeacc6b to 850efa3 Compare December 13, 2022 17:34
@antfu antfu merged commit 88b4419 into vueuse:main Dec 16, 2022
@AnnaYuS AnnaYuS mentioned this pull request Dec 21, 2022
7 tasks
@dpschen dpschen deleted the feature/useActiveElement-ignore-blur-for-relatedTarget branch February 1, 2023 13:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants