Sha256: c41883435393ba3e712038a3aa8c9d00783540993776a55a5da2afd4209a5436
Contents?: true
Size: 1.24 KB
Versions: 565
Compression:
Stored size: 1.24 KB
Contents
type HandleClickOutsideType = { inputWrapperRef?: React.RefObject<HTMLDivElement>; dropdownContainerRef?: React.RefObject<HTMLDivElement>; setIsDropDownClosed?: (value: boolean) => void; setFocusedOptionIndex?: (value: number) => void; setIsInputFocused?: (value: boolean) => void; }; export const handleClickOutside = ({ inputWrapperRef, dropdownContainerRef, setIsDropDownClosed, setFocusedOptionIndex, setIsInputFocused, }: HandleClickOutsideType) => (e: MouseEvent) => { let targetElement = e.target as HTMLElement; let shouldClose = true; //Only needed for when useDropdown hook used with external trigger while (targetElement && shouldClose) { if ( targetElement.getAttribute("data-dropdown") === "pb-dropdown-trigger" ) { shouldClose = false; } targetElement = targetElement.parentElement as HTMLElement; } if ( inputWrapperRef.current && !inputWrapperRef.current.contains((e.target as HTMLElement)) && dropdownContainerRef.current && !dropdownContainerRef.current.contains((e.target as HTMLElement)) && shouldClose ) { setIsDropDownClosed(true); setFocusedOptionIndex(-1); setIsInputFocused(false); } };
Version data entries
565 entries across 565 versions & 1 rubygems