refactor: format and lint codebase (#971)

This commit is contained in:
Aman Harwara
2022-04-13 22:02:34 +05:30
committed by GitHub
parent dc9c1ea0fc
commit 8e467f9e6d
367 changed files with 13778 additions and 16093 deletions

View File

@@ -0,0 +1,29 @@
import { useCallback, useEffect } from 'preact/hooks'
export function useCloseOnClickOutside(
container: { current: HTMLDivElement | null },
callback: () => void,
): void {
const closeOnClickOutside = useCallback(
(event: { target: EventTarget | null }) => {
if (!container.current) {
return
}
const isDescendantOfContainer = container.current.contains(event.target as Node)
const isDescendantOfDialog = (event.target as HTMLElement).closest('[role="dialog"]')
if (!isDescendantOfContainer && !isDescendantOfDialog) {
callback()
}
},
[container, callback],
)
useEffect(() => {
document.addEventListener('click', closeOnClickOutside, { capture: true })
return () => {
document.removeEventListener('click', closeOnClickOutside, {
capture: true,
})
}
}, [closeOnClickOutside])
}