Cart
@storefront-x/cart
Module for e-commerce cart. Requires corresponding integration module (e.g. @storefront-x/cart-magento
) which provides mappers, repositories and integration specific services.
useCart
composable
Composable for providing presentation logic for cart (prices, taxes, number of items in cart, etc.).
TIP
Override/extend this composable to add presentation functionality to cart.
TIP
Mutating functionality (adding to cart, removing from cart, etc.) should be in separate composables/services.
useCartItem
composable
Composable for providing presentation logic for cart items (price, quantity, etc.).
TIP
Override/extend this composable to add presentation functionality to cart items.
TIP
Mutating functionality (updating quantity, etc.) should be in separate composables/services.
injectCartItem
composable
Used by components wrapped in CartItemProvider to inject result of useCartItem composable.
CartItemProvider
provider
Provides result of useCartItem
composable to be injected into nested components.
Example
<!-- organisms/OrderSummary.vue -->
<template>
<CartItemProvider v-for="cartItem in cartItems" :cart-item="cartItem">
<OrderSummaryItem />
</CartItemProvider>
</template>
<script setup lang="ts">
import CartItemProvider from '#ioc/providers/CartItemProvider'
import OrderSummaryItem from '#ioc/molecules/OrderSummaryItem'
import ToCartItem from '#ioc/mappers/ToCartItem'
import { PropType } from 'vue'
defineProps({
cartItems: {
type: Array as PropType<ReturnType<typeof ToCartItem>[]>,
required: true,
},
})
</script>
<!-- molecules/OrderSummaryItem.vue -->
<template>
<h1>{{ cartItem.name }}</h1>
</template>
<script setup lang="ts">
import injectCartItem from '#ioc/composables/injectCartItem'
const cartItem = injectCartItem()
</script>
useGetCart
service
Returns full state of cart (items, prices, coupons, etc.).
useAddToCart
service
Adds product to cart.
useRemoveFromCart
service
Removes item from cart.
useUpdateCartItem
service
Updates cart item (e.g. changes quantity).
useCartStore
store
Used for storing global state. Should be initialized in serverInit
action in corresponding integration module.