UNPKG

@adyen/adyen-web

Version:

[![npm](https://img.shields.io/npm/v/@adyen/adyen-web.svg)](https://www.npmjs.com/package/@adyen/adyen-web)

3 lines (2 loc) 3.97 kB
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useRef as s,useState as r,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import n from"../CompanyDetails/CompanyDetails.js";import t from"../PersonalDetails/PersonalDetails.js";import a from"../Address/Address.js";import l from"../FormFields/Checkbox/Checkbox.js";import d from"../FormFields/ConsentCheckbox/ConsentCheckbox.js";import{getInitialActiveFieldsets as c,fieldsetsSchema as m,getActiveFieldsData as p}from"./utils.js";import b from"../IbanInput/IbanInput.js";import u from"../FormFields/Field/Field.js";import y from"../FormInstruction/FormInstruction.js";import C from"./useSRPanelForOpenInvoiceErrors.js";import h from"../../../_virtual/index.js";const f={isValid:!1,errorMessage:"consent.checkbox.invalid",error:"consent.checkbox.invalid"};function A(A){const{countryCode:v,visibility:k}=A,{i18n:g}=i(),x=s({});Object.keys(x.current).length||A.setComponentRef?.(x.current);const D=s(!1),j=c(k,A.data),[F,w]=r(j),{current:R}=s(m.reduce((e,s)=>(e[s]=e=>{R[s].current=e},e),{})),E=!!A.consentCheckboxLabel,I=!E&&Object.keys(F).every(e=>!F[e]),S="editable"===k.deliveryAddress&&"hidden"!==k.billingAddress,[q,P]=r({...A.data,...E&&{consentCheckbox:!1}}),[V,M]=r({}),[N,_]=r({}),[O,L]=r("ready");x.current.showValidation=()=>{D.current=!0,m.forEach(e=>{R[e].current&&R[e].current.showValidation()}),M({...E&&{consentCheckbox:q.consentCheckbox?null:f}})},x.current.setStatus=L,C({errors:V,data:q,props:A,isValidating:D}),o(()=>{const e=Object.keys(F).every(e=>!F[e]||!!N[e]),s=!E||!!N.consentCheckbox,r=e&&s,o=p(F,q);A.onChange({data:o,errors:V,valid:N,isValid:r})},[q,F]);const B=e=>s=>{P(r=>({...r,[e]:s.data})),_(r=>({...r,[e]:s.isValid})),M(r=>({...r,[e]:s.errors}))};return e("div",{className:h({"adyen-checkout__open-invoice":!0,"adyen-checkout__open-invoice--loading":"loading"===O})},e(y,null),F.companyDetails&&e(n,{data:A.data.companyDetails,label:"companyDetails",onChange:B("companyDetails"),setComponentRef:R.companyDetails,visibility:k.companyDetails}),F.personalDetails&&e(t,{data:A.data.personalDetails,requiredFields:A.personalDetailsRequiredFields,label:"personalDetails",onChange:B("personalDetails"),setComponentRef:R.personalDetails,visibility:k.personalDetails}),F.bankAccount&&e(b,{holderName:!0,label:"ach.bankAccount",data:q.bankAccount,onChange:B("bankAccount"),ref:R.bankAccount}),F.billingAddress&&e(a,{allowedCountries:A?.billingAddressSpecification?.allowedCountries??A.allowedCountries,countryCode:v,requiredFields:A.billingAddressRequiredFields,specifications:A.billingAddressSpecification,data:q.billingAddress,label:"billingAddress",onChange:B("billingAddress"),setComponentRef:R.billingAddress,visibility:k.billingAddress}),S&&e(u,{classNameModifiers:["separateDeliveryAddress","consentCheckbox"],name:"separateDeliveryAddress",useLabelElement:!1,showErrorElement:!1},e(l,{label:g.get("separateDeliveryAddress"),checked:F.deliveryAddress,classNameModifiers:["separateDeliveryAddress"],name:"separateDeliveryAddress",onChange:()=>{w(e=>({...e,deliveryAddress:!F.deliveryAddress}))}})),F.deliveryAddress&&e(a,{allowedCountries:A?.deliveryAddressSpecification?.allowedCountries??A.allowedCountries,countryCode:v,requiredFields:A.deliveryAddressRequiredFields,specifications:A.deliveryAddressSpecification,data:q.deliveryAddress,label:"deliveryAddress",onChange:B("deliveryAddress"),setComponentRef:R.deliveryAddress,visibility:k.deliveryAddress}),E&&e(d,{data:q,errorMessage:!!V.consentCheckbox,label:A.consentCheckboxLabel,onChange:e=>{const{checked:s}=e.target;P(e=>({...e,consentCheckbox:s})),_(e=>({...e,consentCheckbox:s})),M(e=>({...e,consentCheckbox:s?null:f}))},i18n:g}),A.showPayButton&&A.payButton({status:O,classNameModifiers:[...I?["standalone"]:[]],label:g.get("confirmPurchase")}))}export{A as default}; //# sourceMappingURL=OpenInvoice.js.map