@adyen/adyen-web 6.18.1 → 6.19.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/adyen.css +6 -3
- package/dist/cjs/adyen.css.map +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +14 -3
- package/dist/es/adyen.css +6 -3
- package/dist/es/adyen.css.map +1 -1
- package/dist/es/components/Ach/components/AchComponent.js +1 -1
- package/dist/es/components/Ach/components/AchComponent.js.map +1 -1
- package/dist/es/components/BankTransfer/BankTransfer.js +1 -1
- package/dist/es/components/BankTransfer/BankTransfer.js.map +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferInput/validationRule.js +2 -0
- package/dist/es/components/BankTransfer/components/BankTransferInput/validationRule.js.map +1 -0
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResult.js +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResult.js.map +1 -1
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResultInstructions.js +2 -0
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResultInstructions.js.map +1 -0
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js +2 -0
- package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js.map +1 -0
- package/dist/es/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es/components/internal/Button/Button.js +1 -1
- package/dist/es/components/internal/Button/Button.js.map +1 -1
- package/dist/es/components/internal/Button/CopyIconButton.js +2 -0
- package/dist/es/components/internal/Button/CopyIconButton.js.map +1 -0
- package/dist/es/components/internal/DetailsTable/DetailsTable.js +1 -1
- package/dist/es/components/internal/DetailsTable/DetailsTable.js.map +1 -1
- package/dist/es/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es/components/internal/Tooltip/SingletonTooltipProvider.js +2 -0
- package/dist/es/components/internal/Tooltip/SingletonTooltipProvider.js.map +1 -0
- package/dist/es/components/internal/Tooltip/Tooltip.js +2 -0
- package/dist/es/components/internal/Tooltip/Tooltip.js.map +1 -0
- package/dist/es/components/internal/Tooltip/TooltipController.js +2 -0
- package/dist/es/components/internal/Tooltip/TooltipController.js.map +1 -0
- package/dist/es/components/internal/Voucher/Voucher.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/external/preact/compat/dist/compat.js +2 -0
- package/dist/es/external/preact/compat/dist/compat.js.map +1 -0
- package/dist/es/index.d.ts +14 -3
- package/dist/es/utils/clipboard.js +1 -1
- package/dist/es/utils/clipboard.js.map +1 -1
- package/dist/es-legacy/adyen.css +6 -3
- package/dist/es-legacy/adyen.css.map +1 -1
- package/dist/es-legacy/components/Ach/components/AchComponent.js +1 -1
- package/dist/es-legacy/components/Ach/components/AchComponent.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/BankTransfer.js +1 -1
- package/dist/es-legacy/components/BankTransfer/BankTransfer.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/validationRule.js +2 -0
- package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/validationRule.js.map +1 -0
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResult.js +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResult.js.map +1 -1
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResultInstructions.js +2 -0
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferResultInstructions.js.map +1 -0
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js +2 -0
- package/dist/es-legacy/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js.map +1 -0
- package/dist/es-legacy/components/Card/components/CardInput/components/CardFieldsWrapper.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
- package/dist/es-legacy/components/internal/Button/Button.js +1 -1
- package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
- package/dist/es-legacy/components/internal/Button/CopyIconButton.js +2 -0
- package/dist/es-legacy/components/internal/Button/CopyIconButton.js.map +1 -0
- package/dist/es-legacy/components/internal/DetailsTable/DetailsTable.js +1 -1
- package/dist/es-legacy/components/internal/DetailsTable/DetailsTable.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/Tooltip/SingletonTooltipProvider.js +2 -0
- package/dist/es-legacy/components/internal/Tooltip/SingletonTooltipProvider.js.map +1 -0
- package/dist/es-legacy/components/internal/Tooltip/Tooltip.js +2 -0
- package/dist/es-legacy/components/internal/Tooltip/Tooltip.js.map +1 -0
- package/dist/es-legacy/components/internal/Tooltip/TooltipController.js +2 -0
- package/dist/es-legacy/components/internal/Tooltip/TooltipController.js.map +1 -0
- package/dist/es-legacy/components/internal/Voucher/Voucher.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/external/preact/compat/dist/compat.js +2 -0
- package/dist/es-legacy/external/preact/compat/dist/compat.js.map +1 -0
- package/dist/es-legacy/utils/clipboard.js +1 -1
- package/dist/es-legacy/utils/clipboard.js.map +1 -1
- package/package.json +1 -1
- package/styles/adyen.css +6 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useMemo as r,useState as
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{useMemo as r,useState as o,useRef as t,useEffect as a,useCallback as n}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import c from"../../internal/FormInstruction/FormInstruction.js";import{AccountTypeSelector as u}from"./AccountTypeSelector.js";import s from"../../internal/FormFields/Fieldset/Fieldset.js";import l from"../../../utils/useForm/useForm.js";import m from"../../internal/FormFields/Field/Field.js";import d from"../../internal/FormFields/InputText.js";import{achValidationRules as b,achFormatters as N}from"./validate.js";import p from"../../internal/StoreDetails/StoreDetails.js";import g from"./useSRPanelForACHErrors.js";import f from"../../../core/Context/useImage.js";import{PREFIX as h}from"../../internal/Icon/constants.js";function V({onChange:V,payButton:F,showPayButton:M,placeholders:j,hasHolderName:y,setComponentRef:w,enableStoreDetails:A}){const v=f(),x=r(()=>["selectedAccountType","routingNumber","accountNumber","accountNumberVerification",...y?["ownerName"]:[]],[y]),{i18n:C}=i(),[I,S]=o("ready"),{handleChangeFor:T,triggerValidation:k,data:B,errors:q,valid:P,isValid:D}=l({schema:x,rules:b,formatters:N}),[E,H]=o(!1),R="loading"===I,_=t(!1),$=t({setStatus:S,showValidation:()=>{_.current=!0,k()}});a(()=>{w($.current)},[w,$.current]),g({errors:q,data:B,isValidating:_}),a(()=>{V({data:B,valid:P,errors:q,isValid:D,storePaymentMethod:E})},[V,B,P,q,D,E]);const z=n(e=>{T("accountNumber","input")(e);!!q.accountNumberVerification&&k(["accountNumberVerification"])},[T,k,B.accountNumberVerification,q.accountNumberVerification]);return e("div",{className:"adyen-checkout__ach"},e(c,null),e(s,{classNameModifiers:[],label:C.get("ach.bankAccount.title")},e(u,{placeholder:j?.accountTypeSelector,onSelect:T("selectedAccountType"),selectedAccountType:B.selectedAccountType,disabled:R,errorMessage:!!q.selectedAccountType&&C.get(q.selectedAccountType.errorMessage)}),y&&e(m,{label:C.get("ach.accountHolderNameField.title"),errorMessage:!!q.ownerName&&C.get(q.ownerName.errorMessage),isValid:!!P.ownerName,name:"ownerName"},e(d,{disabled:R,name:"ownerName",placeholder:j?.ownerName,value:B.ownerName,onInput:T("ownerName","input"),onBlur:T("ownerName","blur"),required:!0})),e(m,{label:C.get("ach.routingNumber.label"),classNameModifiers:["col-60"],errorMessage:!!q.routingNumber&&C.get(q.routingNumber.errorMessage),name:"routingNumber",isValid:!!P.routingNumber},e(d,{disabled:R,name:"routingNumber",placeholder:j?.routingNumber,value:B.routingNumber,onInput:T("routingNumber","input"),onBlur:T("routingNumber","blur"),required:!0,maxlength:9})),e(m,{label:C.get("ach.bankAccountNumber.label"),classNameModifiers:["col-40"],errorMessage:!!q.accountNumber&&C.get(q.accountNumber.errorMessage),isValid:!!P.accountNumber,name:"accountNumber"},e(d,{disabled:R,name:"accountNumber",placeholder:j?.accountNumber,value:B.accountNumber,onInput:z,onBlur:T("accountNumber","blur"),required:!0,maxlength:17})),e(m,{label:C.get("ach.bankAccountNumberVerification.label"),errorMessage:!!q.accountNumberVerification&&C.get(q.accountNumberVerification.errorMessage),name:"accountNumberVerification",isValid:!!P.accountNumberVerification},e(d,{disabled:R,name:"accountNumberVerification",placeholder:j?.accountNumberVerification,value:B.accountNumberVerification,onInput:T("accountNumberVerification","input"),onBlur:T("accountNumberVerification","blur"),required:!0,maxlength:17}))),A&&e(p,{disabled:R,onChange:H}),M&&F({status:I,icon:v({imageFolder:"components/"})(`${h}lock`)}))}export{V as default};
|
|
2
2
|
//# sourceMappingURL=AchComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AchComponent.js","sources":["../../../../../src/components/Ach/components/AchComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport FormInstruction from '../../internal/FormInstruction';\nimport { AccountTypeSelector } from './AccountTypeSelector';\nimport Fieldset from '../../internal/FormFields/Fieldset';\nimport useForm from '../../../utils/useForm';\nimport Field from '../../internal/FormFields/Field';\nimport InputText from '../../internal/FormFields/InputText';\nimport { achValidationRules, achFormatters } from './validate';\nimport StoreDetails from '../../internal/StoreDetails';\n\nimport type { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport type { ComponentMethodsRef } from '../../internal/UIElement/types';\nimport type { AchPlaceholders } from '../types';\nimport type { AchStateErrors } from './useSRPanelForACHErrors';\nimport useSRPanelForAchErrors from './useSRPanelForACHErrors';\n\ntype AchForm = {\n selectedAccountType: string;\n ownerName: string;\n routingNumber: string;\n accountNumber: string;\n accountNumberVerification: string;\n};\n\ninterface AchComponentProps {\n onChange({\n data,\n valid,\n errors,\n isValid,\n storePaymentMethod\n }: {\n data: AchForm;\n valid: { [key: string]: boolean };\n errors: { [key: string]: any };\n isValid: boolean;\n storePaymentMethod: boolean;\n }): void;\n payButton: (props: Partial<PayButtonProps>) => h.JSX.Element;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n hasHolderName: boolean;\n showPayButton: boolean;\n enableStoreDetails: boolean;\n placeholders?: AchPlaceholders;\n}\n\nfunction AchComponent({ onChange, payButton, showPayButton, placeholders, hasHolderName, setComponentRef, enableStoreDetails }: AchComponentProps) {\n const schema = useMemo(\n () => ['selectedAccountType', 'routingNumber', 'accountNumber', 'accountNumberVerification', ...(hasHolderName ? ['ownerName'] : [])],\n [hasHolderName]\n );\n const { i18n } = useCoreContext();\n const [status, setStatus] = useState('ready');\n const { handleChangeFor, triggerValidation, data, errors, valid, isValid } = useForm<AchForm>({\n schema,\n rules: achValidationRules,\n formatters: achFormatters\n });\n const [storePaymentMethod, setStorePaymentMethod] = useState(false);\n const isFormDisabled = status === 'loading';\n\n const isValidating = useRef(false);\n\n const achRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus,\n showValidation: () => {\n isValidating.current = true;\n triggerValidation();\n }\n });\n\n useEffect(() => {\n setComponentRef(achRef.current);\n }, [setComponentRef, achRef.current]);\n\n useSRPanelForAchErrors({ errors: errors as AchStateErrors, data, isValidating });\n\n useEffect(() => {\n onChange({ data, valid, errors, isValid, storePaymentMethod });\n }, [onChange, data, valid, errors, isValid, storePaymentMethod]);\n\n /**\n * If the \"Verify account number\" field has errors, we want to trigger\n * its validation when there is any change done to the \"Account number\" field\n */\n const onAccountNumberInput = useCallback(\n (event: h.JSX.TargetedInputEvent<HTMLInputElement>) => {\n handleChangeFor('accountNumber', 'input')(event);\n\n const hasAccountVerificationError = !!errors.accountNumberVerification;\n if (hasAccountVerificationError) {\n triggerValidation(['accountNumberVerification']);\n }\n },\n [handleChangeFor, triggerValidation, data.accountNumberVerification, errors.accountNumberVerification]\n );\n\n return (\n <div className=\"adyen-checkout__ach\">\n <FormInstruction />\n\n <Fieldset classNameModifiers={[]} label={i18n.get('ach.bankAccount.title')}>\n <AccountTypeSelector\n placeholder={placeholders?.accountTypeSelector}\n onSelect={handleChangeFor('selectedAccountType')}\n selectedAccountType={data.selectedAccountType}\n disabled={isFormDisabled}\n errorMessage={!!errors.selectedAccountType && i18n.get(errors.selectedAccountType.errorMessage)}\n />\n\n {hasHolderName && (\n <Field\n label={i18n.get('ach.accountHolderNameField.title')}\n errorMessage={!!errors.ownerName && i18n.get(errors.ownerName.errorMessage)}\n isValid={!!valid.ownerName}\n name={'ownerName'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'ownerName'}\n placeholder={placeholders?.ownerName}\n value={data.ownerName}\n onInput={handleChangeFor('ownerName', 'input')}\n onBlur={handleChangeFor('ownerName', 'blur')}\n required={true}\n />\n </Field>\n )}\n\n <Field\n label={i18n.get('ach.routingNumber.label')}\n classNameModifiers={['col-60']}\n errorMessage={!!errors.routingNumber && i18n.get(errors.routingNumber.errorMessage)}\n name={'routingNumber'}\n isValid={!!valid.routingNumber}\n >\n <InputText\n disabled={isFormDisabled}\n name={'routingNumber'}\n placeholder={placeholders?.routingNumber}\n value={data.routingNumber}\n onInput={handleChangeFor('routingNumber', 'input')}\n onBlur={handleChangeFor('routingNumber', 'blur')}\n required={true}\n maxlength={9}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumber.label')}\n classNameModifiers={['col-40']}\n errorMessage={!!errors.accountNumber && i18n.get(errors.accountNumber.errorMessage)}\n isValid={!!valid.accountNumber}\n name={'accountNumber'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumber'}\n placeholder={placeholders?.accountNumber}\n value={data.accountNumber}\n onInput={onAccountNumberInput}\n onBlur={handleChangeFor('accountNumber', 'blur')}\n required={true}\n maxlength={17}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumberVerification.label')}\n errorMessage={!!errors.accountNumberVerification && i18n.get(errors.accountNumberVerification.errorMessage)}\n name={'accountNumberVerification'}\n isValid={!!valid.accountNumberVerification}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumberVerification'}\n placeholder={placeholders?.accountNumberVerification}\n value={data.accountNumberVerification}\n onInput={handleChangeFor('accountNumberVerification', 'input')}\n onBlur={handleChangeFor('accountNumberVerification', 'blur')}\n required={true}\n maxlength={17}\n />\n </Field>\n </Fieldset>\n\n {enableStoreDetails && <StoreDetails disabled={isFormDisabled} onChange={setStorePaymentMethod} />}\n\n {showPayButton && payButton({ status, label: i18n.get('confirmPurchase') })}\n </div>\n );\n}\n\nexport default AchComponent;\n"],"names":["AchComponent","onChange","payButton","showPayButton","placeholders","hasHolderName","setComponentRef","enableStoreDetails","schema","useMemo","i18n","useCoreContext","status","setStatus","useState","handleChangeFor","triggerValidation","data","errors","valid","isValid","useForm","rules","achValidationRules","formatters","achFormatters","storePaymentMethod","setStorePaymentMethod","isFormDisabled","isValidating","useRef","achRef","showValidation","current","useEffect","useSRPanelForAchErrors","onAccountNumberInput","useCallback","event","accountNumberVerification","h","div","className","FormInstruction","Fieldset","classNameModifiers","label","get","AccountTypeSelector","placeholder","accountTypeSelector","onSelect","selectedAccountType","disabled","errorMessage","Field","ownerName","name","InputText","value","onInput","onBlur","required","routingNumber","maxlength","accountNumber","StoreDetails"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AchComponent.js","sources":["../../../../../src/components/Ach/components/AchComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport FormInstruction from '../../internal/FormInstruction';\nimport { AccountTypeSelector } from './AccountTypeSelector';\nimport Fieldset from '../../internal/FormFields/Fieldset';\nimport useForm from '../../../utils/useForm';\nimport Field from '../../internal/FormFields/Field';\nimport InputText from '../../internal/FormFields/InputText';\nimport { achValidationRules, achFormatters } from './validate';\nimport StoreDetails from '../../internal/StoreDetails';\nimport useSRPanelForAchErrors from './useSRPanelForACHErrors';\nimport useImage from '../../../core/Context/useImage';\nimport { PREFIX } from '../../internal/Icon/constants';\n\nimport type { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport type { ComponentMethodsRef } from '../../internal/UIElement/types';\nimport type { AchPlaceholders } from '../types';\nimport type { AchStateErrors } from './useSRPanelForACHErrors';\n\ntype AchForm = {\n selectedAccountType: string;\n ownerName: string;\n routingNumber: string;\n accountNumber: string;\n accountNumberVerification: string;\n};\n\ninterface AchComponentProps {\n onChange({\n data,\n valid,\n errors,\n isValid,\n storePaymentMethod\n }: {\n data: AchForm;\n valid: { [key: string]: boolean };\n errors: { [key: string]: any };\n isValid: boolean;\n storePaymentMethod: boolean;\n }): void;\n payButton: (props: Partial<PayButtonProps>) => h.JSX.Element;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n hasHolderName: boolean;\n showPayButton: boolean;\n enableStoreDetails: boolean;\n placeholders?: AchPlaceholders;\n}\n\nfunction AchComponent({ onChange, payButton, showPayButton, placeholders, hasHolderName, setComponentRef, enableStoreDetails }: AchComponentProps) {\n const getImage = useImage();\n const schema = useMemo(\n () => ['selectedAccountType', 'routingNumber', 'accountNumber', 'accountNumberVerification', ...(hasHolderName ? ['ownerName'] : [])],\n [hasHolderName]\n );\n const { i18n } = useCoreContext();\n const [status, setStatus] = useState('ready');\n const { handleChangeFor, triggerValidation, data, errors, valid, isValid } = useForm<AchForm>({\n schema,\n rules: achValidationRules,\n formatters: achFormatters\n });\n const [storePaymentMethod, setStorePaymentMethod] = useState(false);\n const isFormDisabled = status === 'loading';\n\n const isValidating = useRef(false);\n\n const achRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus,\n showValidation: () => {\n isValidating.current = true;\n triggerValidation();\n }\n });\n\n useEffect(() => {\n setComponentRef(achRef.current);\n }, [setComponentRef, achRef.current]);\n\n useSRPanelForAchErrors({ errors: errors as AchStateErrors, data, isValidating });\n\n useEffect(() => {\n onChange({ data, valid, errors, isValid, storePaymentMethod });\n }, [onChange, data, valid, errors, isValid, storePaymentMethod]);\n\n /**\n * If the \"Verify account number\" field has errors, we want to trigger\n * its validation when there is any change done to the \"Account number\" field\n */\n const onAccountNumberInput = useCallback(\n (event: h.JSX.TargetedInputEvent<HTMLInputElement>) => {\n handleChangeFor('accountNumber', 'input')(event);\n\n const hasAccountVerificationError = !!errors.accountNumberVerification;\n if (hasAccountVerificationError) {\n triggerValidation(['accountNumberVerification']);\n }\n },\n [handleChangeFor, triggerValidation, data.accountNumberVerification, errors.accountNumberVerification]\n );\n\n return (\n <div className=\"adyen-checkout__ach\">\n <FormInstruction />\n\n <Fieldset classNameModifiers={[]} label={i18n.get('ach.bankAccount.title')}>\n <AccountTypeSelector\n placeholder={placeholders?.accountTypeSelector}\n onSelect={handleChangeFor('selectedAccountType')}\n selectedAccountType={data.selectedAccountType}\n disabled={isFormDisabled}\n errorMessage={!!errors.selectedAccountType && i18n.get(errors.selectedAccountType.errorMessage)}\n />\n\n {hasHolderName && (\n <Field\n label={i18n.get('ach.accountHolderNameField.title')}\n errorMessage={!!errors.ownerName && i18n.get(errors.ownerName.errorMessage)}\n isValid={!!valid.ownerName}\n name={'ownerName'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'ownerName'}\n placeholder={placeholders?.ownerName}\n value={data.ownerName}\n onInput={handleChangeFor('ownerName', 'input')}\n onBlur={handleChangeFor('ownerName', 'blur')}\n required={true}\n />\n </Field>\n )}\n\n <Field\n label={i18n.get('ach.routingNumber.label')}\n classNameModifiers={['col-60']}\n errorMessage={!!errors.routingNumber && i18n.get(errors.routingNumber.errorMessage)}\n name={'routingNumber'}\n isValid={!!valid.routingNumber}\n >\n <InputText\n disabled={isFormDisabled}\n name={'routingNumber'}\n placeholder={placeholders?.routingNumber}\n value={data.routingNumber}\n onInput={handleChangeFor('routingNumber', 'input')}\n onBlur={handleChangeFor('routingNumber', 'blur')}\n required={true}\n maxlength={9}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumber.label')}\n classNameModifiers={['col-40']}\n errorMessage={!!errors.accountNumber && i18n.get(errors.accountNumber.errorMessage)}\n isValid={!!valid.accountNumber}\n name={'accountNumber'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumber'}\n placeholder={placeholders?.accountNumber}\n value={data.accountNumber}\n onInput={onAccountNumberInput}\n onBlur={handleChangeFor('accountNumber', 'blur')}\n required={true}\n maxlength={17}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumberVerification.label')}\n errorMessage={!!errors.accountNumberVerification && i18n.get(errors.accountNumberVerification.errorMessage)}\n name={'accountNumberVerification'}\n isValid={!!valid.accountNumberVerification}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumberVerification'}\n placeholder={placeholders?.accountNumberVerification}\n value={data.accountNumberVerification}\n onInput={handleChangeFor('accountNumberVerification', 'input')}\n onBlur={handleChangeFor('accountNumberVerification', 'blur')}\n required={true}\n maxlength={17}\n />\n </Field>\n </Fieldset>\n\n {enableStoreDetails && <StoreDetails disabled={isFormDisabled} onChange={setStorePaymentMethod} />}\n\n {showPayButton && payButton({ status, icon: getImage({ imageFolder: 'components/' })(`${PREFIX}lock`) })}\n </div>\n );\n}\n\nexport default AchComponent;\n"],"names":["AchComponent","onChange","payButton","showPayButton","placeholders","hasHolderName","setComponentRef","enableStoreDetails","getImage","useImage","schema","useMemo","i18n","useCoreContext","status","setStatus","useState","handleChangeFor","triggerValidation","data","errors","valid","isValid","useForm","rules","achValidationRules","formatters","achFormatters","storePaymentMethod","setStorePaymentMethod","isFormDisabled","isValidating","useRef","achRef","showValidation","current","useEffect","useSRPanelForAchErrors","onAccountNumberInput","useCallback","event","accountNumberVerification","h","div","className","FormInstruction","Fieldset","classNameModifiers","label","get","AccountTypeSelector","placeholder","accountTypeSelector","onSelect","selectedAccountType","disabled","errorMessage","Field","ownerName","name","InputText","value","onInput","onBlur","required","routingNumber","maxlength","accountNumber","StoreDetails","icon","imageFolder","PREFIX"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import{CoreProvider as
|
|
1
|
+
import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import{CoreProvider as s}from"../../core/Context/CoreProvider.js";import r from"../internal/RedirectButton/RedirectButton.js";import n from"./components/BankTransferResult/BankTransferResult.js";import a from"./components/BankTransferInput/BankTransferInput.js";import{TxVariants as o}from"../tx-variants.js";function i(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class p extends e{get isValid(){return!!this.state.isValid}formatData(){const{shopperEmail:t}=this.state.data,e=this.type!==o.bankTransfer_IBAN?{subtype:"embedded"}:{};return{paymentMethod:{type:this.type,...e},...t&&{shopperEmail:t}}}render(){return this.props.reference?t(s,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(n,{...this.props,onActionHandled:this.onActionHandled})):t(s,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},this.props.showEmailAddress&&t(a,{setComponentRef:this.setComponentRef,...this.props,onChange:this.setState}),t(r,{...this.props,showPayButton:this.props.showPayButton,name:this.displayName,onSubmit:this.submit,payButton:this.payButton}))}constructor(...t){super(...t),i(this,"state",{isValid:!this.props.showEmailAddress,data:{}})}}i(p,"type",o.bankTransfer_IBAN),i(p,"txVariants",[o.bankTransfer_IBAN,o.bankTransfer_BE,o.bankTransfer_NL,o.bankTransfer_PL,o.bankTransfer_FR,o.bankTransfer_CH,o.bankTransfer_IE,o.bankTransfer_GB,o.bankTransfer_DE]),i(p,"defaultProps",{showEmailAddress:!0,showContextualElement:!0,data:{shopperEmail:""}});export{p as BankTransferElement,p as default};
|
|
2
2
|
//# sourceMappingURL=BankTransfer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BankTransfer.js","sources":["../../../../src/components/BankTransfer/BankTransfer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport RedirectButton from '../internal/RedirectButton';\nimport { BankTransferConfiguration, BankTransferState } from './types';\nimport BankTransferResult from './components/BankTransferResult';\nimport BankTransferInput from './components/BankTransferInput';\nimport { TxVariants } from '../tx-variants';\n\nexport class BankTransferElement extends UIElement<BankTransferConfiguration> {\n public static type = TxVariants.bankTransfer_IBAN;\n public static txVariants = [\n TxVariants.bankTransfer_IBAN,\n TxVariants.bankTransfer_BE,\n TxVariants.bankTransfer_NL,\n TxVariants.bankTransfer_PL,\n TxVariants.bankTransfer_FR,\n TxVariants.bankTransfer_CH,\n TxVariants.bankTransfer_IE,\n TxVariants.bankTransfer_GB,\n TxVariants.bankTransfer_DE\n ];\n\n public static defaultProps = {\n showEmailAddress: true\n };\n\n // @ts-ignore Double check why state extends all props\n public state: BankTransferState = {\n isValid: !this.props.showEmailAddress,\n data: {}\n };\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n const { shopperEmail } = this.state.data;\n const subtype = this.type !== (TxVariants.bankTransfer_IBAN as string) ? { subtype: 'embedded' } : {};\n\n return {\n paymentMethod: {\n type: this.type,\n ...subtype\n },\n ...(shopperEmail && { shopperEmail })\n };\n }\n\n
|
|
1
|
+
{"version":3,"file":"BankTransfer.js","sources":["../../../../src/components/BankTransfer/BankTransfer.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport RedirectButton from '../internal/RedirectButton';\nimport { BankTransferConfiguration, BankTransferState } from './types';\nimport BankTransferResult from './components/BankTransferResult';\nimport BankTransferInput from './components/BankTransferInput';\nimport { TxVariants } from '../tx-variants';\n\nexport class BankTransferElement extends UIElement<BankTransferConfiguration> {\n public static type = TxVariants.bankTransfer_IBAN;\n public static txVariants = [\n TxVariants.bankTransfer_IBAN,\n TxVariants.bankTransfer_BE,\n TxVariants.bankTransfer_NL,\n TxVariants.bankTransfer_PL,\n TxVariants.bankTransfer_FR,\n TxVariants.bankTransfer_CH,\n TxVariants.bankTransfer_IE,\n TxVariants.bankTransfer_GB,\n TxVariants.bankTransfer_DE\n ];\n\n public static defaultProps = {\n showEmailAddress: true,\n showContextualElement: true,\n data: { shopperEmail: '' }\n };\n\n // @ts-ignore Double check why state extends all props\n public state: BankTransferState = {\n isValid: !this.props.showEmailAddress,\n data: {}\n };\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n const { shopperEmail } = this.state.data;\n const subtype = this.type !== (TxVariants.bankTransfer_IBAN as string) ? { subtype: 'embedded' } : {};\n\n return {\n paymentMethod: {\n type: this.type,\n ...subtype\n },\n ...(shopperEmail && { shopperEmail })\n };\n }\n\n render() {\n if (this.props.reference) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <BankTransferResult {...this.props} onActionHandled={this.onActionHandled} />\n </CoreProvider>\n );\n }\n\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n {this.props.showEmailAddress && <BankTransferInput setComponentRef={this.setComponentRef} {...this.props} onChange={this.setState} />}\n <RedirectButton\n {...this.props}\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n onSubmit={this.submit}\n payButton={this.payButton}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default BankTransferElement;\n"],"names":["BankTransferElement","UIElement","isValid","this","state","formatData","shopperEmail","data","subtype","type","TxVariants","bankTransfer_IBAN","paymentMethod","render","props","reference","h","CoreProvider","i18n","loadingContext","resources","BankTransferResult","onActionHandled","showEmailAddress","BankTransferInput","setComponentRef","onChange","setState","RedirectButton","showPayButton","name","displayName","onSubmit","submit","payButton","super","args","_define_property","txVariants","bankTransfer_BE","bankTransfer_NL","bankTransfer_PL","bankTransfer_FR","bankTransfer_CH","bankTransfer_IE","bankTransfer_GB","bankTransfer_DE","defaultProps","showContextualElement"],"mappings":"ijBASO,MAAMA,UAA4BC,EA0BrC,WAAIC,GACA,QAASC,KAAKC,MAAMF,OACxB,CAKAG,UAAAA,GACI,MAAMC,aAAEA,GAAiBH,KAAKC,MAAMG,KAC9BC,EAAUL,KAAKM,OAAUC,EAAWC,kBAA+B,CAAEH,QAAS,YAAe,CAAA,EAEnG,MAAO,CACHI,cAAe,CACXH,KAAMN,KAAKM,QACRD,MAEHF,GAAgB,CAAEA,gBAE9B,CAEAO,MAAAA,GACI,OAAIV,KAAKW,MAAMC,UAEPC,EAACC,EAAAA,CAAaC,KAAMf,KAAKW,MAAMI,KAAMC,eAAgBhB,KAAKW,MAAMK,eAAgBC,UAAWjB,KAAKiB,WAC5FJ,EAACK,EAAAA,IAAuBlB,KAAKW,MAAOQ,gBAAiBnB,KAAKmB,mBAMlEN,EAACC,EAAAA,CAAaC,KAAMf,KAAKW,MAAMI,KAAMC,eAAgBhB,KAAKW,MAAMK,eAAgBC,UAAWjB,KAAKiB,WAC3FjB,KAAKW,MAAMS,kBAAoBP,EAACQ,EAAAA,CAAkBC,gBAAiBtB,KAAKsB,mBAAqBtB,KAAKW,MAAOY,SAAUvB,KAAKwB,WACzHX,EAACY,EAAAA,IACOzB,KAAKW,MACTe,cAAe1B,KAAKW,MAAMe,cAC1BC,KAAM3B,KAAK4B,YACXC,SAAU7B,KAAK8B,OACfC,UAAW/B,KAAK+B,YAIhC,mBAnEGC,SAAAC,GAqBHC,EAAAlC,KAAOC,QAA2B,CAC9BF,SAAUC,KAAKW,MAAMS,iBACrBhB,KAAM,CAAA,KAtBV8B,EADSrC,EACKS,OAAOC,EAAWC,mBAChC0B,EAFSrC,EAEKsC,aAAa,CACvB5B,EAAWC,kBACXD,EAAW6B,gBACX7B,EAAW8B,gBACX9B,EAAW+B,gBACX/B,EAAWgC,gBACXhC,EAAWiC,gBACXjC,EAAWkC,gBACXlC,EAAWmC,gBACXnC,EAAWoC,kBAGfT,EAdSrC,EAcK+C,eAAe,CACzBxB,kBAAkB,EAClByB,uBAAuB,EACvBzC,KAAM,CAAED,aAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useCoreContext as a}from"../../../../core/Context/CoreProvider.js";import
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useCoreContext as a}from"../../../../core/Context/CoreProvider.js";import{useRef as r,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import t from"../../../../utils/useForm/useForm.js";import{getErrorMessage as s}from"../../../../utils/getErrorMessage.js";import i from"../../../internal/FormFields/InputEmail.js";import l from"../../../internal/FormFields/Field/Field.js";import{optionalEmailValidationRule as n}from"./validationRule.js";function m(m){const{i18n:p}=a(),d=`${p.get("shopperEmail")} ${p.get("field.title.optional")}`,{handleChangeFor:u,triggerValidation:c,data:h,valid:f,errors:E,isValid:_}=t({schema:["shopperEmail"],defaultData:m.data,rules:{shopperEmail:n}}),k=r({showValidation:()=>{c()}});return o(()=>{m.onChange({data:h,errors:E,valid:f,isValid:_})},[h,f,E,_]),o(()=>{m.setComponentRef(k.current)},[m.setComponentRef]),e("div",{className:"adyen-checkout__bankTransfer"},e("p",{className:"adyen-checkout__bankTransfer__introduction"},p.get("bankTransfer.introduction")),e("div",{className:"adyen-checkout__fieldset adyen-checkout__fieldset--sendCopyToEmail adyen-checkout__bankTransfer__emailField"},e(l,{label:d,classNameModifiers:["shopperEmail"],errorMessage:!!E.shopperEmail&&s(p,E.shopperEmail,p.get("shopperEmail")),isValid:f.shopperEmail,name:"shopperEmail",showContextualElement:m.showContextualElement,contextualText:p.get("bankTransfer.shopperEmail.contextualText")},e(i,{name:"shopperEmail",autoCorrect:"off",spellCheck:!1,required:!1,value:h.shopperEmail,onInput:u("shopperEmail","input"),onBlur:u("shopperEmail","blur")}))))}export{m as default};
|
|
2
2
|
//# sourceMappingURL=BankTransferInput.js.map
|
package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BankTransferInput.js","sources":["../../../../../../src/components/BankTransfer/components/BankTransferInput/BankTransferInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport './BankTransferInput.scss';\nimport
|
|
1
|
+
{"version":3,"file":"BankTransferInput.js","sources":["../../../../../../src/components/BankTransfer/components/BankTransferInput/BankTransferInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport './BankTransferInput.scss';\nimport { useEffect, useRef } from 'preact/hooks';\nimport useForm from '../../../../utils/useForm';\nimport { BankTransferSchema } from '../../types';\nimport { getErrorMessage } from '../../../../utils/getErrorMessage';\nimport InputEmail from '../../../internal/FormFields/InputEmail';\nimport Field from '../../../internal/FormFields/Field';\nimport { optionalEmailValidationRule } from './validationRule';\nimport { BankTransferInputProps } from './types';\n\nfunction BankTransferInput(props: Readonly<BankTransferInputProps>) {\n const { i18n } = useCoreContext();\n const emailOptionalLabel = `${i18n.get('shopperEmail')} ${i18n.get('field.title.optional')}`;\n\n const { handleChangeFor, triggerValidation, data, valid, errors, isValid } = useForm<BankTransferSchema>({\n schema: ['shopperEmail'],\n defaultData: props.data,\n rules: {\n shopperEmail: optionalEmailValidationRule\n }\n });\n\n const self = useRef({\n showValidation: () => {\n triggerValidation();\n }\n });\n\n useEffect(() => {\n props.onChange({ data, errors, valid, isValid });\n }, [data, valid, errors, isValid]);\n\n useEffect(() => {\n props.setComponentRef(self.current);\n }, [props.setComponentRef]);\n\n return (\n <div className=\"adyen-checkout__bankTransfer\">\n <p className=\"adyen-checkout__bankTransfer__introduction\">{i18n.get('bankTransfer.introduction')}</p>\n <div className=\"adyen-checkout__fieldset adyen-checkout__fieldset--sendCopyToEmail adyen-checkout__bankTransfer__emailField\">\n <Field\n label={emailOptionalLabel}\n classNameModifiers={['shopperEmail']}\n errorMessage={!!errors.shopperEmail && getErrorMessage(i18n, errors.shopperEmail, i18n.get('shopperEmail'))}\n isValid={valid.shopperEmail}\n name={'shopperEmail'}\n showContextualElement={props.showContextualElement}\n contextualText={i18n.get('bankTransfer.shopperEmail.contextualText')}\n >\n <InputEmail\n name={'shopperEmail'}\n autoCorrect={'off'}\n spellCheck={false}\n required={false}\n value={data.shopperEmail}\n onInput={handleChangeFor('shopperEmail', 'input')}\n onBlur={handleChangeFor('shopperEmail', 'blur')}\n />\n </Field>\n </div>\n </div>\n );\n}\n\nexport default BankTransferInput;\n"],"names":["BankTransferInput","props","i18n","useCoreContext","emailOptionalLabel","get","handleChangeFor","triggerValidation","data","valid","errors","isValid","useForm","schema","defaultData","rules","shopperEmail","optionalEmailValidationRule","self","useRef","showValidation","useEffect","onChange","setComponentRef","current","h","div","className","p","Field","label","classNameModifiers","errorMessage","getErrorMessage","name","showContextualElement","contextualText","InputEmail","autoCorrect","spellCheck","required","value","onInput","onBlur"],"mappings":"+hBAYA,SAASA,EAAkBC,GACvB,MAAMC,KAAEA,GAASC,IACXC,EAAqB,GAAGF,EAAKG,IAAI,mBAAmBH,EAAKG,IAAI,2BAE7DC,gBAAEA,EAAeC,kBAAEA,EAAiBC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GAAYC,EAA4B,CACrGC,OAAQ,CAAC,gBACTC,YAAab,EAAMO,KACnBO,MAAO,CACHC,aAAcC,KAIhBC,EAAOC,EAAO,CAChBC,eAAgB,KACZb,OAYR,OARAc,EAAU,KACNpB,EAAMqB,SAAS,CAAEd,OAAME,SAAQD,QAAOE,aACvC,CAACH,EAAMC,EAAOC,EAAQC,IAEzBU,EAAU,KACNpB,EAAMsB,gBAAgBL,EAAKM,UAC5B,CAACvB,EAAMsB,kBAGNE,EAACC,MAAAA,CAAIC,UAAU,gCACXF,EAACG,IAAAA,CAAED,UAAU,8CAA8CzB,EAAKG,IAAI,8BACpEoB,EAACC,MAAAA,CAAIC,UAAU,+GACXF,EAACI,EAAAA,CACGC,MAAO1B,EACP2B,mBAAoB,CAAC,gBACrBC,eAAgBtB,EAAOM,cAAgBiB,EAAgB/B,EAAMQ,EAAOM,aAAcd,EAAKG,IAAI,iBAC3FM,QAASF,EAAMO,aACfkB,KAAM,eACNC,sBAAuBlC,EAAMkC,sBAC7BC,eAAgBlC,EAAKG,IAAI,6CAEzBoB,EAACY,EAAAA,CACGH,KAAM,eACNI,YAAa,MACbC,YAAY,EACZC,UAAU,EACVC,MAAOjC,EAAKQ,aACZ0B,QAASpC,EAAgB,eAAgB,SACzCqC,OAAQrC,EAAgB,eAAgB,YAMhE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isEmpty as r}from"../../../../utils/validator-utils.js";import{email as t}from"../../../../utils/regex.js";import{ERROR_FIELD_INVALID as o}from"../../../../core/Errors/constants.js";const s={validate:o=>!!r(o)||o.length>=6&&o.length<=320&&t.test(o),errorMessage:o,modes:["blur"]};export{s as optionalEmailValidationRule};
|
|
2
|
+
//# sourceMappingURL=validationRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationRule.js","sources":["../../../../../../src/components/BankTransfer/components/BankTransferInput/validationRule.ts"],"sourcesContent":["import { ValidatorRule } from '../../../../utils/Validator/types';\nimport { isEmpty } from '../../../../utils/validator-utils';\nimport { email } from '../../../../utils/regex';\nimport { ERROR_FIELD_INVALID } from '../../../../core/Errors/constants';\n\nexport const optionalEmailValidationRule: ValidatorRule = {\n validate: value => {\n if (isEmpty(value)) {\n return true;\n }\n return value.length >= 6 && value.length <= 320 && email.test(value);\n },\n errorMessage: ERROR_FIELD_INVALID,\n modes: ['blur']\n};\n"],"names":["optionalEmailValidationRule","validate","value","isEmpty","length","email","test","errorMessage","ERROR_FIELD_INVALID","modes"],"mappings":"mMAKaA,EAA6C,CACtDC,SAAUC,KACFC,EAAQD,IAGLA,EAAME,QAAU,GAAKF,EAAME,QAAU,KAAOC,EAAMC,KAAKJ,GAElEK,aAAcC,EACdC,MAAO,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../../external/preact/dist/preact.js";import
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useCoreContext as a}from"../../../../core/Context/CoreProvider.js";import r from"../../../../core/Context/useImage.js";import t from"../../../internal/DetailsTable/DetailsTable.js";import{BankTransferResultInstructions as n}from"./BankTransferResultInstructions.js";import o from"./BankTransferVoucher.js";function l(l){const{i18n:u}=a(),s=r();return e(o,{paymentMethodType:l.paymentMethodType,imageUrl:s()(l.paymentMethodType),onActionHandled:l.onActionHandled,amount:u.amount(l.totalAmount.value,l.totalAmount.currency),instructions:e(n,null),voucherDetails:e(t,{shouldShowCopyButton:!0,tableFields:[{label:u.get("bankTransfer.beneficiary"),value:l.beneficiary},{label:u.get("bankTransfer.accountNumber"),value:l.accountNumber},{label:u.get("bankTransfer.sortCode"),value:l.sortCode},{label:u.get("bankTransfer.routingNumber"),value:l.routingNumber},{label:u.get("bankTransfer.iban"),value:l.iban},{label:u.get("bankTransfer.bic"),value:l.bic},{label:u.get("bankTransfer.reference"),value:l.reference}]})})}export{l as default};
|
|
2
2
|
//# sourceMappingURL=BankTransferResult.js.map
|
package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferResult.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BankTransferResult.js","sources":["../../../../../../src/components/BankTransfer/components/BankTransferResult/BankTransferResult.tsx"],"sourcesContent":["import { h } from 'preact';\nimport
|
|
1
|
+
{"version":3,"file":"BankTransferResult.js","sources":["../../../../../../src/components/BankTransfer/components/BankTransferResult/BankTransferResult.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport useImage from '../../../../core/Context/useImage';\nimport DetailsTable from '../../../internal/DetailsTable';\nimport { BankTransferResultInstructions } from './BankTransferResultInstructions';\nimport BankTransferVoucher from './BankTransferVoucher';\nimport type { ActionHandledReturnObject } from '../../../../types/global-types';\n\nexport interface BankTransferResultProps {\n paymentMethodType?: string;\n reference?: string;\n totalAmount?: { value: number; currency: string };\n beneficiary?: string;\n iban?: string;\n bic?: string;\n accountNumber?: string;\n sortCode?: string;\n routingNumber?: string;\n onActionHandled?: (actionHandledObj: ActionHandledReturnObject) => void;\n}\n\nexport default function BankTransferResult(props: BankTransferResultProps) {\n const { i18n } = useCoreContext();\n const getImage = useImage();\n\n return (\n <BankTransferVoucher\n paymentMethodType={props.paymentMethodType}\n imageUrl={getImage()(props.paymentMethodType)}\n onActionHandled={props.onActionHandled}\n amount={i18n.amount(props.totalAmount.value, props.totalAmount.currency)}\n instructions={<BankTransferResultInstructions />}\n voucherDetails={\n <DetailsTable\n shouldShowCopyButton\n tableFields={[\n { label: i18n.get('bankTransfer.beneficiary'), value: props.beneficiary },\n { label: i18n.get('bankTransfer.accountNumber'), value: props.accountNumber },\n { label: i18n.get('bankTransfer.sortCode'), value: props.sortCode },\n { label: i18n.get('bankTransfer.routingNumber'), value: props.routingNumber },\n { label: i18n.get('bankTransfer.iban'), value: props.iban },\n { label: i18n.get('bankTransfer.bic'), value: props.bic },\n { label: i18n.get('bankTransfer.reference'), value: props.reference }\n ]}\n />\n }\n />\n );\n}\n"],"names":["BankTransferResult","props","i18n","useCoreContext","getImage","useImage","h","BankTransferVoucher","paymentMethodType","imageUrl","onActionHandled","amount","totalAmount","value","currency","instructions","BankTransferResultInstructions","voucherDetails","DetailsTable","shouldShowCopyButton","tableFields","label","get","beneficiary","accountNumber","sortCode","routingNumber","iban","bic","reference"],"mappings":"oYAqBe,SAASA,EAAmBC,GACvC,MAAMC,KAAEA,GAASC,IACXC,EAAWC,IAEjB,OACIC,EAACC,EAAAA,CACGC,kBAAmBP,EAAMO,kBACzBC,SAAUL,IAAWH,EAAMO,mBAC3BE,gBAAiBT,EAAMS,gBACvBC,OAAQT,EAAKS,OAAOV,EAAMW,YAAYC,MAAOZ,EAAMW,YAAYE,UAC/DC,aAAcT,EAACU,EAAAA,MACfC,eACIX,EAACY,EAAAA,CACGC,sBAAAA,EACAC,YAAa,CACT,CAAEC,MAAOnB,EAAKoB,IAAI,4BAA6BT,MAAOZ,EAAMsB,aAC5D,CAAEF,MAAOnB,EAAKoB,IAAI,8BAA+BT,MAAOZ,EAAMuB,eAC9D,CAAEH,MAAOnB,EAAKoB,IAAI,yBAA0BT,MAAOZ,EAAMwB,UACzD,CAAEJ,MAAOnB,EAAKoB,IAAI,8BAA+BT,MAAOZ,EAAMyB,eAC9D,CAAEL,MAAOnB,EAAKoB,IAAI,qBAAsBT,MAAOZ,EAAM0B,MACrD,CAAEN,MAAOnB,EAAKoB,IAAI,oBAAqBT,MAAOZ,EAAM2B,KACpD,CAAEP,MAAOnB,EAAKoB,IAAI,0BAA2BT,MAAOZ,EAAM4B,eAMlF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useCoreContext as r}from"../../../../core/Context/CoreProvider.js";import{TimelineWrapper as t}from"../../../internal/Timeline/TimelineWrapper.js";import{Timeline as n}from"../../../internal/Timeline/Timeline.js";const i=()=>{const{i18n:i}=r();return e(t,null,e(n,{instructions:[i.get("bankTransfer.instruction.step1"),i.get("bankTransfer.instruction.step2"),i.get("bankTransfer.instruction.step3"),i.get("bankTransfer.instruction.step4")]}))};export{i as BankTransferResultInstructions};
|
|
2
|
+
//# sourceMappingURL=BankTransferResultInstructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BankTransferResultInstructions.js","sources":["../../../../../../src/components/BankTransfer/components/BankTransferResult/BankTransferResultInstructions.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { Timeline, TimelineWrapper } from '../../../internal/Timeline';\n\nconst BankTransferResultInstructions = () => {\n const { i18n } = useCoreContext();\n\n return (\n <TimelineWrapper>\n <Timeline\n instructions={[\n i18n.get('bankTransfer.instruction.step1'),\n i18n.get('bankTransfer.instruction.step2'),\n i18n.get('bankTransfer.instruction.step3'),\n i18n.get('bankTransfer.instruction.step4')\n ]}\n />\n </TimelineWrapper>\n );\n};\n\nexport { BankTransferResultInstructions };\n"],"names":["BankTransferResultInstructions","i18n","useCoreContext","h","TimelineWrapper","Timeline","instructions","get"],"mappings":"uSAIA,MAAMA,EAAiC,KACnC,MAAMC,KAAEA,GAASC,IAEjB,OACIC,EAACC,OACGD,EAACE,EAAAA,CACGC,aAAc,CACVL,EAAKM,IAAI,kCACTN,EAAKM,IAAI,kCACTN,EAAKM,IAAI,kCACTN,EAAKM,IAAI"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as e,Fragment as t}from"../../../../external/preact/dist/preact.js";import a from"../../../../_virtual/index.js";import{useCoreContext as r}from"../../../../core/Context/CoreProvider.js";function c({voucherDetails:c,className:o="",...s}){const{i18n:n}=r();return s.onActionHandled?.({componentType:s.paymentMethodType,actionDescription:"voucher-presented"}),e("div",{className:a("adyen-checkout__voucher-result","adyen-checkout__voucher-result--bankTransfer",`adyen-checkout__voucher-result--${s.paymentMethodType}`,o)},e("div",{className:"adyen-checkout__voucher-result__top"},e("div",{className:"adyen-checkout__voucher-result__image"},!!s.imageUrl&&e("span",{className:"adyen-checkout__voucher-result__image__wrapper"},e("img",{alt:s.paymentMethodType,className:"adyen-checkout__voucher-result__image__brand",src:s.imageUrl}))),s.amount&&e("div",{className:"adyen-checkout__voucher-result__amount"},s.amount),s.instructions&&e(t,null,e("div",{className:"adyen-checkout__voucher-result-title"},n.get("bankTransfer.instruction.title")),s.instructions)),e("div",{className:"adyen-checkout__voucher-result__bottom"},c&&e(t,null,e("div",{className:"adyen-checkout__voucher-result-title"},n.get("bankTransfer.details.title")),c)))}export{c as default};
|
|
2
|
+
//# sourceMappingURL=BankTransferVoucher.js.map
|
package/dist/es/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BankTransferVoucher.js","sources":["../../../../../../src/components/BankTransfer/components/BankTransferResult/BankTransferVoucher.tsx"],"sourcesContent":["import { h, Fragment } from 'preact';\nimport classNames from 'classnames';\nimport { BankTransferVoucherProps } from './types';\nimport './BankTransferVoucher.scss';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\n\nexport default function BankTransferVoucher({ voucherDetails, className = '', ...props }: Readonly<BankTransferVoucherProps>) {\n const { i18n } = useCoreContext();\n props.onActionHandled?.({ componentType: props.paymentMethodType, actionDescription: 'voucher-presented' });\n\n return (\n <div\n className={classNames(\n 'adyen-checkout__voucher-result',\n 'adyen-checkout__voucher-result--bankTransfer',\n `adyen-checkout__voucher-result--${props.paymentMethodType}`,\n className\n )}\n >\n <div className=\"adyen-checkout__voucher-result__top\">\n <div className=\"adyen-checkout__voucher-result__image\">\n {!!props.imageUrl && (\n <span className=\"adyen-checkout__voucher-result__image__wrapper\">\n <img alt={props.paymentMethodType} className=\"adyen-checkout__voucher-result__image__brand\" src={props.imageUrl} />\n </span>\n )}\n </div>\n {props.amount && <div className=\"adyen-checkout__voucher-result__amount\">{props.amount}</div>}\n {props.instructions && (\n <Fragment>\n <div className=\"adyen-checkout__voucher-result-title\">{i18n.get('bankTransfer.instruction.title')}</div>\n {props.instructions}\n </Fragment>\n )}\n </div>\n\n <div className=\"adyen-checkout__voucher-result__bottom\">\n {voucherDetails && (\n <Fragment>\n <div className=\"adyen-checkout__voucher-result-title\">{i18n.get('bankTransfer.details.title')}</div>\n {voucherDetails}\n </Fragment>\n )}\n </div>\n </div>\n );\n}\n"],"names":["BankTransferVoucher","voucherDetails","className","props","i18n","useCoreContext","onActionHandled","componentType","paymentMethodType","actionDescription","h","div","classNames","imageUrl","span","img","alt","src","amount","instructions","Fragment","get"],"mappings":"gNAMe,SAASA,GAAoBC,eAAEA,EAAcC,UAAEA,EAAY,MAAOC,IAC7E,MAAMC,KAAEA,GAASC,IAGjB,OAFAF,EAAMG,kBAAkB,CAAEC,cAAeJ,EAAMK,kBAAmBC,kBAAmB,sBAGjFC,EAACC,MAAAA,CACGT,UAAWU,EACP,iCACA,+CACA,mCAAmCT,EAAMK,oBACzCN,IAGJQ,EAACC,MAAAA,CAAIT,UAAU,uCACXQ,EAACC,MAAAA,CAAIT,UAAU,2CACRC,EAAMU,UACLH,EAACI,OAAAA,CAAKZ,UAAU,kDACZQ,EAACK,MAAAA,CAAIC,IAAKb,EAAMK,kBAAmBN,UAAU,+CAA+Ce,IAAKd,EAAMU,aAIlHV,EAAMe,QAAUR,EAACC,MAAAA,CAAIT,UAAU,0CAA0CC,EAAMe,QAC/Ef,EAAMgB,cACHT,EAACU,OACGV,EAACC,MAAAA,CAAIT,UAAU,wCAAwCE,EAAKiB,IAAI,mCAC/DlB,EAAMgB,eAKnBT,EAACC,MAAAA,CAAIT,UAAU,0CACVD,GACGS,EAACU,OACGV,EAACC,MAAAA,CAAIT,UAAU,wCAAwCE,EAAKiB,IAAI,+BAC/DpB,IAMzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardFieldsWrapper.js","sources":["../../../../../../../src/components/Card/components/CardInput/components/CardFieldsWrapper.tsx"],"sourcesContent":["import { h } from 'preact';\nimport LoadingWrapper from '../../../../internal/LoadingWrapper';\nimport CardFields from './CardFields';\nimport KCPAuthentication from './KCPAuthentication';\nimport SocialSecurityNumberBrazil from '../../../../internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil';\nimport StoreDetails from '../../../../internal/StoreDetails';\nimport Address from '../../../../internal/Address';\nimport CardHolderName from './CardHolderName';\nimport Installments from './Installments';\nimport DisclaimerMessage from '../../../../internal/DisclaimerMessage';\nimport RadioGroupExtended from '../../../../internal/FormFields/RadioGroupExtended';\nimport { mapDualBrandButtons } from '../utils';\nimport Fieldset from '../../../../internal/FormFields/Fieldset';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\n\nexport const CardFieldsWrapper = ({\n // vars created in CardInput:\n // base (shared)\n data,\n valid,\n errors,\n handleChangeFor,\n sfpState,\n setFocusOn,\n cvcPolicy,\n focusedElement,\n hasInstallments,\n handleInstallments,\n showAmountsInInstallments,\n // Card\n brandsIcons,\n formData,\n formErrors,\n formValid,\n expiryDatePolicy,\n dualBrandSelectElements,\n extensions,\n selectedBrandValue,\n // KCP\n showKCP,\n // SSN\n showBrazilianSSN,\n socialSecurityNumber,\n // Store details\n handleOnStoreDetails,\n // Address\n billingAddress,\n handleAddress,\n setAddressRef,\n partialAddressSchema,\n onAddressLookup,\n onAddressSelected,\n addressSearchDebounceMs,\n // For this comp (props passed through from CardInput)\n amount,\n billingAddressRequired,\n billingAddressRequiredFields,\n billingAddressAllowedCountries,\n billingAddressValidationRules = null,\n brandsConfiguration,\n showStoreDetailsCheckbox,\n hasCVC,\n hasHolderName,\n holderNameRequired,\n installmentOptions,\n placeholders,\n positionHolderNameOnTop,\n // For CardFields > CardNumber\n showBrandIcon,\n showContextualElement,\n //\n iOSFocusedField,\n disclaimerMessage,\n //\n onFieldFocusAnalytics,\n onFieldBlurAnalytics\n}) => {\n const { i18n } = useCoreContext();\n\n const cardHolderField = (\n <CardHolderName\n required={holderNameRequired}\n placeholder={placeholders.holderName}\n value={formData.holderName}\n error={!!formErrors.holderName && holderNameRequired}\n isValid={!!formValid.holderName}\n onBlur={handleChangeFor('holderName', 'blur')}\n onInput={handleChangeFor('holderName', 'input')}\n disabled={iOSFocusedField && iOSFocusedField !== 'holderName'}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n );\n\n // Only if these brands are present in the binLookup response shguld we show the UI to choose between brands\n const dualBrandsThatNeedSelectionMechanism = ['cartebancaire', 'bcmc', 'dankort'];\n // If the filter array contains anything - then we need to show the choice UI\n const showDualBrandSelectElements = !!dualBrandSelectElements.filter(item => dualBrandsThatNeedSelectionMechanism.includes(item.id)).length;\n\n return (\n <LoadingWrapper status={sfpState.status}>\n {hasHolderName && positionHolderNameOnTop && cardHolderField}\n\n <CardFields\n showBrandIcon={showBrandIcon}\n showContextualElement={showContextualElement}\n brand={sfpState.brand}\n brandsIcons={brandsIcons}\n brandsConfiguration={brandsConfiguration}\n focusedElement={focusedElement}\n onFocusField={setFocusOn}\n hasCVC={hasCVC}\n cvcPolicy={cvcPolicy}\n expiryDatePolicy={expiryDatePolicy}\n errors={sfpState.errors}\n valid={sfpState.valid}\n dualBrandingElements={dualBrandSelectElements.length > 0 && dualBrandSelectElements}\n />\n\n {hasHolderName && !positionHolderNameOnTop && cardHolderField}\n\n {showDualBrandSelectElements && dualBrandSelectElements.length > 0 && dualBrandSelectElements && (\n <Fieldset classNameModifiers={['dual-brand-switcher']} label={i18n.get('creditCard.dualBrand.title')}>\n <p className={'adyen-checkout-form-instruction'}>{i18n.get('creditCard.dualBrand.description')}</p>\n <RadioGroupExtended\n name={'dualBrandSwitcher'}\n value={selectedBrandValue} // Set which button is in a selected (checked) state\n items={mapDualBrandButtons(dualBrandSelectElements, brandsConfiguration)}\n onChange={extensions.handleDualBrandSelection}\n required={true}\n showSelectedTick={true}\n />\n </Fieldset>\n )}\n\n {showKCP && (\n <KCPAuthentication\n onFocusField={setFocusOn}\n focusedElement={focusedElement}\n encryptedPasswordState={{\n data: sfpState.encryptedPassword,\n valid: sfpState.valid ? sfpState.valid.encryptedPassword : false,\n errors: sfpState.errors ? sfpState.errors.encryptedPassword : false\n }}\n value={data.taxNumber}\n error={!!errors.taxNumber}\n isValid={!!valid.taxNumber}\n onBlur={handleChangeFor('taxNumber', 'blur')}\n onInput={handleChangeFor('taxNumber', 'input')}\n disabled={iOSFocusedField && iOSFocusedField !== 'kcpTaxNumberOrDOB'}\n placeholder={placeholders.taxNumber}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n )}\n\n {showBrazilianSSN && (\n <div className=\"adyen-checkout__card__socialSecurityNumber\">\n <SocialSecurityNumberBrazil\n onBlur={handleChangeFor('socialSecurityNumber', 'blur')}\n onInput={handleChangeFor('socialSecurityNumber', 'input')}\n error={errors?.socialSecurityNumber}\n valid={valid?.socialSecurityNumber}\n data={socialSecurityNumber}\n required={true}\n disabled={iOSFocusedField && iOSFocusedField !== 'socialSecurityNumber'}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n </div>\n )}\n\n {showStoreDetailsCheckbox && <StoreDetails onChange={handleOnStoreDetails} />}\n\n {hasInstallments && (\n <Installments\n amount={amount}\n brand={sfpState.brand}\n installmentOptions={installmentOptions}\n onChange={handleInstallments}\n type={showAmountsInInstallments ? 'amount' : 'months'}\n />\n )}\n\n {billingAddressRequired && (\n <Address\n label=\"billingAddress\"\n data={billingAddress}\n onChange={handleAddress}\n allowedCountries={billingAddressAllowedCountries}\n requiredFields={billingAddressRequiredFields}\n setComponentRef={setAddressRef}\n validationRules={billingAddressValidationRules}\n specifications={partialAddressSchema}\n iOSFocusedField={iOSFocusedField}\n onAddressLookup={onAddressLookup}\n showContextualElement={showContextualElement}\n onAddressSelected={onAddressSelected}\n addressSearchDebounceMs={addressSearchDebounceMs}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n )}\n\n {disclaimerMessage && (\n <DisclaimerMessage\n message={disclaimerMessage.message.replace('%{linkText}', `%#${disclaimerMessage.linkText}%#`)}\n urls={[disclaimerMessage.link]}\n />\n )}\n </LoadingWrapper>\n );\n};\n"],"names":["CardFieldsWrapper","data","valid","errors","handleChangeFor","sfpState","setFocusOn","cvcPolicy","focusedElement","hasInstallments","handleInstallments","showAmountsInInstallments","brandsIcons","formData","formErrors","formValid","expiryDatePolicy","dualBrandSelectElements","extensions","selectedBrandValue","showKCP","showBrazilianSSN","socialSecurityNumber","handleOnStoreDetails","billingAddress","handleAddress","setAddressRef","partialAddressSchema","onAddressLookup","onAddressSelected","addressSearchDebounceMs","amount","billingAddressRequired","billingAddressRequiredFields","billingAddressAllowedCountries","billingAddressValidationRules","brandsConfiguration","showStoreDetailsCheckbox","hasCVC","hasHolderName","holderNameRequired","installmentOptions","placeholders","positionHolderNameOnTop","showBrandIcon","showContextualElement","iOSFocusedField","disclaimerMessage","onFieldFocusAnalytics","onFieldBlurAnalytics","i18n","useCoreContext","cardHolderField","h","CardHolderName","required","placeholder","holderName","value","error","isValid","onBlur","onInput","disabled","dualBrandsThatNeedSelectionMechanism","showDualBrandSelectElements","filter","item","includes","id","length","LoadingWrapper","status","CardFields","brand","onFocusField","dualBrandingElements","Fieldset","classNameModifiers","label","get","p","className","RadioGroupExtended","name","items","mapDualBrandButtons","onChange","handleDualBrandSelection","showSelectedTick","KCPAuthentication","encryptedPasswordState","encryptedPassword","taxNumber","div","SocialSecurityNumberBrazil","StoreDetails","Installments","type","Address","allowedCountries","requiredFields","setComponentRef","validationRules","specifications","DisclaimerMessage","message","replace","linkText","urls","link"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CardFieldsWrapper.js","sources":["../../../../../../../src/components/Card/components/CardInput/components/CardFieldsWrapper.tsx"],"sourcesContent":["import { h } from 'preact';\nimport LoadingWrapper from '../../../../internal/LoadingWrapper';\nimport CardFields from './CardFields';\nimport KCPAuthentication from './KCPAuthentication';\nimport SocialSecurityNumberBrazil from '../../../../internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil';\nimport StoreDetails from '../../../../internal/StoreDetails';\nimport Address from '../../../../internal/Address';\nimport CardHolderName from './CardHolderName';\nimport Installments from './Installments';\nimport DisclaimerMessage from '../../../../internal/DisclaimerMessage';\nimport RadioGroupExtended from '../../../../internal/FormFields/RadioGroupExtended';\nimport { mapDualBrandButtons } from '../utils';\nimport Fieldset from '../../../../internal/FormFields/Fieldset';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\n\nexport const CardFieldsWrapper = ({\n // vars created in CardInput:\n // base (shared)\n data,\n valid,\n errors,\n handleChangeFor,\n sfpState,\n setFocusOn,\n cvcPolicy,\n focusedElement,\n hasInstallments,\n handleInstallments,\n showAmountsInInstallments,\n // Card\n brandsIcons,\n formData,\n formErrors,\n formValid,\n expiryDatePolicy,\n dualBrandSelectElements,\n extensions,\n selectedBrandValue,\n // KCP\n showKCP,\n // SSN\n showBrazilianSSN,\n socialSecurityNumber,\n // Store details\n handleOnStoreDetails,\n // Address\n billingAddress,\n handleAddress,\n setAddressRef,\n partialAddressSchema,\n onAddressLookup,\n onAddressSelected,\n addressSearchDebounceMs,\n // For this comp (props passed through from CardInput)\n amount,\n billingAddressRequired,\n billingAddressRequiredFields,\n billingAddressAllowedCountries,\n billingAddressValidationRules = null,\n brandsConfiguration,\n showStoreDetailsCheckbox,\n hasCVC,\n hasHolderName,\n holderNameRequired,\n installmentOptions,\n placeholders,\n positionHolderNameOnTop,\n // For CardFields > CardNumber\n showBrandIcon,\n showContextualElement,\n //\n iOSFocusedField,\n disclaimerMessage,\n //\n onFieldFocusAnalytics,\n onFieldBlurAnalytics\n}) => {\n const { i18n } = useCoreContext();\n\n const cardHolderField = (\n <CardHolderName\n required={holderNameRequired}\n placeholder={placeholders.holderName}\n value={formData.holderName}\n error={!!formErrors.holderName && holderNameRequired}\n isValid={!!formValid.holderName}\n onBlur={handleChangeFor('holderName', 'blur')}\n onInput={handleChangeFor('holderName', 'input')}\n disabled={iOSFocusedField && iOSFocusedField !== 'holderName'}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n );\n\n // Only if these brands are present in the binLookup response should we show the UI to choose between brands\n const dualBrandsThatNeedSelectionMechanism = ['cartebancaire', 'bcmc', 'dankort'];\n // If the filter array contains anything - then we need to show the choice UI\n const showDualBrandSelectElements = !!dualBrandSelectElements.filter(item => dualBrandsThatNeedSelectionMechanism.includes(item.id)).length;\n\n return (\n <LoadingWrapper status={sfpState.status}>\n {hasHolderName && positionHolderNameOnTop && cardHolderField}\n\n <CardFields\n showBrandIcon={showBrandIcon}\n showContextualElement={showContextualElement}\n brand={sfpState.brand}\n brandsIcons={brandsIcons}\n brandsConfiguration={brandsConfiguration}\n focusedElement={focusedElement}\n onFocusField={setFocusOn}\n hasCVC={hasCVC}\n cvcPolicy={cvcPolicy}\n expiryDatePolicy={expiryDatePolicy}\n errors={sfpState.errors}\n valid={sfpState.valid}\n dualBrandingElements={dualBrandSelectElements.length > 0 && dualBrandSelectElements}\n />\n\n {hasHolderName && !positionHolderNameOnTop && cardHolderField}\n\n {showDualBrandSelectElements && dualBrandSelectElements.length > 0 && dualBrandSelectElements && (\n <Fieldset classNameModifiers={['dual-brand-switcher']} label={i18n.get('creditCard.dualBrand.title')}>\n <p className={'adyen-checkout-form-instruction'}>{i18n.get('creditCard.dualBrand.description')}</p>\n <RadioGroupExtended\n name={'dualBrandSwitcher'}\n value={selectedBrandValue} // Set which button is in a selected (checked) state\n items={mapDualBrandButtons(dualBrandSelectElements, brandsConfiguration)}\n onChange={extensions.handleDualBrandSelection}\n required={true}\n showSelectedTick={true}\n />\n </Fieldset>\n )}\n\n {showKCP && (\n <KCPAuthentication\n onFocusField={setFocusOn}\n focusedElement={focusedElement}\n encryptedPasswordState={{\n data: sfpState.encryptedPassword,\n valid: sfpState.valid ? sfpState.valid.encryptedPassword : false,\n errors: sfpState.errors ? sfpState.errors.encryptedPassword : false\n }}\n value={data.taxNumber}\n error={!!errors.taxNumber}\n isValid={!!valid.taxNumber}\n onBlur={handleChangeFor('taxNumber', 'blur')}\n onInput={handleChangeFor('taxNumber', 'input')}\n disabled={iOSFocusedField && iOSFocusedField !== 'kcpTaxNumberOrDOB'}\n placeholder={placeholders.taxNumber}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n )}\n\n {showBrazilianSSN && (\n <div className=\"adyen-checkout__card__socialSecurityNumber\">\n <SocialSecurityNumberBrazil\n onBlur={handleChangeFor('socialSecurityNumber', 'blur')}\n onInput={handleChangeFor('socialSecurityNumber', 'input')}\n error={errors?.socialSecurityNumber}\n valid={valid?.socialSecurityNumber}\n data={socialSecurityNumber}\n required={true}\n disabled={iOSFocusedField && iOSFocusedField !== 'socialSecurityNumber'}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n </div>\n )}\n\n {showStoreDetailsCheckbox && <StoreDetails onChange={handleOnStoreDetails} />}\n\n {hasInstallments && (\n <Installments\n amount={amount}\n brand={sfpState.brand}\n installmentOptions={installmentOptions}\n onChange={handleInstallments}\n type={showAmountsInInstallments ? 'amount' : 'months'}\n />\n )}\n\n {billingAddressRequired && (\n <Address\n label=\"billingAddress\"\n data={billingAddress}\n onChange={handleAddress}\n allowedCountries={billingAddressAllowedCountries}\n requiredFields={billingAddressRequiredFields}\n setComponentRef={setAddressRef}\n validationRules={billingAddressValidationRules}\n specifications={partialAddressSchema}\n iOSFocusedField={iOSFocusedField}\n onAddressLookup={onAddressLookup}\n showContextualElement={showContextualElement}\n onAddressSelected={onAddressSelected}\n addressSearchDebounceMs={addressSearchDebounceMs}\n onFieldFocusAnalytics={onFieldFocusAnalytics}\n onFieldBlurAnalytics={onFieldBlurAnalytics}\n />\n )}\n\n {disclaimerMessage && (\n <DisclaimerMessage\n message={disclaimerMessage.message.replace('%{linkText}', `%#${disclaimerMessage.linkText}%#`)}\n urls={[disclaimerMessage.link]}\n />\n )}\n </LoadingWrapper>\n );\n};\n"],"names":["CardFieldsWrapper","data","valid","errors","handleChangeFor","sfpState","setFocusOn","cvcPolicy","focusedElement","hasInstallments","handleInstallments","showAmountsInInstallments","brandsIcons","formData","formErrors","formValid","expiryDatePolicy","dualBrandSelectElements","extensions","selectedBrandValue","showKCP","showBrazilianSSN","socialSecurityNumber","handleOnStoreDetails","billingAddress","handleAddress","setAddressRef","partialAddressSchema","onAddressLookup","onAddressSelected","addressSearchDebounceMs","amount","billingAddressRequired","billingAddressRequiredFields","billingAddressAllowedCountries","billingAddressValidationRules","brandsConfiguration","showStoreDetailsCheckbox","hasCVC","hasHolderName","holderNameRequired","installmentOptions","placeholders","positionHolderNameOnTop","showBrandIcon","showContextualElement","iOSFocusedField","disclaimerMessage","onFieldFocusAnalytics","onFieldBlurAnalytics","i18n","useCoreContext","cardHolderField","h","CardHolderName","required","placeholder","holderName","value","error","isValid","onBlur","onInput","disabled","dualBrandsThatNeedSelectionMechanism","showDualBrandSelectElements","filter","item","includes","id","length","LoadingWrapper","status","CardFields","brand","onFocusField","dualBrandingElements","Fieldset","classNameModifiers","label","get","p","className","RadioGroupExtended","name","items","mapDualBrandButtons","onChange","handleDualBrandSelection","showSelectedTick","KCPAuthentication","encryptedPasswordState","encryptedPassword","taxNumber","div","SocialSecurityNumberBrazil","StoreDetails","Installments","type","Address","allowedCountries","requiredFields","setComponentRef","validationRules","specifications","DisclaimerMessage","message","replace","linkText","urls","link"],"mappings":"o2BAeO,MAAMA,EAAoB,EAG7BC,OACAC,QACAC,SACAC,kBACAC,WACAC,aACAC,YACAC,iBACAC,kBACAC,qBACAC,4BAEAC,cACAC,WACAC,aACAC,YACAC,mBACAC,0BACAC,aACAC,qBAEAC,UAEAC,mBACAC,uBAEAC,uBAEAC,iBACAC,gBACAC,gBACAC,uBACAC,kBACAC,oBACAC,0BAEAC,SACAC,yBACAC,+BACAC,iCACAC,gCAAgC,KAChCC,sBACAC,2BACAC,SACAC,gBACAC,qBACAC,sBACAC,gBACAC,2BAEAC,iBACAC,yBAEAC,mBACAC,qBAEAC,yBACAC,4BAEA,MAAMC,KAAEA,IAASC,IAEXC,GACFC,EAACC,EAAAA,CACGC,SAAUf,EACVgB,YAAad,GAAae,WAC1BC,MAAO7C,EAAS4C,WAChBE,QAAS7C,EAAW2C,YAAcjB,EAClCoB,UAAW7C,EAAU0C,WACrBI,OAAQzD,EAAgB,aAAc,QACtC0D,QAAS1D,EAAgB,aAAc,SACvC2D,SAAUjB,IAAuC,eAApBA,GAC7BE,sBAAuBA,GACvBC,qBAAsBA,KAKxBe,GAAuC,CAAC,gBAAiB,OAAQ,WAEjEC,KAAgChD,EAAwBiD,OAAOC,GAAQH,GAAqCI,SAASD,EAAKE,KAAKC,OAErI,OACIjB,EAACkB,EAAAA,CAAeC,OAAQnE,EAASmE,QAC5BjC,GAAiBI,IAA2BS,GAE7CC,EAACoB,EAAAA,CACG7B,cAAeA,GACfC,sBAAuBA,GACvB6B,MAAOrE,EAASqE,MAChB9D,YAAaA,EACbwB,oBAAqBA,EACrB5B,eAAgBA,EAChBmE,aAAcrE,EACdgC,OAAQA,EACR/B,UAAWA,EACXS,iBAAkBA,EAClBb,OAAQE,EAASF,OACjBD,MAAOG,EAASH,MAChB0E,qBAAsB3D,EAAwBqD,OAAS,GAAKrD,IAG/DsB,IAAkBI,IAA2BS,GAE7Ca,IAA+BhD,EAAwBqD,OAAS,GAAKrD,GAClEoC,EAACwB,EAAAA,CAASC,mBAAoB,CAAC,uBAAwBC,MAAO7B,GAAK8B,IAAI,+BACnE3B,EAAC4B,IAAAA,CAAEC,UAAW,mCAAoChC,GAAK8B,IAAI,qCAC3D3B,EAAC8B,EAAAA,CACGC,KAAM,oBACN1B,MAAOvC,EACPkE,MAAOC,EAAoBrE,EAAyBmB,GACpDmD,SAAUrE,EAAWsE,yBACrBjC,UAAU,EACVkC,kBAAkB,KAK7BrE,GACGiC,EAACqC,EAAAA,CACGf,aAAcrE,EACdE,eAAgBA,EAChBmF,uBAAwB,CACpB1F,KAAMI,EAASuF,kBACf1F,QAAOG,EAASH,OAAQG,EAASH,MAAM0F,kBACvCzF,SAAQE,EAASF,QAASE,EAASF,OAAOyF,mBAE9ClC,MAAOzD,EAAK4F,UACZlC,QAASxD,EAAO0F,UAChBjC,UAAW1D,EAAM2F,UACjBhC,OAAQzD,EAAgB,YAAa,QACrC0D,QAAS1D,EAAgB,YAAa,SACtC2D,SAAUjB,IAAuC,sBAApBA,GAC7BU,YAAad,GAAamD,UAC1B7C,sBAAuBA,GACvBC,qBAAsBA,KAI7B5B,GACGgC,EAACyC,MAAAA,CAAIZ,UAAU,8CACX7B,EAAC0C,EAAAA,CACGlC,OAAQzD,EAAgB,uBAAwB,QAChD0D,QAAS1D,EAAgB,uBAAwB,SACjDuD,MAAOxD,GAAQmB,qBACfpB,MAAOA,GAAOoB,qBACdrB,KAAMqB,EACNiC,UAAU,EACVQ,SAAUjB,IAAuC,yBAApBA,GAC7BE,sBAAuBA,GACvBC,qBAAsBA,MAKjCZ,GAA4BgB,EAAC2C,EAAAA,CAAaT,SAAUhE,IAEpDd,GACG4C,EAAC4C,EAAAA,CACGlE,OAAQA,EACR2C,MAAOrE,EAASqE,MAChBjC,mBAAoBA,GACpB8C,SAAU7E,EACVwF,KAAMvF,EAA4B,SAAW,WAIpDqB,GACGqB,EAAC8C,EAAAA,CACGpB,MAAM,iBACN9E,KAAMuB,EACN+D,SAAU9D,EACV2E,iBAAkBlE,EAClBmE,eAAgBpE,EAChBqE,gBAAiB5E,EACjB6E,gBAAiBpE,EACjBqE,eAAgB7E,EAChBmB,gBAAiBA,GACjBlB,gBAAiBA,EACjBiB,sBAAuBA,GACvBhB,kBAAmBA,EACnBC,wBAAyBA,EACzBkB,sBAAuBA,GACvBC,qBAAsBA,KAI7BF,IACGM,EAACoD,EAAAA,CACGC,QAAS3D,GAAkB2D,QAAQC,QAAQ,cAAe,KAAK5D,GAAkB6D,cACjFC,KAAM,CAAC9D,GAAkB+D"}
|
package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as t}from"../../../../../external/preact/dist/preact.js";import o from"../../../../../_virtual/index.js";import n from"../PaymentMethodDetails.js";import a from"../PaymentMethodIcon.js";import i from"../DisableOneClickConfirmation.js";import s from"../PaymentMethodBrands/PaymentMethodBrands.js";import{BRAND_ICON_UI_EXCLUSION_LIST as d}from"../../../../internal/SecuredFields/lib/constants.js";import r from"../PaymentMethodName.js";import{useCoreContext as m}from"../../../../../core/Context/CoreProvider.js";import h from"../../../../internal/ExpandButton/ExpandButton.js";function
|
|
1
|
+
import{Component as e,createElement as t}from"../../../../../external/preact/dist/preact.js";import o from"../../../../../_virtual/index.js";import n from"../PaymentMethodDetails.js";import a from"../PaymentMethodIcon.js";import i from"../DisableOneClickConfirmation.js";import s from"../PaymentMethodBrands/PaymentMethodBrands.js";import{BRAND_ICON_UI_EXCLUSION_LIST as d}from"../../../../internal/SecuredFields/lib/constants.js";import r from"../PaymentMethodName.js";import{useCoreContext as m}from"../../../../../core/Context/CoreProvider.js";import h from"../../../../internal/ExpandButton/ExpandButton.js";import{getFullBrandName as l}from"../../../../Card/components/CardInput/utils.js";function p(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}class c extends e{render({paymentMethod:e,isSelected:p,isDisablingPaymentMethod:c,isLoaded:y,isLoading:u,standalone:b,showRadioButton:f}){const{i18n:_}=m();if(!e)return null;const C="card"===e.props.type||"scheme"===e.props.type,k=o({"adyen-checkout__payment-method":!0,[`adyen-checkout__payment-method--${e.props.type}`]:!0,...C&&{[`adyen-checkout__payment-method--${e.props.fundingSource??"credit"}`]:!0},"adyen-checkout__payment-method--selected":p,"adyen-checkout__payment-method--loading":u,"adyen-checkout__payment-method--disabling":c,"adyen-checkout__payment-method--confirming":this.state.showDisableStoredPaymentMethodConfirmation,"adyen-checkout__payment-method--standalone":b,[e._id]:!0,[this.props.className]:!0}),M=this.props.showRemovePaymentMethodButton&&e.props.oneClick&&p,P=`remove-${e._id}`,D=`container-${e._id}`,S=`button-${e._id}`,g=!e.props.oneClick&&e.brands&&e.brands.length>0;return t("div",{key:e._id,className:k,onClick:this.handleOnListItemClick},t("div",{className:"adyen-checkout__payment-method__header"},t(h,{buttonId:S,showRadioButton:f,isSelected:p,expandContentId:D,standalone:b},t(a,{...e.props.oneClick&&{altDescription:l(e.props.brand)},type:e.type,src:e.icon}),t(r,{displayName:e.displayName,isSelected:p,additionalInfo:e.additionalInfo})),M&&t("button",{type:"button",className:"adyen-checkout__button adyen-checkout__button--inline adyen-checkout__button--link",onClick:this.toggleDisableConfirmation,"aria-expanded":this.state.showDisableStoredPaymentMethodConfirmation,"aria-controls":P},_.get("storedPaymentMethod.disable.button")),g&&t(s,{showOtherInsteafOfNumber:e.props.showOtherInsteafOfNumber,keepBrandsVisible:e.props.keepBrandsVisible,brands:e.brands,excludedUIBrands:d,isPaymentMethodSelected:p})),t("div",{className:"adyen-checkout-pm-details-wrapper","aria-hidden":!p},t("div",{className:"adyen-checkout__payment-method__details",id:D},M&&t(i,{id:P,open:this.state.showDisableStoredPaymentMethodConfirmation,onDisable:this.onDisableStoredPaymentMethod,onCancel:this.toggleDisableConfirmation}),t(n,{paymentMethodComponent:e.render(),isLoaded:y}))))}constructor(...e){super(...e),p(this,"state",{showDisableStoredPaymentMethodConfirmation:!1}),p(this,"toggleDisableConfirmation",()=>{this.setState({showDisableStoredPaymentMethodConfirmation:!this.state.showDisableStoredPaymentMethodConfirmation})}),p(this,"onDisableStoredPaymentMethod",()=>{this.props.onDisableStoredPaymentMethod(this.props.paymentMethod),this.toggleDisableConfirmation()}),p(this,"handleOnListItemClick",()=>{const{onSelect:e,paymentMethod:t}=this.props;e(t)})}}p(c,"defaultProps",{paymentMethod:null,isSelected:!1,isLoaded:!1,isLoading:!1,showDisableStoredPaymentMethodConfirmation:!1,showRadioButton:!1});export{c as default};
|
|
2
2
|
//# sourceMappingURL=PaymentMethodItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentMethodItem.js","sources":["../../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport PaymentMethodDetails from '../PaymentMethodDetails';\nimport PaymentMethodIcon from '../PaymentMethodIcon';\nimport DisableOneClickConfirmation from '../DisableOneClickConfirmation';\nimport './PaymentMethodItem.scss';\nimport UIElement from '../../../../internal/UIElement/UIElement';\nimport PaymentMethodBrands from '../PaymentMethodBrands/PaymentMethodBrands';\nimport { BRAND_ICON_UI_EXCLUSION_LIST } from '../../../../internal/SecuredFields/lib/constants';\nimport PaymentMethodName from '../PaymentMethodName';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport ExpandButton from '../../../../internal/ExpandButton';\n\nexport interface PaymentMethodItemProps {\n paymentMethod: UIElement;\n isSelected?: boolean;\n isLoaded?: boolean;\n isLoading?: boolean;\n isDisablingPaymentMethod: boolean;\n showRemovePaymentMethodButton: boolean;\n onDisableStoredPaymentMethod: (paymentMethod) => void;\n onSelect: (paymentMethod: UIElement) => void;\n standalone: boolean;\n className?: string;\n showRadioButton?: boolean;\n}\n\nclass PaymentMethodItem extends Component<PaymentMethodItemProps> {\n public static defaultProps = {\n paymentMethod: null,\n isSelected: false,\n isLoaded: false,\n isLoading: false,\n showDisableStoredPaymentMethodConfirmation: false,\n showRadioButton: false\n };\n\n public state = {\n showDisableStoredPaymentMethodConfirmation: false\n };\n\n public toggleDisableConfirmation = () => {\n this.setState({ showDisableStoredPaymentMethodConfirmation: !this.state.showDisableStoredPaymentMethodConfirmation });\n };\n\n public onDisableStoredPaymentMethod = () => {\n this.props.onDisableStoredPaymentMethod(this.props.paymentMethod);\n this.toggleDisableConfirmation();\n };\n\n private handleOnListItemClick = (): void => {\n const { onSelect, paymentMethod } = this.props;\n onSelect(paymentMethod);\n };\n\n // @ts-ignore need to refine the type for paymentMethod\n render({ paymentMethod, isSelected, isDisablingPaymentMethod, isLoaded, isLoading, standalone, showRadioButton }) {\n const { i18n } = useCoreContext();\n\n if (!paymentMethod) {\n return null;\n }\n\n const isCard = paymentMethod.props.type === 'card' || paymentMethod.props.type === 'scheme';\n\n const paymentMethodClassnames = classNames({\n 'adyen-checkout__payment-method': true,\n [`adyen-checkout__payment-method--${paymentMethod.props.type}`]: true,\n ...(isCard && { [`adyen-checkout__payment-method--${paymentMethod.props.fundingSource ?? 'credit'}`]: true }),\n 'adyen-checkout__payment-method--selected': isSelected,\n 'adyen-checkout__payment-method--loading': isLoading,\n 'adyen-checkout__payment-method--disabling': isDisablingPaymentMethod,\n 'adyen-checkout__payment-method--confirming': this.state.showDisableStoredPaymentMethodConfirmation,\n 'adyen-checkout__payment-method--standalone': standalone,\n [paymentMethod._id]: true,\n [this.props.className]: true\n });\n\n const showRemovePaymentMethodButton = this.props.showRemovePaymentMethodButton && paymentMethod.props.oneClick && isSelected;\n const disableConfirmationId = `remove-${paymentMethod._id}`;\n const containerId = `container-${paymentMethod._id}`;\n const buttonId = `button-${paymentMethod._id}`;\n\n const showBrands = !paymentMethod.props.oneClick && paymentMethod.brands && paymentMethod.brands.length > 0;\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div key={paymentMethod._id} className={paymentMethodClassnames} onClick={this.handleOnListItemClick}>\n <div className=\"adyen-checkout__payment-method__header\">\n <ExpandButton\n buttonId={buttonId}\n showRadioButton={showRadioButton}\n isSelected={isSelected}\n expandContentId={containerId}\n standalone={standalone}\n >\n <PaymentMethodIcon\n // Only add alt attribute to storedPaymentMethods (to avoid SR reading the PM name twice)\n {...(paymentMethod.props.oneClick && { altDescription: paymentMethod.props.name })}\n type={paymentMethod.type}\n src={paymentMethod.icon}\n />\n\n <PaymentMethodName\n displayName={paymentMethod.displayName}\n isSelected={isSelected}\n additionalInfo={paymentMethod.additionalInfo}\n />\n </ExpandButton>\n\n {showRemovePaymentMethodButton && (\n <button\n type=\"button\"\n className=\"adyen-checkout__button adyen-checkout__button--inline adyen-checkout__button--link\"\n onClick={this.toggleDisableConfirmation}\n aria-expanded={this.state.showDisableStoredPaymentMethodConfirmation}\n aria-controls={disableConfirmationId}\n >\n {i18n.get('storedPaymentMethod.disable.button')}\n </button>\n )}\n\n {showBrands && (\n <PaymentMethodBrands\n showOtherInsteafOfNumber={paymentMethod.props.showOtherInsteafOfNumber}\n keepBrandsVisible={paymentMethod.props.keepBrandsVisible}\n brands={paymentMethod.brands}\n excludedUIBrands={BRAND_ICON_UI_EXCLUSION_LIST}\n isPaymentMethodSelected={isSelected}\n />\n )}\n </div>\n\n <div className=\"adyen-checkout-pm-details-wrapper\" aria-hidden={!isSelected}>\n <div className=\"adyen-checkout__payment-method__details\" id={containerId}>\n {showRemovePaymentMethodButton && (\n <DisableOneClickConfirmation\n id={disableConfirmationId}\n open={this.state.showDisableStoredPaymentMethodConfirmation}\n onDisable={this.onDisableStoredPaymentMethod}\n onCancel={this.toggleDisableConfirmation}\n />\n )}\n\n <PaymentMethodDetails paymentMethodComponent={paymentMethod.render()} isLoaded={isLoaded} />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default PaymentMethodItem;\n"],"names":["PaymentMethodItem","Component","render","paymentMethod","isSelected","isDisablingPaymentMethod","isLoaded","isLoading","standalone","showRadioButton","i18n","useCoreContext","isCard","props","type","paymentMethodClassnames","classNames","fundingSource","this","state","showDisableStoredPaymentMethodConfirmation","_id","className","showRemovePaymentMethodButton","oneClick","disableConfirmationId","containerId","buttonId","showBrands","brands","length","h","div","key","onClick","handleOnListItemClick","ExpandButton","expandContentId","PaymentMethodIcon","altDescription","name","src","icon","PaymentMethodName","displayName","additionalInfo","button","toggleDisableConfirmation","aria-expanded","aria-controls","get","PaymentMethodBrands","showOtherInsteafOfNumber","keepBrandsVisible","excludedUIBrands","BRAND_ICON_UI_EXCLUSION_LIST","isPaymentMethodSelected","aria-hidden","id","DisableOneClickConfirmation","open","onDisable","onDisableStoredPaymentMethod","onCancel","PaymentMethodDetails","paymentMethodComponent","super","args","_define_property","setState","onSelect","defaultProps"],"mappings":"4tBA2BA,MAAMA,UAA0BC,EA6B5BC,MAAAA,EAAOC,cAAEA,EAAaC,WAAEA,EAAUC,yBAAEA,EAAwBC,SAAEA,EAAQC,UAAEA,EAASC,WAAEA,EAAUC,gBAAEA,IAC3F,MAAMC,KAAEA,GAASC,IAEjB,IAAKR,EACD,OAAO,KAGX,MAAMS,EAAsC,SAA7BT,EAAcU,MAAMC,MAAgD,WAA7BX,EAAcU,MAAMC,KAEpEC,EAA0BC,EAAW,CACvC,kCAAkC,EAClC,CAAC,mCAAmCb,EAAcU,MAAMC,SAAS,KAC7DF,GAAU,CAAE,CAAC,mCAAmCT,EAAcU,MAAMI,eAAiB,aAAa,GACtG,2CAA4Cb,EAC5C,0CAA2CG,EAC3C,4CAA6CF,EAC7C,6CAA8Ca,KAAKC,MAAMC,2CACzD,6CAA8CZ,EAC9C,CAACL,EAAckB,MAAM,EACrB,CAACH,KAAKL,MAAMS,YAAY,IAGtBC,EAAgCL,KAAKL,MAAMU,+BAAiCpB,EAAcU,MAAMW,UAAYpB,EAC5GqB,EAAwB,UAAUtB,EAAckB,MAChDK,EAAc,aAAavB,EAAckB,MACzCM,EAAW,UAAUxB,EAAckB,MAEnCO,GAAczB,EAAcU,MAAMW,UAAYrB,EAAc0B,QAAU1B,EAAc0B,OAAOC,OAAS,EAE1G,OAEIC,EAACC,MAAAA,CAAIC,IAAK9B,EAAckB,IAAKC,UAAWP,EAAyBmB,QAAShB,KAAKiB,uBAC3EJ,EAACC,MAAAA,CAAIV,UAAU,0CACXS,EAACK,EAAAA,CACGT,SAAUA,EACVlB,gBAAiBA,EACjBL,WAAYA,EACZiC,gBAAiBX,EACjBlB,WAAYA,GAEZuB,EAACO,EAAAA,IAEQnC,EAAcU,MAAMW,UAAY,CAAEe,eAAgBpC,EAAcU,MAAM2B,MAC3E1B,KAAMX,EAAcW,KACpB2B,IAAKtC,EAAcuC,OAGvBX,EAACY,EAAAA,CACGC,YAAazC,EAAcyC,YAC3BxC,WAAYA,EACZyC,eAAgB1C,EAAc0C,kBAIrCtB,GACGQ,EAACe,SAAAA,CACGhC,KAAK,SACLQ,UAAU,qFACVY,QAAShB,KAAK6B,0BACdC,gBAAe9B,KAAKC,MAAMC,2CAC1B6B,gBAAexB,GAEdf,EAAKwC,IAAI,uCAIjBtB,GACGG,EAACoB,EAAAA,CACGC,yBAA0BjD,EAAcU,MAAMuC,yBAC9CC,kBAAmBlD,EAAcU,MAAMwC,kBACvCxB,OAAQ1B,EAAc0B,OACtByB,iBAAkBC,EAClBC,wBAAyBpD,KAKrC2B,EAACC,MAAAA,CAAIV,UAAU,oCAAoCmC,eAAcrD,GAC7D2B,EAACC,MAAAA,CAAIV,UAAU,0CAA0CoC,GAAIhC,GACxDH,GACGQ,EAAC4B,EAAAA,CACGD,GAAIjC,EACJmC,KAAM1C,KAAKC,MAAMC,2CACjByC,UAAW3C,KAAK4C,6BAChBC,SAAU7C,KAAK6B,4BAIvBhB,EAACiC,EAAAA,CAAqBC,uBAAwB9D,EAAcD,SAAUI,SAAUA,MAKpG,mBA1HJ4D,SAAAC,GAUIC,OAAOjD,QAAQ,CACXC,4CAA4C,IAGhDgD,OAAOrB,4BAA4B,KAC/B7B,KAAKmD,SAAS,CAAEjD,4CAA6CF,KAAKC,MAAMC,+CAG5EgD,OAAON,+BAA+B,KAClC5C,KAAKL,MAAMiD,6BAA6B5C,KAAKL,MAAMV,eACnDe,KAAK6B,8BAGTqB,OAAQjC,wBAAwB,KAC5B,MAAMmC,SAAEA,EAAQnE,cAAEA,GAAkBe,KAAKL,MACzCyD,EAASnE,MAxBbiE,EADEpE,EACYuE,eAAe,CACzBpE,cAAe,KACfC,YAAY,EACZE,UAAU,EACVC,WAAW,EACXa,4CAA4C,EAC5CX,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"PaymentMethodItem.js","sources":["../../../../../../../src/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport PaymentMethodDetails from '../PaymentMethodDetails';\nimport PaymentMethodIcon from '../PaymentMethodIcon';\nimport DisableOneClickConfirmation from '../DisableOneClickConfirmation';\nimport './PaymentMethodItem.scss';\nimport UIElement from '../../../../internal/UIElement/UIElement';\nimport PaymentMethodBrands from '../PaymentMethodBrands/PaymentMethodBrands';\nimport { BRAND_ICON_UI_EXCLUSION_LIST } from '../../../../internal/SecuredFields/lib/constants';\nimport PaymentMethodName from '../PaymentMethodName';\nimport { useCoreContext } from '../../../../../core/Context/CoreProvider';\nimport ExpandButton from '../../../../internal/ExpandButton';\nimport { getFullBrandName } from '../../../../Card/components/CardInput/utils';\n\nexport interface PaymentMethodItemProps {\n paymentMethod: UIElement;\n isSelected?: boolean;\n isLoaded?: boolean;\n isLoading?: boolean;\n isDisablingPaymentMethod: boolean;\n showRemovePaymentMethodButton: boolean;\n onDisableStoredPaymentMethod: (paymentMethod) => void;\n onSelect: (paymentMethod: UIElement) => void;\n standalone: boolean;\n className?: string;\n showRadioButton?: boolean;\n}\n\nclass PaymentMethodItem extends Component<PaymentMethodItemProps> {\n public static defaultProps = {\n paymentMethod: null,\n isSelected: false,\n isLoaded: false,\n isLoading: false,\n showDisableStoredPaymentMethodConfirmation: false,\n showRadioButton: false\n };\n\n public state = {\n showDisableStoredPaymentMethodConfirmation: false\n };\n\n public toggleDisableConfirmation = () => {\n this.setState({ showDisableStoredPaymentMethodConfirmation: !this.state.showDisableStoredPaymentMethodConfirmation });\n };\n\n public onDisableStoredPaymentMethod = () => {\n this.props.onDisableStoredPaymentMethod(this.props.paymentMethod);\n this.toggleDisableConfirmation();\n };\n\n private handleOnListItemClick = (): void => {\n const { onSelect, paymentMethod } = this.props;\n onSelect(paymentMethod);\n };\n\n // @ts-ignore need to refine the type for paymentMethod\n render({ paymentMethod, isSelected, isDisablingPaymentMethod, isLoaded, isLoading, standalone, showRadioButton }) {\n const { i18n } = useCoreContext();\n\n if (!paymentMethod) {\n return null;\n }\n\n const isCard = paymentMethod.props.type === 'card' || paymentMethod.props.type === 'scheme';\n\n const paymentMethodClassnames = classNames({\n 'adyen-checkout__payment-method': true,\n [`adyen-checkout__payment-method--${paymentMethod.props.type}`]: true,\n ...(isCard && { [`adyen-checkout__payment-method--${paymentMethod.props.fundingSource ?? 'credit'}`]: true }),\n 'adyen-checkout__payment-method--selected': isSelected,\n 'adyen-checkout__payment-method--loading': isLoading,\n 'adyen-checkout__payment-method--disabling': isDisablingPaymentMethod,\n 'adyen-checkout__payment-method--confirming': this.state.showDisableStoredPaymentMethodConfirmation,\n 'adyen-checkout__payment-method--standalone': standalone,\n [paymentMethod._id]: true,\n [this.props.className]: true\n });\n\n const showRemovePaymentMethodButton = this.props.showRemovePaymentMethodButton && paymentMethod.props.oneClick && isSelected;\n const disableConfirmationId = `remove-${paymentMethod._id}`;\n const containerId = `container-${paymentMethod._id}`;\n const buttonId = `button-${paymentMethod._id}`;\n\n const showBrands = !paymentMethod.props.oneClick && paymentMethod.brands && paymentMethod.brands.length > 0;\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div key={paymentMethod._id} className={paymentMethodClassnames} onClick={this.handleOnListItemClick}>\n <div className=\"adyen-checkout__payment-method__header\">\n <ExpandButton\n buttonId={buttonId}\n showRadioButton={showRadioButton}\n isSelected={isSelected}\n expandContentId={containerId}\n standalone={standalone}\n >\n <PaymentMethodIcon\n // Only add alt attribute to storedPaymentMethods (to avoid SR reading the PM name twice)\n {...(paymentMethod.props.oneClick && { altDescription: getFullBrandName(paymentMethod.props.brand) })}\n type={paymentMethod.type}\n src={paymentMethod.icon}\n />\n\n <PaymentMethodName\n displayName={paymentMethod.displayName}\n isSelected={isSelected}\n additionalInfo={paymentMethod.additionalInfo}\n />\n </ExpandButton>\n\n {showRemovePaymentMethodButton && (\n <button\n type=\"button\"\n className=\"adyen-checkout__button adyen-checkout__button--inline adyen-checkout__button--link\"\n onClick={this.toggleDisableConfirmation}\n aria-expanded={this.state.showDisableStoredPaymentMethodConfirmation}\n aria-controls={disableConfirmationId}\n >\n {i18n.get('storedPaymentMethod.disable.button')}\n </button>\n )}\n\n {showBrands && (\n <PaymentMethodBrands\n showOtherInsteafOfNumber={paymentMethod.props.showOtherInsteafOfNumber}\n keepBrandsVisible={paymentMethod.props.keepBrandsVisible}\n brands={paymentMethod.brands}\n excludedUIBrands={BRAND_ICON_UI_EXCLUSION_LIST}\n isPaymentMethodSelected={isSelected}\n />\n )}\n </div>\n\n <div className=\"adyen-checkout-pm-details-wrapper\" aria-hidden={!isSelected}>\n <div className=\"adyen-checkout__payment-method__details\" id={containerId}>\n {showRemovePaymentMethodButton && (\n <DisableOneClickConfirmation\n id={disableConfirmationId}\n open={this.state.showDisableStoredPaymentMethodConfirmation}\n onDisable={this.onDisableStoredPaymentMethod}\n onCancel={this.toggleDisableConfirmation}\n />\n )}\n\n <PaymentMethodDetails paymentMethodComponent={paymentMethod.render()} isLoaded={isLoaded} />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default PaymentMethodItem;\n"],"names":["PaymentMethodItem","Component","render","paymentMethod","isSelected","isDisablingPaymentMethod","isLoaded","isLoading","standalone","showRadioButton","i18n","useCoreContext","isCard","props","type","paymentMethodClassnames","classNames","fundingSource","this","state","showDisableStoredPaymentMethodConfirmation","_id","className","showRemovePaymentMethodButton","oneClick","disableConfirmationId","containerId","buttonId","showBrands","brands","length","h","div","key","onClick","handleOnListItemClick","ExpandButton","expandContentId","PaymentMethodIcon","altDescription","getFullBrandName","brand","src","icon","PaymentMethodName","displayName","additionalInfo","button","toggleDisableConfirmation","aria-expanded","aria-controls","get","PaymentMethodBrands","showOtherInsteafOfNumber","keepBrandsVisible","excludedUIBrands","BRAND_ICON_UI_EXCLUSION_LIST","isPaymentMethodSelected","aria-hidden","id","DisableOneClickConfirmation","open","onDisable","onDisableStoredPaymentMethod","onCancel","PaymentMethodDetails","paymentMethodComponent","super","args","_define_property","setState","onSelect","defaultProps"],"mappings":"8yBA4BA,MAAMA,UAA0BC,EA6B5BC,MAAAA,EAAOC,cAAEA,EAAaC,WAAEA,EAAUC,yBAAEA,EAAwBC,SAAEA,EAAQC,UAAEA,EAASC,WAAEA,EAAUC,gBAAEA,IAC3F,MAAMC,KAAEA,GAASC,IAEjB,IAAKR,EACD,OAAO,KAGX,MAAMS,EAAsC,SAA7BT,EAAcU,MAAMC,MAAgD,WAA7BX,EAAcU,MAAMC,KAEpEC,EAA0BC,EAAW,CACvC,kCAAkC,EAClC,CAAC,mCAAmCb,EAAcU,MAAMC,SAAS,KAC7DF,GAAU,CAAE,CAAC,mCAAmCT,EAAcU,MAAMI,eAAiB,aAAa,GACtG,2CAA4Cb,EAC5C,0CAA2CG,EAC3C,4CAA6CF,EAC7C,6CAA8Ca,KAAKC,MAAMC,2CACzD,6CAA8CZ,EAC9C,CAACL,EAAckB,MAAM,EACrB,CAACH,KAAKL,MAAMS,YAAY,IAGtBC,EAAgCL,KAAKL,MAAMU,+BAAiCpB,EAAcU,MAAMW,UAAYpB,EAC5GqB,EAAwB,UAAUtB,EAAckB,MAChDK,EAAc,aAAavB,EAAckB,MACzCM,EAAW,UAAUxB,EAAckB,MAEnCO,GAAczB,EAAcU,MAAMW,UAAYrB,EAAc0B,QAAU1B,EAAc0B,OAAOC,OAAS,EAE1G,OAEIC,EAACC,MAAAA,CAAIC,IAAK9B,EAAckB,IAAKC,UAAWP,EAAyBmB,QAAShB,KAAKiB,uBAC3EJ,EAACC,MAAAA,CAAIV,UAAU,0CACXS,EAACK,EAAAA,CACGT,SAAUA,EACVlB,gBAAiBA,EACjBL,WAAYA,EACZiC,gBAAiBX,EACjBlB,WAAYA,GAEZuB,EAACO,EAAAA,IAEQnC,EAAcU,MAAMW,UAAY,CAAEe,eAAgBC,EAAiBrC,EAAcU,MAAM4B,QAC5F3B,KAAMX,EAAcW,KACpB4B,IAAKvC,EAAcwC,OAGvBZ,EAACa,EAAAA,CACGC,YAAa1C,EAAc0C,YAC3BzC,WAAYA,EACZ0C,eAAgB3C,EAAc2C,kBAIrCvB,GACGQ,EAACgB,SAAAA,CACGjC,KAAK,SACLQ,UAAU,qFACVY,QAAShB,KAAK8B,0BACdC,gBAAe/B,KAAKC,MAAMC,2CAC1B8B,gBAAezB,GAEdf,EAAKyC,IAAI,uCAIjBvB,GACGG,EAACqB,EAAAA,CACGC,yBAA0BlD,EAAcU,MAAMwC,yBAC9CC,kBAAmBnD,EAAcU,MAAMyC,kBACvCzB,OAAQ1B,EAAc0B,OACtB0B,iBAAkBC,EAClBC,wBAAyBrD,KAKrC2B,EAACC,MAAAA,CAAIV,UAAU,oCAAoCoC,eAActD,GAC7D2B,EAACC,MAAAA,CAAIV,UAAU,0CAA0CqC,GAAIjC,GACxDH,GACGQ,EAAC6B,EAAAA,CACGD,GAAIlC,EACJoC,KAAM3C,KAAKC,MAAMC,2CACjB0C,UAAW5C,KAAK6C,6BAChBC,SAAU9C,KAAK8B,4BAIvBjB,EAACkC,EAAAA,CAAqBC,uBAAwB/D,EAAcD,SAAUI,SAAUA,MAKpG,mBA1HJ6D,SAAAC,GAUIC,OAAOlD,QAAQ,CACXC,4CAA4C,IAGhDiD,OAAOrB,4BAA4B,KAC/B9B,KAAKoD,SAAS,CAAElD,4CAA6CF,KAAKC,MAAMC,+CAG5EiD,OAAON,+BAA+B,KAClC7C,KAAKL,MAAMkD,6BAA6B7C,KAAKL,MAAMV,eACnDe,KAAK8B,8BAGTqB,OAAQlC,wBAAwB,KAC5B,MAAMoC,SAAEA,EAAQpE,cAAEA,GAAkBe,KAAKL,MACzC0D,EAASpE,MAxBbkE,EADErE,EACYwE,eAAe,CACzBrE,cAAe,KACfC,YAAY,EACZE,UAAU,EACVC,WAAW,EACXa,4CAA4C,EAC5CX,iBAAiB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as t}from"../../../external/preact/dist/preact.js";import n from"../../../_virtual/index.js";import
|
|
1
|
+
import{Component as e,createElement as t}from"../../../external/preact/dist/preact.js";import n from"../../../_virtual/index.js";import o from"../Spinner/Spinner.js";import{useCoreContext as s}from"../../../core/Context/CoreProvider.js";function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class r extends e{render(){const{classNameModifiers:e=[],disabled:a,href:r,icon:i,inline:l,label:c,ariaLabel:u,ariaDescribedBy:d,status:p,variant:m,buttonRef:_,onMouseEnter:h,onMouseLeave:b,onFocus:y,onBlur:f,onKeyPress:g}=this.props,{completed:k}=this.state,{i18n:v}=s(),N=i?t("img",{className:"adyen-checkout__button__icon",src:i,alt:"","aria-hidden":"true"}):"",C=[...e,..."primary"!==m?[m]:[],...l?["inline"]:[],...k?["completed"]:[],..."loading"===p||"redirect"===p?["loading"]:[]],x=n(["adyen-checkout__button",...C.map(e=>`adyen-checkout__button--${e}`)]),K={loading:t("span",{className:"adyen-checkout__button__content"},t(o,{size:"medium",inline:!0}),t("span",{className:"adyen-checkout__button__text--sr-only"},v.get("loading"))),redirect:t("span",{className:"adyen-checkout__button__content"},t(o,{size:"medium",inline:!0}),v.get("payButton.redirecting")),default:t("span",{className:"adyen-checkout__button__content"},N,t("span",{className:"adyen-checkout__button__text"},c))},M=K[p]||K.default;return r?t("a",{className:x,href:r,disabled:a,target:this.props.target,rel:this.props.rel},M):t("button",{ref:_,className:x,type:"button",disabled:a,onClick:this.onClick,onKeyDown:this.onKeyDown,"aria-label":u,"aria-describedby":d,onMouseEnter:h,onMouseLeave:b,onFocus:y,onBlur:f,onKeyPress:g},M,"loading"!==p&&"redirect"!==p&&this.props.children)}constructor(...e){super(...e),a(this,"onClick",e=>{e.preventDefault(),this.props.disabled||this.props.onClick(e,{complete:this.complete})}),a(this,"complete",(e=1e3)=>{this.setState({completed:!0}),setTimeout(()=>{this.setState({completed:!1})},e)}),a(this,"onKeyDown",e=>{this.props.onKeyDown?.(e)})}}a(r,"defaultProps",{status:"default",variant:"primary",disabled:!1,label:"",inline:!1,target:"_self",onClick:()=>{},onMouseEnter:()=>{},onMouseLeave:()=>{},onFocus:()=>{},onBlur:()=>{},onKeyPress:()=>{}});export{r as default};
|
|
2
2
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../../../src/components/internal/Button/Button.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport Spinner from '../Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport './Button.scss';\nimport { ButtonProps, ButtonState } from './types';\n\nclass Button extends Component<ButtonProps, ButtonState> {\n public static defaultProps = {\n status: 'default',\n variant: 'primary',\n disabled: false,\n label: '',\n inline: false,\n target: '_self',\n onClick: () => {}\n };\n\n public onClick = e => {\n e.preventDefault();\n\n if (!this.props.disabled) {\n this.props.onClick(e, { complete: this.complete });\n }\n };\n\n public complete = (delay = 1000) => {\n this.setState({ completed: true });\n setTimeout(() => {\n this.setState({ completed: false });\n }, delay);\n };\n\n public onKeyDown = (event: KeyboardEvent) => {\n this.props.onKeyDown?.(event);\n };\n\n render() {\n const {
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../../src/components/internal/Button/Button.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport classNames from 'classnames';\nimport Spinner from '../Spinner';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport './Button.scss';\nimport { ButtonProps, ButtonState } from './types';\n\nclass Button extends Component<ButtonProps, ButtonState> {\n public static defaultProps = {\n status: 'default',\n variant: 'primary',\n disabled: false,\n label: '',\n inline: false,\n target: '_self',\n onClick: () => {},\n onMouseEnter: () => {},\n onMouseLeave: () => {},\n onFocus: () => {},\n onBlur: () => {},\n onKeyPress: () => {}\n };\n\n public onClick = e => {\n e.preventDefault();\n\n if (!this.props.disabled) {\n this.props.onClick(e, { complete: this.complete });\n }\n };\n\n public complete = (delay = 1000) => {\n this.setState({ completed: true });\n setTimeout(() => {\n this.setState({ completed: false });\n }, delay);\n };\n\n public onKeyDown = (event: KeyboardEvent) => {\n this.props.onKeyDown?.(event);\n };\n\n render() {\n const {\n classNameModifiers = [],\n disabled,\n href,\n icon,\n inline,\n label,\n ariaLabel,\n ariaDescribedBy,\n status,\n variant,\n buttonRef,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyPress\n }: ButtonProps = this.props;\n const { completed } = this.state;\n const { i18n } = useCoreContext();\n\n const buttonIcon = icon ? <img className=\"adyen-checkout__button__icon\" src={icon} alt=\"\" aria-hidden=\"true\" /> : '';\n\n const modifiers = [\n ...classNameModifiers,\n ...(variant !== 'primary' ? [variant] : []),\n ...(inline ? ['inline'] : []),\n ...(completed ? ['completed'] : []),\n ...(status === 'loading' || status === 'redirect' ? ['loading'] : [])\n ];\n\n const buttonClasses = classNames(['adyen-checkout__button', ...modifiers.map(m => `adyen-checkout__button--${m}`)]);\n\n const buttonStates = {\n loading: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n <span className={'adyen-checkout__button__text--sr-only'}>{i18n.get('loading')}</span>\n </span>\n ),\n redirect: (\n <span className=\"adyen-checkout__button__content\">\n <Spinner size=\"medium\" inline />\n {i18n.get('payButton.redirecting')}\n </span>\n ),\n default: (\n <span className=\"adyen-checkout__button__content\">\n {buttonIcon}\n <span className=\"adyen-checkout__button__text\">{label}</span>\n </span>\n )\n };\n\n const buttonText = buttonStates[status] || buttonStates.default;\n\n if (href) {\n return (\n <a className={buttonClasses} href={href} disabled={disabled} target={this.props.target} rel={this.props.rel}>\n {buttonText}\n </a>\n );\n }\n\n return (\n <button\n ref={buttonRef}\n className={buttonClasses}\n type=\"button\"\n disabled={disabled}\n onClick={this.onClick}\n onKeyDown={this.onKeyDown}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyPress={onKeyPress}\n >\n {buttonText}\n {status !== 'loading' && status !== 'redirect' && this.props.children}\n </button>\n );\n }\n}\n\nexport default Button;\n"],"names":["Button","Component","render","classNameModifiers","disabled","href","icon","inline","label","ariaLabel","ariaDescribedBy","status","variant","buttonRef","onMouseEnter","onMouseLeave","onFocus","onBlur","onKeyPress","this","props","completed","state","i18n","useCoreContext","buttonIcon","h","img","className","src","alt","aria-hidden","modifiers","buttonClasses","classNames","map","m","buttonStates","loading","span","Spinner","size","get","redirect","default","buttonText","a","target","rel","button","ref","type","onClick","onKeyDown","aria-label","aria-describedby","children","super","args","_define_property","e","preventDefault","complete","delay","setState","setTimeout","event","defaultProps"],"mappings":"qWAOA,MAAMA,UAAeC,EAmCjBC,MAAAA,GACI,MAAMC,mBACFA,EAAqB,GAAEC,SACvBA,EAAQC,KACRA,EAAIC,KACJA,EAAIC,OACJA,EAAMC,MACNA,EAAKC,UACLA,EAASC,gBACTA,EAAeC,OACfA,EAAMC,QACNA,EAAOC,UACPA,EAASC,aACTA,EAAYC,aACZA,EAAYC,QACZA,EAAOC,OACPA,EAAMC,WACNA,GACaC,KAAKC,OAChBC,UAAEA,GAAcF,KAAKG,OACrBC,KAAEA,GAASC,IAEXC,EAAanB,EAAOoB,EAACC,MAAAA,CAAIC,UAAU,+BAA+BC,IAAKvB,EAAMwB,IAAI,GAAGC,cAAY,SAAY,GAE5GC,EAAY,IACX7B,KACa,YAAZS,EAAwB,CAACA,GAAW,MACpCL,EAAS,CAAC,UAAY,MACtBc,EAAY,CAAC,aAAe,MACjB,YAAXV,GAAmC,aAAXA,EAAwB,CAAC,WAAa,IAGhEsB,EAAgBC,EAAW,CAAC,4BAA6BF,EAAUG,IAAIC,GAAK,2BAA2BA,OAEvGC,EAAe,CACjBC,QACIZ,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASlC,QAAAA,IACvBmB,EAACa,OAAAA,CAAKX,UAAW,yCAA0CL,EAAKmB,IAAI,aAG5EC,SACIjB,EAACa,OAAAA,CAAKX,UAAU,mCACZF,EAACc,EAAAA,CAAQC,KAAK,SAASlC,QAAAA,IACtBgB,EAAKmB,IAAI,0BAGlBE,QACIlB,EAACa,OAAAA,CAAKX,UAAU,mCACXH,EACDC,EAACa,OAAAA,CAAKX,UAAU,gCAAgCpB,KAKtDqC,EAAaR,EAAa1B,IAAW0B,EAAaO,QAExD,OAAIvC,EAEIqB,EAACoB,IAAAA,CAAElB,UAAWK,EAAe5B,KAAMA,EAAMD,SAAUA,EAAU2C,OAAQ5B,KAAKC,MAAM2B,OAAQC,IAAK7B,KAAKC,MAAM4B,KACnGH,GAMTnB,EAACuB,SAAAA,CACGC,IAAKrC,EACLe,UAAWK,EACXkB,KAAK,SACL/C,SAAUA,EACVgD,QAASjC,KAAKiC,QACdC,UAAWlC,KAAKkC,UAChBC,aAAY7C,EACZ8C,mBAAkB7C,EAClBI,aAAcA,EACdC,aAAcA,EACdC,QAASA,EACTC,OAAQA,EACRC,WAAYA,GAEX2B,EACW,YAAXlC,GAAmC,aAAXA,GAAyBQ,KAAKC,MAAMoC,SAGzE,mBAxHJC,SAAAC,GAgBIC,EAAAxC,KAAOiC,UAAUQ,IACbA,EAAEC,iBAEG1C,KAAKC,MAAMhB,UACZe,KAAKC,MAAMgC,QAAQQ,EAAG,CAAEE,SAAU3C,KAAK2C,aAI/CH,EAAAxC,KAAO2C,WAAW,CAACC,EAAQ,OACvB5C,KAAK6C,SAAS,CAAE3C,WAAW,IAC3B4C,WAAW,KACP9C,KAAK6C,SAAS,CAAE3C,WAAW,KAC5B0C,KAGPJ,EAAAxC,KAAOkC,YAAaa,IAChB/C,KAAKC,MAAMiC,YAAYa,MA/B3BP,EADE3D,EACYmE,eAAe,CACzBxD,OAAQ,UACRC,QAAS,UACTR,UAAU,EACVI,MAAO,GACPD,QAAQ,EACRwC,OAAQ,QACRK,QAAS,OACTtC,aAAc,OACdC,aAAc,OACdC,QAAS,OACTC,OAAQ,OACRC,WAAY"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createElement as o}from"../../../external/preact/dist/preact.js";import{useRef as t,useCallback as e}from"../../../external/preact/hooks/dist/hooks.js";import n from"./Button.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import{copyToClipboard as a}from"../../../utils/clipboard.js";import{SingletonTooltipProvider as s,useTooltip as i}from"../Tooltip/SingletonTooltipProvider.js";const c=s=>{const{i18n:c}=r(),p=t(null),{showTooltip:l,hideTooltip:C}=i(),u=e(()=>{a(s.text),l({anchorRef:p,text:c.get("button.copied")})},[s.text,c,l]),d=e(o=>{"Enter"!==o.key&&"Enter"!==o.code&&" "!==o.key&&"Space"!==o.code||o.stopPropagation()},[C]),m=e(o=>{"Enter"!==o.key&&"Enter"!==o.code&&" "!==o.key&&"Space"!==o.code||o.stopPropagation(),"Escape"!==o.key&&"Escape"!==o.code||(o.stopPropagation(),C())},[C]),y=e(()=>{l({anchorRef:p,text:c.get("button.copy")})},[p,c,l]);return o(n,{...s,variant:"iconOnly",buttonRef:p,ariaLabel:s.ariaLabel??c.get("button.copy"),onMouseEnter:y,onMouseLeave:C,onFocus:y,onBlur:C,onClick:u,onKeyPress:d,onKeyDown:m},o("svg",{className:"adyen-checkout__button--iconOnly__icon",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},o("path",{d:"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z"})))},p=t=>o(s,null,o(c,t));export{p as CopyIconButton};
|
|
2
|
+
//# sourceMappingURL=CopyIconButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyIconButton.js","sources":["../../../../../src/components/internal/Button/CopyIconButton.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useRef } from 'preact/hooks';\nimport Button from './Button';\nimport { ButtonProps } from './types';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport copyToClipboard from '../../../utils/clipboard';\nimport { SingletonTooltipProvider, useTooltip } from '../Tooltip/SingletonTooltipProvider';\nimport './CopyIconButton.scss';\n\nexport interface CopyIconButtonProps extends ButtonProps {\n /**\n * String that will get copied to the clipboard\n */\n text: string;\n}\n\nconst CopyIconButton = (props: CopyIconButtonProps) => {\n const { i18n } = useCoreContext();\n const anchorRef = useRef<HTMLButtonElement>(null);\n const { showTooltip, hideTooltip } = useTooltip();\n\n const onClick = useCallback(() => {\n void copyToClipboard(props.text);\n showTooltip({ anchorRef, text: i18n.get('button.copied') });\n }, [props.text, i18n, showTooltip]);\n\n // todo: remove it: onKeyPress is deprecated\n const onKeyPress = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n },\n [hideTooltip]\n );\n\n // We need it because onKeyPress does not trigger for Esc key\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.code === 'Enter' || event.key === ' ' || event.code === 'Space') {\n event.stopPropagation();\n }\n\n if (event.key === 'Escape' || event.code === 'Escape') {\n event.stopPropagation();\n hideTooltip();\n }\n },\n [hideTooltip]\n );\n\n const handleShowTooltip = useCallback(() => {\n showTooltip({ anchorRef, text: i18n.get('button.copy') });\n }, [anchorRef, i18n, showTooltip]);\n\n return (\n <Button\n {...props}\n variant=\"iconOnly\"\n buttonRef={anchorRef}\n ariaLabel={props.ariaLabel ?? i18n.get('button.copy')}\n onMouseEnter={handleShowTooltip}\n onMouseLeave={hideTooltip}\n onFocus={handleShowTooltip}\n onBlur={hideTooltip}\n onClick={onClick}\n // It's ok to have both, browsers will fire only one click event for enter/space key pressed.\n onKeyPress={onKeyPress}\n onKeyDown={onKeyDown}\n >\n <svg\n className=\"adyen-checkout__button--iconOnly__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path d=\"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z\" />\n </svg>\n </Button>\n );\n};\n\nconst withTooltip = (props: CopyIconButtonProps) => {\n return (\n <SingletonTooltipProvider>\n <CopyIconButton {...props} />\n </SingletonTooltipProvider>\n );\n};\n\nexport { withTooltip as CopyIconButton };\n"],"names":["CopyIconButton","props","i18n","useCoreContext","anchorRef","useRef","showTooltip","hideTooltip","useTooltip","onClick","useCallback","copyToClipboard","text","get","onKeyPress","event","key","code","stopPropagation","onKeyDown","handleShowTooltip","h","Button","variant","buttonRef","ariaLabel","onMouseEnter","onMouseLeave","onFocus","onBlur","svg","className","xmlns","width","height","viewBox","fill","path","d","withTooltip","SingletonTooltipProvider"],"mappings":"iaAgBA,MAAMA,EAAkBC,IACpB,MAAMC,KAAEA,GAASC,IACXC,EAAYC,EAA0B,OACtCC,YAAEA,EAAWC,YAAEA,GAAgBC,IAE/BC,EAAUC,EAAY,KACnBC,EAAgBV,EAAMW,MAC3BN,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,oBACzC,CAACZ,EAAMW,KAAMV,EAAMI,IAGhBQ,EAAaJ,EACdK,IACqB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG,mBAGd,CAACX,IAICY,EAAYT,EACbK,IACqB,UAAdA,EAAMC,KAAkC,UAAfD,EAAME,MAAkC,MAAdF,EAAMC,KAA8B,UAAfD,EAAME,MAC9EF,EAAMG,kBAGQ,WAAdH,EAAMC,KAAmC,WAAfD,EAAME,OAChCF,EAAMG,kBACNX,MAGR,CAACA,IAGCa,EAAoBV,EAAY,KAClCJ,EAAY,CAAEF,YAAWQ,KAAMV,EAAKW,IAAI,kBACzC,CAACT,EAAWF,EAAMI,IAErB,OACIe,EAACC,EAAAA,IACOrB,EACJsB,QAAQ,WACRC,UAAWpB,EACXqB,UAAWxB,EAAMwB,WAAavB,EAAKW,IAAI,eACvCa,aAAcN,EACdO,aAAcpB,EACdqB,QAASR,EACTS,OAAQtB,EACRE,QAASA,EAETK,WAAYA,EACZK,UAAWA,GAEXE,EAACS,MAAAA,CACGC,UAAU,yCACVC,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,QAELf,EAACgB,OAAAA,CAAKC,EAAE,snBAMlBC,EAAetC,GAEboB,EAACmB,EAAAA,KACGnB,EAACrB,EAAmBC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../external/preact/dist/preact.js";function a({tableFields:a}){return e("dl",{className:"adyen-checkout__voucher-result__details adyen-checkout__details-table"},a.filter(e=>!!e).filter(({label:e,value:
|
|
1
|
+
import{createElement as e}from"../../../external/preact/dist/preact.js";import{CopyIconButton as t}from"../Button/CopyIconButton.js";function a({tableFields:a,shouldShowCopyButton:l}){return e("dl",{className:"adyen-checkout__voucher-result__details adyen-checkout__details-table"},a.filter(e=>!!e).filter(({label:e,value:t})=>!!e&&!!t).map(({label:a,value:_})=>e("div",{key:`${a+_}`,className:"adyen-checkout__voucher-result__details__item adyen-checkout__details-table__item"},e("dt",{className:"adyen-checkout__voucher-result__details__label adyen-checkout__details-table__label"},a),e("dd",{className:"adyen-checkout__voucher-result__details__value adyen-checkout__details-table__value"},_,l&&e(t,{text:_})))))}export{a as default};
|
|
2
2
|
//# sourceMappingURL=DetailsTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailsTable.js","sources":["../../../../../src/components/internal/DetailsTable/DetailsTable.tsx"],"sourcesContent":["import { h } from 'preact';\nimport './DetailsTable.scss';\n\nexport interface DetailsTableData\n extends Array<{\n label: string;\n value: string;\n }> {}\n\nexport interface DetailsTableProps {\n tableFields: DetailsTableData;\n}\n\nexport default function DetailsTable({ tableFields }: DetailsTableProps) {\n // For context, this markup uses 2 classes for backwards compatibility\n // This was originally part of the voucher component and ported out\n // We can remove the voucher class names at point\n return (\n <dl className=\"adyen-checkout__voucher-result__details adyen-checkout__details-table\">\n {tableFields\n // first remove empty values\n .filter(item => !!item)\n // or objects without label and value\n .filter(({ label, value }) => !!label && !!value)\n .map(({ label, value }) => (\n <div key={`${label + value}`} className=\"adyen-checkout__voucher-result__details__item adyen-checkout__details-table__item\">\n <dt className=\"adyen-checkout__voucher-result__details__label adyen-checkout__details-table__label\">{label}</dt>\n <dd className=\"adyen-checkout__voucher-result__details__value adyen-checkout__details-table__value\"
|
|
1
|
+
{"version":3,"file":"DetailsTable.js","sources":["../../../../../src/components/internal/DetailsTable/DetailsTable.tsx"],"sourcesContent":["import { h } from 'preact';\nimport './DetailsTable.scss';\nimport { CopyIconButton } from '../Button/CopyIconButton';\n\nexport interface DetailsTableData\n extends Array<{\n label: string;\n value: string;\n }> {}\n\nexport interface DetailsTableProps {\n tableFields: DetailsTableData;\n shouldShowCopyButton?: boolean;\n}\n\nexport default function DetailsTable({ tableFields, shouldShowCopyButton }: Readonly<DetailsTableProps>) {\n // For context, this markup uses 2 classes for backwards compatibility\n // This was originally part of the voucher component and ported out\n // We can remove the voucher class names at point\n return (\n <dl className=\"adyen-checkout__voucher-result__details adyen-checkout__details-table\">\n {tableFields\n // first remove empty values\n .filter(item => !!item)\n // or objects without label and value\n .filter(({ label, value }) => !!label && !!value)\n .map(({ label, value }) => (\n <div key={`${label + value}`} className=\"adyen-checkout__voucher-result__details__item adyen-checkout__details-table__item\">\n <dt className=\"adyen-checkout__voucher-result__details__label adyen-checkout__details-table__label\">{label}</dt>\n <dd className=\"adyen-checkout__voucher-result__details__value adyen-checkout__details-table__value\">\n {value}\n {shouldShowCopyButton && <CopyIconButton text={value}></CopyIconButton>}\n </dd>\n </div>\n ))}\n </dl>\n );\n}\n"],"names":["DetailsTable","tableFields","shouldShowCopyButton","h","dl","className","filter","item","label","value","map","div","key","dt","dd","CopyIconButton","text"],"mappings":"qIAee,SAASA,GAAaC,YAAEA,EAAWC,qBAAEA,IAIhD,OACIC,EAACC,KAAAA,CAAGC,UAAU,yEACTJ,EAEIK,OAAOC,KAAUA,GAEjBD,OAAO,EAAGE,QAAOC,aAAcD,KAAWC,GAC1CC,IAAI,EAAGF,QAAOC,WACXN,EAACQ,MAAAA,CAAIC,IAAK,GAAGJ,EAAQC,IAASJ,UAAU,qFACpCF,EAACU,KAAAA,CAAGR,UAAU,uFAAuFG,GACrGL,EAACW,KAAAA,CAAGT,UAAU,uFACTI,EACAP,GAAwBC,EAACY,EAAAA,CAAeC,KAAMP,OAM3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroupExtended.js","sources":["../../../../../../src/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport { RadioGroupExtendedProps } from './types';\nimport { getUniqueId } from '../../../../utils/idGenerator';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport Icon from '../../Icon';\nimport { PREFIX } from '../../Icon/constants';\nimport './RadioGroupExtended.scss';\nimport '../RadioGroup/RadioGroup.scss';\n\nexport default function RadioGroupExtended(props: RadioGroupExtendedProps) {\n const { items, name, onChange, value, isInvalid, uniqueId, ariaLabel, showRadioIcon = false, showSelectedTick = false, style = 'button' } = props;\n\n const { i18n } = useCoreContext();\n const uniqueIdBase = uniqueId?.replace(/[0-9]/g, '').substring(0, uniqueId.lastIndexOf('-'));\n\n let invalidClassName = '';\n if (isInvalid) {\n invalidClassName = showRadioIcon ? 'adyen-checkout__radio_group__label--invalid' : 'adyen-checkout__radio_group__label--no-radio--invalid';\n }\n\n const fieldClassnames = cx([\n 'adyen-checkout__label__text',\n showRadioIcon ? 'adyen-checkout__radio_group__label' : 'adyen-checkout__radio_group__label--no-radio',\n props.className,\n invalidClassName\n ]);\n\n return (\n <div\n className={cx(['adyen-checkout__radio_group', `adyen-checkout__radio_group--${style}`])}\n role={'radiogroup'}\n {...(ariaLabel && { ['aria-label']: ariaLabel })}\n >\n {items.map(item => {\n const uniqueId = getUniqueId(uniqueIdBase);\n\n return (\n <div key={item.id} className=\"adyen-checkout__radio_group__input-wrapper adyen-checkout__field--50\">\n <input\n id={uniqueId}\n type={'radio'}\n checked={value === item.id}\n className=\"adyen-checkout__radio_group__input\"\n name={name}\n onChange={onChange}\n value={item.id}\n />\n
|
|
1
|
+
{"version":3,"file":"RadioGroupExtended.js","sources":["../../../../../../src/components/internal/FormFields/RadioGroupExtended/RadioGroupExtended.tsx"],"sourcesContent":["import { h } from 'preact';\nimport cx from 'classnames';\nimport { RadioGroupExtendedProps } from './types';\nimport { getUniqueId } from '../../../../utils/idGenerator';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport Icon from '../../Icon';\nimport { PREFIX } from '../../Icon/constants';\nimport './RadioGroupExtended.scss';\nimport '../RadioGroup/RadioGroup.scss';\n\nexport default function RadioGroupExtended(props: RadioGroupExtendedProps) {\n const { items, name, onChange, value, isInvalid, uniqueId, ariaLabel, showRadioIcon = false, showSelectedTick = false, style = 'button' } = props;\n\n const { i18n } = useCoreContext();\n const uniqueIdBase = uniqueId?.replace(/[0-9]/g, '').substring(0, uniqueId.lastIndexOf('-'));\n\n let invalidClassName = '';\n if (isInvalid) {\n invalidClassName = showRadioIcon ? 'adyen-checkout__radio_group__label--invalid' : 'adyen-checkout__radio_group__label--no-radio--invalid';\n }\n\n const fieldClassnames = cx([\n 'adyen-checkout__label__text',\n showRadioIcon ? 'adyen-checkout__radio_group__label' : 'adyen-checkout__radio_group__label--no-radio',\n props.className,\n invalidClassName\n ]);\n\n return (\n <div\n className={cx(['adyen-checkout__radio_group', `adyen-checkout__radio_group--${style}`])}\n role={'radiogroup'}\n {...(ariaLabel && { ['aria-label']: ariaLabel })}\n >\n {items.map(item => {\n const uniqueId = getUniqueId(uniqueIdBase);\n\n return (\n <div key={item.id} className=\"adyen-checkout__radio_group__input-wrapper adyen-checkout__field--50\">\n <input\n id={uniqueId}\n type={'radio'}\n checked={value === item.id}\n className=\"adyen-checkout__radio_group__input\"\n name={name}\n onChange={onChange}\n value={item.id}\n />\n\n <label className={fieldClassnames} htmlFor={uniqueId}>\n <div className={'adyen-checkout__radio_group-extended__label-wrapper'}>\n <RadioButtonIcon\n key={item.id}\n imageURL={item.imageURL}\n altName={item.altName}\n dataValue={item.id}\n showRadioIcon={showRadioIcon}\n />\n <span className={'adyen-checkout__radio_group-extended__label'}>{i18n.get(item.name)}</span>\n {showSelectedTick && (\n <span\n className={cx({\n 'adyen-checkout-input__inline-validation': true,\n 'adyen-checkout-input__inline-validation--valid': value === item.id\n })}\n >\n <Icon type={`${PREFIX}checkmark`} alt={i18n?.get('field.valid')} />\n </span>\n )}\n </div>\n </label>\n </div>\n );\n })}\n </div>\n );\n}\n\nRadioGroupExtended.defaultProps = {\n onChange: () => {},\n items: []\n};\n"],"names":["RadioGroupExtended","props","items","name","onChange","value","isInvalid","uniqueId","ariaLabel","showRadioIcon","showSelectedTick","style","i18n","useCoreContext","uniqueIdBase","replace","substring","lastIndexOf","invalidClassName","fieldClassnames","cx","className","h","div","role","map","item","getUniqueId","key","id","input","type","checked","label","htmlFor","RadioButtonIcon","imageURL","altName","dataValue","span","get","Icon","PREFIX","alt","defaultProps"],"mappings":"wXAWe,SAASA,EAAmBC,GACvC,MAAMC,MAAEA,EAAKC,KAAEA,EAAIC,SAAEA,EAAQC,MAAEA,EAAKC,UAAEA,EAASC,SAAEA,EAAQC,UAAEA,EAASC,cAAEA,GAAgB,EAAKC,iBAAEA,GAAmB,EAAKC,MAAEA,EAAQ,UAAaV,GAEtIW,KAAEA,GAASC,IACXC,EAAeP,GAAUQ,QAAQ,SAAU,IAAIC,UAAU,EAAGT,EAASU,YAAY,MAEvF,IAAIC,EAAmB,GACnBZ,IACAY,EAAmBT,EAAgB,8CAAgD,yDAGvF,MAAMU,EAAkBC,EAAG,CACvB,8BACAX,EAAgB,qCAAuC,+CACvDR,EAAMoB,UACNH,IAGJ,OACII,EAACC,MAAAA,CACGF,UAAWD,EAAG,CAAC,8BAA+B,gCAAgCT,MAC9Ea,KAAM,gBACDhB,GAAa,CAAE,aAAgBA,IAEnCN,EAAMuB,IAAIC,IACP,MAAMnB,EAAWoB,EAAYb,GAE7B,OACIQ,EAACC,MAAAA,CAAIK,IAAKF,EAAKG,GAAIR,UAAU,wEACzBC,EAACQ,QAAAA,CACGD,GAAItB,EACJwB,KAAM,QACNC,QAAS3B,IAAUqB,EAAKG,GACxBR,UAAU,qCACVlB,KAAMA,EACNC,SAAUA,EACVC,MAAOqB,EAAKG,KAGhBP,EAACW,QAAAA,CAAMZ,UAAWF,EAAiBe,QAAS3B,GACxCe,EAACC,MAAAA,CAAIF,UAAW,uDACZC,EAACa,EAAAA,CACGP,IAAKF,EAAKG,GACVO,SAAUV,EAAKU,SACfC,QAASX,EAAKW,QACdC,UAAWZ,EAAKG,GAChBpB,cAAeA,IAEnBa,EAACiB,OAAAA,CAAKlB,UAAW,+CAAgDT,EAAK4B,IAAId,EAAKvB,OAC9EO,GACGY,EAACiB,OAAAA,CACGlB,UAAWD,EAAG,CACV,2CAA2C,EAC3C,iDAAkDf,IAAUqB,EAAKG,MAGrEP,EAACmB,EAAAA,CAAKV,KAAM,GAAGW,aAAmBC,IAAK/B,GAAM4B,IAAI,uBAUzF,CAEAxC,EAAmB4C,aAAe,CAC9BxC,SAAU,OACVF,MAAO"}
|