| 
									
										
										
										
											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 /> | 
					
						
							|  |  |  |     <router-link to="/"> | 
					
						
							|  |  |  |       <v-btn icon> | 
					
						
							|  |  |  |         <v-icon size="40"> {{ $globals.icons.primary }} </v-icon> | 
					
						
							|  |  |  |       </v-btn> | 
					
						
							|  |  |  |     </router-link> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <div btn class="pl-2"> | 
					
						
							|  |  |  |       <v-toolbar-title style="cursor: pointer" @click="$router.push('/')"> Mealie </v-toolbar-title> | 
					
						
							|  |  |  |     </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" | 
					
						
							|  |  |  |           background-color="primary lighten-1" | 
					
						
							|  |  |  |           color="white" | 
					
						
							|  |  |  |           placeholder="Press '/'" | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |         </v-text-field> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |       <v-btn v-else icon @click="activateSearch"> | 
					
						
							|  |  |  |         <v-icon> {{ $globals.icons.search }}</v-icon> | 
					
						
							|  |  |  |       </v-btn> | 
					
						
							| 
									
										
										
										
											2021-09-02 11:24:17 -08:00
										 |  |  |       <v-btn v-if="$auth.loggedIn" text @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"> | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  | import { defineComponent, onBeforeUnmount, onMounted, ref } 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() { | 
					
						
							| 
									
										
										
										
											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, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | </script> |