From f14e1d77d2a5a88219a67360631e8ce2af73e786 Mon Sep 17 00:00:00 2001 From: streamich Date: Tue, 23 Apr 2019 16:34:05 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20support=20click=20away=20?= =?UTF-8?q?on=20iOS,=20allow=20user=20to=20chose=20events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/useClickAway.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/useClickAway.ts b/src/useClickAway.ts index d55bdc6c..b5788863 100644 --- a/src/useClickAway.ts +++ b/src/useClickAway.ts @@ -1,15 +1,25 @@ import { RefObject, useEffect } from 'react'; import { off, on } from './util'; -const useClickAway = (ref: RefObject, onClickAway: (event: KeyboardEvent) => void) => { +const defaultEvents = ['mousedown', 'touchstart']; + +const useClickAway = ( + ref: RefObject, + onClickAway: (event: KeyboardEvent) => void, + events: string[] = defaultEvents +) => { useEffect(() => { const handler = event => { const { current: el } = ref; el && !el.contains(event.target) && onClickAway(event); }; - on(document, 'click', handler); + for (const eventName of events) { + on(document, eventName, handler); + } return () => { - off(document, 'click', handler); + for (const eventName of events) { + off(document, eventName, handler); + } }; }); };