Add default value for checkout fields

Signed-off-by: Chloe <pinkcloudvnn@gmail.com>
This commit is contained in:
Chloe 2022-05-11 16:41:19 +07:00
parent 250e03feef
commit 50109be01f
2 changed files with 68 additions and 11 deletions

View File

@ -7,6 +7,7 @@ import { useUI } from '@components/ui/context'
import SidebarLayout from '@components/common/SidebarLayout' import SidebarLayout from '@components/common/SidebarLayout'
import s from './PaymentMethodView.module.css' import s from './PaymentMethodView.module.css'
import { useCheckoutContext } from '../context'
interface Form extends HTMLFormElement { interface Form extends HTMLFormElement {
cardHolder: HTMLInputElement cardHolder: HTMLInputElement
@ -25,6 +26,7 @@ interface Form extends HTMLFormElement {
const PaymentMethodView: FC = () => { const PaymentMethodView: FC = () => {
const { setSidebarView } = useUI() const { setSidebarView } = useUI()
const addCard = useAddCard() const addCard = useAddCard()
const { cardFields } = useCheckoutContext()
async function handleSubmit(event: React.ChangeEvent<Form>) { async function handleSubmit(event: React.ChangeEvent<Form>) {
event.preventDefault() event.preventDefault()
@ -53,12 +55,21 @@ const PaymentMethodView: FC = () => {
<div> <div>
<div className={s.fieldset}> <div className={s.fieldset}>
<label className={s.label}>Cardholder Name</label> <label className={s.label}>Cardholder Name</label>
<input name="cardHolder" className={s.input} /> <input
name="cardHolder"
className={s.input}
defaultValue={cardFields.cardHolder}
/>
</div> </div>
<div className="grid gap-3 grid-flow-row grid-cols-12"> <div className="grid gap-3 grid-flow-row grid-cols-12">
<div className={cn(s.fieldset, 'col-span-7')}> <div className={cn(s.fieldset, 'col-span-7')}>
<label className={s.label}>Card Number</label> <label className={s.label}>Card Number</label>
<input name="cardNumber" className={s.input} /> <input
name="cardNumber"
className={s.input}
defaultValue={cardFields.cardNumber}
required
/>
</div> </div>
<div className={cn(s.fieldset, 'col-span-3')}> <div className={cn(s.fieldset, 'col-span-3')}>
<label className={s.label}>Expires</label> <label className={s.label}>Expires</label>
@ -66,11 +77,18 @@ const PaymentMethodView: FC = () => {
name="cardExpireDate" name="cardExpireDate"
className={s.input} className={s.input}
placeholder="MM/YY" placeholder="MM/YY"
defaultValue={cardFields.cardExpireDate}
required
/> />
</div> </div>
<div className={cn(s.fieldset, 'col-span-2')}> <div className={cn(s.fieldset, 'col-span-2')}>
<label className={s.label}>CVC</label> <label className={s.label}>CVC</label>
<input name="cardCvc" className={s.input} /> <input
name="cardCvc"
className={s.input}
defaultValue={cardFields.cardCvc}
required
/>
</div> </div>
</div> </div>
<hr className="border-accent-2 my-6" /> <hr className="border-accent-2 my-6" />

View File

@ -7,6 +7,7 @@ import SidebarLayout from '@components/common/SidebarLayout'
import useAddAddress from '@framework/customer/address/use-add-item' import useAddAddress from '@framework/customer/address/use-add-item'
import s from './ShippingView.module.css' import s from './ShippingView.module.css'
import { useCheckoutContext } from '../context'
interface Form extends HTMLFormElement { interface Form extends HTMLFormElement {
cardHolder: HTMLInputElement cardHolder: HTMLInputElement
@ -25,6 +26,7 @@ interface Form extends HTMLFormElement {
const ShippingView: FC = () => { const ShippingView: FC = () => {
const { setSidebarView } = useUI() const { setSidebarView } = useUI()
const addAddress = useAddAddress() const addAddress = useAddAddress()
const { addressFields } = useCheckoutContext()
async function handleSubmit(event: React.ChangeEvent<Form>) { async function handleSubmit(event: React.ChangeEvent<Form>) {
event.preventDefault() event.preventDefault()
@ -66,40 +68,77 @@ const ShippingView: FC = () => {
<div className="grid gap-3 grid-flow-row grid-cols-12"> <div className="grid gap-3 grid-flow-row grid-cols-12">
<div className={cn(s.fieldset, 'col-span-6')}> <div className={cn(s.fieldset, 'col-span-6')}>
<label className={s.label}>First Name</label> <label className={s.label}>First Name</label>
<input name="firstName" className={s.input} /> <input
name="firstName"
className={s.input}
defaultValue={addressFields.firstName}
required
/>
</div> </div>
<div className={cn(s.fieldset, 'col-span-6')}> <div className={cn(s.fieldset, 'col-span-6')}>
<label className={s.label}>Last Name</label> <label className={s.label}>Last Name</label>
<input name="lastName" className={s.input} /> <input
name="lastName"
className={s.input}
defaultValue={addressFields.lastName}
required
/>
</div> </div>
</div> </div>
<div className={s.fieldset}> <div className={s.fieldset}>
<label className={s.label}>Company (Optional)</label> <label className={s.label}>Company (Optional)</label>
<input name="company" className={s.input} /> <input
name="company"
className={s.input}
defaultValue={addressFields.company}
/>
</div> </div>
<div className={s.fieldset}> <div className={s.fieldset}>
<label className={s.label}>Street and House Number</label> <label className={s.label}>Street and House Number</label>
<input name="streetNumber" className={s.input} /> <input
name="streetNumber"
className={s.input}
defaultValue={addressFields.streetNumber}
required
/>
</div> </div>
<div className={s.fieldset}> <div className={s.fieldset}>
<label className={s.label}> <label className={s.label}>
Apartment, Suite, Etc. (Optional) Apartment, Suite, Etc. (Optional)
</label> </label>
<input name="apartments" className={s.input} /> <input
name="apartments"
className={s.input}
defaultValue={addressFields.apartments}
/>
</div> </div>
<div className="grid gap-3 grid-flow-row grid-cols-12"> <div className="grid gap-3 grid-flow-row grid-cols-12">
<div className={cn(s.fieldset, 'col-span-6')}> <div className={cn(s.fieldset, 'col-span-6')}>
<label className={s.label}>Postal Code</label> <label className={s.label}>Postal Code</label>
<input name="zipCode" className={s.input} /> <input
name="zipCode"
className={s.input}
defaultValue={addressFields.zipCode}
required
/>
</div> </div>
<div className={cn(s.fieldset, 'col-span-6')}> <div className={cn(s.fieldset, 'col-span-6')}>
<label className={s.label}>City</label> <label className={s.label}>City</label>
<input name="city" className={s.input} /> <input
name="city"
className={s.input}
defaultValue={addressFields.city}
required
/>
</div> </div>
</div> </div>
<div className={s.fieldset}> <div className={s.fieldset}>
<label className={s.label}>Country/Region</label> <label className={s.label}>Country/Region</label>
<select name="country" className={s.select}> <select
name="country"
className={s.select}
defaultValue={addressFields.country}
>
<option>Hong Kong</option> <option>Hong Kong</option>
</select> </select>
</div> </div>