useFloatingToolbarSidebarClick.ts23 lines · main
1import { useCallback } from 'react'
2
3import { useMobileSheet } from '../NavigationBar/MobileSheetContext'
4import { useSidebarManagerSnapshot } from '@/state/sidebar-manager-state'
5
6export function useFloatingToolbarSidebarClick() {
7 const { setContent: setSheetContent } = useMobileSheet()
8 const { activeSidebar, openSidebar } = useSidebarManagerSnapshot()
9
10 return useCallback(
11 (e: React.MouseEvent) => {
12 const target = (e.target as HTMLElement).closest?.('[data-sidebar-id]')
13 const sidebarId = target?.getAttribute('data-sidebar-id')
14 if (sidebarId && activeSidebar?.id !== sidebarId) {
15 e.preventDefault()
16 e.stopPropagation()
17 openSidebar(sidebarId)
18 setSheetContent(sidebarId)
19 }
20 },
21 [activeSidebar?.id, openSidebar, setSheetContent]
22 )
23}