| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  | <template v-if="showCards"> | 
					
						
							|  |  |  |   <div class="text-center"> | 
					
						
							|  |  |  |     <!-- Total Time --> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     <div | 
					
						
							|  |  |  |       v-if="validateTotalTime" | 
					
						
							|  |  |  |       class="time-card-flex mx-auto" | 
					
						
							|  |  |  |     > | 
					
						
							|  |  |  |       <v-row | 
					
						
							|  |  |  |         no-gutters | 
					
						
							|  |  |  |         class="d-flex flex-no-wrap align-center" | 
					
						
							|  |  |  |         :style="fontSize" | 
					
						
							|  |  |  |       > | 
					
						
							|  |  |  |         <v-icon | 
					
						
							|  |  |  |           :x-large="!small" | 
					
						
							|  |  |  |           start | 
					
						
							|  |  |  |           color="primary" | 
					
						
							|  |  |  |         > | 
					
						
							| 
									
										
										
										
											2024-11-20 08:46:27 -06:00
										 |  |  |           {{ $globals.icons.clockOutline }} | 
					
						
							|  |  |  |         </v-icon> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         <p class="my-0"> | 
					
						
							|  |  |  |           <span class="font-weight-bold opacity-80">{{ validateTotalTime.name }}</span><br>{{ validateTotalTime.value }} | 
					
						
							|  |  |  |         </p> | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |       </v-row> | 
					
						
							|  |  |  |     </div> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     <v-divider | 
					
						
							|  |  |  |       v-if="validateTotalTime && (validatePrepTime || validatePerformTime)" | 
					
						
							|  |  |  |       class="my-2" | 
					
						
							|  |  |  |     /> | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |     <!-- Prep Time & Perform Time --> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     <div | 
					
						
							|  |  |  |       v-if="validatePrepTime || validatePerformTime" | 
					
						
							|  |  |  |       class="time-card-flex mx-auto" | 
					
						
							|  |  |  |     > | 
					
						
							| 
									
										
										
										
											2025-02-27 14:48:29 +01:00
										 |  |  |       <v-row | 
					
						
							|  |  |  |         no-gutters | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         class="d-flex justify-center align-center" | 
					
						
							|  |  |  |         :class="{ 'flex-column': $vuetify.display.smAndDown }" | 
					
						
							|  |  |  |         style="width: 100%;" | 
					
						
							|  |  |  |         :style="fontSize" | 
					
						
							| 
									
										
										
										
											2025-02-27 14:48:29 +01:00
										 |  |  |       > | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         <div | 
					
						
							|  |  |  |           v-if="validatePrepTime" | 
					
						
							|  |  |  |           class="d-flex flex-no-wrap my-1 align-center" | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           <v-icon | 
					
						
							|  |  |  |             :size="small ? 'small' : 'large'" | 
					
						
							|  |  |  |             left | 
					
						
							|  |  |  |             color="primary" | 
					
						
							|  |  |  |           > | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |             {{ $globals.icons.knfife }} | 
					
						
							|  |  |  |           </v-icon> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           <p class="my-0"> | 
					
						
							|  |  |  |             <span class="font-weight-bold opacity-80">{{ validatePrepTime.name }}</span><br>{{ validatePrepTime.value }} | 
					
						
							|  |  |  |           </p> | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |         </div> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         <v-divider | 
					
						
							|  |  |  |           v-if="validatePrepTime && validatePerformTime" | 
					
						
							|  |  |  |           vertical | 
					
						
							|  |  |  |           class="mx-4" | 
					
						
							|  |  |  |         /> | 
					
						
							|  |  |  |         <div | 
					
						
							|  |  |  |           v-if="validatePerformTime" | 
					
						
							|  |  |  |           class="d-flex flex-no-wrap my-1 align-center" | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           <v-icon | 
					
						
							|  |  |  |             :size="small ? 'small' : 'large'" | 
					
						
							|  |  |  |             left | 
					
						
							|  |  |  |             color="primary" | 
					
						
							|  |  |  |           > | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |             {{ $globals.icons.potSteam }} | 
					
						
							|  |  |  |           </v-icon> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           <p class="my-0"> | 
					
						
							|  |  |  |             <span class="font-weight-bold opacity-80">{{ validatePerformTime.name }}</span><br>{{ validatePerformTime.value }} | 
					
						
							|  |  |  |           </p> | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |         </div> | 
					
						
							|  |  |  |       </v-row> | 
					
						
							|  |  |  |     </div> | 
					
						
							| 
									
										
										
										
											2021-05-05 14:08:13 -08:00
										 |  |  |   </div> | 
					
						
							| 
									
										
										
										
											2021-01-17 22:22:54 -09:00
										 |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  | <script lang="ts"> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | export default defineNuxtComponent({ | 
					
						
							| 
									
										
										
										
											2021-01-17 22:22:54 -09:00
										 |  |  |   props: { | 
					
						
							| 
									
										
										
										
											2021-08-02 22:15:11 -08:00
										 |  |  |     prepTime: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							|  |  |  |       default: null, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     totalTime: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							|  |  |  |       default: null, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     performTime: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							|  |  |  |       default: null, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2023-02-19 18:37:18 -06:00
										 |  |  |     color: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       default: "accent custom-transparent", | 
					
						
							| 
									
										
										
										
											2023-02-19 18:37:18 -06:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |     small: { | 
					
						
							|  |  |  |       type: Boolean, | 
					
						
							|  |  |  |       default: false, | 
					
						
							| 
									
										
										
										
											2024-11-20 08:46:27 -06:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-01-17 22:22:54 -09:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |   setup(props) { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     const i18n = useI18n(); | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function isEmpty(str: string | null) { | 
					
						
							| 
									
										
										
										
											2021-04-21 21:52:12 -08:00
										 |  |  |       return !str || str.length === 0; | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const showCards = computed(() => { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       return [props.prepTime, props.totalTime, props.performTime].some(x => !isEmpty(x)); | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const validateTotalTime = computed(() => { | 
					
						
							|  |  |  |       return !isEmpty(props.totalTime) ? { name: i18n.t("recipe.total-time"), value: props.totalTime } : null; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const validatePrepTime = computed(() => { | 
					
						
							|  |  |  |       return !isEmpty(props.prepTime) ? { name: i18n.t("recipe.prep-time"), value: props.prepTime } : null; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const validatePerformTime = computed(() => { | 
					
						
							|  |  |  |       return !isEmpty(props.performTime) ? { name: i18n.t("recipe.perform-time"), value: props.performTime } : null; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |     const fontSize = computed(() => { | 
					
						
							|  |  |  |       return props.small ? { fontSize: "smaller" } : { fontSize: "larger" }; | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       showCards, | 
					
						
							| 
									
										
										
										
											2025-02-26 17:07:12 +01:00
										 |  |  |       validateTotalTime, | 
					
						
							|  |  |  |       validatePrepTime, | 
					
						
							|  |  |  |       validatePerformTime, | 
					
						
							|  |  |  |       fontSize, | 
					
						
							| 
									
										
										
										
											2022-02-26 14:00:55 -09:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2021-01-17 22:22:54 -09:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2022-01-09 07:15:23 +01:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2021-01-17 22:22:54 -09:00
										 |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <style scoped> | 
					
						
							| 
									
										
										
										
											2025-06-28 15:59:58 +02:00
										 |  |  | .text-center { | 
					
						
							|  |  |  |   font-size: smaller; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-04-21 21:52:12 -08:00
										 |  |  | .time-card-flex { | 
					
						
							|  |  |  |   width: fit-content; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-01-17 22:22:54 -09:00
										 |  |  | .custom-transparent { | 
					
						
							|  |  |  |   opacity: 0.7; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-05-01 20:46:02 -08:00
										 |  |  | </style> |