@commercelayer/react-components
Version:
The Official Commerce Layer React Components
2 lines • 1.86 kB
JavaScript
"use client";
import{jsx as _jsx}from"react/jsx-runtime";import{useRapidForm}from"rapid-form";import{useContext,useEffect,useRef,useState}from"react";import CouponAndGiftCardFormContext from"../../context/CouponAndGiftCardFormContext";import OrderContext from"../../context/OrderContext";export function GiftCardOrCouponForm(props){const{children,codeType,autoComplete="on",onSubmit,...p}=props,{validation,values,reset}=useRapidForm(),{setGiftCardOrCouponCode,order,errors,setOrderErrors}=useContext(OrderContext),ref=useRef(null),[type,setType]=useState(codeType);useEffect(()=>{if(type!=null&&values[type]?.value===""&&errors!=null&&errors.length>0){const err=errors.filter(e=>e.field===type);setOrderErrors(err),onSubmit&&onSubmit({value:values[type]?.value,success:!1})}type!=null&&values[type]?.value===""&&(setOrderErrors([]),onSubmit&&onSubmit({value:values[type]?.value,success:!1}))},[values]),useEffect(()=>{codeType==null?(order?.gift_card_code&&!order?.coupon_code&&setType("coupon_code"),!order?.gift_card_code&&order?.coupon_code&&setType("gift_card_code"),!order?.gift_card_code&&!order?.coupon_code&&setType("gift_card_or_coupon_code")):setType(codeType)},[order]);const handleSubmit=async e=>{e.preventDefault();const code=type!=null&&values[type]!=null?values[type].value:void 0;if(code!=null&&setGiftCardOrCouponCode!=null&&type!=null){const{success,order:order2}=await setGiftCardOrCouponCode({code,codeType:type}),value=values[type]?.value;onSubmit&&onSubmit({success,value,order:order2}),success&&reset(e)}};return codeType!=null&&order?.[codeType]!=null&&order?.[codeType]!==""||order?.gift_card_code&&order?.coupon_code||order==null?null:_jsx(CouponAndGiftCardFormContext.Provider,{value:{validation,codeType:type},children:_jsx("form",{ref,autoComplete,onSubmit:e=>{handleSubmit(e)},...p,children})})}export default GiftCardOrCouponForm;