@heycar-uikit/core
Version:
The React UI library from HeyCar
52 lines (48 loc) • 1.76 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var CLOSE_TIMEOUT = 300;
var useLangList = function () {
var timer = React.useRef(undefined);
var _a = React.useState(undefined), isHovering = _a[0], setIsHovering = _a[1];
var _b = React.useState(undefined), isFocused = _b[0], setIsFocused = _b[1];
var _c = React.useState(false), isKeyboardToggle = _c[0], setIsKeyboardToggle = _c[1];
var _d = React.useState(false), isLangListOpen = _d[0], setIsLangListOpen = _d[1];
React.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]);
React.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,
};
};
exports.useLangList = useLangList;