@heycar-uikit/core
Version:
The React UI library from HeyCar
36 lines (33 loc) • 1.26 kB
JavaScript
import { useCallback } from 'react';
import { headerClickTracking } from '../constants/Header.constants.js';
const useNavigationItem = (activeNavItem, setActiveNavItem, resetMenuState) => {
const toggleSubNav = useCallback((id, isActive, force) => {
const nextActiveId = force || !isActive ? id : undefined;
setActiveNavItem(nextActiveId);
}, [setActiveNavItem]);
const keyboardOpen = useCallback((e, id, isActive) => {
if (e.code === 'Space') {
e.preventDefault();
toggleSubNav(id, isActive);
}
}, [toggleSubNav]);
const closeSiblings = useCallback((currentId, hasSubNav) => {
if (currentId !== activeNavItem && hasSubNav)
setActiveNavItem(undefined);
}, [activeNavItem, setActiveNavItem]);
const itemOnClick = (track, onClick, closeMenu = true) => {
if (closeMenu && resetMenuState)
resetMenuState();
if (track && typeof track?.fn === 'function')
track.fn({ ...headerClickTracking, ...track.obj });
if (typeof onClick === 'function')
onClick();
};
return {
toggleSubNav,
keyboardOpen,
closeSiblings,
itemOnClick,
};
};
export { useNavigationItem };