| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <v-container | 
					
						
							|  |  |  |     v-if="recipe" | 
					
						
							|  |  |  |     :class="{ | 
					
						
							|  |  |  |       'pa-0': $vuetify.breakpoint.smAndDown, | 
					
						
							|  |  |  |     }" | 
					
						
							|  |  |  |   > | 
					
						
							|  |  |  |     <v-card-title> | 
					
						
							|  |  |  |       <h1 class="headline">{{ recipe.name }}</h1> | 
					
						
							|  |  |  |     </v-card-title> | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  |     <v-stepper v-model="activeStep" flat> | 
					
						
							|  |  |  |       <v-toolbar class="ma-1 elevation-2 rounded"> | 
					
						
							|  |  |  |         <v-toolbar-title class="headline"> | 
					
						
							|  |  |  |           Step {{ activeStep }} of {{ recipe.recipeInstructions.length }}</v-toolbar-title | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |       </v-toolbar> | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  |       <div class="d-flex mt-3 px-2"> | 
					
						
							|  |  |  |         <BaseButton color="primary" @click="$router.go(-1)"> | 
					
						
							|  |  |  |           <template #icon> {{ $globals.icons.arrowLeftBold }}</template> | 
					
						
							|  |  |  |           To Recipe | 
					
						
							|  |  |  |         </BaseButton> | 
					
						
							|  |  |  |         <v-btn rounded icon color="primary" class="ml-auto" small @click="scale > 1 ? scale-- : null"> | 
					
						
							|  |  |  |           <v-icon> | 
					
						
							|  |  |  |             {{ $globals.icons.minus }} | 
					
						
							|  |  |  |           </v-icon> | 
					
						
							|  |  |  |         </v-btn> | 
					
						
							|  |  |  |         <v-btn rounded color="primary" small> Scale: {{ scale }} </v-btn> | 
					
						
							|  |  |  |         <v-btn rounded icon color="primary" small @click="scale++"> | 
					
						
							|  |  |  |           <v-icon> | 
					
						
							|  |  |  |             {{ $globals.icons.createAlt }} | 
					
						
							|  |  |  |           </v-icon> | 
					
						
							|  |  |  |         </v-btn> | 
					
						
							|  |  |  |       </div> | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  |       <v-stepper-items> | 
					
						
							|  |  |  |         <template v-for="(step, index) in recipe.recipeInstructions"> | 
					
						
							|  |  |  |           <v-stepper-content :key="index + 1 + '-content'" :step="index + 1" class="pa-0 mt-2 elevation-0"> | 
					
						
							|  |  |  |             <v-card class="ma-2"> | 
					
						
							|  |  |  |               <v-card-text> | 
					
						
							|  |  |  |                 <h2 class="mb-4">{{ $t("recipe.instructions") }}</h2> | 
					
						
							|  |  |  |                 <VueMarkdown :source="step.text"> </VueMarkdown> | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  |                 <template v-if="step.ingredientReferences.length > 0"> | 
					
						
							|  |  |  |                   <v-divider></v-divider> | 
					
						
							|  |  |  |                   <div> | 
					
						
							|  |  |  |                     <h2 class="mb-4 mt-4">{{ $t("recipe.ingredients") }}</h2> | 
					
						
							|  |  |  |                     <div | 
					
						
							|  |  |  |                       v-for="ing in step.ingredientReferences" | 
					
						
							|  |  |  |                       :key="ing.referenceId" | 
					
						
							|  |  |  |                       v-html="getIngredientByRefId(ing.referenceId)" | 
					
						
							|  |  |  |                     ></div> | 
					
						
							|  |  |  |                   </div> | 
					
						
							|  |  |  |                 </template> | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  |               </v-card-text> | 
					
						
							|  |  |  |             </v-card> | 
					
						
							|  |  |  |             <v-card-actions class="justify-center"> | 
					
						
							|  |  |  |               <BaseButton color="primary" :disabled="index == 0" @click="activeStep = activeStep - 1"> | 
					
						
							|  |  |  |                 <template #icon> {{ $globals.icons.arrowLeftBold }}</template> | 
					
						
							|  |  |  |                 Back | 
					
						
							|  |  |  |               </BaseButton> | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  |               <BaseButton | 
					
						
							|  |  |  |                 icon-right | 
					
						
							|  |  |  |                 :disabled="index + 1 == recipe.recipeInstructions.length" | 
					
						
							|  |  |  |                 color="primary" | 
					
						
							|  |  |  |                 @click="activeStep = activeStep + 1" | 
					
						
							|  |  |  |               > | 
					
						
							|  |  |  |                 <template #icon> {{ $globals.icons.arrowRightBold }}</template> | 
					
						
							|  |  |  |                 Next | 
					
						
							|  |  |  |               </BaseButton> | 
					
						
							|  |  |  |             </v-card-actions> | 
					
						
							|  |  |  |           </v-stepper-content> | 
					
						
							|  |  |  |         </template> | 
					
						
							|  |  |  |       </v-stepper-items> | 
					
						
							|  |  |  |     </v-stepper> | 
					
						
							|  |  |  |   </v-container> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							|  |  |  | import { defineComponent, useRoute, ref } from "@nuxtjs/composition-api"; | 
					
						
							|  |  |  | // @ts-ignore
 | 
					
						
							|  |  |  | import VueMarkdown from "@adapttive/vue-markdown"; | 
					
						
							|  |  |  | import { useStaticRoutes } from "~/composables/api"; | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  | import { parseIngredientText, useRecipe } from "~/composables/recipes"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  | export default defineComponent({ | 
					
						
							|  |  |  |   components: { VueMarkdown }, | 
					
						
							|  |  |  |   setup() { | 
					
						
							|  |  |  |     const route = useRoute(); | 
					
						
							|  |  |  |     const slug = route.value.params.slug; | 
					
						
							|  |  |  |     const activeStep = ref(1); | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  |     const scale = ref(1); | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  |     const { recipe } = useRecipe(slug); | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     const { recipeImage } = useStaticRoutes(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |     function getIngredientByRefId(refId: string) { | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  |       if (!recipe.value) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |       const ing = recipe?.value.recipeIngredient?.find((ing) => ing.referenceId === refId) || ""; | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  |       if (ing === "") { | 
					
						
							|  |  |  |         return ""; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return parseIngredientText(ing, recipe?.value?.settings?.disableAmount || false, scale.value); | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							| 
									
										
										
										
											2021-11-06 11:28:47 -08:00
										 |  |  |       scale, | 
					
						
							| 
									
										
										
										
											2021-11-05 15:48:10 -08:00
										 |  |  |       getIngredientByRefId, | 
					
						
							|  |  |  |       activeStep, | 
					
						
							|  |  |  |       slug, | 
					
						
							|  |  |  |       recipe, | 
					
						
							|  |  |  |       recipeImage, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> |