|
56 | 56 | </div> |
57 | 57 |
|
58 | 58 | <div |
59 | | - v-if="isMobileMenuOpen" |
| 59 | + v-if="showWebsiteMobileMenu" |
60 | 60 | class="lg:hidden border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900" |
61 | 61 | > |
62 | 62 | <div class="px-2 pt-2 pb-3 space-y-1"> |
@@ -98,24 +98,43 @@ const navLinks: NavLink[] = [ |
98 | 98 | ] |
99 | 99 |
|
100 | 100 | const route = useRoute() |
101 | | -const isMobileMenuOpen = ref(false) |
| 101 | +
|
| 102 | +const injectedMobileMenuOpen = inject<Ref<boolean> | null>('isMobileMenuOpen', null) |
| 103 | +const injectedToggleMobileMenu = inject<(() => void) | null>('toggleMobileMenu', null) |
| 104 | +
|
| 105 | +const localMobileMenuOpen = ref(false) |
| 106 | +const isMobileMenuOpen = injectedMobileMenuOpen ?? localMobileMenuOpen |
102 | 107 |
|
103 | 108 | const isDocsPage = computed(() => route.path.startsWith('/docs')) |
104 | 109 |
|
| 110 | +const showWebsiteMobileMenu = computed(() => isMobileMenuOpen.value && !isDocsPage.value) |
| 111 | +
|
105 | 112 | function isActiveRoute(path: string): boolean { |
106 | 113 | return route.path.startsWith(path) |
107 | 114 | } |
108 | 115 |
|
109 | 116 | function toggleMobileMenu(): void { |
110 | | - isMobileMenuOpen.value = !isMobileMenuOpen.value |
| 117 | + if (injectedToggleMobileMenu) { |
| 118 | + injectedToggleMobileMenu() |
| 119 | + return |
| 120 | + } |
| 121 | +
|
| 122 | + localMobileMenuOpen.value = !localMobileMenuOpen.value |
111 | 123 | } |
112 | 124 |
|
113 | 125 | function closeMobileMenu(): void { |
114 | | - isMobileMenuOpen.value = false |
| 126 | + if (injectedMobileMenuOpen) { |
| 127 | + injectedMobileMenuOpen.value = false |
| 128 | + } |
| 129 | + |
| 130 | + localMobileMenuOpen.value = false |
115 | 131 | } |
116 | 132 |
|
117 | 133 | watch(() => route.path, closeMobileMenu) |
118 | 134 |
|
119 | | -provide('isMobileMenuOpen', isMobileMenuOpen) |
120 | | -provide('toggleMobileMenu', toggleMobileMenu) |
| 135 | +// Only provide if we're using local state (not on docs pages) |
| 136 | +if (!injectedMobileMenuOpen) { |
| 137 | + provide('isMobileMenuOpen', isMobileMenuOpen) |
| 138 | + provide('toggleMobileMenu', toggleMobileMenu) |
| 139 | +} |
121 | 140 | </script> |
0 commit comments