trigger "outside click" behaviour on mousedown (#212)

Fixes: #95
This commit is contained in:
Robin Malfait
2021-01-29 21:47:56 +01:00
committed by GitHub
parent 80402e70e1
commit da179ca72b
4 changed files with 8 additions and 8 deletions
@@ -186,8 +186,8 @@ export function Listbox<
if (!event.defaultPrevented) buttonRef.current?.focus({ preventScroll: true })
}
window.addEventListener('click', handler)
return () => window.removeEventListener('click', handler)
window.addEventListener('mousedown', handler)
return () => window.removeEventListener('mousedown', handler)
}, [listboxState, optionsRef, buttonRef, d, dispatch])
const propsBag = React.useMemo<ListboxRenderPropArg>(
@@ -162,8 +162,8 @@ export function Menu<TTag extends React.ElementType = typeof DEFAULT_MENU_TAG>(
if (!event.defaultPrevented) buttonRef.current?.focus({ preventScroll: true })
}
window.addEventListener('click', handler)
return () => window.removeEventListener('click', handler)
window.addEventListener('mousedown', handler)
return () => window.removeEventListener('mousedown', handler)
}, [menuState, itemsRef, buttonRef, dispatch])
const propsBag = React.useMemo(() => ({ open: menuState === MenuStates.Open }), [menuState])
@@ -171,8 +171,8 @@ export const Listbox = defineComponent({
if (!event.defaultPrevented) buttonRef.value?.focus({ preventScroll: true })
}
window.addEventListener('click', handler)
onUnmounted(() => window.removeEventListener('click', handler))
window.addEventListener('mousedown', handler)
onUnmounted(() => window.removeEventListener('mousedown', handler))
})
// @ts-expect-error Types of property 'dataRef' are incompatible.
@@ -147,8 +147,8 @@ export const Menu = defineComponent({
if (!event.defaultPrevented) buttonRef.value?.focus({ preventScroll: true })
}
window.addEventListener('click', handler)
onUnmounted(() => window.removeEventListener('click', handler))
window.addEventListener('mousedown', handler)
onUnmounted(() => window.removeEventListener('mousedown', handler))
})
// @ts-expect-error Types of property 'dataRef' are incompatible.