Skip to content

Commit a0ed5b4

Browse files
committed
Refactor to ProductImage
1 parent 1414c7a commit a0ed5b4

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<template>
2+
<img
3+
id="product-image"
4+
class="h-auto p-8 transition duration-500 ease-in-out transform xl:p-2 md:p-2 lg:p-2 hover:shadow-lg hover:scale-95"
5+
:alt="alt"
6+
:src="displayedImage"
7+
/>
8+
</template>
9+
10+
<script setup>
11+
import { computed } from "vue";
12+
13+
const props = defineProps({
14+
alt: { type: String, required: true },
15+
src: { type: String, required: true },
16+
});
17+
18+
const config = useRuntimeConfig();
19+
20+
const displayedImage = computed(() => {
21+
return props.src || config.placeholderImage;
22+
});
23+
</script>

components/Products/ProductsSingleProduct.vue

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,10 @@
55
<div
66
class="grid grid-cols-1 gap-4 mt-8 lg:grid-cols-2 xl:grid-cols-2 md:grid-cols-2 sm:grid-cols-2"
77
>
8-
<img
9-
v-if="data.product.image"
10-
id="product-image"
11-
class="h-auto p-8 transition duration-500 ease-in-out transform xl:p-2 md:p-2 lg:p-2 hover:shadow-lg hover:scale-95"
8+
<ProductImage
129
:alt="data.product.name"
1310
:src="data.product.image.sourceUrl"
1411
/>
15-
<img
16-
v-else
17-
id="product-image"
18-
class="h-auto p-8 transition duration-500 ease-in-out transform xl:p-2 md:p-2 lg:p-2 hover:shadow-lg hover:scale-95"
19-
:alt="data.product.name"
20-
:src="config.placeholderImage"
21-
/>
2212
<div class="ml-8">
2313
<p class="text-3xl font-bold text-left">
2414
{{ data.product.name }}
@@ -90,6 +80,8 @@
9080
import GET_SINGLE_PRODUCT_QUERY from "@/apollo/queries/GET_SINGLE_PRODUCT_QUERY.gql";
9181
import ADD_TO_CART_MUTATION from "@/apollo/mutations/ADD_TO_CART_MUTATION.gql";
9282
83+
import ProductImage from "@/components/Products/ProductImage.vue";
84+
9385
import {
9486
stripHTML,
9587
filteredVariantPrice,
@@ -100,8 +92,6 @@ import { useCart } from "@/store/useCart";
10092
10193
const isLoading = useState("isLoading", () => false);
10294
103-
const config = useRuntimeConfig();
104-
10595
const cart = useCart();
10696
10797
const props = defineProps({

0 commit comments

Comments
 (0)