Fix useOutsideClick, add improvements for ShadowDOM (#1914)

* Fix `useOutsideClick` not closing when clicking in ShadowDOM

https://github.com/tailwindlabs/headlessui/pull/1876#issuecomment-1264742366

* use `getRootNode` in `useOutsideClick` for Vue

* update changelog

* run prettier

Co-authored-by: Theodore Messinezis <7229472+theomessin@users.noreply.github.com>
This commit is contained in:
Robin Malfait
2022-10-10 17:02:51 +02:00
committed by GitHub
parent 1127a55a76
commit 0e147a0c75
4 changed files with 4 additions and 2 deletions
+1
View File
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix `<Popover.Button as={Fragment} />` crash ([#1889](https://github.com/tailwindlabs/headlessui/pull/1889))
- Expose `close` function for `Menu` and `Menu.Item` components ([#1897](https://github.com/tailwindlabs/headlessui/pull/1897))
- Fix `useOutsideClick`, add improvements for ShadowDOM ([#1914](https://github.com/tailwindlabs/headlessui/pull/1914))
### Added
@@ -60,7 +60,7 @@ export function useOutsideClick(
}
// Ignore if the target doesn't exist in the DOM anymore
if (!target.ownerDocument.documentElement.contains(target)) return
if (!target.getRootNode().contains(target)) return
// Ignore if the target exists in one of the containers
for (let container of _containers) {
+1
View File
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Expose `close` function for `Menu` and `MenuItem` components ([#1897](https://github.com/tailwindlabs/headlessui/pull/1897))
- Fix `useOutsideClick`, add improvements for ShadowDOM ([#1914](https://github.com/tailwindlabs/headlessui/pull/1914))
## [1.7.3] - 2022-09-30
@@ -30,7 +30,7 @@ export function useOutsideClick(
}
// Ignore if the target doesn't exist in the DOM anymore
if (!target.ownerDocument.documentElement.contains(target)) return
if (!target.getRootNode().contains(target)) return
let _containers = (function resolve(containers): ContainerCollection {
if (typeof containers === 'function') {