создаю телегу товаров
All checks were successful
Deploy / build (push) Successful in 43s

This commit is contained in:
alsaze
2025-09-26 23:17:53 +03:00
parent 7c811a4841
commit 83d2a56e52
7 changed files with 138 additions and 26 deletions

View File

@@ -1,19 +1,30 @@
import { useStorage } from '@vueuse/core'
export interface ICartItem {
variation_id: number
}
export interface ICart {
line_items: ICartItem[]
}
export const useCart = () => {
const addToCart = (item: any) => {
if (process.client) {
localStorage.setItem('cart', JSON.stringify(item))
}
const cart = useStorage<ICart>('cart', { line_items: [] })
const cartAddItem = (item: ICartItem) => {
cart.value.line_items.push(item)
}
const getCart = () => {
if (process.client) {
return localStorage.getItem('cart')
}
return null
const cartRemoveItem = (item: ICartItem) => {
cart?.value?.line_items
?.splice(cart?.value?.line_items
?.findIndex((cartItem: ICartItem) =>
cartItem?.variation_id === item?.variation_id), 1)
}
return {
addToCart,
getCart,
cart,
cartAddItem,
cartRemoveItem,
}
}

View File

@@ -1,8 +1,8 @@
import { useGetProductsDetail, useGetProductsVariationsList } from '~/api/queries'
export const useProduct = () => {
export const useProduct = (variantId) => {
const route = useRoute()
const currentId = ref<number>(route.params.id)
const currentId = ref<number>(route.params.id ?? variantId)
const { data: productsData } = useGetProductsDetail(currentId)
const { data: productsVariationsData } = useGetProductsVariationsList(currentId)
@@ -24,6 +24,10 @@ export const useProduct = () => {
const materials = computed(() => getAttribute(productsData?.value?.attributes, 'material')?.options)
const sizes = computed(() => getAttribute(productsData?.value?.attributes, 'size')?.options)
const color = computed(() => getAttribute(productsData?.value?.attributes, 'color')?.option)
const material = computed(() => getAttribute(productsData?.value?.attributes, 'material')?.option)
const size = computed(() => getAttribute(productsData?.value?.attributes, 'size')?.option)
function getIdentifier(productVariant) {
const color = getAttribute(productVariant?.attributes, 'color')?.option
const material = getAttribute(productVariant?.attributes, 'material')?.option
@@ -60,6 +64,10 @@ export const useProduct = () => {
materials,
sizes,
color,
material,
size,
variations,
getAttribute,