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) 4.91 kB
import{createElement as e,Fragment as t}from"../../../external/preact/dist/preact.js";import{useRef as r,useMemo as o,useState as n,useCallback as s,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 c}from"./validate.js";import{addressFormatters as d,countrySpecificFormatters as u}from"./validate.formats.js";import p from"./components/FieldContainer.js";import m 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 b}from"./constants.js";import{getMaxLengthByFieldAndCountry as v}from"../../../utils/validator-utils.js";import{useCoreContext as O}from"../../../core/Context/CoreProvider.js";import g from"./components/AddressSearch.js";import{getAddressTypeFromLabel as j}from"./utils.js";function F(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),o.forEach(function(t){F(e,t,r[t])})}return e}function C(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function A(F){var A,S;const{i18n:P}=O(),{label:w="",requiredFields:k,visibility:x,iOSFocusedField:D=null,showContextualElement:M}=F,E=j(F.addressType,w),B=r({});var L;Object.keys(B.current).length||(null===(L=F.setComponentRef)||void 0===L||L.call(F,B.current));const N=o(()=>new f(F.specifications),[F.specifications]),R=N.getAddressSchemaForCountryFlat(F.countryCode).filter(e=>k.includes(e)),[T,V]=n(!1),[H,q]=n(!1),[_,I]=n(""),U=!!F.onAddressLookup,[$,z]=n(!1),G=!F.onAddressLookup||(T||H),{data:J,errors:K,valid:Q,isValid:W,handleChangeFor:X,triggerValidation:Y,setData:Z,mergeData:ee}=m({schema:R,defaultData:F.data,rules:h({},c(N),F.validationRules),formatters:d}),te=r(null===(A=F.data)||void 0===A?void 0:A.country),re=null===(S=J.country||te.current)||void 0===S?void 0:S.toUpperCase(),oe=o(()=>C(h({},J),{country:re}),[J,re]),ne=s(e=>{const t=y.reduce((t,r)=>{const o=e[r];return null!=o&&(t[r]=String(o)),t},{});ee(t),z(!0),Y(),V(!0)},[V,Y,Z]),se=s(()=>{q(!0)},[]);B.current.showValidation=()=>{Y(),I(!U||G||W?"":P.get("address.errors.incomplete"))};const ae=R.filter(e=>!D||e===D);if(a(()=>{if($)return void z(!1);const e=N.countryHasDataset(J.country)?"":b,t=C(h({},J),{stateOrProvince:e});k.forEach(e=>{var r;X(e,"input")(null!==(r=t[e])&&void 0!==r?r:"")}),t.postalCode&&X("postalCode","blur")(J.postalCode)},[J.country]),a(()=>{const e=k.includes("stateOrProvince"),t=J.country&&N.countryHasDataset(J.country),r=e&&t,o=J.stateOrProvince||(r?"":b);X("stateOrProvince","input")(o)},[]),a(()=>{const e=N.getOptionalFieldsForCountry(J.country),t=y.reduce((t,r)=>{const o=e.includes(r),n=k.includes(r),s=J[r],a=F.data[r],i=o&&!s||!n?n||s||!a?b:a:s;return(null==i?void 0:i.length)&&(t[r]=i),t},{});!t.country&&te.current&&(t.country=te.current),F.onChange({data:t,valid:Q,errors:K,isValid:W})},[J,Q,K,W]),"hidden"===x)return null;if("readOnly"===x)return e(l,{data:J,label:w});const ie=(t,{classNameModifiers:r=[]})=>k.includes(t)?e(p,{key:t,allowedCountries:F.allowedCountries,classNameModifiers:[...r,t],data:oe,errors:K,valid:Q,fieldName:t,onInput:X(t,"input"),onBlur:X(t,"blur"),onDropdownChange:X(t,"blur"),specifications:N,maxLength:v(u,t,re),trimOnBlur:!0,disabled:!ae.includes(t),addressType:E,onFieldFocusAnalytics:F.onFieldFocusAnalytics,onFieldBlurAnalytics:F.onFieldBlurAnalytics}):null,le=N.getAddressSchemaForCountry(J.country);return e(t,null,e(i,{classNameModifiers:[w,"address"],label:w,renderLabelAsSectionHeading:!0},U&&e(g,{onAddressLookup:F.onAddressLookup,onAddressSelected:F.onAddressSelected,onSelect:ne,onManualAddress:se,externalErrorMessage:_,hideManualButton:G,showContextualElement:M,contextualText:P.get("address.search.contextualText"),addressSearchDebounceMs:F.addressSearchDebounceMs}),G&&e(t,null,le.map(t=>t instanceof Array?e("div",{className:"adyen-checkout__field-group"},t.map(([e,t])=>ie(e,{classNameModifiers:[`col-${t}`]}))):ie(t,{})))))}A.defaultProps={countryCode:null,validationRules:null,data:{},onChange:()=>{},visibility:"editable",requiredFields:y,specifications:{},onFieldFocusAnalytics:()=>{},onFieldBlurAnalytics:()=>{}};export{A as default}; //# sourceMappingURL=Address.js.map