@adyen/adyen-web 6.0.2 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +13 -4
- package/dist/es/components/Card/Card.js +1 -1
- package/dist/es/components/Card/Card.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es/components/Dropin/components/DropinComponent.js +1 -1
- package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js.map +1 -1
- package/dist/es/components/Riverty/Riverty.js +1 -1
- package/dist/es/components/Riverty/Riverty.js.map +1 -1
- package/dist/es/components/Riverty/config.js +1 -1
- package/dist/es/components/Riverty/config.js.map +1 -1
- package/dist/es/components/internal/DisclaimerMessage/DisclaimerMessage.js +1 -1
- package/dist/es/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
- package/dist/es/core/Analytics/analyticsPreProcessor.js +1 -1
- package/dist/es/core/Analytics/analyticsPreProcessor.js.map +1 -1
- package/dist/es/core/Analytics/utils.js +1 -1
- package/dist/es/core/Analytics/utils.js.map +1 -1
- package/dist/es/core/Services/analytics/collect-id.js +1 -1
- package/dist/es/core/core.js +1 -1
- package/dist/es/index.d.ts +13 -4
- package/dist/es/utils/constants/currency-decimals.js +1 -1
- package/dist/es/utils/constants/currency-decimals.js.map +1 -1
- package/dist/es-legacy/components/Card/Card.js +1 -1
- package/dist/es-legacy/components/Card/Card.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/DropinComponent.js +1 -1
- package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js.map +1 -1
- package/dist/es-legacy/components/Riverty/Riverty.js +1 -1
- package/dist/es-legacy/components/Riverty/Riverty.js.map +1 -1
- package/dist/es-legacy/components/Riverty/config.js +1 -1
- package/dist/es-legacy/components/Riverty/config.js.map +1 -1
- package/dist/es-legacy/components/internal/DisclaimerMessage/DisclaimerMessage.js +1 -1
- package/dist/es-legacy/components/internal/DisclaimerMessage/DisclaimerMessage.js.map +1 -1
- package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js +1 -1
- package/dist/es-legacy/core/Analytics/analyticsPreProcessor.js.map +1 -1
- package/dist/es-legacy/core/Analytics/utils.js +1 -1
- package/dist/es-legacy/core/Analytics/utils.js.map +1 -1
- package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
- package/dist/es-legacy/core/core.js +1 -1
- package/dist/es-legacy/utils/constants/currency-decimals.js +1 -1
- package/dist/es-legacy/utils/constants/currency-decimals.js.map +1 -1
- package/package.json +8 -8
package/dist/cjs/index.d.cts
CHANGED
|
@@ -767,6 +767,11 @@ interface CardConfiguration extends UIElementProps {
|
|
|
767
767
|
* - merchant set config option
|
|
768
768
|
*/
|
|
769
769
|
hasHolderName?: boolean;
|
|
770
|
+
/**
|
|
771
|
+
* holderName coming from a stored card in /paymentMethods response
|
|
772
|
+
* @internal
|
|
773
|
+
*/
|
|
774
|
+
holderName?: string;
|
|
770
775
|
/**
|
|
771
776
|
* Show/hide the Security Code field
|
|
772
777
|
* - merchant set config option
|
|
@@ -818,7 +823,7 @@ interface CardConfiguration extends UIElementProps {
|
|
|
818
823
|
*
|
|
819
824
|
* - merchant set config option
|
|
820
825
|
*/
|
|
821
|
-
minimumExpiryDate?: string
|
|
826
|
+
minimumExpiryDate?: string;
|
|
822
827
|
/**
|
|
823
828
|
* When in Dropin this is the name shown in the paymentMethods list
|
|
824
829
|
* @defaultValue - derived from PaymentMethods response
|
|
@@ -3278,6 +3283,7 @@ declare class BancontactElement extends CardElement {
|
|
|
3278
3283
|
fundingSource?: "debit" | "credit";
|
|
3279
3284
|
hasCVC?: boolean;
|
|
3280
3285
|
hasHolderName?: boolean;
|
|
3286
|
+
holderName?: string;
|
|
3281
3287
|
hideCVC?: boolean;
|
|
3282
3288
|
holderNameRequired?: boolean;
|
|
3283
3289
|
id?: string;
|
|
@@ -3286,7 +3292,7 @@ declare class BancontactElement extends CardElement {
|
|
|
3286
3292
|
lastFour?: string;
|
|
3287
3293
|
legacyInputMode?: boolean;
|
|
3288
3294
|
maskSecurityCode?: boolean;
|
|
3289
|
-
minimumExpiryDate?: string
|
|
3295
|
+
minimumExpiryDate?: string;
|
|
3290
3296
|
name?: string;
|
|
3291
3297
|
onAddressLookup?: OnAddressLookupType;
|
|
3292
3298
|
onBinLookup?: (event: CbObjOnBinLookup) => void;
|
|
@@ -3551,6 +3557,7 @@ declare class CustomCard extends UIElement<CustomCardConfiguration> {
|
|
|
3551
3557
|
onLoad?: (event: CbObjOnLoad) => void;
|
|
3552
3558
|
placeholders?: Placeholders$1;
|
|
3553
3559
|
onAddressLookup?: OnAddressLookupType;
|
|
3560
|
+
holderName?: string;
|
|
3554
3561
|
expiryMonth?: string;
|
|
3555
3562
|
billingAddressMode?: "full" | "partial" | "none";
|
|
3556
3563
|
brands?: string[];
|
|
@@ -3563,7 +3570,7 @@ declare class CustomCard extends UIElement<CustomCardConfiguration> {
|
|
|
3563
3570
|
lastFour?: string;
|
|
3564
3571
|
legacyInputMode?: boolean;
|
|
3565
3572
|
maskSecurityCode?: boolean;
|
|
3566
|
-
minimumExpiryDate?: string
|
|
3573
|
+
minimumExpiryDate?: string;
|
|
3567
3574
|
onBinLookup?: (event: CbObjOnBinLookup) => void;
|
|
3568
3575
|
onBinValue?: (event: CbObjOnBinValue) => void;
|
|
3569
3576
|
onBrand?: (event: CbObjOnBrand) => void;
|
|
@@ -5718,8 +5725,10 @@ interface OrderStatus {
|
|
|
5718
5725
|
expiresAt: string;
|
|
5719
5726
|
paymentMethods: {
|
|
5720
5727
|
amount?: PaymentAmount;
|
|
5721
|
-
lastFour
|
|
5728
|
+
lastFour?: string;
|
|
5722
5729
|
type: string;
|
|
5730
|
+
name?: string;
|
|
5731
|
+
label?: string;
|
|
5723
5732
|
}[];
|
|
5724
5733
|
pspReference: string;
|
|
5725
5734
|
reference: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../external/preact/dist/preact.js";import o from"./components/CardInput/CardInput.js";import{CoreProvider as e}from"../../core/Context/CoreProvider.js";import s from"../../utils/browserInfo.js";import r from"../internal/SecuredFields/binLookup/triggerBinLookUp.js";import{fieldTypeToSnakeCase as i}from"../internal/SecuredFields/utils.js";import{reject as n}from"../../utils/commonUtils.js";import{hasValidInstallmentsObject as a}from"./components/CardInput/utils.js";import p from"../internal/ClickToPay/services/create-clicktopay-service.js";import c from"./components/ClickToPayWrapper.js";import l from"../../core/Errors/SRPanelProvider.js";import{TxVariants as d}from"../tx-variants.js";import{UIElement as u}from"../internal/UIElement/UIElement.js";import h from"../internal/PayButton/PayButton.js";import{ANALYTICS_RENDERED_STR as m,ANALYTICS_CONFIGURED_STR as y,ANALYTICS_FOCUS_STR as f,ANALYTICS_UNFOCUS_STR as b,ANALYTICS_VALIDATION_ERROR_STR as g}from"../../core/Analytics/constants.js";import{ALL_SECURED_FIELDS as C}from"../internal/SecuredFields/lib/constants.js";import{hasOwnProperty as P}from"../../utils/hasOwnProperty.js";import S,{IMPLEMENTATION_ERROR as k}from"../../core/Errors/AdyenCheckoutError.js";import{getErrorMessageFromCode as T}from"../../core/Errors/utils.js";import{SF_ErrorCodes as R}from"../../core/Errors/constants.js";import B from"./components/CardInput/defaultProps.js";class I extends u{static type=d.scheme;clickToPayService;clickToPayRef=null;constructor(t,o){super(t,o),o&&!o._disableClickToPay&&(this.clickToPayService=p(this.props.configuration,this.props.clickToPayConfiguration,this.props.environment),this.clickToPayService?.initialize())}static defaultProps={showFormInstruction:!0,_disableClickToPay:!1,doBinLookup:!0,...n(["type","setComponentRef"]).from(B)};setStatus(t,o){return this.componentRef?.setStatus&&this.componentRef.setStatus(t,o),this.clickToPayRef?.setStatus&&this.clickToPayRef.setStatus(t,o),this}setClickToPayRef=t=>{this.clickToPayRef=t};formatProps(t){const o=t.session?.configuration?.enableStoreDetails??t.enableStoreDetails,e=!(0===t.amount?.value)&&o,s=t.storedPaymentMethodId||t.id,r=s&&t?.supportedShopperInteractions?.includes("Ecommerce");if(s&&!r)throw new S(k,"You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions");return{...t,holderNameRequired:!!t.hasHolderName&&t.holderNameRequired,hasCVC:!(t.brand&&"bcmc"===t.brand||t.hideCVC),billingAddressRequired:!t.storedPaymentMethodId&&t.billingAddressRequired,billingAddressMode:t.onAddressLookup?B.billingAddressMode:t.billingAddressMode,brand:t.brand??d.card,countryCode:t.countryCode?t.countryCode.toLowerCase():null,configuration:{...t.configuration,socialSecurityNumberMode:t.configuration?.socialSecurityNumberMode??"auto"},brandsConfiguration:t.brandsConfiguration||t.configuration?.brandsConfiguration||{},icon:t.icon||t.configuration?.icon,installmentOptions:t.session?.configuration?.installmentOptions||t.installmentOptions,enableStoreDetails:o,showStoreDetailsCheckbox:e,clickToPayConfiguration:{...t.clickToPayConfiguration,disableOtpAutoFocus:t.clickToPayConfiguration?.disableOtpAutoFocus||!1,shopperEmail:t.clickToPayConfiguration?.shopperEmail||this.core.options?.session?.shopperEmail,telephoneNumber:t.clickToPayConfiguration?.telephoneNumber||this.core.options?.session?.telephoneNumber,locale:t.clickToPayConfiguration?.locale||t.i18n?.locale?.replace("-","_")},...s&&{storedPaymentMethodId:s}}}formatData(){const t=this.state.selectedBrandValue;return{paymentMethod:{type:I.type,...this.state.data,...this.props.storedPaymentMethodId&&{storedPaymentMethodId:this.props.storedPaymentMethodId},...t&&{brand:t},...this.props.fundingSource&&{fundingSource:this.props.fundingSource}},...this.state.billingAddress&&{billingAddress:this.state.billingAddress},...this.state.socialSecurityNumber&&{socialSecurityNumber:this.state.socialSecurityNumber},...this.storePaymentMethodPayload,...a(this.state.installments)&&{installments:this.state.installments},browserInfo:this.browserInfo,origin:!!window&&window.location.origin}}updateStyles(t){return this.componentRef?.updateStyles&&this.componentRef.updateStyles(t),this}setFocusOn(t){return this.componentRef?.setFocusOn&&this.componentRef.setFocusOn(t),this}onBrand=t=>{this.props.onBrand?.(t)};processBinLookupResponse(t,o=!1){return this.componentRef?.processBinLookupResponse&&this.componentRef.processBinLookupResponse(t,o),this}handleUnsupportedCard(t){return this.componentRef?.handleUnsupportedCard&&this.componentRef.handleUnsupportedCard(t),this}handleClickToPaySubmit=t=>{this.setState({data:{...t},valid:{},errors:{},isValid:!0}),this.submit()};onBinLookup(t){if(!t.isReset){const o=n("supportedBrandsRaw").from(t);this.props.onBinLookup(o)}}submitAnalytics(t){const{type:o}=t;o!==m&&o!==y||"scheme"===this.constructor.type&&P(this.props,"supportedShopperInteractions")&&(t.isStoredPaymentMethod=!0,t.brand=this.props.brand),super.submitAnalytics(t,this.props)}onConfigSuccess=t=>{this.submitAnalytics({type:y}),this.props.onConfigSuccess?.(t)};onFocus=t=>{this.submitAnalytics({type:f,target:i(t.fieldType)}),C.includes(t.fieldType)?this.props.onFocus?.(t.event):this.props.onFocus?.(t)};onBlur=t=>{this.submitAnalytics({type:b,target:i(t.fieldType)}),C.includes(t.fieldType)?this.props.onBlur?.(t.event):this.props.onBlur?.(t)};onValidationErrorAnalytics=t=>{this.submitAnalytics({type:g,target:i(t.fieldType),validationErrorCode:t.errorCode,validationErrorMessage:T(t.errorCode,R)})};onBinValue=r(this);get storePaymentMethodPayload(){if(this.props.storedPaymentMethodId?.length>0)return{};if(0===this.props.amount?.value)return this.props.enableStoreDetails?{storePaymentMethod:!0}:{};return this.props.showStoreDetailsCheckbox&&void 0!==this.state.storePaymentMethod?{storePaymentMethod:Boolean(this.state.storePaymentMethod)}:{}}get isValid(){return!!this.state.isValid}get icon(){return this.props.icon??this.resources.getImage()(this.props.brand)}get brands(){const{brands:t,brandsConfiguration:o}=this.props;return t?t.map((t=>({icon:o[t]?.icon??this.props.modules.resources.getImage()(t),name:t}))):[]}get displayName(){return this.props.storedPaymentMethodId?`•••• ${this.props.lastFour}`:this.props.name||I.type}get accessibleName(){return(this.props.name||I.type)+(this.props.storedPaymentMethodId?" "+this.props.i18n.get("creditCard.storedCard.description.ariaLabel").replace("%@",this.props.lastFour):"")}get browserInfo(){return s()}payButton=o=>{const e=0===this.props.amount?.value,s=this.props.storedPaymentMethodId?.length>0;return t(h,{...o,amount:this.props.amount,secondaryAmount:this.props.secondaryAmount,label:e&&!s?this.props.i18n.get("payButton.saveDetails"):"",onClick:this.submit})};renderCardInput(e=!0){return t(o,{setComponentRef:this.setComponentRef,...this.props,...this.state,onChange:this.setState,onSubmit:this.submit,handleKeyPress:this.handleKeyPress,payButton:this.payButton,onBrand:this.onBrand,onBinValue:this.onBinValue,brand:this.props.brand,brandsIcons:this.brands,isPayButtonPrimaryVariant:e,resources:this.resources,onFocus:this.onFocus,onBlur:this.onBlur,onValidationErrorAnalytics:this.onValidationErrorAnalytics,onConfigSuccess:this.onConfigSuccess})}render(){return t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(l,{srPanel:this.props.modules.srPanel},t(c,{amount:this.props.amount,configuration:this.props.clickToPayConfiguration,clickToPayService:this.clickToPayService,isStandaloneComponent:!1,setClickToPayRef:this.setClickToPayRef,onSetStatus:this.setElementStatus,onSubmit:this.handleClickToPaySubmit,onError:this.handleError},(t=>this.renderCardInput(t)))))}}export{I as CardElement,I as default};
|
|
1
|
+
import{createElement as t}from"../../external/preact/dist/preact.js";import o from"./components/CardInput/CardInput.js";import{CoreProvider as e}from"../../core/Context/CoreProvider.js";import s from"../../utils/browserInfo.js";import r from"../internal/SecuredFields/binLookup/triggerBinLookUp.js";import{fieldTypeToSnakeCase as i}from"../internal/SecuredFields/utils.js";import{reject as n}from"../../utils/commonUtils.js";import{hasValidInstallmentsObject as a}from"./components/CardInput/utils.js";import p from"../internal/ClickToPay/services/create-clicktopay-service.js";import c from"./components/ClickToPayWrapper.js";import l from"../../core/Errors/SRPanelProvider.js";import{TxVariants as d}from"../tx-variants.js";import{UIElement as u}from"../internal/UIElement/UIElement.js";import h from"../internal/PayButton/PayButton.js";import{ANALYTICS_RENDERED_STR as m,ANALYTICS_CONFIGURED_STR as y,ANALYTICS_FOCUS_STR as f,ANALYTICS_UNFOCUS_STR as b,ANALYTICS_VALIDATION_ERROR_STR as g}from"../../core/Analytics/constants.js";import{ALL_SECURED_FIELDS as C}from"../internal/SecuredFields/lib/constants.js";import{hasOwnProperty as P}from"../../utils/hasOwnProperty.js";import S,{IMPLEMENTATION_ERROR as k}from"../../core/Errors/AdyenCheckoutError.js";import{getErrorMessageFromCode as T}from"../../core/Errors/utils.js";import{SF_ErrorCodes as R}from"../../core/Errors/constants.js";import B from"./components/CardInput/defaultProps.js";class I extends u{static type=d.scheme;clickToPayService;clickToPayRef=null;constructor(t,o){super(t,o),o&&!o._disableClickToPay&&(this.clickToPayService=p(this.props.configuration,this.props.clickToPayConfiguration,this.props.environment),this.clickToPayService?.initialize())}static defaultProps={showFormInstruction:!0,_disableClickToPay:!1,doBinLookup:!0,...n(["type","setComponentRef"]).from(B)};setStatus(t,o){return this.componentRef?.setStatus&&this.componentRef.setStatus(t,o),this.clickToPayRef?.setStatus&&this.clickToPayRef.setStatus(t,o),this}setClickToPayRef=t=>{this.clickToPayRef=t};formatProps(t){const o=t.session?.configuration?.enableStoreDetails??t.enableStoreDetails,e=!(0===t.amount?.value)&&o,s=t.storedPaymentMethodId||t.id,r=s&&t?.supportedShopperInteractions?.includes("Ecommerce");if(s&&!r)throw new S(k,"You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions");return{...t,holderNameRequired:!!t.hasHolderName&&t.holderNameRequired,hasCVC:!(t.brand&&"bcmc"===t.brand||t.hideCVC),billingAddressRequired:!t.storedPaymentMethodId&&t.billingAddressRequired,billingAddressMode:t.onAddressLookup?B.billingAddressMode:t.billingAddressMode,brand:t.brand??d.card,countryCode:t.countryCode?t.countryCode.toLowerCase():null,configuration:{...t.configuration,socialSecurityNumberMode:t.configuration?.socialSecurityNumberMode??"auto"},brandsConfiguration:t.brandsConfiguration||t.configuration?.brandsConfiguration||{},icon:t.icon||t.configuration?.icon,installmentOptions:t.session?.configuration?.installmentOptions||t.installmentOptions,enableStoreDetails:o,showStoreDetailsCheckbox:e,clickToPayConfiguration:{...t.clickToPayConfiguration,disableOtpAutoFocus:t.clickToPayConfiguration?.disableOtpAutoFocus||!1,shopperEmail:t.clickToPayConfiguration?.shopperEmail||this.core.options?.session?.shopperEmail,telephoneNumber:t.clickToPayConfiguration?.telephoneNumber||this.core.options?.session?.telephoneNumber,locale:t.clickToPayConfiguration?.locale||t.i18n?.locale?.replace("-","_")},...s&&{storedPaymentMethodId:s}}}formatData(){const t=this.state.selectedBrandValue;return{paymentMethod:{type:I.type,...this.state.data,...this.props.storedPaymentMethodId&&{storedPaymentMethodId:this.props.storedPaymentMethodId,holderName:this.props.holderName??""},...t&&{brand:t},...this.props.fundingSource&&{fundingSource:this.props.fundingSource}},...this.state.billingAddress&&{billingAddress:this.state.billingAddress},...this.state.socialSecurityNumber&&{socialSecurityNumber:this.state.socialSecurityNumber},...this.storePaymentMethodPayload,...a(this.state.installments)&&{installments:this.state.installments},browserInfo:this.browserInfo,origin:!!window&&window.location.origin}}updateStyles(t){return this.componentRef?.updateStyles&&this.componentRef.updateStyles(t),this}setFocusOn(t){return this.componentRef?.setFocusOn&&this.componentRef.setFocusOn(t),this}onBrand=t=>{this.props.onBrand?.(t)};processBinLookupResponse(t,o=!1){return this.componentRef?.processBinLookupResponse&&this.componentRef.processBinLookupResponse(t,o),this}handleUnsupportedCard(t){return this.componentRef?.handleUnsupportedCard&&this.componentRef.handleUnsupportedCard(t),this}handleClickToPaySubmit=t=>{this.setState({data:{...t},valid:{},errors:{},isValid:!0}),this.submit()};onBinLookup(t){if(!t.isReset){const o=n("supportedBrandsRaw").from(t);this.props.onBinLookup(o)}}submitAnalytics(t){const{type:o}=t;o!==m&&o!==y||"scheme"===this.constructor.type&&P(this.props,"supportedShopperInteractions")&&(t.isStoredPaymentMethod=!0,t.brand=this.props.brand),super.submitAnalytics(t,this.props)}onConfigSuccess=t=>{this.submitAnalytics({type:y}),this.props.onConfigSuccess?.(t)};onFocus=t=>{this.submitAnalytics({type:f,target:i(t.fieldType)}),C.includes(t.fieldType)?this.props.onFocus?.(t.event):this.props.onFocus?.(t)};onBlur=t=>{this.submitAnalytics({type:b,target:i(t.fieldType)}),C.includes(t.fieldType)?this.props.onBlur?.(t.event):this.props.onBlur?.(t)};onValidationErrorAnalytics=t=>{this.submitAnalytics({type:g,target:i(t.fieldType),validationErrorCode:t.errorCode,validationErrorMessage:T(t.errorCode,R)})};onBinValue=r(this);get storePaymentMethodPayload(){if(this.props.storedPaymentMethodId?.length>0)return{};if(0===this.props.amount?.value)return this.props.enableStoreDetails?{storePaymentMethod:!0}:{};return this.props.showStoreDetailsCheckbox&&void 0!==this.state.storePaymentMethod?{storePaymentMethod:Boolean(this.state.storePaymentMethod)}:{}}get isValid(){return!!this.state.isValid}get icon(){return this.props.icon??this.resources.getImage()(this.props.brand)}get brands(){const{brands:t,brandsConfiguration:o}=this.props;return t?t.map((t=>({icon:o[t]?.icon??this.props.modules.resources.getImage()(t),name:t}))):[]}get displayName(){return this.props.storedPaymentMethodId?`•••• ${this.props.lastFour}`:this.props.name||I.type}get accessibleName(){return(this.props.name||I.type)+(this.props.storedPaymentMethodId?" "+this.props.i18n.get("creditCard.storedCard.description.ariaLabel").replace("%@",this.props.lastFour):"")}get browserInfo(){return s()}payButton=o=>{const e=0===this.props.amount?.value,s=this.props.storedPaymentMethodId?.length>0;return t(h,{...o,amount:this.props.amount,secondaryAmount:this.props.secondaryAmount,label:e&&!s?this.props.i18n.get("payButton.saveDetails"):"",onClick:this.submit})};renderCardInput(e=!0){return t(o,{setComponentRef:this.setComponentRef,...this.props,...this.state,onChange:this.setState,onSubmit:this.submit,handleKeyPress:this.handleKeyPress,payButton:this.payButton,onBrand:this.onBrand,onBinValue:this.onBinValue,brand:this.props.brand,brandsIcons:this.brands,isPayButtonPrimaryVariant:e,resources:this.resources,onFocus:this.onFocus,onBlur:this.onBlur,onValidationErrorAnalytics:this.onValidationErrorAnalytics,onConfigSuccess:this.onConfigSuccess})}render(){return t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(l,{srPanel:this.props.modules.srPanel},t(c,{amount:this.props.amount,configuration:this.props.clickToPayConfiguration,clickToPayService:this.clickToPayService,isStandaloneComponent:!1,setClickToPayRef:this.setClickToPayRef,onSetStatus:this.setElementStatus,onSubmit:this.handleClickToPaySubmit,onError:this.handleError},(t=>this.renderCardInput(t)))))}}export{I as CardElement,I as default};
|
|
2
2
|
//# sourceMappingURL=Card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { h } from 'preact';\nimport CardInput from './components/CardInput';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport { BinLookupResponse, CardElementData, CardConfiguration } from './types';\nimport triggerBinLookUp from '../internal/SecuredFields/binLookup/triggerBinLookUp';\nimport { CbObjOnBinLookup, CbObjOnConfigSuccess, CbObjOnFocus } from '../internal/SecuredFields/lib/types';\nimport { fieldTypeToSnakeCase } from '../internal/SecuredFields/utils';\nimport { reject } from '../../utils/commonUtils';\nimport { hasValidInstallmentsObject } from './components/CardInput/utils';\nimport createClickToPayService from '../internal/ClickToPay/services/create-clicktopay-service';\nimport { ClickToPayCheckoutPayload, IClickToPayService } from '../internal/ClickToPay/services/types';\nimport ClickToPayWrapper from './components/ClickToPayWrapper';\nimport { ComponentFocusObject } from '../../types/global-types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport type { PayButtonFunctionProps, UIElementStatus } from '../internal/UIElement/types';\nimport UIElement from '../internal/UIElement';\nimport PayButton from '../internal/PayButton';\nimport type { ICore } from '../../core/types';\nimport {\n ANALYTICS_FOCUS_STR,\n ANALYTICS_CONFIGURED_STR,\n ANALYTICS_UNFOCUS_STR,\n ANALYTICS_VALIDATION_ERROR_STR,\n ANALYTICS_RENDERED_STR\n} from '../../core/Analytics/constants';\nimport { ALL_SECURED_FIELDS } from '../internal/SecuredFields/lib/constants';\nimport { FieldErrorAnalyticsObject, SendAnalyticsObject } from '../../core/Analytics/types';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport AdyenCheckoutError, { IMPLEMENTATION_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { getErrorMessageFromCode } from '../../core/Errors/utils';\nimport { SF_ErrorCodes } from '../../core/Errors/constants';\nimport CardInputDefaultProps from './components/CardInput/defaultProps';\n\nexport class CardElement extends UIElement<CardConfiguration> {\n public static type = TxVariants.scheme;\n\n private readonly clickToPayService: IClickToPayService | null;\n\n /**\n * Reference to the 'ClickToPayComponent'\n */\n private clickToPayRef = null;\n\n constructor(checkout: ICore, props?: CardConfiguration) {\n super(checkout, props);\n\n if (props && !props._disableClickToPay) {\n this.clickToPayService = createClickToPayService(this.props.configuration, this.props.clickToPayConfiguration, this.props.environment);\n void this.clickToPayService?.initialize();\n }\n }\n\n protected static defaultProps = {\n showFormInstruction: true,\n _disableClickToPay: false,\n doBinLookup: true,\n // Merge most of CardInput's defaultProps\n ...reject(['type', 'setComponentRef']).from(CardInputDefaultProps)\n };\n\n public setStatus(status: UIElementStatus, props?): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status, props);\n }\n if (this.clickToPayRef?.setStatus) {\n this.clickToPayRef.setStatus(status, props);\n }\n return this;\n }\n\n private setClickToPayRef = ref => {\n this.clickToPayRef = ref;\n };\n\n formatProps(props: CardConfiguration): CardConfiguration {\n // The value from a session should be used, before falling back to the merchant configuration\n const enableStoreDetails = props.session?.configuration?.enableStoreDetails ?? props.enableStoreDetails;\n\n const isZeroAuth = props.amount?.value === 0;\n const showStoreDetailsCheckbox = isZeroAuth ? false : enableStoreDetails;\n\n const storedCardID = props.storedPaymentMethodId || props.id; // check if we've been passed a (checkout) processed storedCard or one that merchant has pulled from the PMs response\n const isEcommerceStoredCard = storedCardID && props?.supportedShopperInteractions?.includes('Ecommerce'); // If we have a storedCard does it support Ecommerce (it might not if the merchant has pulled it from the PMs response)\n\n // If we have a storedPM but it doesn't support Ecommerce - we can't make a storedCard component from it\n if (storedCardID && !isEcommerceStoredCard) {\n // TODO - Decide if an error is too severe? Would a console.warning suffice?\n throw new AdyenCheckoutError(\n IMPLEMENTATION_ERROR,\n 'You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions'\n );\n }\n\n return {\n ...props,\n // Mismatch between hasHolderName & holderNameRequired which can mean card can never be valid\n holderNameRequired: !props.hasHolderName ? false : props.holderNameRequired,\n // False for *stored* BCMC cards & if merchant explicitly wants to hide the CVC field\n hasCVC: !((props.brand && props.brand === 'bcmc') || props.hideCVC),\n // billingAddressRequired only available for non-stored cards\n billingAddressRequired: props.storedPaymentMethodId ? false : props.billingAddressRequired,\n // edge case where merchant has defined both an onAddressLookup callback AND set billingAddressMode: 'partial' - which leads to some strange behaviour in the address UI\n billingAddressMode: props.onAddressLookup ? CardInputDefaultProps.billingAddressMode : props.billingAddressMode,\n /** props.brand will be specified in the case of a StoredCard or a Bancontact component, for a regular Card we default it to 'card' */\n brand: props.brand ?? TxVariants.card,\n countryCode: props.countryCode ? props.countryCode.toLowerCase() : null,\n // Required for transition period (until configuration object becomes the norm)\n // - if merchant has defined value directly in props, use this instead\n configuration: {\n ...props.configuration,\n socialSecurityNumberMode: props.configuration?.socialSecurityNumberMode ?? 'auto'\n },\n brandsConfiguration: props.brandsConfiguration || props.configuration?.brandsConfiguration || {},\n icon: props.icon || props.configuration?.icon,\n // installmentOptions of a session should be used before falling back to the merchant configuration\n installmentOptions: props.session?.configuration?.installmentOptions || props.installmentOptions,\n enableStoreDetails,\n showStoreDetailsCheckbox,\n /**\n * Click to Pay configuration\n * - If email is set explicitly in the configuration, then it can override the one used in the session creation\n */\n clickToPayConfiguration: {\n ...props.clickToPayConfiguration,\n disableOtpAutoFocus: props.clickToPayConfiguration?.disableOtpAutoFocus || false,\n shopperEmail: props.clickToPayConfiguration?.shopperEmail || this.core.options?.session?.shopperEmail,\n telephoneNumber: props.clickToPayConfiguration?.telephoneNumber || this.core.options?.session?.telephoneNumber,\n locale: props.clickToPayConfiguration?.locale || props.i18n?.locale?.replace('-', '_')\n },\n ...(storedCardID && { storedPaymentMethodId: storedCardID })\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): CardElementData {\n /**\n * this.state.selectedBrandValue will be set when:\n * - /binLookup detects a single brand,\n * - when /binLookup detects a dual-branded card and the shopper makes a brand selection\n * - or, in the case of a storedCard\n */\n const cardBrand = this.state.selectedBrandValue;\n\n return {\n paymentMethod: {\n type: CardElement.type,\n ...this.state.data,\n ...(this.props.storedPaymentMethodId && { storedPaymentMethodId: this.props.storedPaymentMethodId }),\n ...(cardBrand && { brand: cardBrand }),\n ...(this.props.fundingSource && { fundingSource: this.props.fundingSource })\n },\n ...(this.state.billingAddress && { billingAddress: this.state.billingAddress }),\n ...(this.state.socialSecurityNumber && { socialSecurityNumber: this.state.socialSecurityNumber }),\n ...this.storePaymentMethodPayload,\n ...(hasValidInstallmentsObject(this.state.installments) && { installments: this.state.installments }),\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin\n };\n }\n\n updateStyles(stylesObj) {\n if (this.componentRef?.updateStyles) this.componentRef.updateStyles(stylesObj);\n return this;\n }\n\n setFocusOn(fieldName) {\n if (this.componentRef?.setFocusOn) this.componentRef.setFocusOn(fieldName);\n return this;\n }\n\n public onBrand = event => {\n this.props.onBrand?.(event);\n };\n\n processBinLookupResponse(binLookupResponse: BinLookupResponse, isReset = false) {\n if (this.componentRef?.processBinLookupResponse) this.componentRef.processBinLookupResponse(binLookupResponse, isReset);\n return this;\n }\n\n handleUnsupportedCard(errObj) {\n if (this.componentRef?.handleUnsupportedCard) this.componentRef.handleUnsupportedCard(errObj);\n return this;\n }\n\n private handleClickToPaySubmit = (payload: ClickToPayCheckoutPayload) => {\n this.setState({ data: { ...payload }, valid: {}, errors: {}, isValid: true });\n this.submit();\n };\n\n onBinLookup(obj: CbObjOnBinLookup) {\n // Handler for regular card comp doesn't need this 'raw' data or to know about 'resets'\n if (!obj.isReset) {\n const nuObj = reject('supportedBrandsRaw').from(obj);\n this.props.onBinLookup(nuObj);\n }\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n const { type } = analyticsObj;\n\n if (type === ANALYTICS_RENDERED_STR || type === ANALYTICS_CONFIGURED_STR) {\n // Check if it's a storedCard\n if (this.constructor['type'] === 'scheme') {\n if (hasOwnProperty(this.props, 'supportedShopperInteractions')) {\n analyticsObj.isStoredPaymentMethod = true;\n analyticsObj.brand = this.props.brand;\n }\n }\n }\n\n super.submitAnalytics(analyticsObj, this.props);\n }\n\n private onConfigSuccess = (obj: CbObjOnConfigSuccess) => {\n this.submitAnalytics({\n type: ANALYTICS_CONFIGURED_STR\n });\n\n this.props.onConfigSuccess?.(obj);\n };\n\n private onFocus = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_FOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onFocus?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onFocus?.(obj);\n }\n };\n\n private onBlur = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_UNFOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onBlur?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onBlur?.(obj);\n }\n };\n\n private onValidationErrorAnalytics = (obj: FieldErrorAnalyticsObject) => {\n this.submitAnalytics({\n type: ANALYTICS_VALIDATION_ERROR_STR,\n target: fieldTypeToSnakeCase(obj.fieldType),\n validationErrorCode: obj.errorCode,\n validationErrorMessage: getErrorMessageFromCode(obj.errorCode, SF_ErrorCodes)\n });\n };\n\n public onBinValue = triggerBinLookUp(this);\n\n get storePaymentMethodPayload() {\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n if (isStoredCard) {\n return {};\n }\n\n /**\n * For regular card, zero auth payments, we store the payment method, *if* the configuration says we should:\n * - For sessions, this means if the session has been created with storePaymentMethodMode: 'askForConsent'\n * - For the advanced flow, this means if the merchant has still set enableStoreDetails: true\n *\n * What we are doing is.. if for a normal payment we would show the \"Save for my next payment\" checkbox,\n * for a zero-auth payment we effectively click the checkbox on behalf of the shopper.\n */\n const isZeroAuth = this.props.amount?.value === 0;\n if (isZeroAuth) {\n return this.props.enableStoreDetails ? { storePaymentMethod: true } : {};\n }\n\n // For regular card, non-zero auth payments, we store the payment method based on the checkbox value.\n // const includeStorePaymentMethod = this.props.enableStoreDetails && typeof this.state.storePaymentMethod !== 'undefined';\n const includeStorePaymentMethod = this.props.showStoreDetailsCheckbox && typeof this.state.storePaymentMethod !== 'undefined';\n return includeStorePaymentMethod ? { storePaymentMethod: Boolean(this.state.storePaymentMethod) } : {};\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.icon ?? this.resources.getImage()(this.props.brand);\n }\n\n get brands(): { icon: any; name: string }[] {\n const { brands, brandsConfiguration } = this.props;\n if (brands) {\n return brands.map(brand => {\n const brandIcon = brandsConfiguration[brand]?.icon ?? this.props.modules.resources.getImage()(brand);\n return { icon: brandIcon, name: brand };\n });\n }\n\n return [];\n }\n\n get displayName(): string {\n if (this.props.storedPaymentMethodId) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name || CardElement.type;\n }\n\n get accessibleName(): string {\n // Use display name, unless it's a stored payment method, there inform user\n return (\n (this.props.name || CardElement.type) +\n (this.props.storedPaymentMethodId\n ? ' ' + this.props.i18n.get('creditCard.storedCard.description.ariaLabel').replace('%@', this.props.lastFour)\n : '')\n );\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n\n protected override payButton = (props: PayButtonFunctionProps) => {\n const isZeroAuth = this.props.amount?.value === 0;\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n return (\n <PayButton\n {...props}\n amount={this.props.amount}\n secondaryAmount={this.props.secondaryAmount}\n label={isZeroAuth && !isStoredCard ? this.props.i18n.get('payButton.saveDetails') : ''}\n onClick={this.submit}\n />\n );\n };\n\n private renderCardInput(isCardPrimaryInput = true): h.JSX.Element {\n return (\n <CardInput\n setComponentRef={this.setComponentRef}\n {...this.props}\n {...this.state}\n onChange={this.setState}\n onSubmit={this.submit}\n handleKeyPress={this.handleKeyPress}\n payButton={this.payButton}\n onBrand={this.onBrand}\n onBinValue={this.onBinValue}\n brand={this.props.brand}\n brandsIcons={this.brands}\n isPayButtonPrimaryVariant={isCardPrimaryInput}\n resources={this.resources}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onValidationErrorAnalytics={this.onValidationErrorAnalytics}\n onConfigSuccess={this.onConfigSuccess}\n />\n );\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <ClickToPayWrapper\n amount={this.props.amount}\n configuration={this.props.clickToPayConfiguration}\n clickToPayService={this.clickToPayService}\n isStandaloneComponent={false}\n setClickToPayRef={this.setClickToPayRef}\n onSetStatus={this.setElementStatus}\n onSubmit={this.handleClickToPaySubmit}\n onError={this.handleError}\n >\n {isCardPrimaryInput => this.renderCardInput(isCardPrimaryInput)}\n </ClickToPayWrapper>\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default CardElement;\n"],"names":["CardElement","UIElement","static","TxVariants","scheme","clickToPayService","clickToPayRef","constructor","checkout","props","super","_disableClickToPay","this","createClickToPayService","configuration","clickToPayConfiguration","environment","initialize","showFormInstruction","doBinLookup","reject","from","CardInputDefaultProps","setStatus","status","componentRef","setClickToPayRef","ref","formatProps","enableStoreDetails","session","showStoreDetailsCheckbox","amount","value","storedCardID","storedPaymentMethodId","id","isEcommerceStoredCard","supportedShopperInteractions","includes","AdyenCheckoutError","IMPLEMENTATION_ERROR","holderNameRequired","hasHolderName","hasCVC","brand","hideCVC","billingAddressRequired","billingAddressMode","onAddressLookup","card","countryCode","toLowerCase","socialSecurityNumberMode","brandsConfiguration","icon","installmentOptions","disableOtpAutoFocus","shopperEmail","core","options","telephoneNumber","locale","i18n","replace","formatData","cardBrand","state","selectedBrandValue","paymentMethod","type","data","fundingSource","billingAddress","socialSecurityNumber","storePaymentMethodPayload","hasValidInstallmentsObject","installments","browserInfo","origin","window","location","updateStyles","stylesObj","setFocusOn","fieldName","onBrand","event","processBinLookupResponse","binLookupResponse","isReset","handleUnsupportedCard","errObj","handleClickToPaySubmit","payload","setState","valid","errors","isValid","submit","onBinLookup","obj","nuObj","submitAnalytics","analyticsObj","ANALYTICS_RENDERED_STR","ANALYTICS_CONFIGURED_STR","hasOwnProperty","isStoredPaymentMethod","onConfigSuccess","onFocus","ANALYTICS_FOCUS_STR","target","fieldTypeToSnakeCase","fieldType","ALL_SECURED_FIELDS","onBlur","ANALYTICS_UNFOCUS_STR","onValidationErrorAnalytics","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","errorCode","validationErrorMessage","getErrorMessageFromCode","SF_ErrorCodes","onBinValue","triggerBinLookUp","length","storePaymentMethod","Boolean","resources","getImage","brands","map","modules","name","displayName","lastFour","accessibleName","get","collectBrowserInfo","payButton","isZeroAuth","isStoredCard","h","PayButton","secondaryAmount","label","onClick","renderCardInput","isCardPrimaryInput","CardInput","setComponentRef","onChange","onSubmit","handleKeyPress","brandsIcons","isPayButtonPrimaryVariant","render","CoreProvider","loadingContext","SRPanelProvider","srPanel","ClickToPayWrapper","isStandaloneComponent","onSetStatus","setElementStatus","onError","handleError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { h } from 'preact';\nimport CardInput from './components/CardInput';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport { BinLookupResponse, CardElementData, CardConfiguration } from './types';\nimport triggerBinLookUp from '../internal/SecuredFields/binLookup/triggerBinLookUp';\nimport { CbObjOnBinLookup, CbObjOnConfigSuccess, CbObjOnFocus } from '../internal/SecuredFields/lib/types';\nimport { fieldTypeToSnakeCase } from '../internal/SecuredFields/utils';\nimport { reject } from '../../utils/commonUtils';\nimport { hasValidInstallmentsObject } from './components/CardInput/utils';\nimport createClickToPayService from '../internal/ClickToPay/services/create-clicktopay-service';\nimport { ClickToPayCheckoutPayload, IClickToPayService } from '../internal/ClickToPay/services/types';\nimport ClickToPayWrapper from './components/ClickToPayWrapper';\nimport { ComponentFocusObject } from '../../types/global-types';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport type { PayButtonFunctionProps, UIElementStatus } from '../internal/UIElement/types';\nimport UIElement from '../internal/UIElement';\nimport PayButton from '../internal/PayButton';\nimport type { ICore } from '../../core/types';\nimport {\n ANALYTICS_FOCUS_STR,\n ANALYTICS_CONFIGURED_STR,\n ANALYTICS_UNFOCUS_STR,\n ANALYTICS_VALIDATION_ERROR_STR,\n ANALYTICS_RENDERED_STR\n} from '../../core/Analytics/constants';\nimport { ALL_SECURED_FIELDS } from '../internal/SecuredFields/lib/constants';\nimport { FieldErrorAnalyticsObject, SendAnalyticsObject } from '../../core/Analytics/types';\nimport { hasOwnProperty } from '../../utils/hasOwnProperty';\nimport AdyenCheckoutError, { IMPLEMENTATION_ERROR } from '../../core/Errors/AdyenCheckoutError';\nimport { getErrorMessageFromCode } from '../../core/Errors/utils';\nimport { SF_ErrorCodes } from '../../core/Errors/constants';\nimport CardInputDefaultProps from './components/CardInput/defaultProps';\n\nexport class CardElement extends UIElement<CardConfiguration> {\n public static type = TxVariants.scheme;\n\n private readonly clickToPayService: IClickToPayService | null;\n\n /**\n * Reference to the 'ClickToPayComponent'\n */\n private clickToPayRef = null;\n\n constructor(checkout: ICore, props?: CardConfiguration) {\n super(checkout, props);\n\n if (props && !props._disableClickToPay) {\n this.clickToPayService = createClickToPayService(this.props.configuration, this.props.clickToPayConfiguration, this.props.environment);\n void this.clickToPayService?.initialize();\n }\n }\n\n protected static defaultProps = {\n showFormInstruction: true,\n _disableClickToPay: false,\n doBinLookup: true,\n // Merge most of CardInput's defaultProps\n ...reject(['type', 'setComponentRef']).from(CardInputDefaultProps)\n };\n\n public setStatus(status: UIElementStatus, props?): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status, props);\n }\n if (this.clickToPayRef?.setStatus) {\n this.clickToPayRef.setStatus(status, props);\n }\n return this;\n }\n\n private setClickToPayRef = ref => {\n this.clickToPayRef = ref;\n };\n\n formatProps(props: CardConfiguration): CardConfiguration {\n // The value from a session should be used, before falling back to the merchant configuration\n const enableStoreDetails = props.session?.configuration?.enableStoreDetails ?? props.enableStoreDetails;\n\n const isZeroAuth = props.amount?.value === 0;\n const showStoreDetailsCheckbox = isZeroAuth ? false : enableStoreDetails;\n\n const storedCardID = props.storedPaymentMethodId || props.id; // check if we've been passed a (checkout) processed storedCard or one that merchant has pulled from the PMs response\n const isEcommerceStoredCard = storedCardID && props?.supportedShopperInteractions?.includes('Ecommerce'); // If we have a storedCard does it support Ecommerce (it might not if the merchant has pulled it from the PMs response)\n\n // If we have a storedPM but it doesn't support Ecommerce - we can't make a storedCard component from it\n if (storedCardID && !isEcommerceStoredCard) {\n // TODO - Decide if an error is too severe? Would a console.warning suffice?\n throw new AdyenCheckoutError(\n IMPLEMENTATION_ERROR,\n 'You are trying to create a storedCard from a stored PM that does not support Ecommerce interactions'\n );\n }\n\n return {\n ...props,\n // Mismatch between hasHolderName & holderNameRequired which can mean card can never be valid\n holderNameRequired: !props.hasHolderName ? false : props.holderNameRequired,\n // False for *stored* BCMC cards & if merchant explicitly wants to hide the CVC field\n hasCVC: !((props.brand && props.brand === 'bcmc') || props.hideCVC),\n // billingAddressRequired only available for non-stored cards\n billingAddressRequired: props.storedPaymentMethodId ? false : props.billingAddressRequired,\n // edge case where merchant has defined both an onAddressLookup callback AND set billingAddressMode: 'partial' - which leads to some strange behaviour in the address UI\n billingAddressMode: props.onAddressLookup ? CardInputDefaultProps.billingAddressMode : props.billingAddressMode,\n /** props.brand will be specified in the case of a StoredCard or a Bancontact component, for a regular Card we default it to 'card' */\n brand: props.brand ?? TxVariants.card,\n countryCode: props.countryCode ? props.countryCode.toLowerCase() : null,\n // Required for transition period (until configuration object becomes the norm)\n // - if merchant has defined value directly in props, use this instead\n configuration: {\n ...props.configuration,\n socialSecurityNumberMode: props.configuration?.socialSecurityNumberMode ?? 'auto'\n },\n brandsConfiguration: props.brandsConfiguration || props.configuration?.brandsConfiguration || {},\n icon: props.icon || props.configuration?.icon,\n // installmentOptions of a session should be used before falling back to the merchant configuration\n installmentOptions: props.session?.configuration?.installmentOptions || props.installmentOptions,\n enableStoreDetails,\n showStoreDetailsCheckbox,\n /**\n * Click to Pay configuration\n * - If email is set explicitly in the configuration, then it can override the one used in the session creation\n */\n clickToPayConfiguration: {\n ...props.clickToPayConfiguration,\n disableOtpAutoFocus: props.clickToPayConfiguration?.disableOtpAutoFocus || false,\n shopperEmail: props.clickToPayConfiguration?.shopperEmail || this.core.options?.session?.shopperEmail,\n telephoneNumber: props.clickToPayConfiguration?.telephoneNumber || this.core.options?.session?.telephoneNumber,\n locale: props.clickToPayConfiguration?.locale || props.i18n?.locale?.replace('-', '_')\n },\n ...(storedCardID && { storedPaymentMethodId: storedCardID })\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): CardElementData {\n /**\n * this.state.selectedBrandValue will be set when:\n * - /binLookup detects a single brand,\n * - when /binLookup detects a dual-branded card and the shopper makes a brand selection\n * - or, in the case of a storedCard\n */\n const cardBrand = this.state.selectedBrandValue;\n\n return {\n paymentMethod: {\n type: CardElement.type,\n ...this.state.data,\n ...(this.props.storedPaymentMethodId && {\n storedPaymentMethodId: this.props.storedPaymentMethodId,\n holderName: this.props.holderName ?? ''\n }),\n ...(cardBrand && { brand: cardBrand }),\n ...(this.props.fundingSource && { fundingSource: this.props.fundingSource })\n },\n ...(this.state.billingAddress && { billingAddress: this.state.billingAddress }),\n ...(this.state.socialSecurityNumber && { socialSecurityNumber: this.state.socialSecurityNumber }),\n ...this.storePaymentMethodPayload,\n ...(hasValidInstallmentsObject(this.state.installments) && { installments: this.state.installments }),\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin\n };\n }\n\n updateStyles(stylesObj) {\n if (this.componentRef?.updateStyles) this.componentRef.updateStyles(stylesObj);\n return this;\n }\n\n setFocusOn(fieldName) {\n if (this.componentRef?.setFocusOn) this.componentRef.setFocusOn(fieldName);\n return this;\n }\n\n public onBrand = event => {\n this.props.onBrand?.(event);\n };\n\n processBinLookupResponse(binLookupResponse: BinLookupResponse, isReset = false) {\n if (this.componentRef?.processBinLookupResponse) this.componentRef.processBinLookupResponse(binLookupResponse, isReset);\n return this;\n }\n\n handleUnsupportedCard(errObj) {\n if (this.componentRef?.handleUnsupportedCard) this.componentRef.handleUnsupportedCard(errObj);\n return this;\n }\n\n private handleClickToPaySubmit = (payload: ClickToPayCheckoutPayload) => {\n this.setState({ data: { ...payload }, valid: {}, errors: {}, isValid: true });\n this.submit();\n };\n\n onBinLookup(obj: CbObjOnBinLookup) {\n // Handler for regular card comp doesn't need this 'raw' data or to know about 'resets'\n if (!obj.isReset) {\n const nuObj = reject('supportedBrandsRaw').from(obj);\n this.props.onBinLookup(nuObj);\n }\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n const { type } = analyticsObj;\n\n if (type === ANALYTICS_RENDERED_STR || type === ANALYTICS_CONFIGURED_STR) {\n // Check if it's a storedCard\n if (this.constructor['type'] === 'scheme') {\n if (hasOwnProperty(this.props, 'supportedShopperInteractions')) {\n analyticsObj.isStoredPaymentMethod = true;\n analyticsObj.brand = this.props.brand;\n }\n }\n }\n\n super.submitAnalytics(analyticsObj, this.props);\n }\n\n private onConfigSuccess = (obj: CbObjOnConfigSuccess) => {\n this.submitAnalytics({\n type: ANALYTICS_CONFIGURED_STR\n });\n\n this.props.onConfigSuccess?.(obj);\n };\n\n private onFocus = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_FOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onFocus?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onFocus?.(obj);\n }\n };\n\n private onBlur = (obj: ComponentFocusObject) => {\n this.submitAnalytics({\n type: ANALYTICS_UNFOCUS_STR,\n target: fieldTypeToSnakeCase(obj.fieldType)\n });\n\n // Call merchant defined callback\n if (ALL_SECURED_FIELDS.includes(obj.fieldType)) {\n this.props.onBlur?.(obj.event as CbObjOnFocus);\n } else {\n this.props.onBlur?.(obj);\n }\n };\n\n private onValidationErrorAnalytics = (obj: FieldErrorAnalyticsObject) => {\n this.submitAnalytics({\n type: ANALYTICS_VALIDATION_ERROR_STR,\n target: fieldTypeToSnakeCase(obj.fieldType),\n validationErrorCode: obj.errorCode,\n validationErrorMessage: getErrorMessageFromCode(obj.errorCode, SF_ErrorCodes)\n });\n };\n\n public onBinValue = triggerBinLookUp(this);\n\n get storePaymentMethodPayload() {\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n if (isStoredCard) {\n return {};\n }\n\n /**\n * For regular card, zero auth payments, we store the payment method, *if* the configuration says we should:\n * - For sessions, this means if the session has been created with storePaymentMethodMode: 'askForConsent'\n * - For the advanced flow, this means if the merchant has still set enableStoreDetails: true\n *\n * What we are doing is.. if for a normal payment we would show the \"Save for my next payment\" checkbox,\n * for a zero-auth payment we effectively click the checkbox on behalf of the shopper.\n */\n const isZeroAuth = this.props.amount?.value === 0;\n if (isZeroAuth) {\n return this.props.enableStoreDetails ? { storePaymentMethod: true } : {};\n }\n\n // For regular card, non-zero auth payments, we store the payment method based on the checkbox value.\n // const includeStorePaymentMethod = this.props.enableStoreDetails && typeof this.state.storePaymentMethod !== 'undefined';\n const includeStorePaymentMethod = this.props.showStoreDetailsCheckbox && typeof this.state.storePaymentMethod !== 'undefined';\n return includeStorePaymentMethod ? { storePaymentMethod: Boolean(this.state.storePaymentMethod) } : {};\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n get icon() {\n return this.props.icon ?? this.resources.getImage()(this.props.brand);\n }\n\n get brands(): { icon: any; name: string }[] {\n const { brands, brandsConfiguration } = this.props;\n if (brands) {\n return brands.map(brand => {\n const brandIcon = brandsConfiguration[brand]?.icon ?? this.props.modules.resources.getImage()(brand);\n return { icon: brandIcon, name: brand };\n });\n }\n\n return [];\n }\n\n get displayName(): string {\n if (this.props.storedPaymentMethodId) {\n return `•••• ${this.props.lastFour}`;\n }\n\n return this.props.name || CardElement.type;\n }\n\n get accessibleName(): string {\n // Use display name, unless it's a stored payment method, there inform user\n return (\n (this.props.name || CardElement.type) +\n (this.props.storedPaymentMethodId\n ? ' ' + this.props.i18n.get('creditCard.storedCard.description.ariaLabel').replace('%@', this.props.lastFour)\n : '')\n );\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n\n protected override payButton = (props: PayButtonFunctionProps) => {\n const isZeroAuth = this.props.amount?.value === 0;\n const isStoredCard = this.props.storedPaymentMethodId?.length > 0;\n return (\n <PayButton\n {...props}\n amount={this.props.amount}\n secondaryAmount={this.props.secondaryAmount}\n label={isZeroAuth && !isStoredCard ? this.props.i18n.get('payButton.saveDetails') : ''}\n onClick={this.submit}\n />\n );\n };\n\n private renderCardInput(isCardPrimaryInput = true): h.JSX.Element {\n return (\n <CardInput\n setComponentRef={this.setComponentRef}\n {...this.props}\n {...this.state}\n onChange={this.setState}\n onSubmit={this.submit}\n handleKeyPress={this.handleKeyPress}\n payButton={this.payButton}\n onBrand={this.onBrand}\n onBinValue={this.onBinValue}\n brand={this.props.brand}\n brandsIcons={this.brands}\n isPayButtonPrimaryVariant={isCardPrimaryInput}\n resources={this.resources}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onValidationErrorAnalytics={this.onValidationErrorAnalytics}\n onConfigSuccess={this.onConfigSuccess}\n />\n );\n }\n\n render() {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <ClickToPayWrapper\n amount={this.props.amount}\n configuration={this.props.clickToPayConfiguration}\n clickToPayService={this.clickToPayService}\n isStandaloneComponent={false}\n setClickToPayRef={this.setClickToPayRef}\n onSetStatus={this.setElementStatus}\n onSubmit={this.handleClickToPaySubmit}\n onError={this.handleError}\n >\n {isCardPrimaryInput => this.renderCardInput(isCardPrimaryInput)}\n </ClickToPayWrapper>\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n}\n\nexport default CardElement;\n"],"names":["CardElement","UIElement","static","TxVariants","scheme","clickToPayService","clickToPayRef","constructor","checkout","props","super","_disableClickToPay","this","createClickToPayService","configuration","clickToPayConfiguration","environment","initialize","showFormInstruction","doBinLookup","reject","from","CardInputDefaultProps","setStatus","status","componentRef","setClickToPayRef","ref","formatProps","enableStoreDetails","session","showStoreDetailsCheckbox","amount","value","storedCardID","storedPaymentMethodId","id","isEcommerceStoredCard","supportedShopperInteractions","includes","AdyenCheckoutError","IMPLEMENTATION_ERROR","holderNameRequired","hasHolderName","hasCVC","brand","hideCVC","billingAddressRequired","billingAddressMode","onAddressLookup","card","countryCode","toLowerCase","socialSecurityNumberMode","brandsConfiguration","icon","installmentOptions","disableOtpAutoFocus","shopperEmail","core","options","telephoneNumber","locale","i18n","replace","formatData","cardBrand","state","selectedBrandValue","paymentMethod","type","data","holderName","fundingSource","billingAddress","socialSecurityNumber","storePaymentMethodPayload","hasValidInstallmentsObject","installments","browserInfo","origin","window","location","updateStyles","stylesObj","setFocusOn","fieldName","onBrand","event","processBinLookupResponse","binLookupResponse","isReset","handleUnsupportedCard","errObj","handleClickToPaySubmit","payload","setState","valid","errors","isValid","submit","onBinLookup","obj","nuObj","submitAnalytics","analyticsObj","ANALYTICS_RENDERED_STR","ANALYTICS_CONFIGURED_STR","hasOwnProperty","isStoredPaymentMethod","onConfigSuccess","onFocus","ANALYTICS_FOCUS_STR","target","fieldTypeToSnakeCase","fieldType","ALL_SECURED_FIELDS","onBlur","ANALYTICS_UNFOCUS_STR","onValidationErrorAnalytics","ANALYTICS_VALIDATION_ERROR_STR","validationErrorCode","errorCode","validationErrorMessage","getErrorMessageFromCode","SF_ErrorCodes","onBinValue","triggerBinLookUp","length","storePaymentMethod","Boolean","resources","getImage","brands","map","modules","name","displayName","lastFour","accessibleName","get","collectBrowserInfo","payButton","isZeroAuth","isStoredCard","h","PayButton","secondaryAmount","label","onClick","renderCardInput","isCardPrimaryInput","CardInput","setComponentRef","onChange","onSubmit","handleKeyPress","brandsIcons","isPayButtonPrimaryVariant","render","CoreProvider","loadingContext","SRPanelProvider","srPanel","ClickToPayWrapper","isStandaloneComponent","onSetStatus","setElementStatus","onError","handleError"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../../src/components/Card/components/CardInput/types.ts"],"sourcesContent":["import Language from '../../../../language/Language';\nimport { BinLookupResponse, BrandConfiguration, CardBrandsConfiguration, CardBackendConfiguration, DualBrandSelectElement } from '../../types';\nimport { InstallmentOptions } from './components/types';\nimport { ValidationResult } from '../../../internal/PersonalDetails/types';\nimport { CVCPolicyType, DatePolicyType } from '../../../internal/SecuredFields/lib/types';\nimport Specifications from '../../../internal/Address/Specifications';\nimport { AddressSchema } from '../../../internal/Address/types';\nimport { CbObjOnError, StylesObject } from '../../../internal/SecuredFields/lib/types';\nimport { Resources } from '../../../../core/Context/Resources';\nimport { SRPanel } from '../../../../core/Errors/SRPanel';\nimport RiskElement from '../../../../core/RiskModule';\nimport { DisclaimerMsgObject } from '../../../internal/DisclaimerMessage/DisclaimerMessage';\nimport { OnAddressLookupType, OnAddressSelectedType } from '../../../internal/Address/components/AddressSearch';\nimport { ComponentMethodsRef } from '../../../internal/UIElement/types';\nimport { AddressData, PaymentAmount } from '../../../../types/global-types';\nimport { AnalyticsModule } from '../../../../types/global-types';\nimport { FieldErrorAnalyticsObject } from '../../../../core/Analytics/types';\n\nexport interface CardInputValidState {\n holderName?: boolean;\n billingAddress?: boolean;\n socialSecurityNumber?: boolean;\n encryptedCardNumber?: boolean;\n encryptedExpiryMonth?: boolean;\n encryptedExpiryYear?: boolean;\n encryptedSecurityCode?: boolean;\n taxNumber?: boolean;\n encryptedPassword?: boolean;\n}\n\nexport interface CardInputErrorState {\n holderName?: ValidationResult;\n billingAddress?: ValidationResult;\n socialSecurityNumber?: ValidationResult;\n encryptedCardNumber?: boolean;\n encryptedExpiryDate?: boolean;\n encryptedSecurityCode?: boolean;\n taxNumber?: ValidationResult;\n encryptedPassword?: boolean;\n}\n\nexport interface CardInputDataState {\n holderName?: string;\n billingAddress?: AddressData;\n socialSecurityNumber?: string;\n taxNumber?: string;\n}\n\ntype PlaceholderKeys =\n | 'holderName'\n | 'cardNumber'\n | 'expiryDate'\n | 'expiryMonth'\n | 'expiryYear'\n | 'securityCodeThreeDigits'\n | 'securityCodeFourDigits'\n | 'password';\nexport type Placeholders = Partial<Record<PlaceholderKeys, string>>;\n\n/**\n * Should be the subset of the props sent to CardInput that are *actually* used by CardInput\n * - either in the comp itself or are passed on to its children\n */\nexport interface CardInputProps {\n amount?: PaymentAmount;\n isPayButtonPrimaryVariant?: boolean;\n autoFocus?: boolean;\n billingAddressAllowedCountries?: string[];\n billingAddressRequired?: boolean;\n billingAddressRequiredFields?: string[];\n billingAddressMode?: AddressModeOptions;\n brand?: string;\n brands?: string[];\n brandsConfiguration?: CardBrandsConfiguration;\n brandsIcons: Array<BrandConfiguration>;\n clientKey: string;\n configuration?: CardBackendConfiguration;\n countryCode?: string;\n cvcPolicy?: CVCPolicyType;\n data?: CardInputDataState;\n disableIOSArrowKeys?: boolean;\n enableStoreDetails?: boolean;\n expiryMonth?: string;\n expiryYear?: string;\n forceCompat?: boolean;\n fundingSource?: 'debit' | 'credit';\n hasCVC?: boolean;\n hasHolderName?: boolean;\n holderNameRequired?: boolean;\n i18n?: Language;\n implementationType?: string;\n installmentOptions?: InstallmentOptions;\n keypadFix?: boolean;\n lastFour?: string;\n loadingContext: string;\n legacyInputMode?: boolean;\n minimumExpiryDate?: string;\n modules?: {\n srPanel: SRPanel;\n analytics: AnalyticsModule;\n risk: RiskElement;\n resources: Resources;\n };\n onAdditionalSFConfig?: () => {};\n onAdditionalSFRemoved?: () => {};\n onAllValid?: () => {};\n onAutoComplete?: () => {};\n onBinValue?: () => {};\n onBlur?: (e) => {};\n onBrand?: () => {};\n onConfigSuccess?: () => {};\n onChange?: (state) => {};\n onError?: () => {};\n onFieldValid?: () => {};\n onFocus?: (e) => {};\n onLoad?: () => {};\n handleKeyPress?: (obj: KeyboardEvent) => void;\n onAddressLookup?: OnAddressLookupType;\n onAddressSelected?: OnAddressSelectedType;\n addressSearchDebounceMs?: number;\n payButton?: (obj) => {};\n placeholders?: Placeholders;\n positionHolderNameOnTop?: boolean;\n resources: Resources;\n setComponentRef?: (ref) => void;\n showBrandIcon?: boolean;\n showInstallmentAmounts?: boolean;\n showPayButton: boolean;\n showStoreDetailsCheckbox?: boolean;\n showWarnings?: boolean;\n showContextualElement?: boolean;\n specifications?: Specifications;\n storedPaymentMethodId?: string;\n styles?: StylesObject;\n trimTrailingSeparator?: boolean;\n type?: string;\n maskSecurityCode?: boolean;\n exposeExpiryDate?: boolean;\n disclaimerMessage?: DisclaimerMsgObject;\n onValidationErrorAnalytics?: (obj: FieldErrorAnalyticsObject) => {};\n}\n\nexport interface CardInputState {\n dualBrandSelectElements: DualBrandSelectElement[];\n selectedBrandValue: string;\n billingAddress: object;\n brand?: string;\n data?: object;\n errors?: object;\n focusedElement: string;\n cvcPolicy: CVCPolicyType;\n expiryDatePolicy: DatePolicyType;\n isValid: boolean;\n status: string;\n valid?: object;\n issuingCountryCode: string;\n showSocialSecurityNumber?: boolean;\n}\n\n// An interface for the members exposed by CardInput to its parent Card/UIElement\nexport interface CardInputRef extends ComponentMethodsRef {\n sfp?: any;\n setFocusOn?: (who) => void;\n processBinLookupResponse?: (binLookupResponse: BinLookupResponse, isReset: boolean) => void;\n updateStyles?: (stylesObj: StylesObject) => void;\n handleUnsupportedCard?: (errObj: CbObjOnError) => boolean;\n}\n\nexport interface FieldError {\n errorMessage?: string;\n errorI18n?: string;\n}\n\nexport interface SFError {\n isValid?: boolean;\n errorMessage?: string;\n errorI18n?: string;\n error: string;\n rootNode: HTMLElement;\n detectedBrands?: string[];\n}\n\nexport interface SFStateErrorObj {\n [key: string]: SFError;\n}\n\nexport interface LayoutObj {\n props: CardInputProps;\n showKCP: boolean;\n showBrazilianSSN: boolean;\n countrySpecificSchemas: AddressSchema;\n billingAddressRequiredFields?: string[];\n}\n\nexport enum AddressModeOptions {\n full = 'full',\n partial = 'partial',\n none = 'none'\n}\n"],"names":["AddressModeOptions"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../src/components/Card/components/CardInput/types.ts"],"sourcesContent":["import Language from '../../../../language/Language';\nimport { BinLookupResponse, BrandConfiguration, CardBrandsConfiguration, CardBackendConfiguration, DualBrandSelectElement } from '../../types';\nimport { InstallmentOptions } from './components/types';\nimport { ValidationResult } from '../../../internal/PersonalDetails/types';\nimport { CVCPolicyType, DatePolicyType } from '../../../internal/SecuredFields/lib/types';\nimport Specifications from '../../../internal/Address/Specifications';\nimport { AddressSchema } from '../../../internal/Address/types';\nimport { CbObjOnError, StylesObject } from '../../../internal/SecuredFields/lib/types';\nimport { Resources } from '../../../../core/Context/Resources';\nimport { SRPanel } from '../../../../core/Errors/SRPanel';\nimport RiskElement from '../../../../core/RiskModule';\nimport { DisclaimerMsgObject } from '../../../internal/DisclaimerMessage/DisclaimerMessage';\nimport { OnAddressLookupType, OnAddressSelectedType } from '../../../internal/Address/components/AddressSearch';\nimport { ComponentMethodsRef } from '../../../internal/UIElement/types';\nimport { AddressData, PaymentAmount } from '../../../../types/global-types';\nimport { AnalyticsModule } from '../../../../types/global-types';\nimport { FieldErrorAnalyticsObject } from '../../../../core/Analytics/types';\n\nexport interface CardInputValidState {\n holderName?: boolean;\n billingAddress?: boolean;\n socialSecurityNumber?: boolean;\n encryptedCardNumber?: boolean;\n encryptedExpiryMonth?: boolean;\n encryptedExpiryYear?: boolean;\n encryptedSecurityCode?: boolean;\n taxNumber?: boolean;\n encryptedPassword?: boolean;\n}\n\nexport interface CardInputErrorState {\n holderName?: ValidationResult;\n billingAddress?: ValidationResult;\n socialSecurityNumber?: ValidationResult;\n encryptedCardNumber?: boolean;\n encryptedExpiryDate?: boolean;\n encryptedSecurityCode?: boolean;\n taxNumber?: ValidationResult;\n encryptedPassword?: boolean;\n}\n\nexport interface CardInputDataState {\n holderName?: string;\n billingAddress?: AddressData;\n socialSecurityNumber?: string;\n taxNumber?: string;\n}\n\ntype PlaceholderKeys =\n | 'holderName'\n | 'cardNumber'\n | 'expiryDate'\n | 'expiryMonth'\n | 'expiryYear'\n | 'securityCodeThreeDigits'\n | 'securityCodeFourDigits'\n | 'password';\nexport type Placeholders = Partial<Record<PlaceholderKeys, string>>;\n\n/**\n * Should be the subset of the props sent to CardInput that are *actually* used by CardInput\n * - either in the comp itself or are passed on to its children\n */\nexport interface CardInputProps {\n amount?: PaymentAmount;\n isPayButtonPrimaryVariant?: boolean;\n autoFocus?: boolean;\n billingAddressAllowedCountries?: string[];\n billingAddressRequired?: boolean;\n billingAddressRequiredFields?: string[];\n billingAddressMode?: AddressModeOptions;\n brand?: string;\n brands?: string[];\n brandsConfiguration?: CardBrandsConfiguration;\n brandsIcons: Array<BrandConfiguration>;\n clientKey: string;\n configuration?: CardBackendConfiguration;\n countryCode?: string;\n cvcPolicy?: CVCPolicyType;\n data?: CardInputDataState;\n disableIOSArrowKeys?: boolean;\n enableStoreDetails?: boolean;\n expiryMonth?: string;\n expiryYear?: string;\n forceCompat?: boolean;\n fundingSource?: 'debit' | 'credit';\n hasCVC?: boolean;\n hasHolderName?: boolean;\n holderName?: string;\n holderNameRequired?: boolean;\n i18n?: Language;\n implementationType?: string;\n installmentOptions?: InstallmentOptions;\n keypadFix?: boolean;\n lastFour?: string;\n loadingContext: string;\n legacyInputMode?: boolean;\n minimumExpiryDate?: string;\n modules?: {\n srPanel: SRPanel;\n analytics: AnalyticsModule;\n risk: RiskElement;\n resources: Resources;\n };\n onAdditionalSFConfig?: () => {};\n onAdditionalSFRemoved?: () => {};\n onAllValid?: () => {};\n onAutoComplete?: () => {};\n onBinValue?: () => {};\n onBlur?: (e) => {};\n onBrand?: () => {};\n onConfigSuccess?: () => {};\n onChange?: (state) => {};\n onError?: () => {};\n onFieldValid?: () => {};\n onFocus?: (e) => {};\n onLoad?: () => {};\n handleKeyPress?: (obj: KeyboardEvent) => void;\n onAddressLookup?: OnAddressLookupType;\n onAddressSelected?: OnAddressSelectedType;\n addressSearchDebounceMs?: number;\n payButton?: (obj) => {};\n placeholders?: Placeholders;\n positionHolderNameOnTop?: boolean;\n resources: Resources;\n setComponentRef?: (ref) => void;\n showBrandIcon?: boolean;\n showInstallmentAmounts?: boolean;\n showPayButton: boolean;\n showStoreDetailsCheckbox?: boolean;\n showWarnings?: boolean;\n showContextualElement?: boolean;\n specifications?: Specifications;\n storedPaymentMethodId?: string;\n styles?: StylesObject;\n trimTrailingSeparator?: boolean;\n type?: string;\n maskSecurityCode?: boolean;\n exposeExpiryDate?: boolean;\n disclaimerMessage?: DisclaimerMsgObject;\n onValidationErrorAnalytics?: (obj: FieldErrorAnalyticsObject) => {};\n}\n\nexport interface CardInputState {\n dualBrandSelectElements: DualBrandSelectElement[];\n selectedBrandValue: string;\n billingAddress: object;\n brand?: string;\n data?: object;\n errors?: object;\n focusedElement: string;\n cvcPolicy: CVCPolicyType;\n expiryDatePolicy: DatePolicyType;\n isValid: boolean;\n status: string;\n valid?: object;\n issuingCountryCode: string;\n showSocialSecurityNumber?: boolean;\n}\n\n// An interface for the members exposed by CardInput to its parent Card/UIElement\nexport interface CardInputRef extends ComponentMethodsRef {\n sfp?: any;\n setFocusOn?: (who) => void;\n processBinLookupResponse?: (binLookupResponse: BinLookupResponse, isReset: boolean) => void;\n updateStyles?: (stylesObj: StylesObject) => void;\n handleUnsupportedCard?: (errObj: CbObjOnError) => boolean;\n}\n\nexport interface FieldError {\n errorMessage?: string;\n errorI18n?: string;\n}\n\nexport interface SFError {\n isValid?: boolean;\n errorMessage?: string;\n errorI18n?: string;\n error: string;\n rootNode: HTMLElement;\n detectedBrands?: string[];\n}\n\nexport interface SFStateErrorObj {\n [key: string]: SFError;\n}\n\nexport interface LayoutObj {\n props: CardInputProps;\n showKCP: boolean;\n showBrazilianSSN: boolean;\n countrySpecificSchemas: AddressSchema;\n billingAddressRequiredFields?: string[];\n}\n\nexport enum AddressModeOptions {\n full = 'full',\n partial = 'partial',\n none = 'none'\n}\n"],"names":["AddressModeOptions"],"mappings":"OAmMYA,SAAAA,mDAAAA,CAAAA,IAAAA,EAAAA,CAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import s from"./PaymentMethod/PaymentMethodList.js";import o from"./status/index.js";import n from"../../../core/Services/order-status.js";import{sanitizeOrder as a}from"../../internal/UIElement/utils.js";import{ANALYTICS_RENDERED_STR as r}from"../../../core/Analytics/constants.js";import i from"../../../core/Errors/AdyenCheckoutError.js";class d extends t{state={elements:[],instantPaymentElements:[],storedPaymentElements:[],orderStatus:null,isDisabling:!1,status:{type:"loading",props:void 0},activePaymentMethod:null,cachedPaymentMethods:{}};componentDidMount(){this.prepareDropinData()}prepareDropinData=()=>{const{order:t,clientKey:e,loadingContext:s}=this.props,[o,a,i]=this.props.onCreateElements(),d=t?n({clientKey:e,loadingContext:s},t):null;Promise.all([o,a,i,d]).then((([t,e,s,o])=>{this.setState({instantPaymentElements:s,elements:e,storedPaymentElements:t,orderStatus:o}),this.setStatus("ready"),this.props.modules?.analytics.sendAnalytics("dropin",{type:r})})),this.onOrderCancel=this.getOnOrderCancel()};setStatus=(t,e={})=>{this.setState({status:{type:t,props:e}})};setActivePaymentMethod=t=>{this.setState((e=>({activePaymentMethod:t,cachedPaymentMethods:{...e.cachedPaymentMethods,[t._id]:!0}})))};componentDidUpdate(t,e){e.status.type!==this.state.status.type&&this.state.activePaymentMethod&&this.state.activePaymentMethod.setStatus(this.state.status.type),"ready"===this.state.status.type&&"ready"!==e.status.type&&this.props.onReady&&this.props.onReady()}handleOnSelectPaymentMethod=t=>{const{activePaymentMethod:e}=this.state;this.setActivePaymentMethod(t),(e&&e._id!==t._id||!e)&&(this.props.onSelect?.(t),t.submitAnalytics({type:r}))};handleDisableStoredPaymentMethod=t=>{this.setState({isDisabling:!0}),new Promise(((e,s)=>this.props.onDisableStoredPaymentMethod(t.props.storedPaymentMethodId,e,s))).then((()=>{this.setState((e=>({storedPaymentElements:e.storedPaymentElements.filter((e=>e._id!==t._id))}))),this.setState({isDisabling:!1})})).catch((()=>{this.setState({isDisabling:!1})}))};closeActivePaymentMethod(){this.setState({activePaymentMethod:null})}getOnOrderCancel=()=>this.props.onOrderCancel?t=>{const e=a(t.order);new Promise(((t,s)=>{this.props.onOrderCancel({order:e},{resolve:t,reject:s})})).then((({amount:t})=>this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null,t))).catch((t=>{throw new i("NETWORK_ERROR",t)}))}:this.props.session?t=>this.props.session.cancelOrder(t).then((()=>this.props.core.update({order:null}))).catch((t=>{console.error(t),this.setStatus(t?.message||"error")})):null;onOrderCancel;render(t,{elements:n,instantPaymentElements:a,storedPaymentElements:r,status:i,activePaymentMethod:d,cachedPaymentMethods:h}){const p="loading"===i.type,m="redirect"===i.type,c=n?.length||a?.length||r?.length;switch(i.type){case"success":return e(o.Success,{message:0===t?.amount?.value?"resultMessages.preauthorized":i.props?.message});case"error":return e(o.Error,{message:i.props?.message});case"custom":return i.props?.component?.render();default:return e("div",{className:`adyen-checkout__dropin adyen-checkout__dropin--${i.type}`},m&&i.props.component&&i.props.component.render(),p&&i.props&&i.props.component&&i.props.component.render(),!!c&&e(s,{isLoading:p||m,isDisablingPaymentMethod:this.state.isDisabling,paymentMethods:n,instantPaymentMethods:a,storedPaymentMethods:r,activePaymentMethod:d,cachedPaymentMethods:h,order:this.props.order,orderStatus:this.state.orderStatus,onOrderCancel:this.onOrderCancel,onSelect:this.handleOnSelectPaymentMethod,openPaymentMethod:this.props.openPaymentMethod,openFirstPaymentMethod:this.props.openFirstPaymentMethod,openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,onDisableStoredPaymentMethod:this.handleDisableStoredPaymentMethod,showRemovePaymentMethodButton:this.props.showRemovePaymentMethodButton,showRadioButton:this.props.showRadioButton}))}}}export{d as DropinComponent,d as default};
|
|
1
|
+
import{Component as t,createElement as e}from"../../../external/preact/dist/preact.js";import s from"./PaymentMethod/PaymentMethodList.js";import o from"./status/index.js";import n from"../../../core/Services/order-status.js";import{sanitizeOrder as a}from"../../internal/UIElement/utils.js";import{ANALYTICS_RENDERED_STR as r}from"../../../core/Analytics/constants.js";import i from"../../../core/Errors/AdyenCheckoutError.js";class d extends t{state={elements:[],instantPaymentElements:[],storedPaymentElements:[],orderStatus:null,isDisabling:!1,status:{type:"loading",props:void 0},activePaymentMethod:null,cachedPaymentMethods:{}};componentDidMount(){this.prepareDropinData()}prepareDropinData=()=>{const{order:t,clientKey:e,loadingContext:s}=this.props,[o,a,i]=this.props.onCreateElements(),d=t?n({clientKey:e,loadingContext:s},t):null;Promise.all([o,a,i,d]).then((([t,e,s,o])=>{this.setState({instantPaymentElements:s,elements:e,storedPaymentElements:t,orderStatus:o}),this.setStatus("ready"),this.props.modules?.analytics.sendAnalytics("dropin",{type:r,configData:this.analyticConfigData})})),this.onOrderCancel=this.getOnOrderCancel()};get analyticConfigData(){return{openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,showStoredPaymentMethods:this.props.showStoredPaymentMethods}}setStatus=(t,e={})=>{this.setState({status:{type:t,props:e}})};setActivePaymentMethod=t=>{this.setState((e=>({activePaymentMethod:t,cachedPaymentMethods:{...e.cachedPaymentMethods,[t._id]:!0}})))};componentDidUpdate(t,e){e.status.type!==this.state.status.type&&this.state.activePaymentMethod&&this.state.activePaymentMethod.setStatus(this.state.status.type),"ready"===this.state.status.type&&"ready"!==e.status.type&&this.props.onReady&&this.props.onReady()}handleOnSelectPaymentMethod=t=>{const{activePaymentMethod:e}=this.state;this.setActivePaymentMethod(t),(e&&e._id!==t._id||!e)&&(this.props.onSelect?.(t),t.submitAnalytics({type:r}))};handleDisableStoredPaymentMethod=t=>{this.setState({isDisabling:!0}),new Promise(((e,s)=>this.props.onDisableStoredPaymentMethod(t.props.storedPaymentMethodId,e,s))).then((()=>{this.setState((e=>({storedPaymentElements:e.storedPaymentElements.filter((e=>e._id!==t._id))}))),this.setState({isDisabling:!1})})).catch((()=>{this.setState({isDisabling:!1})}))};closeActivePaymentMethod(){this.setState({activePaymentMethod:null})}getOnOrderCancel=()=>this.props.onOrderCancel?t=>{const e=a(t.order);new Promise(((t,s)=>{this.props.onOrderCancel({order:e},{resolve:t,reject:s})})).then((({amount:t})=>this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null,t))).catch((t=>{throw new i("NETWORK_ERROR",t)}))}:this.props.session?t=>this.props.session.cancelOrder(t).then((()=>this.props.core.update({order:null}))).catch((t=>{console.error(t),this.setStatus(t?.message||"error")})):null;onOrderCancel;render(t,{elements:n,instantPaymentElements:a,storedPaymentElements:r,status:i,activePaymentMethod:d,cachedPaymentMethods:h}){const p="loading"===i.type,m="redirect"===i.type,c=n?.length||a?.length||r?.length;switch(i.type){case"success":return e(o.Success,{message:0===t?.amount?.value?"resultMessages.preauthorized":i.props?.message});case"error":return e(o.Error,{message:i.props?.message});case"custom":return i.props?.component?.render();default:return e("div",{className:`adyen-checkout__dropin adyen-checkout__dropin--${i.type}`},m&&i.props.component&&i.props.component.render(),p&&i.props&&i.props.component&&i.props.component.render(),!!c&&e(s,{isLoading:p||m,isDisablingPaymentMethod:this.state.isDisabling,paymentMethods:n,instantPaymentMethods:a,storedPaymentMethods:r,activePaymentMethod:d,cachedPaymentMethods:h,order:this.props.order,orderStatus:this.state.orderStatus,onOrderCancel:this.onOrderCancel,onSelect:this.handleOnSelectPaymentMethod,openPaymentMethod:this.props.openPaymentMethod,openFirstPaymentMethod:this.props.openFirstPaymentMethod,openFirstStoredPaymentMethod:this.props.openFirstStoredPaymentMethod,onDisableStoredPaymentMethod:this.handleDisableStoredPaymentMethod,showRemovePaymentMethodButton:this.props.showRemovePaymentMethodButton,showRadioButton:this.props.showRadioButton}))}}}export{d as DropinComponent,d as default};
|
|
2
2
|
//# sourceMappingURL=DropinComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropinComponent.js","sources":["../../../../../src/components/Dropin/components/DropinComponent.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport PaymentMethodList from './PaymentMethod/PaymentMethodList';\nimport Status from './status';\nimport getOrderStatus from '../../../core/Services/order-status';\nimport { DropinComponentProps, DropinComponentState, DropinStatusProps, onOrderCancelData } from '../types';\nimport './DropinComponent.scss';\nimport { UIElementStatus } from '../../internal/UIElement/types';\nimport { sanitizeOrder } from '../../internal/UIElement/utils';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { ANALYTICS_RENDERED_STR } from '../../../core/Analytics/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\n\nexport class DropinComponent extends Component<DropinComponentProps, DropinComponentState> {\n public state: DropinComponentState = {\n elements: [],\n instantPaymentElements: [],\n storedPaymentElements: [],\n orderStatus: null,\n isDisabling: false,\n status: { type: 'loading', props: undefined },\n activePaymentMethod: null,\n cachedPaymentMethods: {}\n };\n\n componentDidMount() {\n this.prepareDropinData();\n }\n\n public prepareDropinData = () => {\n const { order, clientKey, loadingContext } = this.props;\n const [storedElementsPromises, elementsPromises, instantPaymentsPromises] = this.props.onCreateElements();\n const orderStatusPromise = order ? getOrderStatus({ clientKey, loadingContext }, order) : null;\n\n void Promise.all([storedElementsPromises, elementsPromises, instantPaymentsPromises, orderStatusPromise]).then(\n ([storedPaymentElements, elements, instantPaymentElements, orderStatus]) => {\n this.setState({ instantPaymentElements, elements, storedPaymentElements, orderStatus });\n this.setStatus('ready');\n\n this.props.modules?.analytics.sendAnalytics('dropin', { type: ANALYTICS_RENDERED_STR });\n }\n );\n\n this.onOrderCancel = this.getOnOrderCancel();\n };\n\n public setStatus = (status: UIElementStatus, props: DropinStatusProps = {}) => {\n this.setState({ status: { type: status, props } });\n };\n\n private setActivePaymentMethod = paymentMethod => {\n this.setState(prevState => ({\n activePaymentMethod: paymentMethod,\n cachedPaymentMethods: { ...prevState.cachedPaymentMethods, [paymentMethod._id]: true }\n }));\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.status.type !== this.state.status.type && this.state.activePaymentMethod) {\n this.state.activePaymentMethod.setStatus(this.state.status.type);\n }\n\n if (this.state.status.type === 'ready' && prevState.status.type !== 'ready' && this.props.onReady) {\n this.props.onReady();\n }\n }\n\n private handleOnSelectPaymentMethod = paymentMethod => {\n const { activePaymentMethod } = this.state;\n\n this.setActivePaymentMethod(paymentMethod);\n\n // onSelect event\n if ((activePaymentMethod && activePaymentMethod._id !== paymentMethod._id) || !activePaymentMethod) {\n this.props.onSelect?.(paymentMethod);\n\n paymentMethod.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n };\n\n private handleDisableStoredPaymentMethod = storedPaymentMethod => {\n this.setState({ isDisabling: true });\n\n new Promise((resolve, reject) => this.props.onDisableStoredPaymentMethod(storedPaymentMethod.props.storedPaymentMethodId, resolve, reject))\n .then(() => {\n this.setState(prevState => ({\n storedPaymentElements: prevState.storedPaymentElements.filter(pm => pm._id !== storedPaymentMethod._id)\n }));\n this.setState({ isDisabling: false });\n })\n .catch(() => {\n this.setState({ isDisabling: false });\n });\n };\n\n closeActivePaymentMethod() {\n this.setState({ activePaymentMethod: null });\n }\n\n /**\n * getOnOrderCancel decides which onOrderCancel logic should be used, manual or sessions\n */\n private getOnOrderCancel = () => {\n if (this.props.onOrderCancel) {\n return (data: onOrderCancelData) => {\n const order = sanitizeOrder(data.order);\n new Promise<{ amount: PaymentAmount }>((resolve, reject) => {\n this.props.onOrderCancel({ order }, { resolve, reject });\n })\n .then(({ amount }) => this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null, amount))\n .catch(error => {\n throw new AdyenCheckoutError('NETWORK_ERROR', error);\n });\n };\n }\n if (this.props.session) {\n return (data: onOrderCancelData) =>\n this.props.session\n .cancelOrder(data)\n .then(() => this.props.core.update({ order: null }))\n .catch(error => {\n console.error(error);\n this.setStatus(error?.message || 'error');\n });\n }\n return null;\n };\n\n private onOrderCancel: (data: onOrderCancelData) => void;\n\n render(props, { elements, instantPaymentElements, storedPaymentElements, status, activePaymentMethod, cachedPaymentMethods }) {\n const isLoading = status.type === 'loading';\n const isRedirecting = status.type === 'redirect';\n const hasPaymentMethodsToBeDisplayed = elements?.length || instantPaymentElements?.length || storedPaymentElements?.length;\n\n switch (status.type) {\n case 'success':\n return <Status.Success message={props?.amount?.value === 0 ? 'resultMessages.preauthorized' : status.props?.message} />;\n\n case 'error':\n return <Status.Error message={status.props?.message} />;\n\n case 'custom':\n return status.props?.component?.render();\n\n default:\n return (\n <div className={`adyen-checkout__dropin adyen-checkout__dropin--${status.type}`}>\n {isRedirecting && status.props.component && status.props.component.render()}\n {isLoading && status.props && status.props.component && status.props.component.render()}\n {!!hasPaymentMethodsToBeDisplayed && (\n <PaymentMethodList\n isLoading={isLoading || isRedirecting}\n isDisablingPaymentMethod={this.state.isDisabling}\n paymentMethods={elements}\n instantPaymentMethods={instantPaymentElements}\n storedPaymentMethods={storedPaymentElements}\n activePaymentMethod={activePaymentMethod}\n cachedPaymentMethods={cachedPaymentMethods}\n order={this.props.order}\n orderStatus={this.state.orderStatus}\n onOrderCancel={this.onOrderCancel}\n onSelect={this.handleOnSelectPaymentMethod}\n openPaymentMethod={this.props.openPaymentMethod}\n openFirstPaymentMethod={this.props.openFirstPaymentMethod}\n openFirstStoredPaymentMethod={this.props.openFirstStoredPaymentMethod}\n onDisableStoredPaymentMethod={this.handleDisableStoredPaymentMethod}\n showRemovePaymentMethodButton={this.props.showRemovePaymentMethodButton}\n showRadioButton={this.props.showRadioButton}\n />\n )}\n </div>\n );\n }\n }\n}\n\nexport default DropinComponent;\n"],"names":["DropinComponent","Component","state","elements","instantPaymentElements","storedPaymentElements","orderStatus","isDisabling","status","type","props","undefined","activePaymentMethod","cachedPaymentMethods","componentDidMount","this","prepareDropinData","order","clientKey","loadingContext","storedElementsPromises","elementsPromises","instantPaymentsPromises","onCreateElements","orderStatusPromise","getOrderStatus","Promise","all","then","setState","setStatus","modules","analytics","sendAnalytics","ANALYTICS_RENDERED_STR","onOrderCancel","getOnOrderCancel","setActivePaymentMethod","paymentMethod","prevState","_id","componentDidUpdate","prevProps","onReady","handleOnSelectPaymentMethod","onSelect","submitAnalytics","handleDisableStoredPaymentMethod","storedPaymentMethod","resolve","reject","onDisableStoredPaymentMethod","storedPaymentMethodId","filter","pm","catch","closeActivePaymentMethod","data","sanitizeOrder","amount","elementRef","handleAdvanceFlowPaymentMethodsUpdate","error","AdyenCheckoutError","session","cancelOrder","core","update","console","message","render","isLoading","isRedirecting","hasPaymentMethodsToBeDisplayed","length","h","Status","Success","value","Error","component","div","className","PaymentMethodList","isDisablingPaymentMethod","paymentMethods","instantPaymentMethods","storedPaymentMethods","openPaymentMethod","openFirstPaymentMethod","openFirstStoredPaymentMethod","showRemovePaymentMethodButton","showRadioButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropinComponent.js","sources":["../../../../../src/components/Dropin/components/DropinComponent.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport PaymentMethodList from './PaymentMethod/PaymentMethodList';\nimport Status from './status';\nimport getOrderStatus from '../../../core/Services/order-status';\nimport { DropinComponentProps, DropinComponentState, DropinStatusProps, onOrderCancelData } from '../types';\nimport './DropinComponent.scss';\nimport { UIElementStatus } from '../../internal/UIElement/types';\nimport { sanitizeOrder } from '../../internal/UIElement/utils';\nimport { PaymentAmount } from '../../../types/global-types';\nimport { ANALYTICS_RENDERED_STR } from '../../../core/Analytics/constants';\nimport AdyenCheckoutError from '../../../core/Errors/AdyenCheckoutError';\n\nexport class DropinComponent extends Component<DropinComponentProps, DropinComponentState> {\n public state: DropinComponentState = {\n elements: [],\n instantPaymentElements: [],\n storedPaymentElements: [],\n orderStatus: null,\n isDisabling: false,\n status: { type: 'loading', props: undefined },\n activePaymentMethod: null,\n cachedPaymentMethods: {}\n };\n\n componentDidMount() {\n this.prepareDropinData();\n }\n\n public prepareDropinData = () => {\n const { order, clientKey, loadingContext } = this.props;\n const [storedElementsPromises, elementsPromises, instantPaymentsPromises] = this.props.onCreateElements();\n const orderStatusPromise = order ? getOrderStatus({ clientKey, loadingContext }, order) : null;\n\n void Promise.all([storedElementsPromises, elementsPromises, instantPaymentsPromises, orderStatusPromise]).then(\n ([storedPaymentElements, elements, instantPaymentElements, orderStatus]) => {\n this.setState({ instantPaymentElements, elements, storedPaymentElements, orderStatus });\n this.setStatus('ready');\n\n this.props.modules?.analytics.sendAnalytics('dropin', {\n type: ANALYTICS_RENDERED_STR,\n configData: this.analyticConfigData\n });\n }\n );\n\n this.onOrderCancel = this.getOnOrderCancel();\n };\n\n get analyticConfigData() {\n return {\n openFirstStoredPaymentMethod: this.props.openFirstStoredPaymentMethod,\n showStoredPaymentMethods: this.props.showStoredPaymentMethods\n };\n }\n\n public setStatus = (status: UIElementStatus, props: DropinStatusProps = {}) => {\n this.setState({ status: { type: status, props } });\n };\n\n private setActivePaymentMethod = paymentMethod => {\n this.setState(prevState => ({\n activePaymentMethod: paymentMethod,\n cachedPaymentMethods: { ...prevState.cachedPaymentMethods, [paymentMethod._id]: true }\n }));\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.status.type !== this.state.status.type && this.state.activePaymentMethod) {\n this.state.activePaymentMethod.setStatus(this.state.status.type);\n }\n\n if (this.state.status.type === 'ready' && prevState.status.type !== 'ready' && this.props.onReady) {\n this.props.onReady();\n }\n }\n\n private handleOnSelectPaymentMethod = paymentMethod => {\n const { activePaymentMethod } = this.state;\n\n this.setActivePaymentMethod(paymentMethod);\n\n // onSelect event\n if ((activePaymentMethod && activePaymentMethod._id !== paymentMethod._id) || !activePaymentMethod) {\n this.props.onSelect?.(paymentMethod);\n\n paymentMethod.submitAnalytics({ type: ANALYTICS_RENDERED_STR });\n }\n };\n\n private handleDisableStoredPaymentMethod = storedPaymentMethod => {\n this.setState({ isDisabling: true });\n\n new Promise((resolve, reject) => this.props.onDisableStoredPaymentMethod(storedPaymentMethod.props.storedPaymentMethodId, resolve, reject))\n .then(() => {\n this.setState(prevState => ({\n storedPaymentElements: prevState.storedPaymentElements.filter(pm => pm._id !== storedPaymentMethod._id)\n }));\n this.setState({ isDisabling: false });\n })\n .catch(() => {\n this.setState({ isDisabling: false });\n });\n };\n\n closeActivePaymentMethod() {\n this.setState({ activePaymentMethod: null });\n }\n\n /**\n * getOnOrderCancel decides which onOrderCancel logic should be used, manual or sessions\n */\n private getOnOrderCancel = () => {\n if (this.props.onOrderCancel) {\n return (data: onOrderCancelData) => {\n const order = sanitizeOrder(data.order);\n new Promise<{ amount: PaymentAmount }>((resolve, reject) => {\n this.props.onOrderCancel({ order }, { resolve, reject });\n })\n .then(({ amount }) => this.props.elementRef.handleAdvanceFlowPaymentMethodsUpdate(null, amount))\n .catch(error => {\n throw new AdyenCheckoutError('NETWORK_ERROR', error);\n });\n };\n }\n if (this.props.session) {\n return (data: onOrderCancelData) =>\n this.props.session\n .cancelOrder(data)\n .then(() => this.props.core.update({ order: null }))\n .catch(error => {\n console.error(error);\n this.setStatus(error?.message || 'error');\n });\n }\n return null;\n };\n\n private onOrderCancel: (data: onOrderCancelData) => void;\n\n render(props, { elements, instantPaymentElements, storedPaymentElements, status, activePaymentMethod, cachedPaymentMethods }) {\n const isLoading = status.type === 'loading';\n const isRedirecting = status.type === 'redirect';\n const hasPaymentMethodsToBeDisplayed = elements?.length || instantPaymentElements?.length || storedPaymentElements?.length;\n\n switch (status.type) {\n case 'success':\n return <Status.Success message={props?.amount?.value === 0 ? 'resultMessages.preauthorized' : status.props?.message} />;\n\n case 'error':\n return <Status.Error message={status.props?.message} />;\n\n case 'custom':\n return status.props?.component?.render();\n\n default:\n return (\n <div className={`adyen-checkout__dropin adyen-checkout__dropin--${status.type}`}>\n {isRedirecting && status.props.component && status.props.component.render()}\n {isLoading && status.props && status.props.component && status.props.component.render()}\n {!!hasPaymentMethodsToBeDisplayed && (\n <PaymentMethodList\n isLoading={isLoading || isRedirecting}\n isDisablingPaymentMethod={this.state.isDisabling}\n paymentMethods={elements}\n instantPaymentMethods={instantPaymentElements}\n storedPaymentMethods={storedPaymentElements}\n activePaymentMethod={activePaymentMethod}\n cachedPaymentMethods={cachedPaymentMethods}\n order={this.props.order}\n orderStatus={this.state.orderStatus}\n onOrderCancel={this.onOrderCancel}\n onSelect={this.handleOnSelectPaymentMethod}\n openPaymentMethod={this.props.openPaymentMethod}\n openFirstPaymentMethod={this.props.openFirstPaymentMethod}\n openFirstStoredPaymentMethod={this.props.openFirstStoredPaymentMethod}\n onDisableStoredPaymentMethod={this.handleDisableStoredPaymentMethod}\n showRemovePaymentMethodButton={this.props.showRemovePaymentMethodButton}\n showRadioButton={this.props.showRadioButton}\n />\n )}\n </div>\n );\n }\n }\n}\n\nexport default DropinComponent;\n"],"names":["DropinComponent","Component","state","elements","instantPaymentElements","storedPaymentElements","orderStatus","isDisabling","status","type","props","undefined","activePaymentMethod","cachedPaymentMethods","componentDidMount","this","prepareDropinData","order","clientKey","loadingContext","storedElementsPromises","elementsPromises","instantPaymentsPromises","onCreateElements","orderStatusPromise","getOrderStatus","Promise","all","then","setState","setStatus","modules","analytics","sendAnalytics","ANALYTICS_RENDERED_STR","configData","analyticConfigData","onOrderCancel","getOnOrderCancel","openFirstStoredPaymentMethod","showStoredPaymentMethods","setActivePaymentMethod","paymentMethod","prevState","_id","componentDidUpdate","prevProps","onReady","handleOnSelectPaymentMethod","onSelect","submitAnalytics","handleDisableStoredPaymentMethod","storedPaymentMethod","resolve","reject","onDisableStoredPaymentMethod","storedPaymentMethodId","filter","pm","catch","closeActivePaymentMethod","data","sanitizeOrder","amount","elementRef","handleAdvanceFlowPaymentMethodsUpdate","error","AdyenCheckoutError","session","cancelOrder","core","update","console","message","render","isLoading","isRedirecting","hasPaymentMethodsToBeDisplayed","length","h","Status","Success","value","Error","component","div","className","PaymentMethodList","isDisablingPaymentMethod","paymentMethods","instantPaymentMethods","storedPaymentMethods","openPaymentMethod","openFirstPaymentMethod","showRemovePaymentMethodButton","showRadioButton"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../../external/preact/dist/preact.js";import t from"./PaymentMethodIcon.js";import{useCoreContext as a}from"../../../../core/Context/CoreProvider.js";import o from"../../../../core/Context/useImage.js";const n=({order:n,orderStatus:d,onOrderCancel:r,brandLogoConfiguration:m})=>{const{i18n:c}=a(),u=o();return e("div",null,e("ul",{className:"adyen-checkout__order-payment-methods-list"},d?.paymentMethods?.map(((a,o)=>e("li",{key:`${a.type}-${o}`,className:"adyen-checkout__order-payment-method"},e("div",{className:"adyen-checkout__order-payment-method__header"},e("div",{className:"adyen-checkout__payment-method__header__title"},e(t,{altDescription:a.name,type:a.type,src:m[a.type]||u()(a.type)}),
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import t from"./PaymentMethodIcon.js";import{useCoreContext as a}from"../../../../core/Context/CoreProvider.js";import o from"../../../../core/Context/useImage.js";const n=({order:n,orderStatus:d,onOrderCancel:r,brandLogoConfiguration:m})=>{const{i18n:c}=a(),u=o();return e("div",null,e("ul",{className:"adyen-checkout__order-payment-methods-list"},d?.paymentMethods?.map(((a,o)=>e("li",{key:`${a.type}-${o}`,className:"adyen-checkout__order-payment-method"},e("div",{className:"adyen-checkout__order-payment-method__header"},e("div",{className:"adyen-checkout__payment-method__header__title"},e(t,{altDescription:a.name,type:a.type,src:m[a.type]||u()(a.type)}),a.label?`${a.label}`:`•••• ${a.lastFour}`),r&&e("button",{type:"button",className:"adyen-checkout__button adyen-checkout__button--inline adyen-checkout__button--link",onClick:()=>{r({order:n})}},c.get("storedPaymentMethod.disable.button"))),e("div",{className:"adyen-checkout__order-payment-method__details"},e("div",{className:"adyen-checkout__order-payment-method__deducted-amount"},e("div",{className:"adyen-checkout__order-payment-method__deducted-amount__label"},c.get("deductedBalance")),e("div",{className:"adyen-checkout__order-payment-method__deducted-amount__value"},c.amount(a.amount.value,a.amount.currency)))))))),d.remainingAmount&&e("div",{className:"adyen-checkout__order-remaining-amount"},c.get("partialPayment.warning")," ",e("strong",null,c.amount(d.remainingAmount.value,d.remainingAmount.currency))))};export{n as OrderPaymentMethods,n as default};
|
|
2
2
|
//# sourceMappingURL=OrderPaymentMethods.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderPaymentMethods.js","sources":["../../../../../../src/components/Dropin/components/PaymentMethod/OrderPaymentMethods.tsx"],"sourcesContent":["import { h } from 'preact';\nimport PaymentMethodIcon from './PaymentMethodIcon';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport useImage from '../../../../core/Context/useImage';\nimport './OrderPaymentMethods.scss';\n\nexport const OrderPaymentMethods = ({ order, orderStatus, onOrderCancel, brandLogoConfiguration }) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n return (\n <div>\n <ul className={'adyen-checkout__order-payment-methods-list'}>\n {orderStatus?.paymentMethods?.map((orderPaymentMethod, index) => (\n <li key={`${orderPaymentMethod.type}-${index}`} className=\"adyen-checkout__order-payment-method\">\n <div className=\"adyen-checkout__order-payment-method__header\">\n <div className=\"adyen-checkout__payment-method__header__title\">\n <PaymentMethodIcon\n altDescription={orderPaymentMethod.name}\n type={orderPaymentMethod.type}\n src={brandLogoConfiguration[orderPaymentMethod.type] || getImage()(orderPaymentMethod.type)}\n />\n
|
|
1
|
+
{"version":3,"file":"OrderPaymentMethods.js","sources":["../../../../../../src/components/Dropin/components/PaymentMethod/OrderPaymentMethods.tsx"],"sourcesContent":["import { h } from 'preact';\nimport PaymentMethodIcon from './PaymentMethodIcon';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport useImage from '../../../../core/Context/useImage';\nimport './OrderPaymentMethods.scss';\nimport { Order, OrderStatus } from '../../../../types';\n\ntype OrderPaymentMethodsProps = {\n order: Order;\n orderStatus: OrderStatus;\n onOrderCancel: (order) => void;\n brandLogoConfiguration: any;\n};\n\nexport const OrderPaymentMethods = ({ order, orderStatus, onOrderCancel, brandLogoConfiguration }: OrderPaymentMethodsProps) => {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n return (\n <div>\n <ul className={'adyen-checkout__order-payment-methods-list'}>\n {orderStatus?.paymentMethods?.map((orderPaymentMethod, index) => (\n <li key={`${orderPaymentMethod.type}-${index}`} className=\"adyen-checkout__order-payment-method\">\n <div className=\"adyen-checkout__order-payment-method__header\">\n <div className=\"adyen-checkout__payment-method__header__title\">\n <PaymentMethodIcon\n altDescription={orderPaymentMethod.name}\n type={orderPaymentMethod.type}\n src={brandLogoConfiguration[orderPaymentMethod.type] || getImage()(orderPaymentMethod.type)}\n />\n {orderPaymentMethod.label ? `${orderPaymentMethod.label}` : `•••• ${orderPaymentMethod.lastFour}`}\n </div>\n\n {onOrderCancel && (\n <button\n type=\"button\"\n className=\"adyen-checkout__button adyen-checkout__button--inline adyen-checkout__button--link\"\n onClick={() => {\n onOrderCancel({ order });\n }}\n >\n {i18n.get('storedPaymentMethod.disable.button')}\n </button>\n )}\n </div>\n <div className=\"adyen-checkout__order-payment-method__details\">\n <div className=\"adyen-checkout__order-payment-method__deducted-amount\">\n <div className=\"adyen-checkout__order-payment-method__deducted-amount__label\">{i18n.get('deductedBalance')}</div>\n <div className=\"adyen-checkout__order-payment-method__deducted-amount__value\">\n {i18n.amount(orderPaymentMethod.amount.value, orderPaymentMethod.amount.currency)}\n </div>\n </div>\n </div>\n </li>\n ))}\n </ul>\n\n {orderStatus.remainingAmount && (\n <div className=\"adyen-checkout__order-remaining-amount\">\n {i18n.get('partialPayment.warning')}{' '}\n <strong>{i18n.amount(orderStatus.remainingAmount.value, orderStatus.remainingAmount.currency)}</strong>\n </div>\n )}\n </div>\n );\n};\n\nexport default OrderPaymentMethods;\n"],"names":["OrderPaymentMethods","order","orderStatus","onOrderCancel","brandLogoConfiguration","i18n","useCoreContext","getImage","useImage","h","div","ul","className","paymentMethods","map","orderPaymentMethod","index","li","key","type","PaymentMethodIcon","altDescription","name","src","label","lastFour","button","onClick","get","amount","value","currency","remainingAmount","strong"],"mappings":"+OAcO,MAAMA,EAAsB,EAAGC,QAAOC,cAAaC,gBAAeC,6BACrE,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAEjB,OACIC,EAACC,WACGD,EAACE,KAAAA,CAAGC,UAAW,8CACVV,GAAaW,gBAAgBC,KAAI,CAACC,EAAoBC,IACnDP,EAACQ,KAAAA,CAAGC,IAAK,GAAGH,EAAmBI,QAAQH,IAASJ,UAAU,wCACtDH,EAACC,MAAAA,CAAIE,UAAU,gDACXH,EAACC,MAAAA,CAAIE,UAAU,iDACXH,EAACW,EAAAA,CACGC,eAAgBN,EAAmBO,KACnCH,KAAMJ,EAAmBI,KACzBI,IAAKnB,EAAuBW,EAAmBI,OAASZ,IAAWQ,EAAmBI,QAEzFJ,EAAmBS,MAAQ,GAAGT,EAAmBS,QAAU,QAAQT,EAAmBU,YAG1FtB,GACGM,EAACiB,SAAAA,CACGP,KAAK,SACLP,UAAU,qFACVe,QAAS,KACLxB,EAAc,CAAEF,SAAM,GAGzBI,EAAKuB,IAAI,wCAItBnB,EAACC,MAAAA,CAAIE,UAAU,iDACXH,EAACC,MAAAA,CAAIE,UAAU,yDACXH,EAACC,MAAAA,CAAIE,UAAU,gEAAgEP,EAAKuB,IAAI,oBACxFnB,EAACC,MAAAA,CAAIE,UAAU,gEACVP,EAAKwB,OAAOd,EAAmBc,OAAOC,MAAOf,EAAmBc,OAAOE,iBAQ/F7B,EAAY8B,iBACTvB,EAACC,MAAAA,CAAIE,UAAU,0CACVP,EAAKuB,IAAI,0BAA2B,IACrCnB,EAACwB,cAAQ5B,EAAKwB,OAAO3B,EAAY8B,gBAAgBF,MAAO5B,EAAY8B,gBAAgBD,YAAQ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../external/preact/dist/preact.js";import r from"../helpers/OpenInvoiceContainer/OpenInvoiceContainer.js";import{personalDetailsRequiredFields as
|
|
1
|
+
import{createElement as e}from"../../external/preact/dist/preact.js";import r from"../helpers/OpenInvoiceContainer/OpenInvoiceContainer.js";import{personalDetailsRequiredFields as i,deliveryAddressSpecification as s,allowedBillingCountries as t,allowedDeliveryCountries as o,DISCLAIMER_MESSAGE_TRANSLATION_KEY as n,termsAndConditionsUrlMap as a,privacyPolicyUrlMap as l}from"./config.js";import{getConsentUrl as c}from"../../utils/getConsentUrl.js";import{LabelOnlyDisclaimerMessage as d}from"../internal/DisclaimerMessage/DisclaimerMessage.js";import{TxVariants as p}from"../tx-variants.js";class m extends r{static type=p.riverty;static defaultProps={personalDetailsRequiredFields:i,deliveryAddressSpecification:s,...r.defaultProps};formatProps(r){const i=c(r.countryCode,r.i18n?.locale,a),s=c(r.countryCode,r.i18n?.locale,l);return{...super.formatProps(r),billingAddressSpecification:{...r.billingAddressSpecification,allowedCountries:r.countryCode?[r.countryCode]:t},deliveryAddressSpecification:{...r.deliveryAddressSpecification,allowedCountries:o},consentCheckboxLabel:e(d,{message:r.i18n.get(n),urls:[i,s]})}}}export{m as default};
|
|
2
2
|
//# sourceMappingURL=Riverty.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Riverty.js","sources":["../../../../src/components/Riverty/Riverty.tsx"],"sourcesContent":["import { h } from 'preact';\nimport OpenInvoiceContainer from '../helpers/OpenInvoiceContainer';\nimport {\n allowedBillingCountries,\n allowedDeliveryCountries,\n deliveryAddressSpecification,\n personalDetailsRequiredFields,\n termsAndConditionsUrlMap\n} from './config';\nimport
|
|
1
|
+
{"version":3,"file":"Riverty.js","sources":["../../../../src/components/Riverty/Riverty.tsx"],"sourcesContent":["import { h } from 'preact';\nimport OpenInvoiceContainer from '../helpers/OpenInvoiceContainer';\nimport {\n DISCLAIMER_MESSAGE_TRANSLATION_KEY,\n allowedBillingCountries,\n allowedDeliveryCountries,\n deliveryAddressSpecification,\n personalDetailsRequiredFields,\n termsAndConditionsUrlMap,\n privacyPolicyUrlMap\n} from './config';\nimport { getConsentUrl } from '../../utils/getConsentUrl';\nimport { LabelOnlyDisclaimerMessage } from '../internal/DisclaimerMessage/DisclaimerMessage';\nimport type { OpenInvoiceConfiguration } from '../helpers/OpenInvoiceContainer/types';\nimport { TxVariants } from '../tx-variants';\n\nexport default class Riverty extends OpenInvoiceContainer {\n public static readonly type = TxVariants.riverty;\n\n protected static defaultProps = {\n personalDetailsRequiredFields,\n deliveryAddressSpecification,\n ...OpenInvoiceContainer.defaultProps\n };\n\n formatProps(props: OpenInvoiceConfiguration) {\n const tocURL = getConsentUrl(props.countryCode, props.i18n?.locale, termsAndConditionsUrlMap);\n const privacyURL = getConsentUrl(props.countryCode, props.i18n?.locale, privacyPolicyUrlMap);\n\n return {\n ...super.formatProps(props),\n billingAddressSpecification: {\n ...props.billingAddressSpecification,\n allowedCountries: props.countryCode ? [props.countryCode] : allowedBillingCountries\n },\n deliveryAddressSpecification: {\n ...props.deliveryAddressSpecification,\n allowedCountries: allowedDeliveryCountries\n },\n consentCheckboxLabel: (\n <LabelOnlyDisclaimerMessage message={props.i18n.get(DISCLAIMER_MESSAGE_TRANSLATION_KEY)} urls={[tocURL, privacyURL]} />\n )\n };\n }\n}\n"],"names":["Riverty","OpenInvoiceContainer","static","TxVariants","riverty","personalDetailsRequiredFields","deliveryAddressSpecification","defaultProps","formatProps","props","tocURL","getConsentUrl","countryCode","i18n","locale","termsAndConditionsUrlMap","privacyURL","privacyPolicyUrlMap","super","billingAddressSpecification","allowedCountries","allowedBillingCountries","allowedDeliveryCountries","consentCheckboxLabel","h","LabelOnlyDisclaimerMessage","message","get","DISCLAIMER_MESSAGE_TRANSLATION_KEY","urls"],"mappings":"glBAgBe,MAAMA,UAAgBC,EACjCC,YAA8BC,EAAWC,QAEzCF,oBAAgC,CAC5BG,gCACAC,kCACGL,EAAqBM,cAG5BC,WAAAA,CAAYC,GACR,MAAMC,EAASC,EAAcF,EAAMG,YAAaH,EAAMI,MAAMC,OAAQC,GAC9DC,EAAaL,EAAcF,EAAMG,YAAaH,EAAMI,MAAMC,OAAQG,GAExE,MAAO,IACAC,MAAMV,YAAYC,GACrBU,4BAA6B,IACtBV,EAAMU,4BACTC,iBAAkBX,EAAMG,YAAc,CAACH,EAAMG,aAAeS,GAEhEf,6BAA8B,IACvBG,EAAMH,6BACTc,iBAAkBE,GAEtBC,qBACIC,EAACC,EAAAA,CAA2BC,QAASjB,EAAMI,KAAKc,IAAIC,GAAqCC,KAAM,CAACnB,EAAQM,KAGpH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{FIRST_NAME as
|
|
1
|
+
import{FIRST_NAME as t,LAST_NAME as e,COUNTRY as s,STREET as c,HOUSE_NUMBER_OR_NAME as o,POSTAL_CODE as n,CITY as m}from"../internal/Address/constants.js";const r="riverty.termsAndConditions",i=["AT","CH","DE"],d=["NO","SE","FI","DK","DE","AT","CH","NL","BE"],a=["firstName","lastName","dateOfBirth","shopperEmail","telephoneNumber"],h={default:{labels:{[t]:"deliveryAddress.firstName",[e]:"deliveryAddress.lastName"},schema:[s,[[t,50],[e,50]],[[c,70],[o,30]],[[n,30],[m,70]]]}},_={at:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_de"},ch:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_de",fr:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_fr"},de:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_de"}},p={at:{en:"https://documents.riverty.com/privacy_statement/checkout/at_en",de:"https://documents.riverty.com/privacy_statement/checkout/at_de"},ch:{en:"https://documents.riverty.com/privacy_statement/checkout/ch_en",de:"https://documents.riverty.com/privacy_statement/checkout/h_de",fr:"https://documents.riverty.com/privacy_statement/checkout/ch_fr"},de:{en:"https://documents.riverty.com/privacy_statement/checkout/de_en",de:"https://documents.riverty.com/privacy_statement/checkout/de_de"}};export{r as DISCLAIMER_MESSAGE_TRANSLATION_KEY,i as allowedBillingCountries,d as allowedDeliveryCountries,h as deliveryAddressSpecification,a as personalDetailsRequiredFields,p as privacyPolicyUrlMap,_ as termsAndConditionsUrlMap};
|
|
2
2
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../../../src/components/Riverty/config.ts"],"sourcesContent":["import { CITY, COUNTRY, FIRST_NAME, HOUSE_NUMBER_OR_NAME, LAST_NAME, POSTAL_CODE, STREET } from '../internal/Address/constants';\nimport { AddressSpecifications } from '../internal/Address/types';\n\nexport const allowedBillingCountries = ['AT', 'CH', 'DE'];\nexport const allowedDeliveryCountries = ['NO', 'SE', 'FI', 'DK', 'DE', 'AT', 'CH', 'NL', 'BE'];\nexport const personalDetailsRequiredFields = ['firstName', 'lastName', 'dateOfBirth', 'shopperEmail', 'telephoneNumber'];\nexport const deliveryAddressSpecification: AddressSpecifications = {\n default: {\n labels: {\n [FIRST_NAME]: 'deliveryAddress.firstName',\n [LAST_NAME]: 'deliveryAddress.lastName'\n },\n schema: [\n COUNTRY,\n [\n [FIRST_NAME, 50],\n [LAST_NAME, 50]\n ],\n [\n [STREET, 70],\n [HOUSE_NUMBER_OR_NAME, 30]\n ],\n\n [\n [POSTAL_CODE, 30],\n [CITY, 70]\n ]\n ]\n }\n};\nexport const termsAndConditionsUrlMap = {\n at: {\n en: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_en',\n de: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_de'\n },\n ch: {\n en: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_en',\n de: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_de',\n fr: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_fr'\n },\n de: {\n en: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_en',\n de: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_de'\n }\n};\n"],"names":["allowedBillingCountries","allowedDeliveryCountries","personalDetailsRequiredFields","deliveryAddressSpecification","default","labels","FIRST_NAME","LAST_NAME","schema","COUNTRY","STREET","HOUSE_NUMBER_OR_NAME","POSTAL_CODE","CITY","termsAndConditionsUrlMap","at","en","de","ch","fr"],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../../src/components/Riverty/config.ts"],"sourcesContent":["import { CITY, COUNTRY, FIRST_NAME, HOUSE_NUMBER_OR_NAME, LAST_NAME, POSTAL_CODE, STREET } from '../internal/Address/constants';\nimport { AddressSpecifications } from '../internal/Address/types';\n\nexport const DISCLAIMER_MESSAGE_TRANSLATION_KEY = 'riverty.termsAndConditions';\n\nexport const allowedBillingCountries = ['AT', 'CH', 'DE'];\nexport const allowedDeliveryCountries = ['NO', 'SE', 'FI', 'DK', 'DE', 'AT', 'CH', 'NL', 'BE'];\nexport const personalDetailsRequiredFields = ['firstName', 'lastName', 'dateOfBirth', 'shopperEmail', 'telephoneNumber'];\nexport const deliveryAddressSpecification: AddressSpecifications = {\n default: {\n labels: {\n [FIRST_NAME]: 'deliveryAddress.firstName',\n [LAST_NAME]: 'deliveryAddress.lastName'\n },\n schema: [\n COUNTRY,\n [\n [FIRST_NAME, 50],\n [LAST_NAME, 50]\n ],\n [\n [STREET, 70],\n [HOUSE_NUMBER_OR_NAME, 30]\n ],\n\n [\n [POSTAL_CODE, 30],\n [CITY, 70]\n ]\n ]\n }\n};\nexport const termsAndConditionsUrlMap = {\n at: {\n en: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_en',\n de: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_de'\n },\n ch: {\n en: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_en',\n de: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_de',\n fr: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_fr'\n },\n de: {\n en: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_en',\n de: 'https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_de'\n }\n};\n\nexport const privacyPolicyUrlMap = {\n at: {\n en: 'https://documents.riverty.com/privacy_statement/checkout/at_en',\n de: 'https://documents.riverty.com/privacy_statement/checkout/at_de'\n },\n ch: {\n en: 'https://documents.riverty.com/privacy_statement/checkout/ch_en',\n de: 'https://documents.riverty.com/privacy_statement/checkout/h_de',\n fr: 'https://documents.riverty.com/privacy_statement/checkout/ch_fr'\n },\n de: {\n en: 'https://documents.riverty.com/privacy_statement/checkout/de_en',\n de: 'https://documents.riverty.com/privacy_statement/checkout/de_de'\n }\n};\n"],"names":["DISCLAIMER_MESSAGE_TRANSLATION_KEY","allowedBillingCountries","allowedDeliveryCountries","personalDetailsRequiredFields","deliveryAddressSpecification","default","labels","FIRST_NAME","LAST_NAME","schema","COUNTRY","STREET","HOUSE_NUMBER_OR_NAME","POSTAL_CODE","CITY","termsAndConditionsUrlMap","at","en","de","ch","fr","privacyPolicyUrlMap"],"mappings":"2JAGO,MAAMA,EAAqC,6BAErCC,EAA0B,CAAC,KAAM,KAAM,MACvCC,EAA2B,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5EC,EAAgC,CAAC,YAAa,WAAY,cAAe,eAAgB,mBACzFC,EAAsD,CAC/DC,QAAS,CACLC,OAAQ,CACJC,CAACA,GAAa,4BACdC,CAACA,GAAY,4BAEjBC,OAAQ,CACJC,EACA,CACI,CAACH,EAAY,IACb,CAACC,EAAW,KAEhB,CACI,CAACG,EAAQ,IACT,CAACC,EAAsB,KAG3B,CACI,CAACC,EAAa,IACd,CAACC,EAAM,QAKVC,EAA2B,CACpCC,GAAI,CACAC,GAAI,+EACJC,GAAI,gFAERC,GAAI,CACAF,GAAI,+EACJC,GAAI,+EACJE,GAAI,gFAERF,GAAI,CACAD,GAAI,+EACJC,GAAI,iFAICG,EAAsB,CAC/BL,GAAI,CACAC,GAAI,iEACJC,GAAI,kEAERC,GAAI,CACAF,GAAI,iEACJC,GAAI,gEACJE,GAAI,kEAERF,GAAI,CACAD,GAAI,iEACJC,GAAI"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../external/preact/dist/preact.js";import{isValidHttpUrl as
|
|
1
|
+
import{createElement as e,Fragment as r}from"../../../external/preact/dist/preact.js";import{isValidHttpUrl as t}from"../../../utils/isValidURL.js";import{interpolateElement as a}from"../../../language/utils.js";function s({message:r,urls:t}){return e("span",{className:"adyen-checkout-disclaimer__label"},e(n,{message:r,urls:t}))}function n({message:s,urls:n}){const l="string"==typeof s,o=n.every((e=>"string"==typeof e&&t(e)));return l&&o?e(r,null,a(s,n.map((r=>function(t){return e("a",{className:"adyen-checkout__link",href:r,target:"_blank",rel:"noopener noreferrer"},t)})))):null}export{n as LabelOnlyDisclaimerMessage,s as default};
|
|
2
2
|
//# sourceMappingURL=DisclaimerMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisclaimerMessage.js","sources":["../../../../../src/components/internal/DisclaimerMessage/DisclaimerMessage.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { isValidHttpUrl } from '../../../utils/isValidURL';\nimport './DisclaimerMessage.scss';\nimport { interpolateElement } from '../../../language/utils';\nexport interface DisclaimerMsgObject {\n message: string;\n linkText: string;\n link: string;\n}\n\ninterface InternalDisclaimerMsgObject {\n message: string;\n urls: Array<string>;\n}\n\
|
|
1
|
+
{"version":3,"file":"DisclaimerMessage.js","sources":["../../../../../src/components/internal/DisclaimerMessage/DisclaimerMessage.tsx"],"sourcesContent":["import { Fragment, h } from 'preact';\nimport { isValidHttpUrl } from '../../../utils/isValidURL';\nimport './DisclaimerMessage.scss';\nimport { interpolateElement } from '../../../language/utils';\n\nexport interface DisclaimerMsgObject {\n message: string;\n linkText: string;\n link: string;\n}\n\ninterface InternalDisclaimerMsgObject {\n message: string;\n urls: Array<string>;\n}\n\n/**\n * props: {\n * message: 'By continuing you agree with the %#terms and conditions%#',\n * urls: ['https://www.adyen.com']\n * }\n * String inside the '%#' token pair will be rendered as an anchor element.\n */\n\nexport default function DisclaimerMessage({ message, urls }: InternalDisclaimerMsgObject) {\n return (\n <span className=\"adyen-checkout-disclaimer__label\">\n <LabelOnlyDisclaimerMessage message={message} urls={urls} />\n </span>\n );\n}\n\nexport function LabelOnlyDisclaimerMessage({ message, urls }: InternalDisclaimerMsgObject) {\n const messageIsStr = typeof message === 'string';\n const validUrls = urls.every(url => typeof url === 'string' && isValidHttpUrl(url));\n if (!messageIsStr || !validUrls) return null;\n\n return (\n <Fragment>\n {interpolateElement(\n message,\n urls.map(\n // for each URL in the URLs array, return a createLink function\n url =>\n function createLink(translation) {\n return (\n <a className=\"adyen-checkout__link\" href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n {translation}\n </a>\n );\n }\n )\n )}\n </Fragment>\n );\n}\n"],"names":["DisclaimerMessage","message","urls","h","span","className","LabelOnlyDisclaimerMessage","messageIsStr","validUrls","every","url","isValidHttpUrl","Fragment","interpolateElement","map","translation","a","href","target","rel"],"mappings":"oNAwBe,SAASA,GAAkBC,QAAEA,EAAOC,KAAEA,IACjD,OACIC,EAACC,OAAAA,CAAKC,UAAU,oCACZF,EAACG,EAAAA,CAA2BL,QAASA,EAASC,KAAMA,IAGhE,CAEO,SAASI,GAA2BL,QAAEA,EAAOC,KAAEA,IAClD,MAAMK,EAAkC,iBAAZN,EACtBO,EAAYN,EAAKO,OAAMC,GAAsB,iBAARA,GAAoBC,EAAeD,KAC9E,OAAKH,GAAiBC,EAGlBL,EAACS,EACIC,KAAAA,EACGZ,EACAC,EAAKY,KAEDJ,GACI,SAAoBK,GAChB,OACIZ,EAACa,IAAAA,CAAEX,UAAU,uBAAuBY,KAAMP,EAAKQ,OAAO,SAASC,IAAI,uBAC9DJ,EAGb,MAfoB,IAoB5C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ANALYTICS_EVENT_ERROR as e,ANALYTICS_EVENT_LOG as t,ANALYTICS_ACTION_STR as a,ANALYTICS_SUBMIT_STR as s,ANALYTICS_VALIDATION_ERROR_STR as n,ANALYTICS_EVENT_INFO as o,ANALYTICS_SELECTED_STR as r,ANALYTICS_DOWNLOAD_STR as c,ANALYTICS_INPUT_STR as p,ANALYTICS_DISPLAYED_STR as i,ANALYTICS_UNFOCUS_STR as y,ANALYTICS_FOCUS_STR as d,ANALYTICS_CONFIGURED_STR as m,ANALYTICS_RENDERED_STR as l,ANALYTICS_EXPRESS_PAGES_ARRAY as v}from"./constants.js";import{THREEDS2_ERROR as b,THREEDS2_FULL as
|
|
1
|
+
import{ANALYTICS_EVENT_ERROR as e,ANALYTICS_EVENT_LOG as t,ANALYTICS_ACTION_STR as a,ANALYTICS_SUBMIT_STR as s,ANALYTICS_VALIDATION_ERROR_STR as n,ANALYTICS_EVENT_INFO as o,ANALYTICS_SELECTED_STR as r,ANALYTICS_DOWNLOAD_STR as c,ANALYTICS_INPUT_STR as p,ANALYTICS_DISPLAYED_STR as i,ANALYTICS_UNFOCUS_STR as y,ANALYTICS_FOCUS_STR as d,ANALYTICS_CONFIGURED_STR as m,ANALYTICS_RENDERED_STR as l,ANALYTICS_EXPRESS_PAGES_ARRAY as v}from"./constants.js";import{THREEDS2_ERROR as b,THREEDS2_FULL as g}from"../../components/ThreeDS2/constants.js";import E,{SDK_ERROR as u}from"../Errors/AdyenCheckoutError.js";import{getCardConfigData as f}from"./utils.js";const h=h=>(k,A,M={})=>{const{type:P,target:S}=A;if(!P)throw new E(u,"You are trying to create an analytics event without a type");switch(P){case l:{const{isStoredPaymentMethod:e,brand:t,configData:a}=A,{isExpress:s,expressPage:n}=M,r=n&&v.includes(n),{type:c}=M;let p=null;"scheme"!==c&&"bcmc"!==c&&"customcard"!==c||(p=f(M));const i={component:k,type:P,..."boolean"==typeof e&&{isStoredPaymentMethod:e},...t&&{brand:t},..."boolean"==typeof s&&{isExpress:s},...!0===s&&r&&{expressPage:n},...p&&{configData:p},...a&&{configData:a}};h.createAnalyticsEvent({event:o,data:i});break}case m:{const{isStoredPaymentMethod:e,brand:t}=A,a={component:k,type:P,isStoredPaymentMethod:e,brand:t};h.createAnalyticsEvent({event:o,data:a});break}case d:case y:case i:case p:case c:h.createAnalyticsEvent({event:o,data:{component:k,type:P,target:S}});break;case r:{const{issuer:e}=A;h.createAnalyticsEvent({event:o,data:{component:k,type:P,target:S,issuer:e}});break}case n:{const{validationErrorCode:e,validationErrorMessage:t}=A;h.createAnalyticsEvent({event:o,data:{component:k,type:P,target:S,validationErrorCode:e,validationErrorMessage:t}});break}case s:h.createAnalyticsEvent({event:t,data:{component:k,type:P,message:"Shopper clicked pay"}});break;case a:{const{subtype:e,message:a}=A;h.createAnalyticsEvent({event:t,data:{component:k,type:P,subtype:e,message:a}});break}case g:{const{message:e,metadata:a,subtype:s,result:n}=A;h.createAnalyticsEvent({event:t,data:{component:k,type:P,message:e,metadata:a,subtype:s,result:n}});break}case b:{const{message:t,code:a,errorType:s}=A;h.createAnalyticsEvent({event:e,data:{component:k,type:P,message:t,code:a,errorType:s}});break}default:h.createAnalyticsEvent(A)}};export{h as analyticsPreProcessor};
|
|
2
2
|
//# sourceMappingURL=analyticsPreProcessor.js.map
|