12345678910111213141516171819202122232425262728293031323334 |
- import * as React from 'react';
- export default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {
- var propsRef = React.useRef(null);
- propsRef.current = {
- open: open,
- triggerOpen: triggerOpen,
- customizedTrigger: customizedTrigger
- };
- React.useEffect(function () {
- function onGlobalMouseDown(event) {
- var _propsRef$current;
- // If trigger is customized, Trigger will take control of popupVisible
- if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {
- return;
- }
- var target = event.target;
- if (target.shadowRoot && event.composed) {
- target = event.composedPath()[0] || target;
- }
- if (propsRef.current.open && elements().filter(function (element) {
- return element;
- }).every(function (element) {
- return !element.contains(target) && element !== target;
- })) {
- // Should trigger close
- propsRef.current.triggerOpen(false);
- }
- }
- window.addEventListener('mousedown', onGlobalMouseDown);
- return function () {
- return window.removeEventListener('mousedown', onGlobalMouseDown);
- };
- }, []);
- }
|