@adyen/adyen-web
Version:
[](https://www.npmjs.com/package/@adyen/adyen-web)
3 lines (2 loc) • 3.93 kB
JavaScript
import{createElement as e,Fragment as t}from"../../../external/preact/dist/preact.js";import{useRef as r,useMemo as s,useState as o,useCallback as n,useEffect as a}from"../../../external/preact/hooks/dist/hooks.js";import i from"../FormFields/Fieldset/Fieldset.js";import l from"./components/ReadOnlyAddress.js";import{getAddressValidationRules as d}from"./validate.js";import{addressFormatters as c,countrySpecificFormatters as u}from"./validate.formats.js";import m from"./components/FieldContainer.js";import p from"../../../utils/useForm/useForm.js";import"../SecuredFields/lib/CSF/utils/userAgent.js";import f from"./Specifications.js";import{ADDRESS_SCHEMA as y,FALLBACK_VALUE as F}from"./constants.js";import{getMaxLengthByFieldAndCountry as h}from"../../../utils/validator-utils.js";import{useCoreContext as C}from"../../../core/Context/CoreProvider.js";import g from"./components/AddressSearch.js";import{getAddressTypeFromLabel as A}from"./utils.js";function v(v){const{i18n:b}=C(),{label:j="",requiredFields:S,visibility:x,iOSFocusedField:k=null,showContextualElement:M}=v,O=A(v.addressType,j),D=r({});Object.keys(D.current).length||v.setComponentRef?.(D.current);const w=s(()=>new f(v.specifications),[v.specifications]),B=w.getAddressSchemaForCountryFlat(v.countryCode).filter(e=>S.includes(e)),[E,L]=o(!1),[N,P]=o(!1),[R,T]=o(""),V=!!v.onAddressLookup,[H,q]=o(!1),_=!v.onAddressLookup||(E||N),{data:I,errors:U,valid:$,isValid:z,handleChangeFor:G,triggerValidation:J,setData:K,mergeData:Q}=p({schema:B,defaultData:v.data,rules:{...d(w),...v.validationRules},formatters:c}),W=r(v.data?.country),X=(I.country||W.current)?.toUpperCase(),Y=s(()=>({...I,country:X}),[I,X]),Z=n(e=>{const t=y.reduce((t,r)=>{const s=e[r];return null!=s&&(t[r]=String(s)),t},{});Q(t),q(!0),J(),L(!0)},[L,J,K]),ee=n(()=>{P(!0)},[]);D.current.showValidation=()=>{J(),T(!V||_||z?"":b.get("address.errors.incomplete"))};const te=B.filter(e=>!k||e===k);if(a(()=>{if(H)return void q(!1);const e=w.countryHasDataset(I.country)?"":F,t={...I,stateOrProvince:e};S.forEach(e=>{G(e,"input")(t[e]??"")}),t.postalCode&&G("postalCode","blur")(I.postalCode)},[I.country]),a(()=>{const e=S.includes("stateOrProvince"),t=I.country&&w.countryHasDataset(I.country),r=e&&t,s=I.stateOrProvince||(r?"":F);G("stateOrProvince","input")(s)},[]),a(()=>{const e=w.getOptionalFieldsForCountry(I.country),t=y.reduce((t,r)=>{const s=e.includes(r),o=S.includes(r),n=I[r],a=v.data[r],i=s&&!n||!o?o||n||!a?F:a:n;return i?.length&&(t[r]=i),t},{});!t.country&&W.current&&(t.country=W.current),v.onChange({data:t,valid:$,errors:U,isValid:z})},[I,$,U,z]),"hidden"===x)return null;if("readOnly"===x)return e(l,{data:I,label:j});const re=(t,{classNameModifiers:r=[]})=>S.includes(t)?e(m,{key:t,allowedCountries:v.allowedCountries,classNameModifiers:[...r,t],data:Y,errors:U,valid:$,fieldName:t,onInput:G(t,"input"),onBlur:G(t,"blur"),onDropdownChange:G(t,"blur"),specifications:w,maxLength:h(u,t,X),trimOnBlur:!0,disabled:!te.includes(t),addressType:O,onFieldFocusAnalytics:v.onFieldFocusAnalytics,onFieldBlurAnalytics:v.onFieldBlurAnalytics}):null,se=w.getAddressSchemaForCountry(I.country);return e(t,null,e(i,{classNameModifiers:[j,"address"],label:j,renderLabelAsSectionHeading:!0},V&&e(g,{onAddressLookup:v.onAddressLookup,onAddressSelected:v.onAddressSelected,onSelect:Z,onManualAddress:ee,externalErrorMessage:R,hideManualButton:_,showContextualElement:M,contextualText:b.get("address.search.contextualText"),addressSearchDebounceMs:v.addressSearchDebounceMs}),_&&e(t,null,se.map(t=>t instanceof Array?e("div",{className:"adyen-checkout__field-group"},t.map(([e,t])=>re(e,{classNameModifiers:[`col-${t}`]}))):re(t,{})))))}v.defaultProps={countryCode:null,validationRules:null,data:{},onChange:()=>{},visibility:"editable",requiredFields:y,specifications:{},onFieldFocusAnalytics:()=>{},onFieldBlurAnalytics:()=>{}};export{v as default};
//# sourceMappingURL=Address.js.map