revert: "fix: popover closing on delete dialog" (#1030)

This commit is contained in:
Aman Harwara
2022-05-17 23:36:05 +05:30
committed by GitHub
parent 7f12f9349a
commit b3f6888683
2 changed files with 5 additions and 9 deletions

View File

@@ -43,7 +43,7 @@ export const AttachedFilesButton: FunctionComponent<Props> = observer(
const buttonRef = useRef<HTMLButtonElement>(null) const buttonRef = useRef<HTMLButtonElement>(null)
const panelRef = useRef<HTMLDivElement>(null) const panelRef = useRef<HTMLDivElement>(null)
const containerRef = useRef<HTMLDivElement>(null) const containerRef = useRef<HTMLDivElement>(null)
const [closeOnBlur, keepMenuOpen] = useCloseOnBlur(containerRef, setOpen, true) const [closeOnBlur, keepMenuOpen] = useCloseOnBlur(containerRef, setOpen)
useEffect(() => { useEffect(() => {
if (appState.filePreviewModal.isOpen) { if (appState.filePreviewModal.isOpen) {

View File

@@ -8,20 +8,16 @@ import { StateUpdater, useCallback, useState } from 'preact/hooks'
export function useCloseOnBlur( export function useCloseOnBlur(
container: { current?: HTMLDivElement | null }, container: { current?: HTMLDivElement | null },
setOpen: (open: boolean) => void, setOpen: (open: boolean) => void,
keepOpenOnDialogs = false,
): [(event: { relatedTarget: EventTarget | null }) => void, StateUpdater<boolean>] { ): [(event: { relatedTarget: EventTarget | null }) => void, StateUpdater<boolean>] {
const [locked, setLocked] = useState(false) const [locked, setLocked] = useState(false)
return [ return [
useCallback( useCallback(
function onBlur(event: { relatedTarget: EventTarget | null }) { function onBlur(event: { relatedTarget: EventTarget | null }) {
setTimeout(() => { if (!locked && !container.current?.contains(event.relatedTarget as Node)) {
const keepOpen = keepOpenOnDialogs && document.activeElement?.closest('[role="dialog"], .sk-modal') setOpen(false)
if (!keepOpen && !locked && !container.current?.contains(event.relatedTarget as Node)) { }
setOpen(false)
}
})
}, },
[keepOpenOnDialogs, locked, container, setOpen], [container, setOpen, locked],
), ),
setLocked, setLocked,
] ]