UNPKG

@ccs-design/rc-pro

Version:

ccs design basic react component

36 lines (30 loc) 1.15 kB
import React, { useRef } from 'react'; function useTrigger(elements, open, triggerOpen) { var propsRef = useRef(null); propsRef.current = { open: open, triggerOpen: triggerOpen }; React.useEffect(function () { function onGlobalMouseDown(event) { var _propsRef$current; var target = event.target; if (target.shadowRoot && event.composed) { target = event.composedPath()[0] || target; } if ((propsRef === null || propsRef === void 0 ? void 0 : (_propsRef$current = propsRef.current) === null || _propsRef$current === void 0 ? void 0 : _propsRef$current.open) && elements().filter(function (element) { return element; }).every(function (element) { return !(element === null || element === void 0 ? void 0 : element.contains(target)) && element !== target; })) { // Should trigger close propsRef.current.triggerOpen(false); } } window.addEventListener('mousedown', onGlobalMouseDown); return function () { return window.removeEventListener('mousedown', onGlobalMouseDown); }; }, []); } export default useTrigger;