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

feat(useElementVisibility): support watch the real element #2169

Merged
merged 4 commits into from Sep 5, 2022

Conversation

sxzz
Copy link
Member

@sxzz sxzz commented Sep 4, 2022

relate #2160

Description

Cannot get the real HTMLElement, we should use unrefElement.

Also, if element is changed, it should also be updated.

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.

@sxzz sxzz requested a review from antfu September 4, 2022 18:35
songjianet
songjianet previously approved these changes Sep 5, 2022
Copy link

@songjianet songjianet left a comment

Choose a reason for hiding this comment

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

LGTM

@mymx2
Copy link
Contributor

mymx2 commented Sep 5, 2022

also remove (el as HTMLElement)
const rect = (el as HTMLElement).getBoundingClientRect()
to
const rect = el.getBoundingClientRect()

@mymx2
Copy link
Contributor

mymx2 commented Sep 5, 2022

and what if use watch instead of tryOnMounted. also Considering use v-if both on the Vue component instance and component.

const el = resolveUnref(element)
if (!el) {
  elementIsVisible.value = false
}

el instanceof Element

const el = unrefElement(element)
if (!el || !(el instanceof Element)) {
  elementIsVisible.value = false
}

@sxzz
Copy link
Member Author

sxzz commented Sep 5, 2022

@mymx2 MaybeComputedElementRef it must be a Element, so I think we needn't have repeat judgement in runtime code.

@sxzz sxzz requested a review from antfu September 5, 2022 08:40
@antfu antfu changed the title fix(useElementVisibility): watch the real element feat(useElementVisibility): support watch the real element Sep 5, 2022
@antfu antfu merged commit de5a9c3 into main Sep 5, 2022
@antfu antfu deleted the fix/useElementVisibility branch September 5, 2022 13:24
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

4 participants