useOrgMenuNavigation.ts 1023 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use client'
  2. import { useCallback, useState } from 'react'
  3. import { getOrgMenuComponent } from './mobileOrgMenuRegistry'
  4. import type { OrgNavItem } from './OrgMenuContent.utils'
  5. export function orgItemHasSubmenu(item: OrgNavItem): boolean {
  6. return getOrgMenuComponent(item.key) !== null
  7. }
  8. interface UseOrgMenuNavigationParams {
  9. initialSectionKey: string | null
  10. }
  11. export function useOrgMenuNavigation({ initialSectionKey }: UseOrgMenuNavigationParams) {
  12. const [viewLevel, setViewLevel] = useState<'top' | 'section'>(
  13. initialSectionKey ? 'section' : 'top'
  14. )
  15. const [selectedSectionKey, setSelectedSectionKey] = useState<string | null>(initialSectionKey)
  16. const handleSubmenuClick = useCallback((item: OrgNavItem) => {
  17. setSelectedSectionKey(item.key)
  18. setViewLevel('section')
  19. }, [])
  20. const handleBackToTop = useCallback(() => {
  21. setViewLevel('top')
  22. setSelectedSectionKey(null)
  23. }, [])
  24. return {
  25. viewLevel,
  26. selectedSectionKey,
  27. handleSubmenuClick,
  28. handleBackToTop,
  29. }
  30. }