mirror of
https://github.com/vercel/commerce.git
synced 2025-07-22 20:26:49 +00:00
✨ feat: test checkout
:%s
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import React, { useState } from 'react'
|
import React, { useState } from 'react'
|
||||||
import { Logo } from 'src/components/common'
|
import { ButtonCommon, Logo } from 'src/components/common'
|
||||||
import CheckoutCollapse from 'src/components/common/CheckoutCollapse/CheckoutCollapse'
|
import CheckoutCollapse from 'src/components/common/CheckoutCollapse/CheckoutCollapse'
|
||||||
|
import { useAddProductToCart, useGetActiveOrder } from 'src/components/hooks/cart'
|
||||||
import { removeItem } from 'src/utils/funtion.utils'
|
import { removeItem } from 'src/utils/funtion.utils'
|
||||||
import { CheckOutForm } from 'src/utils/types.utils'
|
import { CheckOutForm } from 'src/utils/types.utils'
|
||||||
import s from './CheckoutInfo.module.scss'
|
import s from './CheckoutInfo.module.scss'
|
||||||
@@ -8,43 +9,43 @@ import CustomerInfoForm from './components/CustomerInfoForm/CustomerInfoForm'
|
|||||||
import PaymentInfoForm from './components/PaymentInfoForm/PaymentInfoForm'
|
import PaymentInfoForm from './components/PaymentInfoForm/PaymentInfoForm'
|
||||||
import ShippingInfoForm from './components/ShippingInfoForm/ShippingInfoForm'
|
import ShippingInfoForm from './components/ShippingInfoForm/ShippingInfoForm'
|
||||||
interface CheckoutInfoProps {
|
interface CheckoutInfoProps {
|
||||||
onViewCart:()=>void
|
onViewCart: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const CheckoutInfo = ({onViewCart}: CheckoutInfoProps) => {
|
const CheckoutInfo = ({ onViewCart }: CheckoutInfoProps) => {
|
||||||
const [active, setActive] = useState(1)
|
const [active, setActive] = useState(1)
|
||||||
const [done, setDone] = useState<number[]>([])
|
const [done, setDone] = useState<number[]>([])
|
||||||
const [info, setInfo] = useState<CheckOutForm>({})
|
const [info, setInfo] = useState<CheckOutForm>({})
|
||||||
|
|
||||||
const onEdit = (id:number) => {
|
const onEdit = (id: number) => {
|
||||||
setActive(id)
|
setActive(id)
|
||||||
setDone(removeItem<number>(done,id))
|
setDone(removeItem<number>(done, id))
|
||||||
}
|
}
|
||||||
|
|
||||||
const onConfirm = (id:number,formInfo:CheckOutForm) => {
|
const onConfirm = (id: number, formInfo: CheckOutForm) => {
|
||||||
if(id+1>formList.length){
|
if (id + 1 > formList.length) {
|
||||||
console.log({...info,...formInfo})
|
console.log({ ...info, ...formInfo })
|
||||||
}else{
|
} else {
|
||||||
if(done.length>0){
|
if (done.length > 0) {
|
||||||
for (let i = id+1; i <= formList.length; i++) {
|
for (let i = id + 1; i <= formList.length; i++) {
|
||||||
if(!done.includes(i)){
|
if (!done.includes(i)) {
|
||||||
setActive(i)
|
setActive(i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
setActive(id+1)
|
setActive(id + 1)
|
||||||
}
|
}
|
||||||
setDone([...done,id])
|
setDone([...done, id])
|
||||||
}
|
}
|
||||||
setInfo({...info,...formInfo})
|
setInfo({ ...info, ...formInfo })
|
||||||
}
|
}
|
||||||
|
|
||||||
const getNote = (id:number) => {
|
const getNote = (id: number) => {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 1:
|
case 1:
|
||||||
return `${info.name}, ${info.email}`
|
return `${info.name}, ${info.email}`
|
||||||
case 2:
|
case 2:
|
||||||
return `${info.address}, ${info.state}, ${info.city}, ${info.code}, ${info.phone}, `
|
return `${info.address}, ${info.state}, ${info.city}, ${info.code}, ${info.phone}, `
|
||||||
default:
|
default:
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
@@ -54,21 +55,38 @@ const CheckoutInfo = ({onViewCart}: CheckoutInfoProps) => {
|
|||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
title: 'Customer Information',
|
title: 'Customer Information',
|
||||||
form: <CustomerInfoForm onConfirm={onConfirm} id={1}/>,
|
form: <CustomerInfoForm onConfirm={onConfirm} id={1} />,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
title: 'Shipping Information',
|
title: 'Shipping Information',
|
||||||
form: <ShippingInfoForm onConfirm={onConfirm} id={2}/>,
|
form: <ShippingInfoForm onConfirm={onConfirm} id={2} />,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
title: 'Payment Information',
|
title: 'Payment Information',
|
||||||
form: <PaymentInfoForm onConfirm={onConfirm} id={3}/>,
|
form: <PaymentInfoForm onConfirm={onConfirm} id={3} />,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// TODO: remove
|
||||||
|
const { addProduct } = useAddProductToCart()
|
||||||
|
|
||||||
|
const createOrder = () => {
|
||||||
|
addProduct({ variantId: "63", quantity: 1 }, handleAddToCartCallback)
|
||||||
|
}
|
||||||
|
const handleAddToCartCallback = (isSuccess: boolean, message?: string) => {
|
||||||
|
console.log("after create order: ", isSuccess, message)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const {order} = useGetActiveOrder()
|
||||||
|
console.log("active order: ", order)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={s.warpper}>
|
<div className={s.warpper}>
|
||||||
|
<ButtonCommon onClick={createOrder}>test create order</ButtonCommon>
|
||||||
|
<ButtonCommon onClick={createOrder}>test get active order</ButtonCommon>
|
||||||
<div className={s.title}>
|
<div className={s.title}>
|
||||||
<Logo />
|
<Logo />
|
||||||
<div className={s.viewCart} onClick={onViewCart}>View cart</div>
|
<div className={s.viewCart} onClick={onViewCart}>View cart</div>
|
||||||
@@ -76,7 +94,7 @@ const CheckoutInfo = ({onViewCart}: CheckoutInfoProps) => {
|
|||||||
{formList.map((item) => {
|
{formList.map((item) => {
|
||||||
let note = getNote(item.id)
|
let note = getNote(item.id)
|
||||||
return <CheckoutCollapse
|
return <CheckoutCollapse
|
||||||
key={item.title}
|
key={item.title}
|
||||||
id={item.id}
|
id={item.id}
|
||||||
visible={item.id === active}
|
visible={item.id === active}
|
||||||
title={item.title}
|
title={item.title}
|
||||||
|
Reference in New Issue
Block a user