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