Skip to content

Commit 3f4dc70

Browse files
committed
feat: Add increment and decrement functionality to cart items and update quantity label
1 parent 6473d5d commit 3f4dc70

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

app/components/Cart.vue

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<!--app/components/Cart.vue-->
22
<script setup>
3-
const { cart, handleRemoveFromCart, removeFromCartButtonStatus } = useCart();
3+
const { cart, handleRemoveFromCart, removeFromCartButtonStatus, increment, decrement } = useCart();
44
const { order } = useCheckout();
55
</script>
66

@@ -25,9 +25,21 @@ const { order } = useCheckout();
2525
<p class="line-through">${{ (Number(product.variation.node.regularPrice) * product.quantity).toFixed(2) }}</p>
2626
<p class="text-alizarin-crimson-700">-{{ ((1 - product.variation.node.salePrice / product.variation.node.regularPrice) * 100).toFixed(0) }}%</p>
2727
</div>
28-
<div class="text-xs font-medium text-neutral-600 dark:text-neutral-300">
29-
{{ $t('product.size') }}: {{ product.variation.attributes.map(attr => attr.value.toUpperCase()).join(', ') }} • {{ $t('product.quantity') }}:
30-
{{ product.quantity }}
28+
<div class="text-xs flex gap-2 font-medium text-neutral-600 dark:text-neutral-300">
29+
<div>{{ $t('product.size') }}: {{ product.variation.attributes.map(attr => attr.value.toUpperCase()).join(', ') }} • {{ $t('product.quantity') }}:</div>
30+
<div class="flex items-center gap-1">
31+
<UIcon
32+
name="iconamoon:sign-minus-circle-fill"
33+
size="14"
34+
class="text-black dark:text-white cursor-pointer"
35+
@click="decrement(product.variation.node.databaseId)" />
36+
<span class="text-center">{{ product.quantity }}</span>
37+
<UIcon
38+
name="iconamoon:sign-plus-circle-fill"
39+
size="14"
40+
class="text-black dark:text-white cursor-pointer"
41+
@click="increment(product.variation.node.databaseId)" />
42+
</div>
3143
</div>
3244
</div>
3345
<button

app/composables/useCart.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,5 @@ export const useCart = () => {
7777
removeFromCartButtonStatus,
7878
increment,
7979
decrement,
80-
findItemByVariationId,
8180
};
8281
};

app/pages/product/[id].vue

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,7 @@ useHead(() => ({
108108
],
109109
}));
110110
111-
const { handleAddToCart, addToCartButtonStatus, increment, decrement, findItemByVariationId } = useCart();
112-
const inCartItem = computed(() => selectedVariation.value && findItemByVariationId(selectedVariation.value.databaseId));
113-
const selectedQty = computed(() => (inCartItem.value ? inCartItem.value.quantity : 0));
111+
const { handleAddToCart, addToCartButtonStatus } = useCart();
114112
</script>
115113
116114
<template>
@@ -208,14 +206,8 @@ const selectedQty = computed(() => (inCartItem.value ? inCartItem.value.quantity
208206
</span>
209207
</label>
210208
</div>
211-
<div class="flex items-center">
212-
<template v-if="inCartItem">
213-
<button @click="decrement(selectedVariation.databaseId)" class="button-bezel w-12 h-12 rounded-md font-bold text-white text-lg"></button>
214-
<div class="w-12 text-center font-semibold">{{ selectedQty }}</div>
215-
<button @click="increment(selectedVariation.databaseId)" class="button-bezel w-12 h-12 rounded-md font-bold text-white text-lg">+</button>
216-
</template>
209+
<div class="flex">
217210
<button
218-
v-else
219211
@click="handleAddToCart(selectedVariation.databaseId)"
220212
:disabled="addToCartButtonStatus !== 'add'"
221213
class="button-bezel w-full h-12 rounded-md relative tracking-wide font-semibold text-white text-sm flex justify-center items-center">

i18n/locales/en-GB.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
"product": {
6565
"originally": "Originally",
6666
"size": "Size",
67-
"quantity": "Quantity",
67+
"quantity": "Qty",
6868
"sku": "article number",
6969
"vat_included": "VAT included",
7070
"featured_information": "Featured Information",

0 commit comments

Comments
 (0)