import { useGlobal } from '@/lib/global' import throttle from 'lodash.throttle' import Link from 'next/link' import { useEffect, useRef, useState } from 'react' import CategoryGroup from './CategoryGroup' import Collapse from './Collapse' import Logo from './Logo' import SearchDrawer from './SearchDrawer' import TagGroups from './TagGroups' import CONFIG_HEXO from '../config_hexo' import MenuButtonGroupTop from './MenuButtonGroupTop' import MenuList from './MenuList' let windowTop = 0 /** * 顶部导航 * @param {*} param0 * @returns */ const TopNav = props => { const { tags, currentTag, categories, currentCategory } = props const { locale } = useGlobal() const searchDrawer = useRef() const scrollTrigger = throttle(() => { const scrollS = window.scrollY const nav = document.querySelector('#sticky-nav') const header = document.querySelector('#header') const showNav = scrollS <= windowTop || scrollS < 5 || (header && scrollS <= header.clientHeight)// 非首页无大图时影藏顶部 滚动条置顶时隐藏 if (!showNav) { nav && nav.classList.replace('top-0', '-top-20') windowTop = scrollS } else { nav && nav.classList.replace('-top-20', 'top-0') windowTop = scrollS } }, 200) // 监听滚动 useEffect(() => { if (CONFIG_HEXO.NAV_TYPE === 'autoCollapse') { // scrollTrigger() window.addEventListener('scroll', scrollTrigger) } return () => { CONFIG_HEXO.NAV_TYPE === 'autoCollapse' && window.removeEventListener('scroll', scrollTrigger) } }, []) const [isOpen, changeShow] = useState(false) const toggleMenuOpen = () => { changeShow(!isOpen) } const searchDrawerSlot = <> { categories && (
{locale.COMMON.CATEGORY}
{locale.COMMON.MORE}
) } { tags && (
{locale.COMMON.TAGS}
{locale.COMMON.MORE}
) } return (
{/* 导航栏 */}
) } export default TopNav