useFloatingToolbarSidebarClick.ts 810 B

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