| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | <template> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |   <v-app-bar clipped-left dense app color="primary" dark class="d-print-none"> | 
					
						
							|  |  |  |     <slot /> | 
					
						
							| 
									
										
										
										
											2023-09-14 09:01:24 -05:00
										 |  |  |     <router-link :to="routerLink"> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |       <v-btn icon> | 
					
						
							|  |  |  |         <v-icon size="40"> {{ $globals.icons.primary }} </v-icon> | 
					
						
							|  |  |  |       </v-btn> | 
					
						
							|  |  |  |     </router-link> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <div btn class="pl-2"> | 
					
						
							| 
									
										
										
										
											2023-09-14 09:01:24 -05:00
										 |  |  |       <v-toolbar-title style="cursor: pointer" @click="$router.push(routerLink)"> Mealie </v-toolbar-title> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |     </div> | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  |     <RecipeDialogSearch ref="domSearchDialog" /> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     <v-spacer></v-spacer> | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |     <!-- Navigation Menu --> | 
					
						
							| 
									
										
										
										
											2021-09-02 11:24:17 -08:00
										 |  |  |     <template v-if="menu"> | 
					
						
							| 
									
										
										
										
											2021-12-05 11:55:46 -09:00
										 |  |  |       <div v-if="!$vuetify.breakpoint.xs" style="max-width: 500px" @click="activateSearch"> | 
					
						
							|  |  |  |         <v-text-field | 
					
						
							|  |  |  |           readonly | 
					
						
							|  |  |  |           class="mt-6 rounded-xl" | 
					
						
							|  |  |  |           rounded | 
					
						
							|  |  |  |           dark | 
					
						
							|  |  |  |           solo | 
					
						
							|  |  |  |           dense | 
					
						
							|  |  |  |           flat | 
					
						
							|  |  |  |           :prepend-inner-icon="$globals.icons.search" | 
					
						
							| 
									
										
										
										
											2023-08-21 20:41:18 +02:00
										 |  |  |           background-color="primary darken-1" | 
					
						
							| 
									
										
										
										
											2021-12-05 11:55:46 -09:00
										 |  |  |           color="white" | 
					
						
							| 
									
										
										
										
											2022-08-15 23:55:51 +02:00
										 |  |  |           :placeholder="$t('search.search-hint')" | 
					
						
							| 
									
										
										
										
											2021-12-05 11:55:46 -09:00
										 |  |  |         > | 
					
						
							|  |  |  |         </v-text-field> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |       <v-btn v-else icon @click="activateSearch"> | 
					
						
							|  |  |  |         <v-icon> {{ $globals.icons.search }}</v-icon> | 
					
						
							|  |  |  |       </v-btn> | 
					
						
							| 
									
										
										
										
											2023-08-21 20:41:18 +02:00
										 |  |  |       <v-btn v-if="$auth.loggedIn" :text="$vuetify.breakpoint.smAndUp" :icon="$vuetify.breakpoint.xs" @click="$auth.logout()"> | 
					
						
							| 
									
										
										
										
											2022-02-26 14:00:55 -09:00
										 |  |  |         <v-icon :left="$vuetify.breakpoint.smAndUp">{{ $globals.icons.logout }}</v-icon> | 
					
						
							|  |  |  |         {{ $vuetify.breakpoint.smAndUp ? $t("user.logout") : "" }} | 
					
						
							| 
									
										
										
										
											2021-09-02 11:24:17 -08:00
										 |  |  |       </v-btn> | 
					
						
							| 
									
										
										
										
											2021-10-04 20:16:37 -08:00
										 |  |  |       <v-btn v-else text nuxt to="/login"> | 
					
						
							| 
									
										
										
										
											2021-09-02 11:24:17 -08:00
										 |  |  |         <v-icon left>{{ $globals.icons.user }}</v-icon> | 
					
						
							|  |  |  |         {{ $t("user.login") }} | 
					
						
							|  |  |  |       </v-btn> | 
					
						
							|  |  |  |     </template> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |   </v-app-bar> | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | </template> | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | <script lang="ts"> | 
					
						
							| 
									
										
										
										
											2023-09-14 09:01:24 -05:00
										 |  |  | import { computed, defineComponent, onBeforeUnmount, onMounted, ref, useContext, useRoute } from "@nuxtjs/composition-api"; | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  | import RecipeDialogSearch from "~/components/Domain/Recipe/RecipeDialogSearch.vue"; | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | export default defineComponent({ | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  |   components: { RecipeDialogSearch }, | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |   props: { | 
					
						
							|  |  |  |     menu: { | 
					
						
							|  |  |  |       type: Boolean, | 
					
						
							|  |  |  |       default: true, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  |   setup() { | 
					
						
							| 
									
										
										
										
											2023-09-14 09:01:24 -05:00
										 |  |  |     const { $auth } = useContext(); | 
					
						
							|  |  |  |     const route = useRoute(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const loggedIn = computed(() => { | 
					
						
							|  |  |  |       return $auth.loggedIn; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const groupSlug = route.value.params.groupSlug; | 
					
						
							|  |  |  |     const routerLink = !loggedIn.value && groupSlug ? `/explore/recipes/${groupSlug}` : "/" | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |     const domSearchDialog = ref<InstanceType<typeof RecipeDialogSearch> | null>(null); | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function activateSearch() { | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |       domSearchDialog.value?.open(); | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |     function handleKeyEvent(e: KeyboardEvent) { | 
					
						
							|  |  |  |       const activeTag = document.activeElement?.tagName; | 
					
						
							|  |  |  |       if (e.key === "/" && activeTag !== "INPUT" && activeTag !== "TEXTAREA") { | 
					
						
							|  |  |  |         e.preventDefault(); | 
					
						
							|  |  |  |         activateSearch(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     onMounted(() => { | 
					
						
							|  |  |  |       document.addEventListener("keydown", handleKeyEvent); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     onBeforeUnmount(() => { | 
					
						
							|  |  |  |       document.removeEventListener("keydown", handleKeyEvent); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  |     return { | 
					
						
							|  |  |  |       activateSearch, | 
					
						
							|  |  |  |       domSearchDialog, | 
					
						
							| 
									
										
										
										
											2023-09-14 09:01:24 -05:00
										 |  |  |       routerLink, | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | </script> |