mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 10:13:32 -04:00 
			
		
		
		
	* fix(backend): 🐛 Fix favorite assignment on backend * fix(frontend): 🐛 fix printer button on recipe page * style(frontend): 🚸 add user feadback on copy of recipe link * fix(frontend): 🐛 Fix enableLandscape incorrect bindings to remove duplicate values * feat(frontend): ✨ add ingredient copy button for markdown list -[ ] format * feat(frontend): ✨ add remove prefix button to bulk entry * fix(frontend): 🐛 disable random button when no recipes are present * fix(frontend): ✨ fix .zip download error * fix(frontend): 🚸 close image dialog on upload/get * fix(frontend): 🐛 fix assignment on creation for categories and tags * feat(frontend): ✨ Open editor on creation / fix edit button on main screen * fix(frontend): 🐛 fix false negative regex match for urls on creationg page * feat(frontend): 🚸 provide better user feadback when recipe exists * feat(frontend): ✨ lock bulk importer on submit * remove zip from navigation * fix(frontend): ✨ rerender recipes on delete Co-authored-by: Hayden K <hay-kot@pm.me>
		
			
				
	
	
		
			167 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <div>
 | |
|     <div v-if="recipe" class="container print">
 | |
|       <div>
 | |
|         <h1>
 | |
|           <svg class="icon" viewBox="0 0 24 24">
 | |
|             <path
 | |
|               fill="#E58325"
 | |
|               d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z"
 | |
|             />
 | |
|           </svg>
 | |
|           {{ recipe.name }}
 | |
|         </h1>
 | |
|       </div>
 | |
|       <div class="time-container">
 | |
|         <RecipeTimeCard
 | |
|           :prep-time="recipe.prepTime"
 | |
|           :total-time="recipe.totalTime"
 | |
|           :perform-time="recipe.performTime"
 | |
|         />
 | |
|       </div>
 | |
|       <v-btn
 | |
|         v-if="recipe.recipeYield"
 | |
|         dense
 | |
|         small
 | |
|         :hover="false"
 | |
|         type="label"
 | |
|         :ripple="false"
 | |
|         elevation="0"
 | |
|         color="secondary darken-1"
 | |
|         class="rounded-sm static"
 | |
|       >
 | |
|         {{ recipe.recipeYield }}
 | |
|       </v-btn>
 | |
|       <div>
 | |
|         <VueMarkdown :source="recipe.description"> </VueMarkdown>
 | |
|         <h2>{{ $t("recipe.ingredients") }}</h2>
 | |
|         <ul>
 | |
|           <li v-for="(ingredient, index) in recipe.recipeIngredient" :key="index">
 | |
|             <v-icon>
 | |
|               {{ $globals.icons.checkboxBlankOutline }}
 | |
|             </v-icon>
 | |
|             <p>{{ ingredient.note }}</p>
 | |
|           </li>
 | |
|         </ul>
 | |
|       </div>
 | |
|       <div>
 | |
|         <h2>{{ $t("recipe.instructions") }}</h2>
 | |
|         <div v-for="(step, index) in recipe.recipeInstructions" :key="index">
 | |
|           <h2 v-if="step.title">{{ step.title }}</h2>
 | |
|           <div class="ml-5">
 | |
|             <h3>{{ $t("recipe.step-index", { step: index + 1 }) }}</h3>
 | |
|             <VueMarkdown :source="step.text"> </VueMarkdown>
 | |
|           </div>
 | |
|         </div>
 | |
| 
 | |
|         <br />
 | |
|         <v-divider v-if="recipe.notes.length > 0" class="mb-5 mt-0"></v-divider>
 | |
| 
 | |
|         <div v-for="(note, index) in recipe.notes" :key="index + 'note'">
 | |
|           <h3>{{ note.title }}</h3>
 | |
|           <VueMarkdown :source="note.text"> </VueMarkdown>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
|   </div>
 | |
| </template>
 | |
| 
 | |
| <script lang="ts">
 | |
| import { defineComponent } from "@nuxtjs/composition-api";
 | |
| // @ts-ignore
 | |
| import VueMarkdown from "@adapttive/vue-markdown";
 | |
| import RecipeTimeCard from "~/components/Domain/Recipe/RecipeTimeCard.vue";
 | |
| import { Recipe } from "~/types/api-types/recipe";
 | |
| export default defineComponent({
 | |
|   components: {
 | |
|     RecipeTimeCard,
 | |
|     VueMarkdown,
 | |
|   },
 | |
|   props: {
 | |
|     recipe: {
 | |
|       type: Object as () => Recipe,
 | |
|       required: true,
 | |
|     },
 | |
|   },
 | |
| });
 | |
| </script>
 | |
| 
 | |
| <style>
 | |
| @media print {
 | |
|   body,
 | |
|   html {
 | |
|     margin-top: -40px !important;
 | |
|   }
 | |
| }
 | |
| 
 | |
| h1 {
 | |
|   margin-top: 0 !important;
 | |
|   display: -webkit-box;
 | |
|   display: flex;
 | |
|   font-size: 2rem;
 | |
|   letter-spacing: -0.015625em;
 | |
|   font-weight: 300;
 | |
|   padding: 0;
 | |
| }
 | |
| 
 | |
| h2 {
 | |
|   margin-bottom: 0.25rem;
 | |
| }
 | |
| 
 | |
| h3 {
 | |
|   margin-bottom: 0.25rem;
 | |
| }
 | |
| 
 | |
| ul {
 | |
|   padding-left: 1rem;
 | |
| }
 | |
| 
 | |
| li {
 | |
|   display: -webkit-box;
 | |
|   display: -webkit-flex;
 | |
|   margin-left: 0;
 | |
|   margin-bottom: 0.5rem;
 | |
| }
 | |
| 
 | |
| li p {
 | |
|   margin-left: 0.25rem;
 | |
|   margin-bottom: 0 !important;
 | |
| }
 | |
| 
 | |
| p {
 | |
|   margin: 0;
 | |
|   font-size: 1rem;
 | |
|   letter-spacing: 0.03125em;
 | |
|   font-weight: 400;
 | |
| }
 | |
| 
 | |
| .icon {
 | |
|   margin-top: auto;
 | |
|   margin-bottom: auto;
 | |
|   margin-right: 0.5rem;
 | |
|   height: 3rem;
 | |
|   width: 3rem;
 | |
| }
 | |
| 
 | |
| .time-container {
 | |
|   display: flex;
 | |
|   justify-content: left;
 | |
| }
 | |
| 
 | |
| .time-chip {
 | |
|   border-radius: 0.25rem;
 | |
|   border-color: black;
 | |
|   border: 1px;
 | |
|   border-top: 1px;
 | |
| }
 | |
| 
 | |
| .print {
 | |
|   display: none;
 | |
| }
 | |
| 
 | |
| @media print {
 | |
|   .print {
 | |
|     display: initial;
 | |
|   }
 | |
| }
 | |
| </style> |