UNPKG

@heycar-uikit/core

Version:
50 lines (47 loc) 1.66 kB
import { useRef, useState, useEffect } from 'react'; var CLOSE_TIMEOUT = 300; var useLangList = function () { var timer = useRef(undefined); var _a = useState(undefined), isHovering = _a[0], setIsHovering = _a[1]; var _b = useState(undefined), isFocused = _b[0], setIsFocused = _b[1]; var _c = useState(false), isKeyboardToggle = _c[0], setIsKeyboardToggle = _c[1]; var _d = useState(false), isLangListOpen = _d[0], setIsLangListOpen = _d[1]; useEffect(function () { if (isHovering === false || isFocused === false) { timer.current = setTimeout(function () { setIsLangListOpen(false); }, CLOSE_TIMEOUT); } if (isHovering) { setIsLangListOpen(true); if (timer.current) clearTimeout(timer.current); } if (isFocused && timer.current) { clearTimeout(timer.current); } return function () { if (timer.current) clearTimeout(timer.current); }; }, [isFocused, isHovering]); useEffect(function () { if (timer.current) clearTimeout(timer.current); setIsLangListOpen(isKeyboardToggle); }, [isKeyboardToggle]); var keyboardOpen = function (e) { if (e.code === 'Space') { e.preventDefault(); setIsKeyboardToggle(!isKeyboardToggle); } }; return { isLangListOpen: isLangListOpen, keyboardOpen: keyboardOpen, setIsHovering: setIsHovering, setIsFocused: setIsFocused, setIsLangListOpen: setIsLangListOpen, }; }; export { useLangList };