| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import { useRouter } from 'next/router'
- import { useCallback } from 'react'
- import { useMobileSheet } from '../NavigationBar/MobileSheetContext'
- import { isMenuContent, shouldShowMenuButton } from './FloatingMobileToolbar.utils'
- import { useSidebarManagerSnapshot } from '@/state/sidebar-manager-state'
- export function useFloatingToolbarSheet(hideMobileMenu?: boolean) {
- const router = useRouter()
- const pathname = router.asPath?.split('?')[0] ?? router.pathname
- const { content: sheetContent, setContent: setSheetContent, openMenu } = useMobileSheet()
- const { clearActiveSidebar, closeActive, activeSidebar } = useSidebarManagerSnapshot()
- const isSheetOpen = sheetContent !== null
- const isMenuOpen = isMenuContent(sheetContent)
- const isSearchOpen = sheetContent === 'search'
- const showMenuButton = shouldShowMenuButton(pathname) && !hideMobileMenu
- const handleMenuClick = useCallback(() => {
- if (isMenuOpen) {
- clearActiveSidebar()
- setSheetContent(null)
- return
- }
- clearActiveSidebar()
- openMenu()
- }, [isMenuOpen, clearActiveSidebar, openMenu, setSheetContent])
- const handleClose = useCallback(() => {
- if (activeSidebar) {
- closeActive()
- } else {
- setSheetContent(null)
- }
- }, [activeSidebar, closeActive, setSheetContent])
- const handleSearchClick = useCallback(() => {
- if (isSearchOpen) {
- clearActiveSidebar()
- setSheetContent(null)
- return
- }
- clearActiveSidebar()
- setSheetContent('search')
- }, [isSearchOpen, clearActiveSidebar, setSheetContent])
- return {
- isSheetOpen,
- isMenuOpen,
- isSearchOpen,
- showMenuButton,
- handleMenuClick,
- handleClose,
- handleSearchClick,
- }
- }
|