useFloatingToolbarSidebarClick.ts23 lines · main
| 1 | import { useCallback } from 'react' |
| 2 | |
| 3 | import { useMobileSheet } from '../NavigationBar/MobileSheetContext' |
| 4 | import { useSidebarManagerSnapshot } from '@/state/sidebar-manager-state' |
| 5 | |
| 6 | export 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 | } |