| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							|  |  |  |     <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-08-01 19:24:47 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     <!-- Navigation Menu --> | 
					
						
							| 
									
										
										
										
											2021-09-02 11:24:17 -08:00
										 |  |  |     <template v-if="menu"> | 
					
						
							|  |  |  |       <v-btn v-if="$auth.loggedIn" text @click="$auth.logout()"> | 
					
						
							|  |  |  |         <v-icon left>{{ $globals.icons.logout }}</v-icon> | 
					
						
							|  |  |  |         {{ $t("user.logout") }} | 
					
						
							|  |  |  |       </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> | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							| 
									
										
										
										
											2021-11-08 21:12:13 -09:00
										 |  |  | import { defineComponent, ref } from "@nuxtjs/composition-api"; | 
					
						
							|  |  |  | import RecipeDialogSearch from "~/components/Domain/Recipe/RecipeDialogSearch.vue"; | 
					
						
							| 
									
										
										
										
											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() { | 
					
						
							|  |  |  |     const domSearchDialog = ref(null); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function activateSearch() { | 
					
						
							|  |  |  |       // @ts-ignore
 | 
					
						
							|  |  |  |       domSearchDialog?.value?.open(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       activateSearch, | 
					
						
							|  |  |  |       domSearchDialog, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   mounted() { | 
					
						
							|  |  |  |     document.addEventListener("keyup", this.handleKeyEvent); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   beforeUnmount() { | 
					
						
							|  |  |  |     document.removeEventListener("keyup", this.handleKeyEvent); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   methods: { | 
					
						
							|  |  |  |     handleKeyEvent(e: any) { | 
					
						
							|  |  |  |       if ( | 
					
						
							|  |  |  |         e.key === "/" && | 
					
						
							|  |  |  |         // @ts-ignore
 | 
					
						
							|  |  |  |         !document.activeElement.id.startsWith("input") | 
					
						
							|  |  |  |       ) { | 
					
						
							|  |  |  |         e.preventDefault(); | 
					
						
							|  |  |  |         this.activateSearch(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | </script> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |      |