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