@adyen/adyen-web 6.47.0-alpha.eada81f → 6.47.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 +20 -22
- 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 +122 -581
- package/dist/es/adyen.css +20 -22
- package/dist/es/adyen.css.map +1 -1
- package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
- package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayButton.js +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayComponent.js +1 -1
- package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es/components/AmazonPay/components/OrderButton.js +1 -1
- package/dist/es/components/AmazonPay/components/OrderButton.js.map +1 -1
- package/dist/es/components/AmazonPay/components/SignOutButton.js +1 -1
- package/dist/es/components/AmazonPay/components/SignOutButton.js.map +1 -1
- package/dist/es/components/AmazonPay/utils.js +1 -1
- package/dist/es/components/AmazonPay/utils.js.map +1 -1
- package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
- package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
- package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
- package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es/components/CashAppPay/components/CashAppComponent.js +1 -1
- package/dist/es/components/CashAppPay/components/CashAppComponent.js.map +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js +1 -1
- package/dist/es/components/CashAppPay/services/CashAppService.js.map +1 -1
- package/dist/es/components/CashAppPay/services/types.js.map +1 -1
- package/dist/es/components/CustomCard/CustomCard.js +1 -1
- package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
- package/dist/es/components/Donation/components/DonationComponent.js.map +1 -1
- package/dist/es/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
- package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.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/Giftcard/Giftcard.js +1 -1
- package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
- package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
- package/dist/es/components/Giftcard/types.js +2 -0
- package/dist/es/components/Giftcard/types.js.map +1 -0
- package/dist/es/components/Giftcard/utils.js +2 -0
- package/dist/es/components/Giftcard/utils.js.map +1 -0
- package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
- package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
- package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
- package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
- package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
- package/dist/es/components/PayPal/Paypal.js +1 -1
- package/dist/es/components/PayPal/Paypal.js.map +1 -1
- package/dist/es/components/PayPal/components/PaypalButtons.js +1 -1
- package/dist/es/components/PayPal/components/PaypalButtons.js.map +1 -1
- package/dist/es/components/PayPal/components/PaypalComponent.js +1 -1
- package/dist/es/components/PayPal/components/PaypalComponent.js.map +1 -1
- package/dist/es/components/PayPal/config.js +1 -1
- package/dist/es/components/PayPal/config.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-locale.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-locale.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-settings.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-settings.js.map +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-url.js +1 -1
- package/dist/es/components/PayPal/utils/get-paypal-url.js.map +1 -1
- package/dist/es/components/PayPalFastlane/Fastlane.js +1 -1
- package/dist/es/components/PayPalFastlane/Fastlane.js.map +1 -1
- package/dist/es/components/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
- package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
- package/dist/es/components/ThreeDS2/components/utils.js +1 -1
- package/dist/es/components/ThreeDS2/components/utils.js.map +1 -1
- package/dist/es/components/components-name-map.js +1 -1
- package/dist/es/components/components-name-map.js.map +1 -1
- package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
- package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
- package/dist/es/components/index.js +1 -1
- package/dist/es/components/internal/Address/Address.js +1 -1
- package/dist/es/components/internal/Address/Address.js.map +1 -1
- package/dist/es/components/internal/Address/Specifications.js +1 -1
- package/dist/es/components/internal/Address/Specifications.js.map +1 -1
- package/dist/es/components/internal/Address/components/AddressSearch.js +1 -1
- package/dist/es/components/internal/Address/components/AddressSearch.js.map +1 -1
- package/dist/es/components/internal/Address/components/CountryField.js +1 -1
- package/dist/es/components/internal/Address/components/CountryField.js.map +1 -1
- package/dist/es/components/internal/Address/components/FieldContainer.js +1 -1
- package/dist/es/components/internal/Address/components/FieldContainer.js.map +1 -1
- package/dist/es/components/internal/Address/components/StateField.js +1 -1
- package/dist/es/components/internal/Address/components/StateField.js.map +1 -1
- package/dist/es/components/internal/Address/constants.js.map +1 -1
- package/dist/es/components/internal/Address/utils.js.map +1 -1
- package/dist/es/components/internal/Address/validate.formats.js +1 -1
- package/dist/es/components/internal/Address/validate.formats.js.map +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
- package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
- package/dist/es/components/internal/CompanyDetails/CompanyDetails.js +1 -1
- package/dist/es/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
- package/dist/es/components/internal/CompanyDetails/validate.js +1 -1
- package/dist/es/components/internal/CompanyDetails/validate.js.map +1 -1
- package/dist/es/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
- package/dist/es/components/internal/FormFields/Field/Field.js +1 -1
- package/dist/es/components/internal/FormFields/Field/Field.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputBase.js +1 -1
- package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputDate/InputDate.js +1 -1
- package/dist/es/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
- package/dist/es/components/internal/FormFields/InputDate/utils.js.map +1 -1
- package/dist/es/components/internal/FormFields/Select/Select.js +1 -1
- package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
- package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
- package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
- package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
- package/dist/es/components/internal/IbanInput/specifications.js.map +1 -1
- package/dist/es/components/internal/IbanInput/utils.js +1 -1
- package/dist/es/components/internal/IbanInput/utils.js.map +1 -1
- package/dist/es/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
- package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
- package/dist/es/components/internal/PersonalDetails/validate.js +1 -1
- package/dist/es/components/internal/PersonalDetails/validate.js.map +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputFields.js +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputForm.js +1 -1
- package/dist/es/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
- package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
- package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es/components/internal/UIElement/utils.js.map +1 -1
- package/dist/es/components/tx-variants.js +1 -1
- package/dist/es/components/tx-variants.js.map +1 -1
- package/dist/es/core/Services/http.js.map +1 -1
- package/dist/es/core/config.js +1 -1
- package/dist/es/core/config.js.map +1 -1
- package/dist/es/core/core.js +1 -1
- package/dist/es/core/core.js.map +1 -1
- package/dist/es/core/utils.js +1 -1
- package/dist/es/core/utils.js.map +1 -1
- package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
- package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
- package/dist/es/index.d.ts +122 -581
- package/dist/es/index.js +1 -1
- package/dist/es/language/Language.js +1 -1
- package/dist/es/language/Language.js.map +1 -1
- package/dist/es/language/utils.js +1 -1
- package/dist/es/language/utils.js.map +1 -1
- package/dist/es/utils/Script.js.map +1 -1
- package/dist/es/utils/Validator/ValidationRuleResult.js.map +1 -1
- package/dist/es/utils/Validator/Validator.js +1 -1
- package/dist/es/utils/Validator/Validator.js.map +1 -1
- package/dist/es/utils/Validator/defaultRules.js +1 -1
- package/dist/es/utils/Validator/defaultRules.js.map +1 -1
- package/dist/es/utils/amount-util.js +1 -1
- package/dist/es/utils/amount-util.js.map +1 -1
- package/dist/es/utils/browserInfo.js.map +1 -1
- package/dist/es/utils/createSdkData.js +1 -1
- package/dist/es/utils/createSdkData.js.map +1 -1
- package/dist/es/utils/get-issuer-image.js +1 -1
- package/dist/es/utils/get-issuer-image.js.map +1 -1
- package/dist/es/utils/get-process-message-handler.js.map +1 -1
- package/dist/es/utils/getConsentUrl.js +1 -1
- package/dist/es/utils/getConsentUrl.js.map +1 -1
- package/dist/es/utils/getErrorMessage.js.map +1 -1
- package/dist/es/utils/getOrigin.js.map +1 -1
- package/dist/es/utils/isValidURL.js +1 -1
- package/dist/es/utils/isValidURL.js.map +1 -1
- package/dist/es/utils/promiseTimeout.js.map +1 -1
- package/dist/es/utils/useAutoFocus.js.map +1 -1
- package/dist/es/utils/validator-utils.js +1 -1
- package/dist/es/utils/validator-utils.js.map +1 -1
- package/dist/es-legacy/adyen.css +20 -22
- package/dist/es-legacy/adyen.css.map +1 -1
- package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
- package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/OrderButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/OrderButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js +1 -1
- package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js.map +1 -1
- package/dist/es-legacy/components/AmazonPay/utils.js +1 -1
- package/dist/es-legacy/components/AmazonPay/utils.js.map +1 -1
- package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
- package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
- package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js +1 -1
- package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/services/CashAppService.js +1 -1
- package/dist/es-legacy/components/CashAppPay/services/CashAppService.js.map +1 -1
- package/dist/es-legacy/components/CashAppPay/services/types.js.map +1 -1
- package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
- package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
- package/dist/es-legacy/components/Donation/components/DonationComponent.js.map +1 -1
- package/dist/es-legacy/components/Donation/components/FixedAmounts.js.map +1 -1
- package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
- package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
- package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.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/Giftcard/Giftcard.js +1 -1
- package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
- package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
- package/dist/es-legacy/components/Giftcard/types.js +2 -0
- package/dist/es-legacy/components/Giftcard/types.js.map +1 -0
- package/dist/es-legacy/components/Giftcard/utils.js +2 -0
- package/dist/es-legacy/components/Giftcard/utils.js.map +1 -0
- package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
- package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
- package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
- package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
- package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
- package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
- package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalButtons.js +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalButtons.js.map +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalComponent.js +1 -1
- package/dist/es-legacy/components/PayPal/components/PaypalComponent.js.map +1 -1
- package/dist/es-legacy/components/PayPal/config.js +1 -1
- package/dist/es-legacy/components/PayPal/config.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js.map +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js +1 -1
- package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js.map +1 -1
- package/dist/es-legacy/components/PayPalFastlane/Fastlane.js +1 -1
- package/dist/es-legacy/components/PayPalFastlane/Fastlane.js.map +1 -1
- package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js +1 -1
- package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/utils.js +1 -1
- package/dist/es-legacy/components/ThreeDS2/components/utils.js.map +1 -1
- package/dist/es-legacy/components/components-name-map.js +1 -1
- package/dist/es-legacy/components/components-name-map.js.map +1 -1
- package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
- package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
- package/dist/es-legacy/components/index.js +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js +1 -1
- package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/Specifications.js +1 -1
- package/dist/es-legacy/components/internal/Address/Specifications.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/AddressSearch.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/AddressSearch.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/CountryField.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/CountryField.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/FieldContainer.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/FieldContainer.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/components/StateField.js +1 -1
- package/dist/es-legacy/components/internal/Address/components/StateField.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/constants.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/Address/validate.formats.js +1 -1
- package/dist/es-legacy/components/internal/Address/validate.formats.js.map +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
- package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
- package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/validate.js +1 -1
- package/dist/es-legacy/components/internal/CompanyDetails/validate.js.map +1 -1
- package/dist/es-legacy/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Field/Field.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Field/Field.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/InputDate/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/Select.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
- package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/IbanInput.js +1 -1
- package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/specifications.js.map +1 -1
- package/dist/es-legacy/components/internal/IbanInput/utils.js +1 -1
- package/dist/es-legacy/components/internal/IbanInput/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/PayButton/utils.js.map +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/validate.js +1 -1
- package/dist/es-legacy/components/internal/PersonalDetails/validate.js.map +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
- package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
- package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
- package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
- package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
- package/dist/es-legacy/components/internal/UIElement/utils.js.map +1 -1
- package/dist/es-legacy/components/tx-variants.js +1 -1
- package/dist/es-legacy/components/tx-variants.js.map +1 -1
- package/dist/es-legacy/core/Services/http.js.map +1 -1
- package/dist/es-legacy/core/config.js +1 -1
- package/dist/es-legacy/core/config.js.map +1 -1
- package/dist/es-legacy/core/core.js +1 -1
- package/dist/es-legacy/core/core.js.map +1 -1
- package/dist/es-legacy/core/utils.js +1 -1
- package/dist/es-legacy/core/utils.js.map +1 -1
- package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
- package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
- package/dist/es-legacy/index.js +1 -1
- package/dist/es-legacy/language/Language.js +1 -1
- package/dist/es-legacy/language/Language.js.map +1 -1
- package/dist/es-legacy/language/utils.js +1 -1
- package/dist/es-legacy/language/utils.js.map +1 -1
- package/dist/es-legacy/utils/Script.js.map +1 -1
- package/dist/es-legacy/utils/Validator/ValidationRuleResult.js.map +1 -1
- package/dist/es-legacy/utils/Validator/Validator.js +1 -1
- package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
- package/dist/es-legacy/utils/Validator/defaultRules.js +1 -1
- package/dist/es-legacy/utils/Validator/defaultRules.js.map +1 -1
- package/dist/es-legacy/utils/amount-util.js +1 -1
- package/dist/es-legacy/utils/amount-util.js.map +1 -1
- package/dist/es-legacy/utils/browserInfo.js.map +1 -1
- package/dist/es-legacy/utils/createSdkData.js +1 -1
- package/dist/es-legacy/utils/createSdkData.js.map +1 -1
- package/dist/es-legacy/utils/get-issuer-image.js +1 -1
- package/dist/es-legacy/utils/get-issuer-image.js.map +1 -1
- package/dist/es-legacy/utils/get-process-message-handler.js.map +1 -1
- package/dist/es-legacy/utils/getConsentUrl.js +1 -1
- package/dist/es-legacy/utils/getConsentUrl.js.map +1 -1
- package/dist/es-legacy/utils/getErrorMessage.js.map +1 -1
- package/dist/es-legacy/utils/getOrigin.js.map +1 -1
- package/dist/es-legacy/utils/isValidURL.js +1 -1
- package/dist/es-legacy/utils/isValidURL.js.map +1 -1
- package/dist/es-legacy/utils/promiseTimeout.js.map +1 -1
- package/dist/es-legacy/utils/useAutoFocus.js.map +1 -1
- package/dist/es-legacy/utils/validator-utils.js +1 -1
- package/dist/es-legacy/utils/validator-utils.js.map +1 -1
- package/package.json +25 -24
- package/styles/adyen.css +20 -22
- package/dist/es/components/PayPal/PayPalCredit.js +0 -2
- package/dist/es/components/PayPal/PayPalCredit.js.map +0 -1
- package/dist/es/components/PayPal/PayPalPaylater.js +0 -2
- package/dist/es/components/PayPal/PayPalPaylater.js.map +0 -1
- package/dist/es/components/PayPal/Venmo.js +0 -2
- package/dist/es/components/PayPal/Venmo.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalComponentV6.js +0 -2
- package/dist/es/components/PayPal/components/PayPalComponentV6.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
- package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalCreditButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalCreditButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js +0 -2
- package/dist/es/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalMessaging.js +0 -2
- package/dist/es/components/PayPal/components/PayPalMessaging.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
- package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
- package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
- package/dist/es/components/PayPal/components/PayPalSpinner.js +0 -2
- package/dist/es/components/PayPal/components/PayPalSpinner.js.map +0 -1
- package/dist/es/components/PayPal/components/VenmoButton.js +0 -2
- package/dist/es/components/PayPal/components/VenmoButton.js.map +0 -1
- package/dist/es/components/PayPal/components/VenmoComponent.js +0 -2
- package/dist/es/components/PayPal/components/VenmoComponent.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js +0 -2
- package/dist/es/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js +0 -2
- package/dist/es/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
- package/dist/es/components/PayPal/models/BasePayPalElement.js +0 -2
- package/dist/es/components/PayPal/models/BasePayPalElement.js.map +0 -1
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js +0 -2
- package/dist/es/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
- package/dist/es/components/PayPal/services/PayPalService.js +0 -2
- package/dist/es/components/PayPal/services/PayPalService.js.map +0 -1
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js +0 -2
- package/dist/es/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
- package/dist/es/components/PayPal/services/request-paypal-order-details.js +0 -2
- package/dist/es/components/PayPal/services/request-paypal-order-details.js.map +0 -1
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
- package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
- package/dist/es/utils/is-live-environment.js +0 -2
- package/dist/es/utils/is-live-environment.js.map +0 -1
- package/dist/es-legacy/components/PayPal/PayPalCredit.js +0 -2
- package/dist/es-legacy/components/PayPal/PayPalCredit.js.map +0 -1
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js +0 -2
- package/dist/es-legacy/components/PayPal/PayPalPaylater.js.map +0 -1
- package/dist/es-legacy/components/PayPal/Venmo.js +0 -2
- package/dist/es-legacy/components/PayPal/Venmo.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js +0 -2
- package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js +0 -2
- package/dist/es-legacy/components/PayPal/components/VenmoButton.js.map +0 -1
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js +0 -2
- package/dist/es-legacy/components/PayPal/components/VenmoComponent.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js +0 -2
- package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js +0 -2
- package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js +0 -2
- package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/PayPalService.js +0 -2
- package/dist/es-legacy/components/PayPal/services/PayPalService.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js +0 -2
- package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js +0 -2
- package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js.map +0 -1
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
- package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
- package/dist/es-legacy/utils/is-live-environment.js +0 -2
- package/dist/es-legacy/utils/is-live-environment.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputBase.js","sources":["../../../../../src/components/internal/FormFields/InputBase.tsx"],"sourcesContent":["import {\n h,\n RefCallback,\n InputHTMLAttributes,\n GenericEventHandler,\n TargetedInputEvent,\n TargetedKeyboardEvent,\n TargetedFocusEvent,\n TargetedEvent\n} from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport classNames from 'classnames';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../core/Errors/constants';\nimport { trimValWithOneSpace } from '../../../utils/validator-utils';\nimport Language from '../../../language';\nimport { AutocompleteValue } from './types';\nimport './FormFields.scss';\n\nexport interface InputBaseProps extends InputHTMLAttributes {\n classNameModifiers?: string[];\n isInvalid?: boolean;\n isValid?: boolean;\n
|
|
1
|
+
{"version":3,"file":"InputBase.js","sources":["../../../../../src/components/internal/FormFields/InputBase.tsx"],"sourcesContent":["import {\n h,\n HTMLInputTypeAttribute,\n RefCallback,\n InputHTMLAttributes,\n GenericEventHandler,\n TargetedInputEvent,\n TargetedKeyboardEvent,\n TargetedFocusEvent,\n TargetedEvent\n} from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport classNames from 'classnames';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../core/Errors/constants';\nimport { trimValWithOneSpace } from '../../../utils/validator-utils';\nimport Language from '../../../language';\nimport { AutocompleteValue } from './types';\nimport './FormFields.scss';\n\nexport interface InputBaseProps extends InputHTMLAttributes {\n classNameModifiers?: string[];\n isInvalid?: boolean;\n isValid?: boolean;\n uniqueId?: string;\n className?: string;\n type?: HTMLInputTypeAttribute; // We force the type here because InputHTMLAttributes allows any string\n placeholder?: string;\n setRef?: RefCallback<HTMLInputElement>;\n trimOnBlur?: boolean;\n i18n?: Language;\n label?: string;\n onBlurHandler?: GenericEventHandler<HTMLInputElement>;\n onFocusHandler?: GenericEventHandler<HTMLInputElement>;\n addContextualElement?: boolean;\n /**\n * WCAG 2.2 autocomplete token for browser autofill.\n * Pass undefined to omit the attribute entirely.\n * @see https://www.w3.org/TR/WCAG22/#input-purposes\n */\n autocomplete: AutocompleteValue;\n}\n\nexport default function InputBase({ setRef, type = 'text', classNameModifiers = [], ...props }: Readonly<InputBaseProps>) {\n const { autoCorrect, isInvalid, isValid, readonly, spellcheck, uniqueId, disabled } = props;\n const className = props.className;\n\n /**\n * To avoid confusion with misplaced/misdirected onChange handlers - InputBase only accepts onInput, onBlur & onFocus handlers.\n * The first 2 being the means by which we expect useForm--handleChangeFor validation functionality to be applied.\n */\n if (Object.prototype.hasOwnProperty.call(props, 'onChange')) {\n console.error('Error: Form fields that rely on InputBase may not have an onChange property');\n }\n\n const handleInput = useCallback(\n (event: TargetedInputEvent<HTMLInputElement>) => {\n props.onInput?.(event);\n },\n [props.onInput]\n );\n\n const handleKeyDown = useCallback(\n (event: TargetedKeyboardEvent<HTMLInputElement>) => {\n if (props?.onKeyDown) props.onKeyDown(event);\n },\n [props?.onKeyDown]\n );\n\n const handleBlur = useCallback(\n (event: TargetedFocusEvent<HTMLInputElement>) => {\n props?.onBlurHandler?.(event); // From Field component\n\n if (props.trimOnBlur) {\n const input = event.target as HTMLInputElement;\n input.value = trimValWithOneSpace(input.value);\n }\n\n props?.onBlur?.(event);\n },\n [props.onBlur, props.onBlurHandler]\n );\n\n const handleFocus = useCallback(\n (event: TargetedEvent<HTMLInputElement>) => {\n props?.onFocusHandler?.(event); // From Field component\n },\n [props.onFocusHandler]\n );\n\n const inputClassNames = classNames(\n 'adyen-checkout__input',\n [`adyen-checkout__input--${type}`],\n className,\n {\n 'adyen-checkout__input--invalid': isInvalid,\n 'adyen-checkout__input--valid': isValid\n },\n classNameModifiers.map(m => `adyen-checkout__input--${m}`)\n );\n\n // Don't spread classNameModifiers etc to input element (it ends up as an attribute on the element itself)\n const {\n uniqueId: uid,\n isInvalid: iiv,\n isValid: iv,\n addContextualElement: ace,\n 'aria-describedby': ariaDescribedByProp,\n autocomplete,\n ...restProps\n } = props;\n\n const internalDescribedBy = uniqueId ? `${uniqueId}${isInvalid ? ARIA_ERROR_SUFFIX : ARIA_CONTEXT_SUFFIX}` : undefined;\n const extraDescribedBy = typeof ariaDescribedByProp === 'string' && ariaDescribedByProp ? ariaDescribedByProp : undefined;\n const mergedAriaDescribedBy = [extraDescribedBy, internalDescribedBy].filter(Boolean).join(' ') || undefined;\n\n return (\n <input\n id={uniqueId}\n {...restProps}\n // eslint-disable-next-line react/no-unknown-property -- Preact uses lowercase 'autocomplete'\n autocomplete={autocomplete}\n aria-required={restProps.required}\n type={type}\n className={inputClassNames}\n readOnly={readonly}\n // eslint-disable-next-line react/no-unknown-property -- Preact uses lowercase 'spellcheck'\n spellcheck={spellcheck}\n autoCorrect={autoCorrect}\n aria-describedby={mergedAriaDescribedBy}\n aria-invalid={isInvalid}\n onInput={handleInput}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n ref={setRef}\n />\n );\n}\n"],"names":["InputBase","_0","setRef","type","classNameModifiers","props","autoCorrect","isInvalid","isValid","readonly","spellcheck","uniqueId","disabled","className","Object","prototype","hasOwnProperty","call","console","error","handleInput","useCallback","event","onInput","handleKeyDown","onKeyDown","handleBlur","onBlurHandler","trimOnBlur","input","target","value","trimValWithOneSpace","onBlur","handleFocus","onFocusHandler","inputClassNames","classNames","map","m","uid","iiv","iv","addContextualElement","ace","ariaDescribedByProp","autocomplete","restProps","mergedAriaDescribedBy","undefined","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","filter","Boolean","join","h","id","aria-required","required","readOnly","aria-describedby","aria-invalid","onFocus","ref"],"mappings":"k8CA0Ce,SAASA,EAAUC,OAAAC,OAAEA,EAAMC,KAAEA,EAAO,OAAMC,mBAAEA,EAAqB,IAAwCH,EAAjCI,EAAAA,EAAAA,EAAAA,wCACnF,MAAMC,YAAEA,EAAWC,UAAEA,EAASC,QAAEA,EAAOC,SAAEA,EAAQC,WAAEA,EAAUC,SAAEA,EAAQC,SAAEA,GAAaP,EAChFQ,EAAYR,EAAMQ,UAMpBC,OAAOC,UAAUC,eAAeC,KAAKZ,EAAO,aAC5Ca,QAAQC,MAAM,+EAGlB,MAAMC,EAAcC,EACfC,IACGjB,IAAAA,EAAa,QAAbA,EAAAA,EAAMkB,mBAANlB,GAAAA,OAAAA,EAAgBiB,IAEpB,CAACjB,EAAMkB,UAGLC,EAAgBH,EACjBC,KACOjB,aAAAA,EAAAA,EAAOoB,YAAWpB,EAAMoB,UAAUH,IAE1C,CAACjB,aAAAA,EAAAA,EAAOoB,YAGNC,EAAaL,EACdC,QACGjB,EAOAA,EALA,GAFAA,iBAAAA,EAAAA,EAAOsB,qBAAPtB,IAAAA,GAAAA,EAAAA,KAAAA,EAAuBiB,GAEnBjB,EAAMuB,WAAY,CAClB,MAAMC,EAAQP,EAAMQ,OACpBD,EAAME,MAAQC,EAAoBH,EAAME,MAC5C,CAEA1B,SAAa,QAAbA,EAAAA,EAAO4B,cAAP5B,IAAAA,GAAAA,OAAAA,EAAgBiB,IAEpB,CAACjB,EAAM4B,OAAQ5B,EAAMsB,gBAGnBO,EAAcb,EACfC,IACGjB,IAAAA,EAAAA,iBAAAA,EAAAA,EAAO8B,sBAAP9B,IAAAA,GAAAA,EAAAA,KAAAA,EAAwBiB,IAE5B,CAACjB,EAAM8B,iBAGLC,EAAkBC,EACpB,wBACA,CAAC,0BAA0BlC,KAC3BU,EACA,CACI,iCAAkCN,EAClC,+BAAgCC,GAEpCJ,EAAmBkC,IAAIC,GAAK,0BAA0BA,OAKtD5B,SAAU6B,EACVjC,UAAWkC,EACXjC,QAASkC,EACTC,qBAAsBC,EACtB,mBAAoBC,EAAmBC,aACvCA,GAEAzC,EADG0C,EAAAA,EACH1C,EAAAA,yDAHA,oCAOE2C,EAAwB,CAD0B,iBAAxBH,GAAoCA,EAAsBA,OAAsBI,EADpFtC,EAAW,GAAGA,IAAWJ,EAAY2C,EAAoBC,SAAwBF,GAEvCG,OAAOC,SAASC,KAAK,WAAQL,EAEnG,OACIM,EAAC1B,QAAAA,oUAAAA,CAAAA,CACG2B,GAAI7C,GACAoC,GAAAA,CAEJD,aAAcA,EACdW,gBAAeV,EAAUW,SACzBvD,KAAMA,EACNU,UAAWuB,EACXuB,SAAUlD,EAEVC,WAAYA,EACZJ,YAAaA,EACbsD,mBAAkBZ,EAClBa,eAActD,EACdgB,QAASH,EACTa,OAAQP,EACRoC,QAAS5B,EACTT,UAAWD,EACXZ,SAAUA,EACVmD,IAAK7D,IAGjB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useMemo as t}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../InputBase.js";import{checkDateInputSupport as n,formatDate as o}from"./utils.js";function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useMemo as t}from"../../../../external/preact/hooks/dist/hooks.js";import r from"../InputBase.js";import{checkDateInputSupport as n,formatDate as o}from"./utils.js";function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){c(e,t,r[t])})}return e}function p(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function u(c){const u=t(n,[]);return e(r,p(a({},c),u?{type:"date"}:{onInput:e=>{var t;const{value:r}=e.target;e.target.value=o(r),null===(t=c.onInput)||void 0===t||t.call(c,e)},maxLength:10}))}export{u as default};
|
|
2
2
|
//# sourceMappingURL=InputDate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputDate.js","sources":["../../../../../../src/components/internal/FormFields/InputDate/InputDate.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport InputBase, { InputBaseProps } from '../InputBase';\nimport { checkDateInputSupport, formatDate } from './utils';\n\ninterface InputDateProps extends InputBaseProps {\n onInput?: (e) => void;\n}\n\nexport default function InputDate(props: Readonly<InputDateProps>) {\n const isDateInputSupported = useMemo(checkDateInputSupport, []);\n\n const handleInput = e => {\n const { value } = e.target;\n e.target.value = formatDate(value);\n props.onInput(e);\n };\n\n if (isDateInputSupported) {\n return <InputBase {...props} type=\"date\" />;\n }\n\n return <InputBase {...props} onInput={handleInput} maxLength={10} />;\n}\n"],"names":["InputDate","props","isDateInputSupported","useMemo","checkDateInputSupport","h","InputBase","type","onInput","e","value","target","formatDate","maxLength"],"mappings":"giCASe,SAASA,EAAUC,GAC9B,MAAMC,EAAuBC,EAAQC,EAAuB,IAQ5D,OACWC,EAACC,EAAAA,EAAAA,EAAAA,CAAAA,EAAcL,GADtBC,EACsBD,CAAOM,KAAK,QAGhBN,CAAOO,QAVTC,
|
|
1
|
+
{"version":3,"file":"InputDate.js","sources":["../../../../../../src/components/internal/FormFields/InputDate/InputDate.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport InputBase, { InputBaseProps } from '../InputBase';\nimport { checkDateInputSupport, formatDate } from './utils';\n\ninterface InputDateProps extends InputBaseProps {\n onInput?: (e) => void;\n}\n\nexport default function InputDate(props: Readonly<InputDateProps>) {\n const isDateInputSupported = useMemo(checkDateInputSupport, []);\n\n const handleInput = e => {\n const { value } = e.target;\n e.target.value = formatDate(value);\n props.onInput?.(e);\n };\n\n if (isDateInputSupported) {\n return <InputBase {...props} type=\"date\" />;\n }\n\n return <InputBase {...props} onInput={handleInput} maxLength={10} />;\n}\n"],"names":["InputDate","props","isDateInputSupported","useMemo","checkDateInputSupport","h","InputBase","type","onInput","e","value","target","formatDate","maxLength"],"mappings":"giCASe,SAASA,EAAUC,GAC9B,MAAMC,EAAuBC,EAAQC,EAAuB,IAQ5D,OACWC,EAACC,EAAAA,EAAAA,EAAAA,CAAAA,EAAcL,GADtBC,EACsBD,CAAOM,KAAK,QAGhBN,CAAOO,QAVTC,IAGhBR,IAAAA,EAFA,MAAMS,MAAEA,GAAUD,EAAEE,OACpBF,EAAEE,OAAOD,MAAQE,EAAWF,GACf,QAAbT,EAAAA,EAAMO,mBAANP,GAAAA,OAAAA,EAAgBQ,IAO+BI,UAAW,KAClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../src/components/internal/FormFields/InputDate/utils.ts"],"sourcesContent":["/**\n * Returns either the date input is supported or not in the current browser\n */\nconst checkDateInputSupport = (): boolean => {\n const input = document.createElement('input');\n input.setAttribute('type', 'date');\n return input.type === 'date';\n};\n\n/**\n * Returns a formatted date\n * @param value -\n * @example\n * formatDate('22111990');\n * // '22/11/1990'\n */\nconst formatDate = (value: string): string => {\n const date = value\n .replace(/\\D|\\s/g, '') // Digits only\n .replace(/^(00)(.*)?/, '01$2') // 00 -> 01\n .replace(/^(3[2-9])(.*)?/, '0$1$2') // 34 -> 03/04\n .replace(/^([4-9])(.*)?/, '0$1') // 4 -> 04\n .replace(/^([0-9]{2})(00)(.*)?/, '$101') // 01/00 -> 01/01\n .replace(/^(3[01])(02)(.*)?/, '29$2') // Force up to day 29 for Feb\n .replace(/^([0-9]{2})([2-9]|1[3-9])(.*)?/, '$10$2') // 01/4 -> 01/04\n .replace(/^([0-9]{2})([0-9]{2})([0-9])/, '$1/$2/$3') // 22111990 -> 22/11/1990\n .replace(/^([0-9]{2})([0-9])/, '$1/$2'); // 2211 -> 22/11\n\n const [day = '', month = '', year = ''] = date.split('/');\n\n // Check leap year\n if (year.length === 4 && day === '29' && month === '02' && (Number(year) % 4 !== 0 || (year.substr(2, 2) === '00' && Number(year) % 400 !== 0))) {\n return date.replace(/^29/, '28');\n }\n\n return date;\n};\n\n/**\n * Receives a formatted date and returns it as the API expects it\n * @param value -\n * @example\n * unformatDate('22/11/1990');\n * // '1990-11-22'\n */\nconst unformatDate = (value = ''): string => {\n if (!value.includes('/')) return value;\n const [day = '', month = '', year = ''] = value.split('/');\n if (!day || !month || !year) return null;\n return `${year}-${month}-${day}`;\n};\n\nexport { checkDateInputSupport, formatDate, unformatDate };\n"],"names":["checkDateInputSupport","input","document","createElement","setAttribute","type","formatDate","value","date","replace","day","month","year","split","length","Number","substr","unformatDate","includes"],"mappings":"MAGMA,EAAwB,KAC1B,MAAMC,EAAQC,SAASC,cAAc,SAErC,OADAF,EAAMG,aAAa,OAAQ,QACL,SAAfH,EAAMI,MAUXC,EAAcC,IAChB,MAAMC,EAAOD,EACRE,QAAQ,SAAU,IAClBA,QAAQ,aAAc,QACtBA,QAAQ,iBAAkB,SAC1BA,QAAQ,gBAAiB,OACzBA,QAAQ,uBAAwB,QAChCA,QAAQ,oBAAqB,QAC7BA,QAAQ,iCAAkC,SAC1CA,QAAQ,+BAAgC,YACxCA,QAAQ,qBAAsB,UAE5BC,EAAM,GAAIC,EAAQ,GAAIC,EAAO,IAAMJ,EAAKK,MAAM,KAGrD,OAAoB,IAAhBD,EAAKE,QAAwB,OAARJ,GAA0B,OAAVC,IAAmBI,OAAOH,GAAQ,GAAM,GAA4B,OAAtBA,EAAKI,OAAO,EAAG,IAAeD,OAAOH,GAAQ,KAAQ,GACjIJ,EAAKC,QAAQ,MAAO,MAGxBD,GAULS,EAAe,CAACV,EAAQ,MAC1B,IAAKA,EAAMW,SAAS,KAAM,OAAOX,EACjC,MAAOG,EAAM,GAAIC,EAAQ,GAAIC,EAAO,IAAML,EAAMM,MAAM,KACtD,OAAKH,GAAQC,GAAUC,EAChB,GAAGA,KAAQD,KAASD,IADS"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../src/components/internal/FormFields/InputDate/utils.ts"],"sourcesContent":["/**\n * Returns either the date input is supported or not in the current browser\n */\nconst checkDateInputSupport = (): boolean => {\n const input = document.createElement('input');\n input.setAttribute('type', 'date');\n return input.type === 'date';\n};\n\n/**\n * Returns a formatted date\n * @param value -\n * @example\n * formatDate('22111990');\n * // '22/11/1990'\n */\nconst formatDate = (value: string): string => {\n const date = value\n .replace(/\\D|\\s/g, '') // Digits only\n .replace(/^(00)(.*)?/, '01$2') // 00 -> 01\n .replace(/^(3[2-9])(.*)?/, '0$1$2') // 34 -> 03/04\n .replace(/^([4-9])(.*)?/, '0$1') // 4 -> 04\n .replace(/^([0-9]{2})(00)(.*)?/, '$101') // 01/00 -> 01/01\n .replace(/^(3[01])(02)(.*)?/, '29$2') // Force up to day 29 for Feb\n .replace(/^([0-9]{2})([2-9]|1[3-9])(.*)?/, '$10$2') // 01/4 -> 01/04\n .replace(/^([0-9]{2})([0-9]{2})([0-9])/, '$1/$2/$3') // 22111990 -> 22/11/1990\n .replace(/^([0-9]{2})([0-9])/, '$1/$2'); // 2211 -> 22/11\n\n const [day = '', month = '', year = ''] = date.split('/');\n\n // Check leap year\n if (year.length === 4 && day === '29' && month === '02' && (Number(year) % 4 !== 0 || (year.substr(2, 2) === '00' && Number(year) % 400 !== 0))) {\n return date.replace(/^29/, '28');\n }\n\n return date;\n};\n\n/**\n * Receives a formatted date and returns it as the API expects it\n * @param value -\n * @example\n * unformatDate('22/11/1990');\n * // '1990-11-22'\n */\nconst unformatDate = (value = ''): string | null => {\n if (!value.includes('/')) return value;\n const [day = '', month = '', year = ''] = value.split('/');\n if (!day || !month || !year) return null;\n return `${year}-${month}-${day}`;\n};\n\nexport { checkDateInputSupport, formatDate, unformatDate };\n"],"names":["checkDateInputSupport","input","document","createElement","setAttribute","type","formatDate","value","date","replace","day","month","year","split","length","Number","substr","unformatDate","includes"],"mappings":"MAGMA,EAAwB,KAC1B,MAAMC,EAAQC,SAASC,cAAc,SAErC,OADAF,EAAMG,aAAa,OAAQ,QACL,SAAfH,EAAMI,MAUXC,EAAcC,IAChB,MAAMC,EAAOD,EACRE,QAAQ,SAAU,IAClBA,QAAQ,aAAc,QACtBA,QAAQ,iBAAkB,SAC1BA,QAAQ,gBAAiB,OACzBA,QAAQ,uBAAwB,QAChCA,QAAQ,oBAAqB,QAC7BA,QAAQ,iCAAkC,SAC1CA,QAAQ,+BAAgC,YACxCA,QAAQ,qBAAsB,UAE5BC,EAAM,GAAIC,EAAQ,GAAIC,EAAO,IAAMJ,EAAKK,MAAM,KAGrD,OAAoB,IAAhBD,EAAKE,QAAwB,OAARJ,GAA0B,OAAVC,IAAmBI,OAAOH,GAAQ,GAAM,GAA4B,OAAtBA,EAAKI,OAAO,EAAG,IAAeD,OAAOH,GAAQ,KAAQ,GACjIJ,EAAKC,QAAQ,MAAO,MAGxBD,GAULS,EAAe,CAACV,EAAQ,MAC1B,IAAKA,EAAMW,SAAS,KAAM,OAAOX,EACjC,MAAOG,EAAM,GAAIC,EAAQ,GAAIC,EAAO,IAAML,EAAMM,MAAM,KACtD,OAAKH,GAAQC,GAAUC,EAChB,GAAGA,KAAQD,KAASD,IADS"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useRef as t,useState as n,useMemo as r,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import l from"../../../../_virtual/index.js";import s from"./components/SelectButton.js";import
|
|
1
|
+
import{createElement as e}from"../../../../external/preact/dist/preact.js";import{useRef as t,useState as n,useMemo as r,useEffect as o}from"../../../../external/preact/hooks/dist/hooks.js";import l from"../../../../_virtual/index.js";import s from"./components/SelectButton.js";import i from"./components/SelectList.js";import a from"../../../../utils/uuid.js";import{keys as u}from"./constants.js";import{ARIA_ERROR_SUFFIX as c,ARIA_CONTEXT_SUFFIX as d}from"../../../../core/Errors/constants.js";import{simulateFocusScroll as m}from"../utils.js";import{useCoreContext as f}from"../../../../core/Context/CoreProvider.js";import{stopPropagationForActionKeys as p}from"../../Button/stopPropagationForActionKeys.js";function v({items:v=[],className:g="",classNameModifiers:h=[],filterable:y=!0,readonly:k=!1,onChange:b=()=>{},onInput:w,selectedValue:I,name:L,isInvalid:j,isValid:D,placeholder:x,uniqueId:T,disabled:_,disableTextFilter:B,clearOnSelect:E,blurOnClose:C,onListToggle:S,required:$,additionalDescribedBy:N}){const{i18n:R}=f(),q=t(null),A=t(null),F=t(null),K=t(null),[M,O]=n(null),[P,V]=n(!1),[H,U]=n(null),z=r(()=>`select-${a()}`,[]),G=v.find(e=>e.id===I)||{},[J,Q]=n(null),[W,X]=n(G),Y=G,Z=B?v:v.filter(e=>!M||e.name.toLowerCase().includes(M.toLowerCase())),ee=[T?`${T}${j?c:d}`:null,N].filter(Boolean).join(" ")||void 0,te=e=>{if(!e)return;const t=document.getElementById(`listItem-${e.id}`);t&&m(t)},ne=()=>{var e;C&&(null===(e=q.current)||void 0===e||e.blur());V(!1)},re=()=>{V(!0)},oe=e=>{const t=e.currentTarget.getAttribute("data-value");return Z.find(e=>e.id==t)},le=e=>{let t;e.preventDefault(),t=e.currentTarget instanceof HTMLElement&&"option"===e.currentTarget.getAttribute("role")?oe(e):W.id&&Z.some(e=>e.id===W.id)?W:M?Z[0]:{id:I},t&&!t.disabled&&(b({target:{value:t.id,name:L}}),E&&Q(null),ne())},se=e=>{switch(e.key){case u.space:case u.enter:le(e);break;case u.arrowDown:e.preventDefault(),(()=>{if(!Z||Z.length<1)return;const e=Z.findIndex(e=>e.id===W.id)+1,t=e<Z.length?e:0,n=Z[t];te(n),X(n)})();break;case u.arrowUp:e.preventDefault(),(()=>{if(!Z||Z.length<1)return;const e=Z.findIndex(e=>e.id===W.id)-1,t=e<0?Z.length-1:e,n=Z[t];te(n),X(n)})()}};return o(()=>{P?Q(null):O(null)},[P]),o(()=>{P&&y&&q.current&&q.current.focus(),null==S||S(P)},[P]),o(()=>{function e(e){A.current&&!e.composedPath().includes(A.current)&&ne()}return document.addEventListener("click",e,!1),()=>{document.removeEventListener("click",e,!1)}},[A]),o(()=>{const e=setTimeout(()=>{0===Z.length?U(R.get("select.noOptionsFound")):U(R.get("select.results",{values:{count:Z.length}}))},500);return()=>clearTimeout(e)},[P,Z.length,R]),e("div",{className:l(["adyen-checkout__dropdown",g,...h.map(e=>`adyen-checkout__dropdown--${e}`)]),ref:A},e(s,{inputText:J,id:T,active:W,selected:Y,filterInputRef:q,filterable:y,isInvalid:j,isValid:D,onButtonKeyDown:e=>{p(e),e.key===u.enter&&y&&P&&M?le(e):e.key===u.escape?ne():![u.arrowUp,u.arrowDown,u.enter].includes(e.key)&&(e.key!==u.space||y&&P)?(e.shiftKey&&e.key===u.tab||e.key===u.tab)&&ne():(e.preventDefault(),P?se(e):re())},onInput:e=>{const t=e.target.value;Q(t),O(t),P||re(),w&&w(t)},placeholder:x,readonly:k,selectListId:z,showList:P,toggleButtonRef:F,toggleList:e=>{e.preventDefault(),P?(Q(Y.name),ne()):(Q(null),re())},disabled:_,ariaDescribedBy:ee,required:$}),e(i,{active:W,filteredItems:Z,onHover:e=>{e.preventDefault();const t=oe(e);t&&X(t)},onSelect:le,selected:Y,selectListId:z,selectListRef:K,showList:P}),e("div",{key:J,role:"status","aria-live":"polite","aria-relevant":"additions text",className:"adyen-checkout__dropdown__status"},H))}export{v as default};
|
|
2
2
|
//# sourceMappingURL=Select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../../../../src/components/internal/FormFields/Select/Select.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport cx from 'classnames';\nimport SelectButton from './components/SelectButton';\nimport SelectList from './components/SelectList';\nimport uuid from '../../../../utils/uuid';\nimport { keys } from './constants';\nimport { SelectItem, SelectProps } from './types';\nimport './Select.scss';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../../core/Errors/constants';\nimport { simulateFocusScroll } from '../utils';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { stopPropagationForActionKeys } from '../../Button/stopPropagationForActionKeys';\n\nfunction Select({\n items = [],\n className = '',\n classNameModifiers = [],\n filterable = true,\n readonly = false,\n onChange = () => {},\n onInput,\n selectedValue,\n name,\n isInvalid,\n isValid,\n placeholder,\n uniqueId,\n disabled,\n disableTextFilter,\n clearOnSelect,\n blurOnClose,\n onListToggle,\n required,\n additionalDescribedBy\n}: Readonly<SelectProps>) {\n const { i18n } = useCoreContext();\n const filterInputRef = useRef(null);\n const selectContainerRef = useRef(null);\n const toggleButtonRef = useRef(null);\n const selectListRef = useRef(null);\n const [textFilter, setTextFilter] = useState<string>(null);\n const [showList, setShowList] = useState<boolean>(false);\n const [statusMessage, setStatusMessage] = useState<string | null>(null);\n const selectListId: string = useMemo(() => `select-${uuid()}`, []);\n\n const active: SelectItem = items.find(i => i.id === selectedValue) || ({} as SelectItem);\n\n const [inputText, setInputText] = useState<string>();\n\n const [activeOption, setActiveOption] = useState<SelectItem>(active);\n\n const selectedOption = active;\n\n const filteredItems = disableTextFilter ? items : items.filter(item => !textFilter || item.name.toLowerCase().includes(textFilter.toLowerCase()));\n\n const suffix = isInvalid ? ARIA_ERROR_SUFFIX : ARIA_CONTEXT_SUFFIX;\n const baseDescribedBy = uniqueId ? `${uniqueId}${suffix}` : null;\n const ariaDescribedBy = [baseDescribedBy, additionalDescribedBy].filter(Boolean).join(' ') || null;\n\n const setNextActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem.id === activeOption.id) + 1;\n const nextIndex = possibleNextIndex < filteredItems.length ? possibleNextIndex : 0;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const setPreviousActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem.id === activeOption.id) - 1;\n const nextIndex = possibleNextIndex < 0 ? filteredItems.length - 1 : possibleNextIndex;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const scrollToItem = (item: SelectItem) => {\n if (!item) return;\n const nextElement = document.getElementById(`listItem-${item.id}`);\n simulateFocusScroll(nextElement);\n };\n\n /**\n * Closes the selectList, empties the text filter and focuses the button element\n */\n const closeList = () => {\n //blurs the field when the list is closed, makes for a better UX for most users, needs more testing\n if (blurOnClose) {\n filterInputRef.current.blur();\n }\n setShowList(false);\n };\n\n const openList = () => {\n setShowList(true);\n };\n\n const extractItemFromEvent = (e: Event): SelectItem => {\n const value = (e.currentTarget as HTMLInputElement).getAttribute('data-value');\n return filteredItems.find(listItem => listItem.id == value);\n };\n\n /**\n * Closes the select list and fires an onChange\n * @param e - Event\n */\n const handleSelect = (e: Event) => {\n e.preventDefault();\n\n // We use a local variable here since writing and if statement is cleaner then a long ternary\n let valueToEmit;\n\n if (e.currentTarget instanceof HTMLElement && e.currentTarget.getAttribute('role') === 'option') {\n // This is the main scenario when clicking and item in the list\n // Item comes from the event\n valueToEmit = extractItemFromEvent(e);\n } else if (activeOption.id && filteredItems.some(item => item.id === activeOption.id)) {\n // This is the scenario where a user is using the keyboard to navigate\n // In the case item comes from the visually select item\n valueToEmit = activeOption;\n } else {\n // This is the scenario the user didn't select anything\n if (textFilter) {\n // if we filtering for something then select the first option\n valueToEmit = filteredItems[0];\n } else {\n // This will happen when we want to keep an already chosen option\n // If no active option we should just emit again with the value that was already selected\n valueToEmit = { id: selectedValue };\n }\n }\n\n if (valueToEmit && !valueToEmit.disabled) {\n onChange({ target: { value: valueToEmit.id, name: name } });\n\n if (clearOnSelect) setInputText(null);\n\n closeList();\n }\n };\n\n /**\n * Handles hovering and directions\n * @param e - Event\n */\n const handleHover = (e: Event) => {\n e.preventDefault();\n const item = extractItemFromEvent(e);\n setActiveOption(item);\n };\n\n /**\n * Handle keyDown events on the selectList button\n * Responsible for opening and closing the list\n * @param e - KeyboardEvent\n */\n const handleButtonKeyDown = (e: KeyboardEvent) => {\n stopPropagationForActionKeys(e);\n if (e.key === keys.enter && filterable && showList && textFilter) {\n handleSelect(e);\n } else if (e.key === keys.escape) {\n // When user has focused Select button but not yet moved into Select list - close list and keep focus on the Select Button re. a11y guidelines\n // https://w3c.github.io/aria-practices/examples/disclosure/disclosure-navigation.html\n closeList();\n } else if ([keys.arrowUp, keys.arrowDown, keys.enter].includes(e.key) || (e.key === keys.space && (!filterable || !showList))) {\n e.preventDefault();\n if (!showList) {\n openList();\n } else {\n handleNavigationKeys(e);\n }\n } else if (e.shiftKey && e.key === keys.tab) {\n // Shift-Tab out of Select - close list re. a11y guidelines (above)\n closeList();\n } else if (e.key === keys.tab) {\n closeList();\n }\n };\n\n /**\n * Handles movement with navigation keys and enter\n * Navigates through the list, or select an element, or focus the filter input, or close the menu.\n * @param e - KeyDownEvent\n */\n const handleNavigationKeys = (e: KeyboardEvent) => {\n switch (e.key) {\n case keys.space:\n case keys.enter:\n handleSelect(e);\n break;\n case keys.arrowDown:\n e.preventDefault();\n setNextActive();\n break;\n case keys.arrowUp:\n e.preventDefault();\n setPreviousActive();\n break;\n default:\n }\n };\n\n /**\n * Updates the state with the current text filter value and opens the dropdown\n * @param e - KeyboardEvent\n */\n const handleTextFilter = (e: KeyboardEvent) => {\n const value: string = (e.target as HTMLInputElement).value;\n setInputText(value);\n setTextFilter(value);\n\n // Open the dropdown when user starts typing\n if (!showList) {\n openList();\n }\n\n if (onInput) {\n onInput(value);\n }\n };\n\n /**\n * Toggles the selectList and focuses in either the filter input or in the selectList button\n * @param e - Event\n */\n const toggleList = (e: Event) => {\n e.preventDefault();\n if (!showList) {\n setInputText(null);\n openList();\n } else {\n setInputText(selectedOption.name);\n closeList();\n }\n };\n\n useEffect(() => {\n if (showList) {\n setInputText(null);\n } else {\n setTextFilter(null);\n }\n }, [showList]);\n\n /**\n * Focus on the input if filterable\n */\n useEffect(() => {\n if (showList && filterable && filterInputRef.current) {\n filterInputRef.current.focus();\n }\n onListToggle?.(showList);\n }, [showList]);\n\n useEffect(() => {\n /**\n * Close the select list when clicking outside the list\n * @param e - MouseEvent\n */\n function handleClickOutside(e: MouseEvent) {\n // use composedPath so it can also check when inside a web component\n // if composedPath is not available fallback to e.target\n const clickIsOutside = e.composedPath\n ? !e.composedPath().includes(selectContainerRef.current)\n : !selectContainerRef.current.contains(e.target);\n if (clickIsOutside) {\n closeList();\n }\n }\n\n document.addEventListener('click', handleClickOutside, false);\n\n return () => {\n document.removeEventListener('click', handleClickOutside, false);\n };\n }, [selectContainerRef]);\n\n /**\n * Update status message for screen readers when no options are found\n */\n useEffect(() => {\n // Debounce to avoid announcing on every keystroke\n const SR_ANNOUNCEMENT_DELAY_MS = 500;\n const timer = setTimeout(() => {\n if (filteredItems.length === 0) {\n setStatusMessage(i18n.get('select.noOptionsFound'));\n } else {\n setStatusMessage(i18n.get('select.results', { values: { count: filteredItems.length } }));\n }\n }, SR_ANNOUNCEMENT_DELAY_MS);\n\n return () => clearTimeout(timer);\n }, [showList, filteredItems.length, i18n]);\n\n return (\n <div\n className={cx(['adyen-checkout__dropdown', className, ...classNameModifiers.map(m => `adyen-checkout__dropdown--${m}`)])}\n ref={selectContainerRef}\n >\n <SelectButton\n inputText={inputText}\n id={uniqueId ?? null}\n active={activeOption}\n selected={selectedOption}\n filterInputRef={filterInputRef}\n filterable={filterable}\n isInvalid={isInvalid}\n isValid={isValid}\n onButtonKeyDown={handleButtonKeyDown}\n onInput={handleTextFilter}\n placeholder={placeholder}\n readonly={readonly}\n selectListId={selectListId}\n showList={showList}\n toggleButtonRef={toggleButtonRef}\n toggleList={toggleList}\n disabled={disabled}\n ariaDescribedBy={ariaDescribedBy}\n required={required}\n />\n <SelectList\n active={activeOption}\n filteredItems={filteredItems}\n onHover={handleHover}\n onSelect={handleSelect}\n selected={selectedOption}\n selectListId={selectListId}\n selectListRef={selectListRef}\n showList={showList}\n />\n <div\n key={inputText}\n role=\"status\"\n aria-live=\"polite\"\n // aria-relevant seems to be needed here make make sure a second time we get\n // \"No options found\" we still announce the status message.\n // What happens otherwise is that just the first status message is announced\n // tested on VoiceOver on Chrome\n aria-relevant=\"additions text\"\n className=\"adyen-checkout__dropdown__status\"\n >\n {statusMessage}\n </div>\n </div>\n );\n}\n\nSelect.defaultProps = {\n className: '',\n classNameModifiers: [],\n filterable: true,\n items: [],\n readonly: false,\n onChange: () => {}\n};\n\nexport default Select;\n"],"names":["Select","items","className","classNameModifiers","filterable","readonly","onChange","onInput","selectedValue","name","isInvalid","isValid","placeholder","uniqueId","disabled","disableTextFilter","clearOnSelect","blurOnClose","onListToggle","required","additionalDescribedBy","i18n","useCoreContext","filterInputRef","useRef","selectContainerRef","toggleButtonRef","selectListRef","textFilter","setTextFilter","useState","showList","setShowList","statusMessage","setStatusMessage","selectListId","useMemo","uuid","active","find","i","id","inputText","setInputText","activeOption","setActiveOption","selectedOption","filteredItems","filter","item","toLowerCase","includes","ariaDescribedBy","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","Boolean","join","scrollToItem","nextElement","document","getElementById","simulateFocusScroll","closeList","current","blur","openList","extractItemFromEvent","e","value","currentTarget","getAttribute","listItem","handleSelect","valueToEmit","preventDefault","HTMLElement","some","target","handleNavigationKeys","key","keys","space","enter","arrowDown","length","possibleNextIndex","findIndex","nextIndex","nextItem","setNextActive","arrowUp","setPreviousActive","useEffect","focus","handleClickOutside","composedPath","contains","addEventListener","removeEventListener","timer","setTimeout","get","values","count","clearTimeout","h","div","cx","map","m","ref","SelectButton","selected","onButtonKeyDown","stopPropagationForActionKeys","escape","shiftKey","tab","toggleList","SelectList","onHover","onSelect","role","aria-live","aria-relevant","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../../../../src/components/internal/FormFields/Select/Select.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport cx from 'classnames';\nimport SelectButton from './components/SelectButton';\nimport SelectList from './components/SelectList';\nimport uuid from '../../../../utils/uuid';\nimport { keys } from './constants';\nimport { SelectItem, SelectProps } from './types';\nimport './Select.scss';\nimport { ARIA_CONTEXT_SUFFIX, ARIA_ERROR_SUFFIX } from '../../../../core/Errors/constants';\nimport { simulateFocusScroll } from '../utils';\nimport { useCoreContext } from '../../../../core/Context/CoreProvider';\nimport { stopPropagationForActionKeys } from '../../Button/stopPropagationForActionKeys';\n\nfunction Select({\n items = [],\n className = '',\n classNameModifiers = [],\n filterable = true,\n readonly = false,\n onChange = () => {},\n onInput,\n selectedValue,\n name,\n isInvalid,\n isValid,\n placeholder,\n uniqueId,\n disabled,\n disableTextFilter,\n clearOnSelect,\n blurOnClose,\n onListToggle,\n required,\n additionalDescribedBy\n}: Readonly<SelectProps>) {\n const { i18n } = useCoreContext();\n const filterInputRef = useRef<HTMLInputElement>(null);\n const selectContainerRef = useRef<HTMLDivElement>(null);\n const toggleButtonRef = useRef<HTMLElement>(null);\n const selectListRef = useRef<HTMLUListElement>(null);\n const [textFilter, setTextFilter] = useState<string | null>(null);\n const [showList, setShowList] = useState<boolean>(false);\n const [statusMessage, setStatusMessage] = useState<string | null>(null);\n const selectListId: string = useMemo(() => `select-${uuid()}`, []);\n\n const active: SelectItem = items.find(i => i.id === selectedValue) || ({} as SelectItem);\n\n // the value that's on the input field (when filterable)\n const [inputText, setInputText] = useState<string | null>(null);\n\n const [activeOption, setActiveOption] = useState<SelectItem>(active);\n\n const selectedOption = active;\n\n const filteredItems = disableTextFilter ? items : items.filter(item => !textFilter || item.name.toLowerCase().includes(textFilter.toLowerCase()));\n\n const suffix = isInvalid ? ARIA_ERROR_SUFFIX : ARIA_CONTEXT_SUFFIX;\n const baseDescribedBy = uniqueId ? `${uniqueId}${suffix}` : null;\n const ariaDescribedBy = [baseDescribedBy, additionalDescribedBy].filter(Boolean).join(' ') || undefined;\n\n const setNextActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem.id === activeOption.id) + 1;\n const nextIndex = possibleNextIndex < filteredItems.length ? possibleNextIndex : 0;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const setPreviousActive = () => {\n if (!filteredItems || filteredItems.length < 1) return;\n const possibleNextIndex = filteredItems.findIndex(listItem => listItem.id === activeOption.id) - 1;\n const nextIndex = possibleNextIndex < 0 ? filteredItems.length - 1 : possibleNextIndex;\n const nextItem = filteredItems[nextIndex];\n scrollToItem(nextItem);\n setActiveOption(nextItem);\n };\n\n const scrollToItem = (item: SelectItem) => {\n if (!item) return;\n const nextElement = document.getElementById(`listItem-${item.id}`);\n if (!nextElement) return;\n simulateFocusScroll(nextElement);\n };\n\n /**\n * Closes the selectList, empties the text filter and focuses the button element\n */\n const closeList = () => {\n //blurs the field when the list is closed, makes for a better UX for most users, needs more testing\n if (blurOnClose) {\n filterInputRef.current?.blur();\n }\n setShowList(false);\n };\n\n const openList = () => {\n setShowList(true);\n };\n\n const extractItemFromEvent = (e: Event): SelectItem | undefined => {\n const value = (e.currentTarget as HTMLElement).getAttribute('data-value');\n return filteredItems.find(listItem => listItem.id == value);\n };\n\n /**\n * Closes the select list and fires an onChange\n * @param e - Event\n */\n const handleSelect = (e: Event) => {\n e.preventDefault();\n\n // We use a local variable here since writing and if statement is cleaner then a long ternary\n let valueToEmit;\n\n if (e.currentTarget instanceof HTMLElement && e.currentTarget.getAttribute('role') === 'option') {\n // This is the main scenario when clicking and item in the list\n // Item comes from the event\n valueToEmit = extractItemFromEvent(e);\n } else if (activeOption.id && filteredItems.some(item => item.id === activeOption.id)) {\n // This is the scenario where a user is using the keyboard to navigate\n // In the case item comes from the visually select item\n valueToEmit = activeOption;\n } else {\n // This is the scenario the user didn't select anything\n if (textFilter) {\n // if we filtering for something then select the first option\n valueToEmit = filteredItems[0];\n } else {\n // This will happen when we want to keep an already chosen option\n // If no active option we should just emit again with the value that was already selected\n valueToEmit = { id: selectedValue };\n }\n }\n\n if (valueToEmit && !valueToEmit.disabled) {\n onChange({ target: { value: valueToEmit.id, name: name } });\n\n if (clearOnSelect) setInputText(null);\n\n closeList();\n }\n };\n\n /**\n * Handles hovering and directions\n * @param e - Event\n */\n const handleHover = (e: Event) => {\n e.preventDefault();\n const item = extractItemFromEvent(e);\n if (item) setActiveOption(item);\n };\n\n /**\n * Handle keyDown events on the selectList button\n * Responsible for opening and closing the list\n * @param e - KeyboardEvent\n */\n const handleButtonKeyDown = (e: KeyboardEvent) => {\n stopPropagationForActionKeys(e);\n if (e.key === keys.enter && filterable && showList && textFilter) {\n handleSelect(e);\n } else if (e.key === keys.escape) {\n // When user has focused Select button but not yet moved into Select list - close list and keep focus on the Select Button re. a11y guidelines\n // https://w3c.github.io/aria-practices/examples/disclosure/disclosure-navigation.html\n closeList();\n } else if ([keys.arrowUp, keys.arrowDown, keys.enter].includes(e.key) || (e.key === keys.space && (!filterable || !showList))) {\n e.preventDefault();\n if (!showList) {\n openList();\n } else {\n handleNavigationKeys(e);\n }\n } else if (e.shiftKey && e.key === keys.tab) {\n // Shift-Tab out of Select - close list re. a11y guidelines (above)\n closeList();\n } else if (e.key === keys.tab) {\n closeList();\n }\n };\n\n /**\n * Handles movement with navigation keys and enter\n * Navigates through the list, or select an element, or focus the filter input, or close the menu.\n * @param e - KeyDownEvent\n */\n const handleNavigationKeys = (e: KeyboardEvent) => {\n switch (e.key) {\n case keys.space:\n case keys.enter:\n handleSelect(e);\n break;\n case keys.arrowDown:\n e.preventDefault();\n setNextActive();\n break;\n case keys.arrowUp:\n e.preventDefault();\n setPreviousActive();\n break;\n default:\n }\n };\n\n /**\n * Updates the state with the current text filter value and opens the dropdown\n * @param e - KeyboardEvent\n */\n const handleTextFilter = (e: KeyboardEvent) => {\n const value: string = (e.target as HTMLInputElement).value;\n setInputText(value);\n setTextFilter(value);\n\n // Open the dropdown when user starts typing\n if (!showList) {\n openList();\n }\n\n if (onInput) {\n onInput(value);\n }\n };\n\n /**\n * Toggles the selectList and focuses in either the filter input or in the selectList button\n * @param e - Event\n */\n const toggleList = (e: Event) => {\n e.preventDefault();\n if (!showList) {\n setInputText(null);\n openList();\n } else {\n setInputText(selectedOption.name);\n closeList();\n }\n };\n\n useEffect(() => {\n if (showList) {\n // clean the value in the input when opening the list so can start typing fresh\n setInputText(null);\n } else {\n // clean the text filter when closing the list\n setTextFilter(null);\n }\n }, [showList]);\n\n /**\n * Focus on the input if filterable\n */\n useEffect(() => {\n if (showList && filterable && filterInputRef.current) {\n filterInputRef.current.focus();\n }\n onListToggle?.(showList);\n }, [showList]);\n\n useEffect(() => {\n /**\n * Close the select list when clicking outside the list\n * @param e - MouseEvent\n */\n function handleClickOutside(e: MouseEvent) {\n const clickIsOutside = selectContainerRef.current && !e.composedPath().includes(selectContainerRef.current);\n if (clickIsOutside) {\n closeList();\n }\n }\n\n document.addEventListener('click', handleClickOutside, false);\n\n return () => {\n document.removeEventListener('click', handleClickOutside, false);\n };\n }, [selectContainerRef]);\n\n /**\n * Update status message for screen readers when no options are found\n */\n useEffect(() => {\n // Debounce to avoid announcing on every keystroke\n const SR_ANNOUNCEMENT_DELAY_MS = 500;\n const timer = setTimeout(() => {\n if (filteredItems.length === 0) {\n setStatusMessage(i18n.get('select.noOptionsFound'));\n } else {\n setStatusMessage(i18n.get('select.results', { values: { count: filteredItems.length } }));\n }\n }, SR_ANNOUNCEMENT_DELAY_MS);\n\n return () => clearTimeout(timer);\n }, [showList, filteredItems.length, i18n]);\n\n return (\n <div\n className={cx(['adyen-checkout__dropdown', className, ...classNameModifiers.map(m => `adyen-checkout__dropdown--${m}`)])}\n ref={selectContainerRef}\n >\n <SelectButton\n inputText={inputText}\n id={uniqueId}\n active={activeOption}\n selected={selectedOption}\n filterInputRef={filterInputRef}\n filterable={filterable}\n isInvalid={isInvalid}\n isValid={isValid}\n onButtonKeyDown={handleButtonKeyDown}\n onInput={handleTextFilter}\n placeholder={placeholder}\n readonly={readonly}\n selectListId={selectListId}\n showList={showList}\n toggleButtonRef={toggleButtonRef}\n toggleList={toggleList}\n disabled={disabled}\n ariaDescribedBy={ariaDescribedBy}\n required={required}\n />\n <SelectList\n active={activeOption}\n filteredItems={filteredItems}\n onHover={handleHover}\n onSelect={handleSelect}\n selected={selectedOption}\n selectListId={selectListId}\n selectListRef={selectListRef}\n showList={showList}\n />\n <div\n key={inputText}\n role=\"status\"\n aria-live=\"polite\"\n // aria-relevant seems to be needed here make make sure a second time we get\n // \"No options found\" we still announce the status message.\n // What happens otherwise is that just the first status message is announced\n // tested on VoiceOver on Chrome\n aria-relevant=\"additions text\"\n className=\"adyen-checkout__dropdown__status\"\n >\n {statusMessage}\n </div>\n </div>\n );\n}\n\nexport default Select;\n"],"names":["Select","items","className","classNameModifiers","filterable","readonly","onChange","onInput","selectedValue","name","isInvalid","isValid","placeholder","uniqueId","disabled","disableTextFilter","clearOnSelect","blurOnClose","onListToggle","required","additionalDescribedBy","i18n","useCoreContext","filterInputRef","useRef","selectContainerRef","toggleButtonRef","selectListRef","textFilter","setTextFilter","useState","showList","setShowList","statusMessage","setStatusMessage","selectListId","useMemo","uuid","active","find","i","id","inputText","setInputText","activeOption","setActiveOption","selectedOption","filteredItems","filter","item","toLowerCase","includes","ariaDescribedBy","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","Boolean","join","undefined","scrollToItem","nextElement","document","getElementById","simulateFocusScroll","closeList","current","blur","openList","extractItemFromEvent","e","value","currentTarget","getAttribute","listItem","handleSelect","valueToEmit","preventDefault","HTMLElement","some","target","handleNavigationKeys","key","keys","space","enter","arrowDown","length","possibleNextIndex","findIndex","nextIndex","nextItem","setNextActive","arrowUp","setPreviousActive","useEffect","focus","handleClickOutside","composedPath","addEventListener","removeEventListener","timer","setTimeout","get","values","count","clearTimeout","h","div","cx","map","m","ref","SelectButton","selected","onButtonKeyDown","stopPropagationForActionKeys","escape","shiftKey","tab","toggleList","SelectList","onHover","onSelect","role","aria-live","aria-relevant"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createElement as e,Fragment as t}from"../../../../../external/preact/dist/preact.js";import o from"../../../../../_virtual/index.js";import
|
|
1
|
+
import{createElement as e,Fragment as t}from"../../../../../external/preact/dist/preact.js";import o from"../../../../../_virtual/index.js";import r from"../../../Img/Img.js";import{TagList as n}from"../../../Tag/TagList.js";import{useMemo as a}from"../../../../../external/preact/hooks/dist/hooks.js";function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function l(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t.push.apply(t,o)}return t}(Object(t)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(t,o))}),e}function c(e,t){if(null==e)return{};var o,r,n,a={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(o=Reflect.ownKeys(Object(e)),n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}if(a=function(e,t){if(null==e)return{};var o,r,n={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o]);return n}(e,t),Object.getOwnPropertySymbols)for(o=Object.getOwnPropertySymbols(e),n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}function d(t){let{filterable:o,toggleButtonRef:r,showList:n,selectListId:a,readonly:d}=t,s=c(t,["filterable","toggleButtonRef","showList","selectListId","readonly"]);if(o){const{id:t}=s,o=c(s,["id"]);return e("div",l(function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),r.forEach(function(t){i(e,t,o[t])})}return e}({},o),{ref:r}))}return e("button",{role:"combobox",type:"button",id:s.id,className:s.className,"aria-haspopup":"listbox","aria-expanded":n,"aria-controls":a,"aria-activedescendant":s["aria-activedescendant"]||void 0,disabled:s.disabled,"aria-disabled":d,"aria-describedby":s["aria-describedby"],"aria-labelledby":s.id?`${s.id}-label ${s.id}-value`:void 0,onClick:s.onClick,onKeyDown:s.onKeyDown,ref:r},s.children)}function s(i){const{active:l,selected:c,inputText:s,readonly:u,showList:p,required:b}=i,f=a(()=>{const e=c.selectedOptionName||c.name;return!0!==("string"==typeof e&&""!==e.trim())},[c,i.placeholder]),y=c.selectedOptionName||c.name||i.placeholder||"",_=p?null!=s?s:"":y,m=e=>{var t;e.preventDefault(),null===(t=i.filterInputRef.current)||void 0===t||t.focus(),e.target===i.filterInputRef.current&&i.showList||i.toggleList(e)},g=l.id?`listItem-${l.id}`:"";return e(d,{className:o({"adyen-checkout__dropdown__button":!0,"adyen-checkout__dropdown__button--readonly":u,"adyen-checkout__dropdown__button--active":p,"adyen-checkout__dropdown__button--invalid":i.isInvalid,"adyen-checkout__dropdown__button--valid":i.isValid,"adyen-checkout__dropdown__button--disabled":c.disabled}),disabled:i.disabled,filterable:i.filterable,readonly:u,onClick:(()=>{if(!u)return i.filterable?m:i.toggleList})(),onKeyDown:u?void 0:i.onButtonKeyDown,toggleButtonRef:i.toggleButtonRef,id:i.id,showList:p,selectListId:i.selectListId,"aria-activedescendant":!i.filterable&&p&&g||void 0,"aria-describedby":i.ariaDescribedBy},i.filterable?e(t,null,!p&&c.icon&&e(r,{className:"adyen-checkout__dropdown__button__icon",src:c.icon,alt:c.name}),e("input",{value:_,"aria-autocomplete":"list","aria-controls":i.selectListId,"aria-expanded":p,"aria-owns":i.selectListId,autoComplete:"off",className:o("adyen-checkout__filter-input",{"adyen-checkout__filter-input--placeholder":!p&&f}),onInput:i.onInput,ref:i.filterInputRef,role:"combobox","aria-activedescendant":g,type:"text",readOnly:i.readonly,"aria-disabled":i.readonly,id:i.id,"aria-describedby":i.ariaDescribedBy,required:b}),!p&&e(n,{tags:c.tags,className:"adyen-checkout__dropdown__button__tags"})):e(t,null,c.icon&&e(r,{className:"adyen-checkout__dropdown__button__icon",src:c.icon,alt:c.name}),e("span",{id:i.id?`${i.id}-value`:void 0,className:o("adyen-checkout__dropdown__button__text",{"adyen-checkout__dropdown__button__text-placeholder":f})},y),e(n,{tags:c.tags,className:"adyen-checkout__dropdown__button__tags"})))}export{s as default};
|
|
2
2
|
//# sourceMappingURL=SelectButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectButton.js","sources":["../../../../../../../src/components/internal/FormFields/Select/components/SelectButton.tsx"],"sourcesContent":["import { h, Fragment, Ref } from 'preact';\nimport cx from 'classnames';\nimport { SelectButtonElementProps, SelectButtonProps } from '../types';\nimport Img from '../../../Img';\nimport { TagList } from '../../../Tag';\nimport { useMemo } from 'preact/hooks';\nimport classnames from 'classnames';\n\nfunction SelectButtonElement({ filterable, toggleButtonRef, showList, selectListId, readonly, ...props }: Readonly<SelectButtonElementProps>) {\n if (filterable) {\n // Even if passed, we can't add an id to this div since it is not allowed to associate a div with a label element\n const { id, ...strippedProps } = props;\n return <div {...strippedProps} ref={toggleButtonRef as Ref<HTMLDivElement>} />;\n }\n\n return (\n <button\n role=\"combobox\"\n type=\"button\"\n id={props.id}\n className={props.className}\n aria-haspopup=\"listbox\"\n aria-expanded={showList}\n aria-controls={selectListId}\n aria-activedescendant={props['aria-activedescendant'] || undefined}\n disabled={props.disabled}\n aria-disabled={readonly}\n aria-describedby={props['aria-describedby']}\n aria-labelledby={props.id ? `${props.id as string}-label ${props.id as string}-value` : undefined}\n onClick={props.onClick}\n onKeyDown={props.onKeyDown}\n ref={toggleButtonRef as Ref<HTMLButtonElement>}\n >\n {props.children}\n </button>\n );\n}\n\nfunction SelectButton(props: Readonly<SelectButtonProps>) {\n const { active, selected, inputText, readonly, showList, required } = props;\n\n const isShowingPlaceholder = useMemo(() => {\n const displayText = selected.selectedOptionName || selected.name;\n const isValidValue = typeof displayText === 'string' && displayText.trim() !== '';\n return isValidValue !== true;\n }, [selected, props.placeholder]);\n\n // display fallback order\n const displayText = selected.selectedOptionName || selected.name || props.placeholder || '';\n // displayInputText only used for the text input for the filter\n // display the \"typed\" filter text when showing the dropdown,\n // hide it and show the \"selected\" value when collapsed\n // When list is open, show user's typed input (or empty); otherwise show selected value\n const textWhenListOpen = inputText ?? '';\n const displayInputText = showList ? textWhenListOpen : displayText;\n\n const handleClick = (e: Event) => {\n e.preventDefault();\n props.filterInputRef.current?.focus();\n\n // Clicking the input of an open list keeps it open\n if (e.target === props.filterInputRef.current && props.showList) return;\n\n props.toggleList(e);\n };\n\n // 1. If readonly we ignore the click action\n // 2. If filterable we want to toggle the list and focus on the input\n // 3. Otherwise we just toggle the list\n const getOnClickHandler = (): ((e: Event) => void) | null => {\n if (readonly) return null;\n\n if (props.filterable) return handleClick;\n\n return props.toggleList;\n };\n\n // check COWEB-1301 [Investigate] Drop-in Accessibility - ADA Compliance questions\n const currentSelectedItemId = active.id ? `listItem-${active.id}` : '';\n\n return (\n <SelectButtonElement\n className={cx({\n 'adyen-checkout__dropdown__button': true,\n 'adyen-checkout__dropdown__button--readonly': readonly,\n 'adyen-checkout__dropdown__button--active': showList,\n 'adyen-checkout__dropdown__button--invalid': props.isInvalid,\n 'adyen-checkout__dropdown__button--valid': props.isValid,\n 'adyen-checkout__dropdown__button--disabled': selected.disabled\n })}\n disabled={props.disabled}\n filterable={props.filterable}\n readonly={readonly}\n onClick={getOnClickHandler()}\n onKeyDown={!readonly ? props.onButtonKeyDown : null}\n toggleButtonRef={props.toggleButtonRef}\n id={props.id}\n showList={showList}\n selectListId={props.selectListId}\n aria-activedescendant={!props.filterable && showList ? currentSelectedItemId || undefined : undefined}\n aria-describedby={props.ariaDescribedBy}\n >\n {!props.filterable ? (\n <Fragment>\n {selected.icon && <Img className=\"adyen-checkout__dropdown__button__icon\" src={selected.icon} alt={selected.name} />}\n <span\n id={props.id ? `${props.id}-value` : undefined}\n className={classnames('adyen-checkout__dropdown__button__text', {\n 'adyen-checkout__dropdown__button__text-placeholder': isShowingPlaceholder\n })}\n >\n {displayText}\n </span>\n <TagList tags={selected.tags} className=\"adyen-checkout__dropdown__button__tags\" />\n </Fragment>\n ) : (\n <Fragment>\n {!showList && selected.icon && <Img className=\"adyen-checkout__dropdown__button__icon\" src={selected.icon} alt={selected.name} />}\n <input\n value={displayInputText}\n aria-autocomplete=\"list\"\n aria-controls={props.selectListId}\n aria-expanded={showList}\n aria-owns={props.selectListId}\n autoComplete=\"off\"\n className={classnames('adyen-checkout__filter-input', {\n 'adyen-checkout__filter-input--placeholder': !showList && isShowingPlaceholder\n })}\n onInput={props.onInput}\n ref={props.filterInputRef}\n role=\"combobox\"\n aria-activedescendant={currentSelectedItemId}\n type=\"text\"\n readOnly={props.readonly}\n aria-disabled={props.readonly}\n id={props.id}\n aria-describedby={props.ariaDescribedBy}\n required={required}\n />\n {!showList && <TagList tags={selected.tags} className=\"adyen-checkout__dropdown__button__tags\" />}\n </Fragment>\n )}\n </SelectButtonElement>\n );\n}\n\nexport default SelectButton;\n"],"names":["SelectButtonElement","_0","filterable","toggleButtonRef","showList","selectListId","readonly","props","id","strippedProps","h","div","ref","button","role","type","className","aria-haspopup","aria-expanded","aria-controls","aria-activedescendant","undefined","disabled","aria-disabled","aria-describedby","aria-labelledby","onClick","onKeyDown","children","SelectButton","active","selected","inputText","required","isShowingPlaceholder","useMemo","displayText","selectedOptionName","name","trim","placeholder","displayInputText","handleClick","e","preventDefault","filterInputRef","current","focus","target","toggleList","currentSelectedItemId","cx","isInvalid","isValid","onButtonKeyDown","ariaDescribedBy","Fragment","icon","Img","src","alt","input","value","aria-autocomplete","aria-owns","autoComplete","classnames","onInput","readOnly","TagList","tags","span"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectButton.js","sources":["../../../../../../../src/components/internal/FormFields/Select/components/SelectButton.tsx"],"sourcesContent":["import { h, Fragment, Ref, MouseEventHandler } from 'preact';\nimport cx from 'classnames';\nimport { SelectButtonElementProps, SelectButtonProps } from '../types';\nimport Img from '../../../Img';\nimport { TagList } from '../../../Tag';\nimport { useMemo } from 'preact/hooks';\nimport classnames from 'classnames';\n\nfunction SelectButtonElement({ filterable, toggleButtonRef, showList, selectListId, readonly, ...props }: Readonly<SelectButtonElementProps>) {\n if (filterable) {\n // Even if passed, we can't add an id to this div since it is not allowed to associate a div with a label element\n const { id, ...strippedProps } = props;\n return <div {...strippedProps} ref={toggleButtonRef as Ref<HTMLDivElement>} />;\n }\n\n return (\n <button\n role=\"combobox\"\n type=\"button\"\n id={props.id}\n className={props.className}\n aria-haspopup=\"listbox\"\n aria-expanded={showList}\n aria-controls={selectListId}\n aria-activedescendant={props['aria-activedescendant'] || undefined}\n disabled={props.disabled}\n aria-disabled={readonly}\n aria-describedby={props['aria-describedby']}\n aria-labelledby={props.id ? `${props.id as string}-label ${props.id as string}-value` : undefined}\n onClick={props.onClick}\n onKeyDown={props.onKeyDown}\n ref={toggleButtonRef as Ref<HTMLButtonElement>}\n >\n {props.children}\n </button>\n );\n}\n\nfunction SelectButton(props: Readonly<SelectButtonProps>) {\n const { active, selected, inputText, readonly, showList, required } = props;\n\n const isShowingPlaceholder = useMemo(() => {\n const displayText = selected.selectedOptionName || selected.name;\n const isValidValue = typeof displayText === 'string' && displayText.trim() !== '';\n return isValidValue !== true;\n }, [selected, props.placeholder]);\n\n // display fallback order\n const displayText = selected.selectedOptionName || selected.name || props.placeholder || '';\n // displayInputText only used for the text input for the filter\n // display the \"typed\" filter text when showing the dropdown,\n // hide it and show the \"selected\" value when collapsed\n // When list is open, show user's typed input (or empty); otherwise show selected value\n const textWhenListOpen = inputText ?? '';\n const displayInputText = showList ? textWhenListOpen : displayText;\n\n const handleClick = (e: Event) => {\n e.preventDefault();\n props.filterInputRef.current?.focus();\n\n // Clicking the input of an open list keeps it open\n if (e.target === props.filterInputRef.current && props.showList) return;\n\n props.toggleList(e);\n };\n\n // 1. If readonly we ignore the click action\n // 2. If filterable we want to toggle the list and focus on the input\n // 3. Otherwise we just toggle the list\n const getOnClickHandler = (): MouseEventHandler<HTMLDivElement | HTMLButtonElement> | undefined => {\n if (readonly) return undefined;\n\n if (props.filterable) return handleClick;\n\n return props.toggleList;\n };\n\n // check COWEB-1301 [Investigate] Drop-in Accessibility - ADA Compliance questions\n const currentSelectedItemId = active.id ? `listItem-${active.id}` : '';\n\n return (\n <SelectButtonElement\n className={cx({\n 'adyen-checkout__dropdown__button': true,\n 'adyen-checkout__dropdown__button--readonly': readonly,\n 'adyen-checkout__dropdown__button--active': showList,\n 'adyen-checkout__dropdown__button--invalid': props.isInvalid,\n 'adyen-checkout__dropdown__button--valid': props.isValid,\n 'adyen-checkout__dropdown__button--disabled': selected.disabled\n })}\n disabled={props.disabled}\n filterable={props.filterable}\n readonly={readonly}\n onClick={getOnClickHandler()}\n onKeyDown={!readonly ? props.onButtonKeyDown : undefined}\n toggleButtonRef={props.toggleButtonRef}\n id={props.id}\n showList={showList}\n selectListId={props.selectListId}\n aria-activedescendant={!props.filterable && showList ? currentSelectedItemId || undefined : undefined}\n aria-describedby={props.ariaDescribedBy}\n >\n {!props.filterable ? (\n <Fragment>\n {selected.icon && <Img className=\"adyen-checkout__dropdown__button__icon\" src={selected.icon} alt={selected.name} />}\n <span\n id={props.id ? `${props.id}-value` : undefined}\n className={classnames('adyen-checkout__dropdown__button__text', {\n 'adyen-checkout__dropdown__button__text-placeholder': isShowingPlaceholder\n })}\n >\n {displayText}\n </span>\n <TagList tags={selected.tags} className=\"adyen-checkout__dropdown__button__tags\" />\n </Fragment>\n ) : (\n <Fragment>\n {!showList && selected.icon && <Img className=\"adyen-checkout__dropdown__button__icon\" src={selected.icon} alt={selected.name} />}\n <input\n value={displayInputText}\n aria-autocomplete=\"list\"\n aria-controls={props.selectListId}\n aria-expanded={showList}\n aria-owns={props.selectListId}\n autoComplete=\"off\"\n className={classnames('adyen-checkout__filter-input', {\n 'adyen-checkout__filter-input--placeholder': !showList && isShowingPlaceholder\n })}\n onInput={props.onInput}\n ref={props.filterInputRef}\n role=\"combobox\"\n aria-activedescendant={currentSelectedItemId}\n type=\"text\"\n readOnly={props.readonly}\n aria-disabled={props.readonly}\n id={props.id}\n aria-describedby={props.ariaDescribedBy}\n required={required}\n />\n {!showList && <TagList tags={selected.tags} className=\"adyen-checkout__dropdown__button__tags\" />}\n </Fragment>\n )}\n </SelectButtonElement>\n );\n}\n\nexport default SelectButton;\n"],"names":["SelectButtonElement","_0","filterable","toggleButtonRef","showList","selectListId","readonly","props","id","strippedProps","h","div","ref","button","role","type","className","aria-haspopup","aria-expanded","aria-controls","aria-activedescendant","undefined","disabled","aria-disabled","aria-describedby","aria-labelledby","onClick","onKeyDown","children","SelectButton","active","selected","inputText","required","isShowingPlaceholder","useMemo","displayText","selectedOptionName","name","trim","placeholder","displayInputText","handleClick","e","preventDefault","filterInputRef","current","focus","target","toggleList","currentSelectedItemId","cx","isInvalid","isValid","getOnClickHandler","onButtonKeyDown","ariaDescribedBy","Fragment","icon","Img","src","alt","input","value","aria-autocomplete","aria-owns","autoComplete","classnames","onInput","readOnly","TagList","tags","span"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Component as e,createElement as t}from"../../../external/preact/dist/preact.js";import{useCoreContext as a}from"../../../core/Context/CoreProvider.js";import r from"../FormFields/Field/Field.js";import{isValidHolder as n,checkIbanStatus as s}from"./validate.js";import{electronicFormat as i,formatIban as o,getCountryCode as l,getNextCursorPosition as d}from"./utils.js";import u from"../FormFields/Fieldset/Fieldset.js";import h from"../FormFields/InputText.js";function b(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{},r=Object.keys(a);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(a).filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),r.forEach(function(t){b(e,t,a[t])})}return e}function m(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t.push.apply(t,a)}return t}(Object(t)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}),e}const p={isValid:!1,errorMessage:"ach.accountHolderNameField.invalid",error:"ach.accountHolderNameField.invalid"},N={isValid:!1,errorMessage:"sepaDirectDebit.ibanField.invalid",error:"sepaDirectDebit.ibanField.invalid"};class v extends e{setStatus(e){this.setState({status:e})}onChange(){const e=!this.props.holderName||n(this.state.data.ownerName),t="valid"===s(this.state.data.ibanNumber).status&&e,a={data:this.state.data,isValid:t,errors:this.state.errors};this.props.onChange(a)}showValidation(){const e=s(this.state.data.ibanNumber).status,t=n(this.state.data.ownerName);this.setError("iban","valid"===e?null:N);const a=t?null:p;this.setError("holder",a,this.onChange)}render({placeholders:e},{data:n,errors:s,valid:i}){var o,l;const{i18n:d}=a();return t(u,{classNameModifiers:["iban-input"],label:this.props.label},this.props.holderName&&t(r,{className:"adyen-checkout__field--owner-name",label:d.get("sepa.ownerName"),filled
|
|
1
|
+
import{Component as e,createElement as t}from"../../../external/preact/dist/preact.js";import{useCoreContext as a}from"../../../core/Context/CoreProvider.js";import r from"../FormFields/Field/Field.js";import{isValidHolder as n,checkIbanStatus as s}from"./validate.js";import{electronicFormat as i,formatIban as o,getCountryCode as l,getNextCursorPosition as d}from"./utils.js";import u from"../FormFields/Fieldset/Fieldset.js";import h from"../FormFields/InputText.js";function b(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{},r=Object.keys(a);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(a).filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),r.forEach(function(t){b(e,t,a[t])})}return e}function m(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t.push.apply(t,a)}return t}(Object(t)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}),e}const p={isValid:!1,errorMessage:"ach.accountHolderNameField.invalid",error:"ach.accountHolderNameField.invalid"},N={isValid:!1,errorMessage:"sepaDirectDebit.ibanField.invalid",error:"sepaDirectDebit.ibanField.invalid"};class v extends e{setStatus(e){this.setState({status:e})}onChange(){const e=!this.props.holderName||n(this.state.data.ownerName),t="valid"===s(this.state.data.ibanNumber).status&&e,a={data:this.state.data,isValid:t,errors:this.state.errors};this.props.onChange(a)}showValidation(){const e=s(this.state.data.ibanNumber).status,t=n(this.state.data.ownerName);this.setError("iban","valid"===e?null:N);const a=t?null:p;this.setError("holder",a,this.onChange)}render({placeholders:e},{data:n,errors:s,valid:i}){var o,l;const{i18n:d}=a();return t(u,{classNameModifiers:["iban-input"],label:this.props.label},this.props.holderName&&t(r,{className:"adyen-checkout__field--owner-name",label:d.get("sepa.ownerName"),filled:!!n.ownerName.length,errorMessage:!!s.holder&&d.get(s.holder.error),dir:"ltr",i18n:d,name:"ownerName"},t(h,{name:"ownerName",className:"adyen-checkout__iban-input__owner-name",placeholder:null==e?void 0:e.ownerName,value:n.ownerName,"aria-invalid":!!this.state.errors.holder,"aria-label":d.get("sepa.ownerName"),onInput:e=>this.handleHolderInput(e.target.value),onBlur:e=>this.handleHolderInput(e.target.value),autocomplete:"name"})),t(r,{className:"adyen-checkout__field--iban-number",label:d.get("sepa.ibanNumber"),errorMessage:!!s.iban&&d.get(s.iban.error),filled:!!n.ibanNumber.length,isValid:i.iban,onBlur:this.handleIbanBlur,dir:"ltr",i18n:d,name:"ibanNumber"},t(h,{name:"ibanNumber",className:"adyen-checkout__iban-input__iban-number",classNameModifiers:["large"],placeholder:null==e?void 0:e.ibanNumber,value:n.ibanNumber,onInput:this.handleIbanInput,"aria-invalid":!!this.state.errors.iban,"aria-label":d.get("sepa.ibanNumber"),autocorrect:"off",spellcheck:!1,autocomplete:void 0})),null===(o=(l=this.props).payButton)||void 0===o?void 0:o.call(l,{status:this.state.status}))}constructor(e){var t,a,r;if(super(e),b(this,"setError",(e,t,a)=>{this.setState(a=>({errors:m(c({},a.errors),{[e]:t})}),a)}),b(this,"handleHolderInput",e=>{this.setState(t=>({data:m(c({},t.data),{ownerName:e})}),()=>{const e=n(this.state.data.ownerName),t=e&&!e?p:null;this.setError("holder",t,this.onChange)})}),b(this,"handleIbanInput",e=>{const t=e.target.value,a=i(t),r=o(a),n=s(r).status,u=l(a),h=e.target.selectionStart,b=this.state.data.ibanNumber,p=d(h,r,b);this.setState(e=>({data:m(c({},e.data),{ibanNumber:r,countryCode:u}),errors:m(c({},e.errors),{iban:"invalid"===n?N:null}),valid:m(c({},e.valid),{iban:"valid"===n})}),()=>{e.target.setSelectionRange(p,p),this.onChange()})}),b(this,"handleIbanBlur",e=>{const t=e.target.value;if(t.length>0){const e=s(t).status;this.setError("iban","valid"===e?null:N,this.onChange)}else this.setError("iban",null,this.onChange)}),this.state={status:"ready",data:{ownerName:(null==e||null===(t=e.data)||void 0===t?void 0:t.ownerName)||"",ibanNumber:(null==e||null===(a=e.data)||void 0===a?void 0:a.ibanNumber)||"",countryCode:(null==e||null===(r=e.data)||void 0===r?void 0:r.countryCode)||""},isValid:!1,cursor:0,errors:{},valid:{}},this.state.data.ibanNumber){const e=i(this.state.data.ibanNumber);this.state.data.ibanNumber=o(e)}if(this.state.data.ibanNumber||this.state.data.ownerName){const e=!this.props.holderName||n(this.state.data.ownerName),t=!!this.state.data.ibanNumber&&"valid"===s(this.state.data.ibanNumber).status&&e,a={data:this.state.data,isValid:t};this.props.onChange(a)}}}b(v,"defaultProps",{onChange:()=>{},countryCode:null,holderName:!0,placeholders:{},label:null});export{v as default};
|
|
2
2
|
//# sourceMappingURL=IbanInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IbanInput.js","sources":["../../../../../src/components/internal/IbanInput/IbanInput.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../FormFields/Field';\nimport { checkIbanStatus, isValidHolder } from './validate';\nimport { electronicFormat, formatIban, getCountryCode, getNextCursorPosition } from './utils';\nimport Fieldset from '../FormFields/Fieldset';\nimport { GenericError } from '../../../core/Errors/types';\nimport InputText from '../FormFields/InputText';\nimport { UIElementStatus } from '../UIElement/types';\nimport { PayButtonProps } from '../PayButton/PayButton';\n\nexport interface IbanData {\n ownerName?: string;\n ibanNumber?: string;\n countryCode?: string;\n}\n\ninterface IbanInputOnChangeData {\n data: IbanData;\n isValid: boolean;\n errors?: Record<string, GenericError | null>;\n}\n\ninterface IbanInputProps {\n holderName?: boolean;\n placeholders?: Omit<IbanData, 'countryCode'>;\n countryCode?: string;\n showPayButton?: boolean;\n payButton?: (props: PayButtonProps) => h.JSX.Element;\n onChange: (data: IbanInputOnChangeData) => void;\n label: string;\n data?: IbanData;\n}\n\ninterface IbanInputState {\n data: IbanData;\n errors: Record<string, GenericError | null>;\n valid: Record<string, boolean>;\n status: string;\n isValid: boolean;\n cursor: number;\n}\n\nconst ibanHolderNameErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'ach.accountHolderNameField.invalid', // TODO create bespoke translation key\n error: 'ach.accountHolderNameField.invalid'\n};\n\nconst ibanErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'sepaDirectDebit.ibanField.invalid',\n error: 'sepaDirectDebit.ibanField.invalid'\n};\n\nclass IbanInput extends Component<Readonly<IbanInputProps>, IbanInputState> {\n constructor(props) {\n super(props);\n\n this.state = {\n status: 'ready',\n data: {\n ownerName: props?.data?.ownerName || '',\n ibanNumber: props?.data?.ibanNumber || '',\n countryCode: props?.data?.countryCode || ''\n },\n isValid: false,\n cursor: 0,\n errors: {},\n valid: {}\n };\n\n if (this.state.data['ibanNumber']) {\n const electronicFormatIban = electronicFormat(this.state.data['ibanNumber']); // example: NL13TEST0123456789\n this.state.data['ibanNumber'] = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n }\n\n if (this.state.data['ibanNumber'] || this.state.data['ownerName']) {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : true;\n const ibanValid = this.state.data['ibanNumber'] ? checkIbanStatus(this.state.data['ibanNumber']).status === 'valid' : false;\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid };\n\n this.props.onChange(data);\n }\n }\n\n public static readonly defaultProps = {\n onChange: () => {},\n countryCode: null,\n holderName: true,\n placeholders: {},\n label: null\n };\n\n setStatus(status: UIElementStatus) {\n this.setState({ status });\n }\n\n onChange() {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : true;\n const ibanValid = checkIbanStatus(this.state.data['ibanNumber']).status === 'valid';\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid, errors: this.state.errors };\n\n this.props.onChange(data);\n }\n\n public setError = (key, value, cb?) => {\n this.setState(prevState => ({ errors: { ...prevState.errors, [key]: value } }), cb);\n };\n\n public handleHolderInput = holder => {\n this.setState(\n prevState => ({ data: { ...prevState.data, ownerName: holder } }),\n () => {\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n const holderErr = holderStatus && !holderStatus ? ibanHolderNameErrorObj : null;\n\n this.setError('holder', holderErr, this.onChange);\n }\n );\n };\n\n public handleIbanInput = e => {\n const inputValue = e.target.value;\n const electronicFormatIban = electronicFormat(inputValue); // example: NL13TEST0123456789\n const iban = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n const validationStatus = checkIbanStatus(iban).status;\n\n const countryCode = getCountryCode(electronicFormatIban);\n\n // calculate cursor's new position\n const cursor = e.target.selectionStart;\n const previousIban = this.state.data['ibanNumber'];\n const newCursorPosition = getNextCursorPosition(cursor, iban, previousIban);\n\n this.setState(\n prevState => ({\n data: { ...prevState.data, ibanNumber: iban, countryCode: countryCode },\n errors: {\n ...prevState.errors,\n iban: validationStatus === 'invalid' ? ibanErrorObj : null\n },\n valid: { ...prevState.valid, iban: validationStatus === 'valid' }\n }),\n () => {\n e.target.setSelectionRange(newCursorPosition, newCursorPosition);\n this.onChange();\n }\n );\n };\n\n public handleIbanBlur = e => {\n const currentIban = e.target.value;\n\n if (currentIban.length > 0) {\n const validationStatus = checkIbanStatus(currentIban).status;\n this.setError('iban', validationStatus === 'valid' ? null : ibanErrorObj, this.onChange);\n } else {\n // Empty field is not in error\n this.setError('iban', null, this.onChange);\n }\n };\n\n showValidation() {\n const validationStatus = checkIbanStatus(this.state.data['ibanNumber']).status;\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n this.setError('iban', validationStatus === 'valid' ? null : ibanErrorObj);\n\n const holderErr = holderStatus ? null : ibanHolderNameErrorObj;\n\n this.setError('holder', holderErr, this.onChange); // add callback param to force propagation of state to parent comp\n }\n\n render({ placeholders }: IbanInputProps, { data, errors, valid }) {\n const { i18n } = useCoreContext();\n return (\n <Fieldset classNameModifiers={['iban-input']} label={this.props.label}>\n {this.props.holderName && (\n <Field\n className={'adyen-checkout__field--owner-name'}\n label={i18n.get('sepa.ownerName')}\n filled={data['ownerName'] && data['ownerName'].length}\n errorMessage={errors.holder ? i18n.get(errors.holder.error) : false}\n dir={'ltr'}\n i18n={i18n}\n name={'ownerName'}\n >\n <InputText\n name={'ownerName'}\n className={'adyen-checkout__iban-input__owner-name'}\n placeholder={placeholders?.ownerName}\n value={data['ownerName']}\n aria-invalid={!!this.state.errors.holder}\n aria-label={i18n.get('sepa.ownerName')}\n onInput={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n onBlur={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n autocomplete={'name'}\n />\n </Field>\n )}\n\n <Field\n className={'adyen-checkout__field--iban-number'}\n label={i18n.get('sepa.ibanNumber')}\n errorMessage={errors.iban ? i18n.get(errors.iban.error) : false}\n filled={data['ibanNumber'] && data['ibanNumber'].length}\n isValid={valid.iban}\n onBlur={this.handleIbanBlur}\n dir={'ltr'}\n i18n={i18n}\n name={'ibanNumber'}\n >\n <InputText\n name={'ibanNumber'}\n className={'adyen-checkout__iban-input__iban-number'}\n classNameModifiers={['large']}\n placeholder={placeholders?.ibanNumber}\n value={data['ibanNumber']}\n onInput={this.handleIbanInput}\n aria-invalid={!!this.state.errors.iban}\n aria-label={i18n.get('sepa.ibanNumber')}\n autocorrect={'off'}\n spellcheck={false}\n autocomplete={undefined}\n />\n </Field>\n\n {/* IbanInput is also embedded in OpenInvoice, which owns the pay button and passes none down */}\n {this.props.payButton?.({ status: this.state.status })}\n </Fieldset>\n );\n }\n}\n\nexport default IbanInput;\n"],"names":["ibanHolderNameErrorObj","isValid","errorMessage","error","ibanErrorObj","IbanInput","Component","setStatus","status","this","setState","onChange","holderNameValid","props","holderName","isValidHolder","state","data","checkIbanStatus","errors","showValidation","validationStatus","holderStatus","setError","holderErr","render","placeholders","valid","_this_props_payButton","_this_props","i18n","useCoreContext","h","Fieldset","classNameModifiers","label","Field","className","get","filled","length","holder","dir","name","InputText","placeholder","ownerName","value","aria-invalid","aria-label","onInput","e","handleHolderInput","target","onBlur","autocomplete","iban","handleIbanBlur","ibanNumber","handleIbanInput","autocorrect","spellcheck","undefined","payButton","call","constructor","super","_define_property","key","cb","prevState","_object_spread_props","_object_spread","inputValue","electronicFormatIban","electronicFormat","formatIban","countryCode","getCountryCode","cursor","selectionStart","previousIban","newCursorPosition","getNextCursorPosition","setSelectionRange","currentIban","defaultProps"],"mappings":"+vCA2CA,MAAMA,EAAuC,CACzCC,SAAS,EACTC,aAAc,qCACdC,MAAO,sCAGLC,EAA6B,CAC/BH,SAAS,EACTC,aAAc,oCACdC,MAAO,qCAGX,MAAME,UAAkBC,EAwCpBC,SAAAA,CAAUC,GACNC,KAAKC,SAAS,CAAEF,UACpB,CAEAG,QAAAA,GACI,MAAMC,GAAkBH,KAAKI,MAAMC,YAAaC,EAAcN,KAAKO,MAAMC,gBAEnEhB,EADsE,UAA1DiB,EAAgBT,KAAKO,MAAMC,KAAK,YAAeT,QACpCI,EACvBK,EAAO,CAAEA,KAAMR,KAAKO,MAAMC,KAAMhB,UAASkB,OAAQV,KAAKO,MAAMG,QAElEV,KAAKI,MAAMF,SAASM,EACxB,CA2DAG,cAAAA,GACI,MAAMC,EAAmBH,EAAgBT,KAAKO,MAAMC,KAAK,YAAeT,OAClEc,EAAeP,EAAcN,KAAKO,MAAMC,KAAK,WACnDR,KAAKc,SAAS,OAA6B,UAArBF,EAA+B,KAAOjB,GAE5D,MAAMoB,EAAYF,EAAe,KAAOtB,EAExCS,KAAKc,SAAS,SAAUC,EAAWf,KAAKE,SAC5C,CAEAc,MAAAA,EAAOC,aAAEA,IAAgCT,KAAEA,EAAIE,OAAEA,EAAMQ,MAAEA,QAuD5CC,EAAAC,EAtDT,MAAMC,KAAEA,GAASC,IACjB,OACIC,EAACC,EAAAA,CAASC,mBAAoB,CAAC,cAAeC,MAAO1B,KAAKI,MAAMsB,OAC3D1B,KAAKI,MAAMC,YACRkB,EAACI,EAAAA,CACGC,UAAW,oCACXF,MAAOL,EAAKQ,IAAI,kBAChBC,OAAQtB,EAAK,WAAgBA,EAAK,UAAauB,OAC/CtC,eAAciB,EAAOsB,QAASX,EAAKQ,IAAInB,EAAOsB,OAAOtC,OACrDuC,IAAK,MACLZ,KAAMA,EACNa,KAAM,aAENX,EAACY,EAAAA,CACGD,KAAM,YACNN,UAAW,yCACXQ,YAAanB,aAAAA,EAAAA,EAAcoB,UAC3BC,MAAO9B,EAAK,UACZ+B,iBAAgBvC,KAAKO,MAAMG,OAAOsB,OAClCQ,aAAYnB,EAAKQ,IAAI,kBACrBY,QAASC,GAAK1C,KAAK2C,kBAAkBD,EAAGE,OAA4BN,OACpEO,OAAQH,GAAK1C,KAAK2C,kBAAkBD,EAAGE,OAA4BN,OACnEQ,aAAc,UAK1BvB,EAACI,EAAAA,CACGC,UAAW,qCACXF,MAAOL,EAAKQ,IAAI,mBAChBpC,eAAciB,EAAOqC,MAAO1B,EAAKQ,IAAInB,EAAOqC,KAAKrD,OACjDoC,OAAQtB,EAAK,YAAiBA,EAAK,WAAcuB,OACjDvC,QAAS0B,EAAM6B,KACfF,OAAQ7C,KAAKgD,eACbf,IAAK,MACLZ,KAAMA,EACNa,KAAM,cAENX,EAACY,EAAAA,CACGD,KAAM,aACNN,UAAW,0CACXH,mBAAoB,CAAC,SACrBW,YAAanB,aAAAA,EAAAA,EAAcgC,WAC3BX,MAAO9B,EAAK,WACZiC,QAASzC,KAAKkD,gBACdX,iBAAgBvC,KAAKO,MAAMG,OAAOqC,KAClCP,aAAYnB,EAAKQ,IAAI,mBACrBsB,YAAa,MACbC,YAAY,EACZN,kBAAcO,KAKD,QAApBlC,GAAAC,EAAApB,KAAKI,OAAMkD,iBAAX,IAAAnC,OAAA,EAAAA,EAAAoC,KAAAnC,EAAuB,CAAErB,OAAQC,KAAKO,MAAMR,SAGzD,CAjLA,WAAAyD,CAAYpD,GAMWA,IAAAA,EACCA,EACCA,EAQrB,GAfAqD,MAAMrD,GAmDVsD,EAAA1D,KAAOc,WAAW,CAAC6C,EAAKrB,EAAOsB,KAC3B5D,KAAKC,SAAS4D,KAAgBnD,OAAQoD,EAAAC,EAAA,CAAA,EAAKF,EAAUnD,QAAM,CAAEiD,CAACA,GAAMrB,MAAYsB,KAGpFF,EAAA1D,KAAO2C,oBAAoBX,IACvBhC,KAAKC,SACD4D,KAAgBrD,KAAMsD,EAAAC,EAAA,CAAA,EAAKF,EAAUrD,MAAI,CAAE6B,UAAWL,MACtD,KACI,MAAMnB,EAAeP,EAAcN,KAAKO,MAAMC,KAAK,WAC7CO,EAAYF,IAAiBA,EAAetB,EAAyB,KAE3ES,KAAKc,SAAS,SAAUC,EAAWf,KAAKE,cAKpDwD,EAAA1D,KAAOkD,kBAAkBR,IACrB,MAAMsB,EAAatB,EAAEE,OAAON,MACtB2B,EAAuBC,EAAiBF,GACxCjB,EAAOoB,EAAWF,GAClBrD,EAAmBH,EAAgBsC,GAAMhD,OAEzCqE,EAAcC,EAAeJ,GAG7BK,EAAS5B,EAAEE,OAAO2B,eAClBC,EAAexE,KAAKO,MAAMC,KAAK,WAC/BiE,EAAoBC,EAAsBJ,EAAQvB,EAAMyB,GAE9DxE,KAAKC,SACD4D,KACIrD,KAAMsD,EAAAC,EAAA,CAAA,EAAKF,EAAUrD,MAAI,CAAEyC,WAAYF,EAAMqB,YAAaA,IAC1D1D,OAAQoD,EAAAC,EAAA,CAAA,EACDF,EAAUnD,QAAM,CACnBqC,KAA2B,YAArBnC,EAAiCjB,EAAe,OAE1DuB,MAAO4C,EAAAC,EAAA,CAAA,EAAKF,EAAU3C,OAAK,CAAE6B,KAA2B,UAArBnC,MAEvC,KACI8B,EAAEE,OAAO+B,kBAAkBF,EAAmBA,GAC9CzE,KAAKE,eAKjBwD,EAAA1D,KAAOgD,iBAAiBN,IACpB,MAAMkC,EAAclC,EAAEE,OAAON,MAE7B,GAAIsC,EAAY7C,OAAS,EAAG,CACxB,MAAMnB,EAAmBH,EAAgBmE,GAAa7E,OACtDC,KAAKc,SAAS,OAA6B,UAArBF,EAA+B,KAAOjB,EAAcK,KAAKE,SACnF,MAEIF,KAAKc,SAAS,OAAQ,KAAMd,KAAKE,YAtGrCF,KAAKO,MAAQ,CACTR,OAAQ,QACRS,KAAM,CACF6B,WAAWjC,SAAW,QAAXA,EAAAA,EAAOI,YAAPJ,IAAAA,OAAAA,EAAAA,EAAaiC,YAAa,GACrCY,YAAY7C,SAAW,QAAXA,EAAAA,EAAOI,YAAPJ,IAAAA,OAAAA,EAAAA,EAAa6C,aAAc,GACvCmB,aAAahE,SAAW,QAAXA,EAAAA,EAAOI,YAAPJ,IAAAA,OAAAA,EAAAA,EAAagE,cAAe,IAE7C5E,SAAS,EACT8E,OAAQ,EACR5D,OAAQ,CAAA,EACRQ,MAAO,CAAA,GAGPlB,KAAKO,MAAMC,gBAAoB,CAC/B,MAAMyD,EAAuBC,EAAiBlE,KAAKO,MAAMC,KAAK,YAC9DR,KAAKO,MAAMC,KAAK,WAAgB2D,EAAWF,EAC/C,CAEA,GAAIjE,KAAKO,MAAMC,KAAK,YAAiBR,KAAKO,MAAMC,eAAmB,CAC/D,MAAML,GAAkBH,KAAKI,MAAMC,YAAaC,EAAcN,KAAKO,MAAMC,gBAEnEhB,IADYQ,KAAKO,MAAMC,iBAA+E,UAA1DC,EAAgBT,KAAKO,MAAMC,iBAAoBT,QACpEI,EACvBK,EAAO,CAAEA,KAAMR,KAAKO,MAAMC,KAAMhB,WAEtCQ,KAAKI,MAAMF,SAASM,EACxB,CACJ,EAEAkD,EAhCE9D,EAgCqBiF,eAAe,CAClC3E,SAAU,OACVkE,YAAa,KACb/D,YAAY,EACZY,aAAc,CAAA,EACdS,MAAO"}
|
|
1
|
+
{"version":3,"file":"IbanInput.js","sources":["../../../../../src/components/internal/IbanInput/IbanInput.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport Field from '../FormFields/Field';\nimport { checkIbanStatus, isValidHolder } from './validate';\nimport { electronicFormat, formatIban, getCountryCode, getNextCursorPosition } from './utils';\nimport Fieldset from '../FormFields/Fieldset';\nimport { GenericError } from '../../../core/Errors/types';\nimport InputText from '../FormFields/InputText';\nimport { UIElementStatus } from '../UIElement/types';\nimport { PayButtonProps } from '../PayButton/PayButton';\n\nexport type IbanData = Partial<IbanInputData>;\n\ninterface IbanInputOnChangeData {\n data: IbanData;\n isValid: boolean;\n errors?: Record<string, GenericError | null>;\n}\n\ninterface IbanInputProps {\n holderName?: boolean;\n placeholders?: Omit<IbanData, 'countryCode'>;\n countryCode?: string;\n showPayButton?: boolean;\n payButton?: (props: PayButtonProps) => h.JSX.Element;\n onChange: (data: IbanInputOnChangeData) => void;\n label: string;\n data?: IbanData;\n}\n\n/** Unlike `IbanData` (the external, optional prop shape), the component's own state always normalizes these to strings in the constructor. */\ninterface IbanInputData {\n ownerName: string;\n ibanNumber: string;\n countryCode: string;\n}\n\ninterface IbanInputState {\n data: IbanInputData;\n errors: Record<string, GenericError | null>;\n valid: Record<string, boolean>;\n status: string;\n isValid: boolean;\n cursor: number;\n}\n\nconst ibanHolderNameErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'ach.accountHolderNameField.invalid', // TODO create bespoke translation key\n error: 'ach.accountHolderNameField.invalid'\n};\n\nconst ibanErrorObj: GenericError = {\n isValid: false,\n errorMessage: 'sepaDirectDebit.ibanField.invalid',\n error: 'sepaDirectDebit.ibanField.invalid'\n};\n\nclass IbanInput extends Component<Readonly<IbanInputProps>, IbanInputState> {\n constructor(props) {\n super(props);\n\n this.state = {\n status: 'ready',\n data: {\n ownerName: props?.data?.ownerName || '',\n ibanNumber: props?.data?.ibanNumber || '',\n countryCode: props?.data?.countryCode || ''\n },\n isValid: false,\n cursor: 0,\n errors: {},\n valid: {}\n };\n\n if (this.state.data['ibanNumber']) {\n const electronicFormatIban = electronicFormat(this.state.data['ibanNumber']); // example: NL13TEST0123456789\n this.state.data['ibanNumber'] = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n }\n\n if (this.state.data['ibanNumber'] || this.state.data['ownerName']) {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : true;\n const ibanValid = this.state.data['ibanNumber'] ? checkIbanStatus(this.state.data['ibanNumber']).status === 'valid' : false;\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid };\n\n this.props.onChange(data);\n }\n }\n\n public static readonly defaultProps = {\n onChange: () => {},\n countryCode: null,\n holderName: true,\n placeholders: {},\n label: null\n };\n\n setStatus(status: UIElementStatus) {\n this.setState({ status });\n }\n\n onChange() {\n const holderNameValid = this.props.holderName ? isValidHolder(this.state.data['ownerName']) : true;\n const ibanValid = checkIbanStatus(this.state.data['ibanNumber']).status === 'valid';\n const isValid = ibanValid && holderNameValid;\n const data = { data: this.state.data, isValid, errors: this.state.errors };\n\n this.props.onChange(data);\n }\n\n public setError = (key, value, cb?) => {\n this.setState(prevState => ({ errors: { ...prevState.errors, [key]: value } }), cb);\n };\n\n public handleHolderInput = holder => {\n this.setState(\n prevState => ({ data: { ...prevState.data, ownerName: holder } }),\n () => {\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n const holderErr = holderStatus && !holderStatus ? ibanHolderNameErrorObj : null;\n\n this.setError('holder', holderErr, this.onChange);\n }\n );\n };\n\n public handleIbanInput = e => {\n const inputValue = e.target.value;\n const electronicFormatIban = electronicFormat(inputValue); // example: NL13TEST0123456789\n const iban = formatIban(electronicFormatIban); // example: NL13 TEST 0123 4567 89\n const validationStatus = checkIbanStatus(iban).status;\n\n const countryCode = getCountryCode(electronicFormatIban);\n\n // calculate cursor's new position\n const cursor = e.target.selectionStart;\n const previousIban = this.state.data['ibanNumber'];\n const newCursorPosition = getNextCursorPosition(cursor, iban, previousIban);\n\n this.setState(\n prevState => ({\n data: { ...prevState.data, ibanNumber: iban, countryCode: countryCode },\n errors: {\n ...prevState.errors,\n iban: validationStatus === 'invalid' ? ibanErrorObj : null\n },\n valid: { ...prevState.valid, iban: validationStatus === 'valid' }\n }),\n () => {\n e.target.setSelectionRange(newCursorPosition, newCursorPosition);\n this.onChange();\n }\n );\n };\n\n public handleIbanBlur = e => {\n const currentIban = e.target.value;\n\n if (currentIban.length > 0) {\n const validationStatus = checkIbanStatus(currentIban).status;\n this.setError('iban', validationStatus === 'valid' ? null : ibanErrorObj, this.onChange);\n } else {\n // Empty field is not in error\n this.setError('iban', null, this.onChange);\n }\n };\n\n showValidation() {\n const validationStatus = checkIbanStatus(this.state.data['ibanNumber']).status;\n const holderStatus = isValidHolder(this.state.data['ownerName']);\n this.setError('iban', validationStatus === 'valid' ? null : ibanErrorObj);\n\n const holderErr = holderStatus ? null : ibanHolderNameErrorObj;\n\n this.setError('holder', holderErr, this.onChange); // add callback param to force propagation of state to parent comp\n }\n\n render({ placeholders }: IbanInputProps, { data, errors, valid }: IbanInputState) {\n const { i18n } = useCoreContext();\n return (\n <Fieldset classNameModifiers={['iban-input']} label={this.props.label}>\n {this.props.holderName && (\n <Field\n className={'adyen-checkout__field--owner-name'}\n label={i18n.get('sepa.ownerName')}\n filled={!!data['ownerName'].length}\n errorMessage={errors.holder ? i18n.get(errors.holder.error) : false}\n dir={'ltr'}\n i18n={i18n}\n name={'ownerName'}\n >\n <InputText\n name={'ownerName'}\n className={'adyen-checkout__iban-input__owner-name'}\n placeholder={placeholders?.ownerName}\n value={data['ownerName']}\n aria-invalid={!!this.state.errors.holder}\n aria-label={i18n.get('sepa.ownerName')}\n onInput={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n onBlur={e => this.handleHolderInput((e.target as HTMLInputElement).value)}\n autocomplete={'name'}\n />\n </Field>\n )}\n\n <Field\n className={'adyen-checkout__field--iban-number'}\n label={i18n.get('sepa.ibanNumber')}\n errorMessage={errors.iban ? i18n.get(errors.iban.error) : false}\n filled={!!data['ibanNumber'].length}\n isValid={valid.iban}\n onBlur={this.handleIbanBlur}\n dir={'ltr'}\n i18n={i18n}\n name={'ibanNumber'}\n >\n <InputText\n name={'ibanNumber'}\n className={'adyen-checkout__iban-input__iban-number'}\n classNameModifiers={['large']}\n placeholder={placeholders?.ibanNumber}\n value={data['ibanNumber']}\n onInput={this.handleIbanInput}\n aria-invalid={!!this.state.errors.iban}\n aria-label={i18n.get('sepa.ibanNumber')}\n autocorrect={'off'}\n spellcheck={false}\n autocomplete={undefined}\n />\n </Field>\n\n {/* IbanInput is also embedded in OpenInvoice, which owns the pay button and passes none down */}\n {this.props.payButton?.({ status: this.state.status })}\n </Fieldset>\n );\n }\n}\n\nexport default IbanInput;\n"],"names":["ibanHolderNameErrorObj","isValid","errorMessage","error","ibanErrorObj","IbanInput","Component","setStatus","status","this","setState","onChange","holderNameValid","props","holderName","isValidHolder","state","data","checkIbanStatus","errors","showValidation","validationStatus","holderStatus","setError","holderErr","render","placeholders","valid","_this_props_payButton","_this_props","i18n","useCoreContext","h","Fieldset","classNameModifiers","label","Field","className","get","filled","length","holder","dir","name","InputText","placeholder","ownerName","value","aria-invalid","aria-label","onInput","e","handleHolderInput","target","onBlur","autocomplete","iban","handleIbanBlur","ibanNumber","handleIbanInput","autocorrect","spellcheck","undefined","payButton","call","constructor","super","_define_property","key","cb","prevState","_object_spread_props","_object_spread","inputValue","electronicFormatIban","electronicFormat","formatIban","countryCode","getCountryCode","cursor","selectionStart","previousIban","newCursorPosition","getNextCursorPosition","setSelectionRange","currentIban","defaultProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specifications.js","sources":["../../../../../src/components/internal/IbanInput/specifications.ts"],"sourcesContent":["/**\n * @internal\n * IBAN Countries, length, structure and examples\n */\nconst countries = {\n AD: {\n length: 24,\n structure: 'F04F04A12',\n example: 'AD9912345678901234567890'\n },\n AE: {\n length: 23,\n structure: 'F03F16',\n example: 'AE993331234567890123456'\n },\n AL: {\n length: 28,\n structure: 'F08A16',\n example: 'AL47212110090000000235698741'\n },\n AT: {\n length: 20,\n structure: 'F05F11',\n example: 'AT611904300234573201'\n },\n AZ: {\n length: 28,\n structure: 'U04A20',\n example: 'AZ21NABZ00000000137010001944'\n },\n BA: {\n length: 20,\n structure: 'F03F03F08F02',\n example: 'BA391290079401028494'\n },\n BE: {\n length: 16,\n structure: 'F03F07F02',\n example: 'BE68 5390 0754 7034'\n },\n BG: {\n length: 22,\n structure: 'U04F04F02A08',\n example: 'BG80BNBG96611020345678'\n },\n BH: {\n length: 22,\n structure: 'U04A14',\n example: 'BH67BMAG00001299123456'\n },\n BR: {\n length: 29,\n structure: 'F08F05F10U01A01',\n example: 'BR9700360305000010009795493P1'\n },\n CH: {\n length: 21,\n structure: 'F05A12',\n example: 'CH9300762011623852957'\n },\n CR: {\n length: 22,\n structure: 'F04F14',\n example: 'CR72012300000171549015'\n },\n CY: {\n length: 28,\n structure: 'F03F05A16',\n example: 'CY17002001280000001200527600'\n },\n CZ: {\n length: 24,\n structure: 'F04F06F10',\n example: 'CZ6508000000192000145399'\n },\n DE: {\n length: 22,\n structure: 'F08F10',\n example: 'DE00123456789012345678'\n },\n DK: {\n length: 18,\n structure: 'F04F09F01',\n example: 'DK5000400440116243'\n },\n DO: {\n length: 28,\n structure: 'U04F20',\n example: 'DO28BAGR00000001212453611324'\n },\n EE: {\n length: 20,\n structure: 'F02F02F11F01',\n example: 'EE382200221020145685'\n },\n ES: {\n length: 24,\n structure: 'F04F04F01F01F10',\n example: 'ES9121000418450200051332'\n },\n FI: {\n length: 18,\n structure: 'F06F07F01',\n example: 'FI2112345600000785'\n },\n FO: {\n length: 18,\n structure: 'F04F09F01',\n example: 'FO6264600001631634'\n },\n FR: {\n length: 27,\n structure: 'F05F05A11F02',\n example: 'FR1420041010050500013M02606'\n },\n GB: {\n length: 22,\n structure: 'U04F06F08',\n example: 'GB29NWBK60161331926819'\n },\n GE: {\n length: 22,\n structure: 'U02F16',\n example: 'GE29NB0000000101904917'\n },\n GI: {\n length: 23,\n structure: 'U04A15',\n example: 'GI75NWBK000000007099453'\n },\n GL: {\n length: 18,\n structure: 'F04F09F01',\n example: 'GL8964710001000206'\n },\n GR: {\n length: 27,\n structure: 'F03F04A16',\n example: 'GR1601101250000000012300695'\n },\n GT: {\n length: 28,\n structure: 'A04A20',\n example: 'GT82TRAJ01020000001210029690'\n },\n HR: {\n length: 21,\n structure: 'F07F10',\n example: 'HR1210010051863000160'\n },\n HU: {\n length: 28,\n structure: 'F03F04F01F15F01',\n example: 'HU42117730161111101800000000'\n },\n IE: {\n length: 22,\n structure: 'U04F06F08',\n example: 'IE29AIBK93115212345678'\n },\n IL: {\n length: 23,\n structure: 'F03F03F13',\n example: 'IL620108000000099999999'\n },\n IS: {\n length: 26,\n structure: 'F04F02F06F10',\n example: 'IS140159260076545510730339'\n },\n IT: {\n length: 27,\n structure: 'U01F05F05A12',\n example: 'IT60X0542811101000000123456'\n },\n KW: {\n length: 30,\n structure: 'U04A22',\n example: 'KW81CBKU0000000000001234560101'\n },\n KZ: {\n length: 20,\n structure: 'F03A13',\n example: 'KZ86125KZT5004100100'\n },\n LB: {\n length: 28,\n structure: 'F04A20',\n example: 'LB62099900000001001901229114'\n },\n LC: {\n length: 32,\n structure: 'U04F24',\n example: 'LC07HEMM000100010012001200013015'\n },\n LI: {\n length: 21,\n structure: 'F05A12',\n example: 'LI21088100002324013AA'\n },\n LT: {\n length: 20,\n structure: 'F05F11',\n example: 'LT121000011101001000'\n },\n LU: {\n length: 20,\n structure: 'F03A13',\n example: 'LU280019400644750000'\n },\n LV: {\n length: 21,\n structure: 'U04A13',\n example: 'LV80BANK0000435195001'\n },\n MC: {\n length: 27,\n structure: 'F05F05A11F02',\n example: 'MC5811222000010123456789030'\n },\n MD: {\n length: 24,\n structure: 'U02A18',\n example: 'MD24AG000225100013104168'\n },\n ME: {\n length: 22,\n structure: 'F03F13F02',\n example: 'ME25505000012345678951'\n },\n MK: {\n length: 19,\n structure: 'F03A10F02',\n example: 'MK07250120000058984'\n },\n MR: {\n length: 27,\n structure: 'F05F05F11F02',\n example: 'MR1300020001010000123456753'\n },\n MT: {\n length: 31,\n structure: 'U04F05A18',\n example: 'MT84MALT011000012345MTLCAST001S'\n },\n MU: {\n length: 30,\n structure: 'U04F02F02F12F03U03',\n example: 'MU17BOMM0101101030300200000MUR'\n },\n NL: {\n length: 18,\n structure: 'U04F10',\n example: 'NL99BANK0123456789'\n },\n NO: {\n length: 15,\n structure: 'F04F06F01',\n example: 'NO9386011117947'\n },\n PK: {\n length: 24,\n structure: 'U04A16',\n example: 'PK36SCBL0000001123456702'\n },\n PL: {\n length: 28,\n structure: 'F08F16',\n example: 'PL00123456780912345678901234'\n },\n PS: {\n length: 29,\n structure: 'U04A21',\n example: 'PS92PALS000000000400123456702'\n },\n PT: {\n length: 25,\n structure: 'F04F04F11F02',\n example: 'PT50000201231234567890154'\n },\n RO: {\n length: 24,\n structure: 'U04A16',\n example: 'RO49AAAA1B31007593840000'\n },\n RS: {\n length: 22,\n structure: 'F03F13F02',\n example: 'RS35260005601001611379'\n },\n SA: {\n length: 24,\n structure: 'F02A18',\n example: 'SA0380000000608010167519'\n },\n SE: {\n length: 24,\n structure: 'F03F16F01',\n example: 'SE4550000000058398257466'\n },\n SI: {\n length: 19,\n structure: 'F05F08F02',\n example: 'SI56263300012039086'\n },\n SK: {\n length: 24,\n structure: 'F04F06F10',\n example: 'SK3112000000198742637541'\n },\n SM: {\n length: 27,\n structure: 'U01F05F05A12',\n example: 'SM86U0322509800000000270100'\n },\n ST: {\n length: 25,\n structure: 'F08F11F02',\n example: 'ST68000100010051845310112'\n },\n TL: {\n length: 23,\n structure: 'F03F14F02',\n example: 'TL380080012345678910157'\n },\n TN: {\n length: 24,\n structure: 'F02F03F13F02',\n example: 'TN5910006035183598478831'\n },\n TR: {\n length: 26,\n structure: 'F05F01A16',\n example: 'TR330006100519786457841326'\n },\n VG: {\n length: 24,\n structure: 'U04F16',\n example: 'VG96VPVG0000012345678901'\n },\n XK: {\n length: 20,\n structure: 'F04F10F02',\n example: 'XK051212012345678906'\n },\n AO: {\n length: 25,\n structure: 'F21',\n example: 'AO69123456789012345678901'\n },\n BF: {\n length: 27,\n structure: 'F23',\n example: 'BF2312345678901234567890123'\n },\n BI: {\n length: 16,\n structure: 'F12',\n example: 'BI41123456789012'\n },\n BJ: {\n length: 28,\n structure: 'F24',\n example: 'BJ39123456789012345678901234'\n },\n CI: {\n length: 28,\n structure: 'U01F23',\n example: 'CI17A12345678901234567890123'\n },\n CM: {\n length: 27,\n structure: 'F23',\n example: 'CM9012345678901234567890123'\n },\n CV: {\n length: 25,\n structure: 'F21',\n example: 'CV30123456789012345678901'\n },\n DZ: {\n length: 24,\n structure: 'F20',\n example: 'DZ8612345678901234567890'\n },\n IR: {\n length: 26,\n structure: 'F22',\n example: 'IR861234568790123456789012'\n },\n JO: {\n length: 30,\n structure: 'A04F22',\n example: 'JO15AAAA1234567890123456789012'\n },\n MG: {\n length: 27,\n structure: 'F23',\n example: 'MG1812345678901234567890123'\n },\n ML: {\n length: 28,\n structure: 'U01F23',\n example: 'ML15A12345678901234567890123'\n },\n MZ: {\n length: 25,\n structure: 'F21',\n example: 'MZ25123456789012345678901'\n },\n QA: {\n length: 29,\n structure: 'U04A21',\n example: 'QA30AAAA123456789012345678901'\n },\n SN: {\n length: 28,\n structure: 'U01F23',\n example: 'SN52A12345678901234567890123'\n },\n UA: {\n length: 29,\n structure: 'F25',\n example: 'UA511234567890123456789012345'\n }\n};\n\nexport default countries;\n"],"names":["countries","AD","length","structure","example","AE","AL","AT","AZ","BA","BE","BG","BH","BR","CH","CR","CY","CZ","DE","DK","DO","EE","ES","FI","FO","FR","GB","GE","GI","GL","GR","GT","HR","HU","IE","IL","IS","IT","KW","KZ","LB","LC","LI","LT","LU","LV","MC","MD","ME","MK","MR","MT","MU","NL","NO","PK","PL","PS","PT","RO","RS","SA","SE","SI","SK","SM","ST","TL","TN","TR","VG","XK","AO","BF","BI","BJ","CI","CM","CV","DZ","IR","JO","MG","ML","MZ","QA","SN","UA"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"specifications.js","sources":["../../../../../src/components/internal/IbanInput/specifications.ts"],"sourcesContent":["/**\n * @internal\n * IBAN Countries, length, structure and examples\n */\nconst countries: Record<string, { length: number; structure: string; example: string }> = {\n AD: {\n length: 24,\n structure: 'F04F04A12',\n example: 'AD9912345678901234567890'\n },\n AE: {\n length: 23,\n structure: 'F03F16',\n example: 'AE993331234567890123456'\n },\n AL: {\n length: 28,\n structure: 'F08A16',\n example: 'AL47212110090000000235698741'\n },\n AT: {\n length: 20,\n structure: 'F05F11',\n example: 'AT611904300234573201'\n },\n AZ: {\n length: 28,\n structure: 'U04A20',\n example: 'AZ21NABZ00000000137010001944'\n },\n BA: {\n length: 20,\n structure: 'F03F03F08F02',\n example: 'BA391290079401028494'\n },\n BE: {\n length: 16,\n structure: 'F03F07F02',\n example: 'BE68 5390 0754 7034'\n },\n BG: {\n length: 22,\n structure: 'U04F04F02A08',\n example: 'BG80BNBG96611020345678'\n },\n BH: {\n length: 22,\n structure: 'U04A14',\n example: 'BH67BMAG00001299123456'\n },\n BR: {\n length: 29,\n structure: 'F08F05F10U01A01',\n example: 'BR9700360305000010009795493P1'\n },\n CH: {\n length: 21,\n structure: 'F05A12',\n example: 'CH9300762011623852957'\n },\n CR: {\n length: 22,\n structure: 'F04F14',\n example: 'CR72012300000171549015'\n },\n CY: {\n length: 28,\n structure: 'F03F05A16',\n example: 'CY17002001280000001200527600'\n },\n CZ: {\n length: 24,\n structure: 'F04F06F10',\n example: 'CZ6508000000192000145399'\n },\n DE: {\n length: 22,\n structure: 'F08F10',\n example: 'DE00123456789012345678'\n },\n DK: {\n length: 18,\n structure: 'F04F09F01',\n example: 'DK5000400440116243'\n },\n DO: {\n length: 28,\n structure: 'U04F20',\n example: 'DO28BAGR00000001212453611324'\n },\n EE: {\n length: 20,\n structure: 'F02F02F11F01',\n example: 'EE382200221020145685'\n },\n ES: {\n length: 24,\n structure: 'F04F04F01F01F10',\n example: 'ES9121000418450200051332'\n },\n FI: {\n length: 18,\n structure: 'F06F07F01',\n example: 'FI2112345600000785'\n },\n FO: {\n length: 18,\n structure: 'F04F09F01',\n example: 'FO6264600001631634'\n },\n FR: {\n length: 27,\n structure: 'F05F05A11F02',\n example: 'FR1420041010050500013M02606'\n },\n GB: {\n length: 22,\n structure: 'U04F06F08',\n example: 'GB29NWBK60161331926819'\n },\n GE: {\n length: 22,\n structure: 'U02F16',\n example: 'GE29NB0000000101904917'\n },\n GI: {\n length: 23,\n structure: 'U04A15',\n example: 'GI75NWBK000000007099453'\n },\n GL: {\n length: 18,\n structure: 'F04F09F01',\n example: 'GL8964710001000206'\n },\n GR: {\n length: 27,\n structure: 'F03F04A16',\n example: 'GR1601101250000000012300695'\n },\n GT: {\n length: 28,\n structure: 'A04A20',\n example: 'GT82TRAJ01020000001210029690'\n },\n HR: {\n length: 21,\n structure: 'F07F10',\n example: 'HR1210010051863000160'\n },\n HU: {\n length: 28,\n structure: 'F03F04F01F15F01',\n example: 'HU42117730161111101800000000'\n },\n IE: {\n length: 22,\n structure: 'U04F06F08',\n example: 'IE29AIBK93115212345678'\n },\n IL: {\n length: 23,\n structure: 'F03F03F13',\n example: 'IL620108000000099999999'\n },\n IS: {\n length: 26,\n structure: 'F04F02F06F10',\n example: 'IS140159260076545510730339'\n },\n IT: {\n length: 27,\n structure: 'U01F05F05A12',\n example: 'IT60X0542811101000000123456'\n },\n KW: {\n length: 30,\n structure: 'U04A22',\n example: 'KW81CBKU0000000000001234560101'\n },\n KZ: {\n length: 20,\n structure: 'F03A13',\n example: 'KZ86125KZT5004100100'\n },\n LB: {\n length: 28,\n structure: 'F04A20',\n example: 'LB62099900000001001901229114'\n },\n LC: {\n length: 32,\n structure: 'U04F24',\n example: 'LC07HEMM000100010012001200013015'\n },\n LI: {\n length: 21,\n structure: 'F05A12',\n example: 'LI21088100002324013AA'\n },\n LT: {\n length: 20,\n structure: 'F05F11',\n example: 'LT121000011101001000'\n },\n LU: {\n length: 20,\n structure: 'F03A13',\n example: 'LU280019400644750000'\n },\n LV: {\n length: 21,\n structure: 'U04A13',\n example: 'LV80BANK0000435195001'\n },\n MC: {\n length: 27,\n structure: 'F05F05A11F02',\n example: 'MC5811222000010123456789030'\n },\n MD: {\n length: 24,\n structure: 'U02A18',\n example: 'MD24AG000225100013104168'\n },\n ME: {\n length: 22,\n structure: 'F03F13F02',\n example: 'ME25505000012345678951'\n },\n MK: {\n length: 19,\n structure: 'F03A10F02',\n example: 'MK07250120000058984'\n },\n MR: {\n length: 27,\n structure: 'F05F05F11F02',\n example: 'MR1300020001010000123456753'\n },\n MT: {\n length: 31,\n structure: 'U04F05A18',\n example: 'MT84MALT011000012345MTLCAST001S'\n },\n MU: {\n length: 30,\n structure: 'U04F02F02F12F03U03',\n example: 'MU17BOMM0101101030300200000MUR'\n },\n NL: {\n length: 18,\n structure: 'U04F10',\n example: 'NL99BANK0123456789'\n },\n NO: {\n length: 15,\n structure: 'F04F06F01',\n example: 'NO9386011117947'\n },\n PK: {\n length: 24,\n structure: 'U04A16',\n example: 'PK36SCBL0000001123456702'\n },\n PL: {\n length: 28,\n structure: 'F08F16',\n example: 'PL00123456780912345678901234'\n },\n PS: {\n length: 29,\n structure: 'U04A21',\n example: 'PS92PALS000000000400123456702'\n },\n PT: {\n length: 25,\n structure: 'F04F04F11F02',\n example: 'PT50000201231234567890154'\n },\n RO: {\n length: 24,\n structure: 'U04A16',\n example: 'RO49AAAA1B31007593840000'\n },\n RS: {\n length: 22,\n structure: 'F03F13F02',\n example: 'RS35260005601001611379'\n },\n SA: {\n length: 24,\n structure: 'F02A18',\n example: 'SA0380000000608010167519'\n },\n SE: {\n length: 24,\n structure: 'F03F16F01',\n example: 'SE4550000000058398257466'\n },\n SI: {\n length: 19,\n structure: 'F05F08F02',\n example: 'SI56263300012039086'\n },\n SK: {\n length: 24,\n structure: 'F04F06F10',\n example: 'SK3112000000198742637541'\n },\n SM: {\n length: 27,\n structure: 'U01F05F05A12',\n example: 'SM86U0322509800000000270100'\n },\n ST: {\n length: 25,\n structure: 'F08F11F02',\n example: 'ST68000100010051845310112'\n },\n TL: {\n length: 23,\n structure: 'F03F14F02',\n example: 'TL380080012345678910157'\n },\n TN: {\n length: 24,\n structure: 'F02F03F13F02',\n example: 'TN5910006035183598478831'\n },\n TR: {\n length: 26,\n structure: 'F05F01A16',\n example: 'TR330006100519786457841326'\n },\n VG: {\n length: 24,\n structure: 'U04F16',\n example: 'VG96VPVG0000012345678901'\n },\n XK: {\n length: 20,\n structure: 'F04F10F02',\n example: 'XK051212012345678906'\n },\n AO: {\n length: 25,\n structure: 'F21',\n example: 'AO69123456789012345678901'\n },\n BF: {\n length: 27,\n structure: 'F23',\n example: 'BF2312345678901234567890123'\n },\n BI: {\n length: 16,\n structure: 'F12',\n example: 'BI41123456789012'\n },\n BJ: {\n length: 28,\n structure: 'F24',\n example: 'BJ39123456789012345678901234'\n },\n CI: {\n length: 28,\n structure: 'U01F23',\n example: 'CI17A12345678901234567890123'\n },\n CM: {\n length: 27,\n structure: 'F23',\n example: 'CM9012345678901234567890123'\n },\n CV: {\n length: 25,\n structure: 'F21',\n example: 'CV30123456789012345678901'\n },\n DZ: {\n length: 24,\n structure: 'F20',\n example: 'DZ8612345678901234567890'\n },\n IR: {\n length: 26,\n structure: 'F22',\n example: 'IR861234568790123456789012'\n },\n JO: {\n length: 30,\n structure: 'A04F22',\n example: 'JO15AAAA1234567890123456789012'\n },\n MG: {\n length: 27,\n structure: 'F23',\n example: 'MG1812345678901234567890123'\n },\n ML: {\n length: 28,\n structure: 'U01F23',\n example: 'ML15A12345678901234567890123'\n },\n MZ: {\n length: 25,\n structure: 'F21',\n example: 'MZ25123456789012345678901'\n },\n QA: {\n length: 29,\n structure: 'U04A21',\n example: 'QA30AAAA123456789012345678901'\n },\n SN: {\n length: 28,\n structure: 'U01F23',\n example: 'SN52A12345678901234567890123'\n },\n UA: {\n length: 29,\n structure: 'F25',\n example: 'UA511234567890123456789012345'\n }\n};\n\nexport default countries;\n"],"names":["countries","AD","length","structure","example","AE","AL","AT","AZ","BA","BE","BG","BH","BR","CH","CR","CY","CZ","DE","DK","DO","EE","ES","FI","FO","FR","GB","GE","GI","GL","GR","GT","HR","HU","IE","IL","IS","IT","KW","KZ","LB","LC","LI","LT","LU","LV","MC","MD","ME","MK","MR","MT","MU","NL","NO","PK","PL","PS","PT","RO","RS","SA","SE","SI","SK","SM","ST","TL","TN","TR","VG","XK","AO","BF","BI","BJ","CI","CM","CV","DZ","IR","JO","MG","ML","MZ","QA","SN","UA"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./specifications.js";const r=(r,t)=>{if(null===t||!e[t]||!e[t].structure)return!1;const s=e[t].structure.match(/(.{3})/g).map(e=>{const r=e.slice(0,1),t=parseInt(e.slice(1),10);let s;switch(r){case"A":s="0-9A-Za-z";break;case"B":s="0-9A-Z";break;case"C":s="A-Za-z";break;case"F":s="0-9";break;case"L":s="a-z";break;case"U":s="A-Z";break;case"W":s="0-9a-z"}return`([${s}]{${t}})`});return new RegExp(`^${
|
|
1
|
+
import e from"./specifications.js";const r=(r,t)=>{var s;if(null===t||!e[t]||!e[t].structure)return!1;const a=(null!==(s=e[t].structure.match(/(.{3})/g))&&void 0!==s?s:[]).map(e=>{const r=e.slice(0,1),t=parseInt(e.slice(1),10);let s;switch(r){case"A":s="0-9A-Za-z";break;case"B":s="0-9A-Z";break;case"C":s="A-Za-z";break;case"F":s="0-9";break;case"L":s="a-z";break;case"U":s="A-Z";break;case"W":s="0-9a-z"}return`([${s}]{${t}})`});return new RegExp(`^${a.join("")}$`)},t=e=>e.replace(/\W/gi,"").replace(/(.{4})(?!$)/g,"$1 ").trim(),s=e=>e.replace(/[^a-zA-Z0-9]/g,"").toUpperCase(),a=(e,t)=>r(0,t),c=e=>{let r=e;const t="A".charCodeAt(0),s="Z".charCodeAt(0);return r=r.toUpperCase(),r=r.substr(4)+r.substr(0,4),r.split("").map(e=>{const r=e.charCodeAt(0);if(r>=t&&r<=s){return r-t+10}return e}).join("")},n=e=>{let r,t=e;for(;t.length>2;)r=t.slice(0,9),t=parseInt(r,10)%97+t.slice(r.length);return parseInt(t,10)%97},l=r=>!(!r||!e[r])&&e[r],i=(e,r,t)=>{if(0===e||!r.length)return 0;const s=r.length-t.length,a=s>0,c=(e,r)=>/\s/.test(e.charAt(r)),n=e-s;return a&&(c(r,n+1)||c(r,n))?e+1:!a&&c(r,e-1)?e-1:e},o=e=>e.slice(0,2);export{s as electronicFormat,t as formatIban,o as getCountryCode,l as getIbanCountrySpecification,i as getNextCursorPosition,c as iso13616Prepare,n as iso7064Mod97_10,r as parseStructure,a as regex};
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../src/components/internal/IbanInput/utils.ts"],"sourcesContent":["import countries from './specifications';\n\n/**\n * Parse the BBAN structure used to configure each IBAN __specification and returns a matching regular expression.\n * A structure is composed of blocks of 3 characters (one letter and 2 digits). Each block represents\n * a logical group in the typical representation of the BBAN. For each group, the letter indicates which characters\n * are allowed in this group and the following 2-digits number tells the length of the group.\n *\n * @param structure - the structure to parse\n * @param countryCode - the countryCode to check format against\n *\n * @internal\n */\nexport const parseStructure = (structure, countryCode) => {\n if (countryCode === null || !countries[countryCode] || !countries[countryCode].structure) {\n return false;\n }\n\n const passedStructure = countries[countryCode].structure;\n\n // split in blocks of 3 chars\n const regex = passedStructure.match(/(.{3})/g).map(block => {\n // parse each structure block (1-char + 2-digits)\n const pattern = block.slice(0, 1);\n const repeats = parseInt(block.slice(1), 10);\n let format;\n\n switch (pattern) {\n case 'A':\n format = '0-9A-Za-z';\n break;\n case 'B':\n format = '0-9A-Z';\n break;\n case 'C':\n format = 'A-Za-z';\n break;\n case 'F':\n format = '0-9';\n break;\n case 'L':\n format = 'a-z';\n break;\n case 'U':\n format = 'A-Z';\n break;\n case 'W':\n format = '0-9a-z';\n break;\n default:\n break;\n }\n\n return `([${format}]{${repeats}})`;\n });\n\n return new RegExp(`^${regex.join('')}$`);\n};\n\n/**\n * @internal\n */\nexport const formatIban = iban =>\n iban\n .replace(/\\W/gi, '')\n .replace(/(.{4})(?!$)/g, '$1 ')\n .trim();\n\nexport type ElectronicFormat = string;\n/**\n * Returns any non alphanumeric characters and uppercases them\n *\n * @internal\n */\nexport const electronicFormat = (iban: string): ElectronicFormat => {\n const NON_ALPHANUM = /[^a-zA-Z0-9]/g;\n return iban.replace(NON_ALPHANUM, '').toUpperCase();\n};\n\n/**\n * Lazy-loaded regex (parse the structure and construct the regular expression the first time we need it for validation)\n *\n * @internal\n */\nexport const regex = (iban, countryCode) => parseStructure(iban, countryCode);\n\n/**\n * Prepare an IBAN for mod 97 computation by moving the first 4 chars to the end and transforming the letters to\n * numbers (A = 10, B = 11, ..., Z = 35), as specified in ISO13616.\n * @param ibanInput - The IBAN value\n * @returns The prepared IBAN\n *\n * @internal\n */\nexport const iso13616Prepare = ibanInput => {\n let iban = ibanInput;\n const A = 'A'.charCodeAt(0);\n const Z = 'Z'.charCodeAt(0);\n iban = iban.toUpperCase();\n iban = iban.substr(4) + iban.substr(0, 4);\n\n return iban\n .split('')\n .map(n => {\n const code = n.charCodeAt(0);\n\n if (code >= A && code <= Z) {\n // A = 10, B = 11, ... Z = 35\n const codeA = code - A;\n return codeA + 10;\n }\n\n return n;\n })\n .join('');\n};\n\n/**\n * Calculates the MOD 97 10 of the passed IBAN as specified in ISO7064.\n *\n * @param iban -\n *\n * @internal\n */\nexport const iso7064Mod97_10 = iban => {\n let remainder = iban;\n let block;\n\n while (remainder.length > 2) {\n block = remainder.slice(0, 9);\n remainder = (parseInt(block, 10) % 97) + remainder.slice(block.length);\n }\n\n return parseInt(remainder, 10) % 97;\n};\n\n/**\n * @param countryCode -\n * @returns Example of IBAN Number\n */\nexport const getIbanPlaceHolder = (countryCode = null) => {\n if (countryCode && countries[countryCode] && countries[countryCode].example) {\n return formatIban(countries[countryCode].example);\n }\n\n return 'AB00 1234 5678 9012 3456 7890';\n};\n\nexport const getIbanCountrySpecification = countryCode => {\n if (countryCode && countries[countryCode]) {\n return countries[countryCode];\n }\n\n return false;\n};\n\n/**\n * @param cursor -\n * @param iban -\n * @param previousIban -\n * @returns new cursor position\n */\nexport const getNextCursorPosition = (cursor, iban, previousIban) => {\n if (cursor === 0 || !iban.length) return 0;\n\n // This tells us how long the edit is. If user modified input from `(2__)` to `(243__)`,\n // we know the user in this instance pasted two characters\n const editLength = iban.length - previousIban.length;\n const isAddition = editLength > 0;\n const isMaskChar = (ibanValue, position) => /\\s/.test(ibanValue.charAt(position));\n const initialCursor = cursor - editLength;\n\n // is adding text, check calculate if there was a mask element after the initial cursor, then move cursor forward\n // example: NL13 ABNA| 1234 5678 9 => NL13 ABNA 0|123 4567 89\n if (isAddition && (isMaskChar(iban, initialCursor + 1) || isMaskChar(iban, initialCursor))) {\n return cursor + 1;\n }\n\n // is removing text, check if the previous is a mask character, then move cursor back\n // example: NL13 ABNA 0|123 4567 89 => NL13 ABNA| 1234 5678 9\n if (!isAddition && isMaskChar(iban, cursor - 1)) {\n return cursor - 1;\n }\n\n return cursor;\n};\n\n/**\n * @param electronicFormatIban -\n * @returns countryCode string\n */\nexport const getCountryCode = (electronicFormatIban: ElectronicFormat) => electronicFormatIban.slice(0, 2);\n"],"names":["parseStructure","structure","countryCode","countries","regex","match","map","block","pattern","slice","repeats","parseInt","format","RegExp","join","formatIban","iban","replace","trim","electronicFormat","toUpperCase","iso13616Prepare","ibanInput","A","charCodeAt","Z","substr","split","n","code","iso7064Mod97_10","remainder","length","getIbanCountrySpecification","getNextCursorPosition","cursor","previousIban","editLength","isAddition","isMaskChar","ibanValue","position","test","charAt","initialCursor","getCountryCode","electronicFormatIban"],"mappings":"mCAaO,MAAMA,EAAiB,CAACC,EAAWC,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../src/components/internal/IbanInput/utils.ts"],"sourcesContent":["import countries from './specifications';\n\n/**\n * Parse the BBAN structure used to configure each IBAN __specification and returns a matching regular expression.\n * A structure is composed of blocks of 3 characters (one letter and 2 digits). Each block represents\n * a logical group in the typical representation of the BBAN. For each group, the letter indicates which characters\n * are allowed in this group and the following 2-digits number tells the length of the group.\n *\n * @param structure - the structure to parse\n * @param countryCode - the countryCode to check format against\n *\n * @internal\n */\nexport const parseStructure = (structure, countryCode) => {\n if (countryCode === null || !countries[countryCode] || !countries[countryCode].structure) {\n return false;\n }\n\n const passedStructure = countries[countryCode].structure;\n\n // split in blocks of 3 chars\n const regex = (passedStructure.match(/(.{3})/g) ?? []).map(block => {\n // parse each structure block (1-char + 2-digits)\n const pattern = block.slice(0, 1);\n const repeats = parseInt(block.slice(1), 10);\n let format;\n\n switch (pattern) {\n case 'A':\n format = '0-9A-Za-z';\n break;\n case 'B':\n format = '0-9A-Z';\n break;\n case 'C':\n format = 'A-Za-z';\n break;\n case 'F':\n format = '0-9';\n break;\n case 'L':\n format = 'a-z';\n break;\n case 'U':\n format = 'A-Z';\n break;\n case 'W':\n format = '0-9a-z';\n break;\n default:\n break;\n }\n\n return `([${format}]{${repeats}})`;\n });\n\n return new RegExp(`^${regex.join('')}$`);\n};\n\n/**\n * @internal\n */\nexport const formatIban = iban =>\n iban\n .replace(/\\W/gi, '')\n .replace(/(.{4})(?!$)/g, '$1 ')\n .trim();\n\nexport type ElectronicFormat = string;\n/**\n * Returns any non alphanumeric characters and uppercases them\n *\n * @internal\n */\nexport const electronicFormat = (iban: string): ElectronicFormat => {\n const NON_ALPHANUM = /[^a-zA-Z0-9]/g;\n return iban.replace(NON_ALPHANUM, '').toUpperCase();\n};\n\n/**\n * Lazy-loaded regex (parse the structure and construct the regular expression the first time we need it for validation)\n *\n * @internal\n */\nexport const regex = (iban, countryCode) => parseStructure(iban, countryCode);\n\n/**\n * Prepare an IBAN for mod 97 computation by moving the first 4 chars to the end and transforming the letters to\n * numbers (A = 10, B = 11, ..., Z = 35), as specified in ISO13616.\n * @param ibanInput - The IBAN value\n * @returns The prepared IBAN\n *\n * @internal\n */\nexport const iso13616Prepare = ibanInput => {\n let iban = ibanInput;\n const A = 'A'.charCodeAt(0);\n const Z = 'Z'.charCodeAt(0);\n iban = iban.toUpperCase();\n iban = iban.substr(4) + iban.substr(0, 4);\n\n return iban\n .split('')\n .map(n => {\n const code = n.charCodeAt(0);\n\n if (code >= A && code <= Z) {\n // A = 10, B = 11, ... Z = 35\n const codeA = code - A;\n return codeA + 10;\n }\n\n return n;\n })\n .join('');\n};\n\n/**\n * Calculates the MOD 97 10 of the passed IBAN as specified in ISO7064.\n *\n * @param iban -\n *\n * @internal\n */\nexport const iso7064Mod97_10 = iban => {\n let remainder = iban;\n let block;\n\n while (remainder.length > 2) {\n block = remainder.slice(0, 9);\n remainder = (parseInt(block, 10) % 97) + remainder.slice(block.length);\n }\n\n return parseInt(remainder, 10) % 97;\n};\n\n/**\n * @param countryCode -\n * @returns Example of IBAN Number\n */\nexport const getIbanPlaceHolder = (countryCode: string | null = null) => {\n if (countryCode && countries[countryCode] && countries[countryCode].example) {\n return formatIban(countries[countryCode].example);\n }\n\n return 'AB00 1234 5678 9012 3456 7890';\n};\n\nexport const getIbanCountrySpecification = countryCode => {\n if (countryCode && countries[countryCode]) {\n return countries[countryCode];\n }\n\n return false;\n};\n\n/**\n * @param cursor -\n * @param iban -\n * @param previousIban -\n * @returns new cursor position\n */\nexport const getNextCursorPosition = (cursor, iban, previousIban) => {\n if (cursor === 0 || !iban.length) return 0;\n\n // This tells us how long the edit is. If user modified input from `(2__)` to `(243__)`,\n // we know the user in this instance pasted two characters\n const editLength = iban.length - previousIban.length;\n const isAddition = editLength > 0;\n const isMaskChar = (ibanValue, position) => /\\s/.test(ibanValue.charAt(position));\n const initialCursor = cursor - editLength;\n\n // is adding text, check calculate if there was a mask element after the initial cursor, then move cursor forward\n // example: NL13 ABNA| 1234 5678 9 => NL13 ABNA 0|123 4567 89\n if (isAddition && (isMaskChar(iban, initialCursor + 1) || isMaskChar(iban, initialCursor))) {\n return cursor + 1;\n }\n\n // is removing text, check if the previous is a mask character, then move cursor back\n // example: NL13 ABNA 0|123 4567 89 => NL13 ABNA| 1234 5678 9\n if (!isAddition && isMaskChar(iban, cursor - 1)) {\n return cursor - 1;\n }\n\n return cursor;\n};\n\n/**\n * @param electronicFormatIban -\n * @returns countryCode string\n */\nexport const getCountryCode = (electronicFormatIban: ElectronicFormat) => electronicFormatIban.slice(0, 2);\n"],"names":["parseStructure","structure","countryCode","passedStructure","countries","regex","match","map","block","pattern","slice","repeats","parseInt","format","RegExp","join","formatIban","iban","replace","trim","electronicFormat","toUpperCase","iso13616Prepare","ibanInput","A","charCodeAt","Z","substr","split","n","code","iso7064Mod97_10","remainder","length","getIbanCountrySpecification","getNextCursorPosition","cursor","previousIban","editLength","isAddition","isMaskChar","ibanValue","position","test","charAt","initialCursor","getCountryCode","electronicFormatIban"],"mappings":"mCAaO,MAAMA,EAAiB,CAACC,EAAWC,KAQvBC,IAAAA,EAPf,GAAoB,OAAhBD,IAAyBE,EAAUF,KAAiBE,EAAUF,GAAaD,UAC3E,OAAO,EAGX,MAGMI,GAA+B,QAAtBF,EAHSC,EAAUF,GAAaD,UAGhBK,MAAM,kBAAtBH,IAAAA,EAAAA,EAAoC,IAAII,IAAIC,IAEvD,MAAMC,EAAUD,EAAME,MAAM,EAAG,GACzBC,EAAUC,SAASJ,EAAME,MAAM,GAAI,IACzC,IAAIG,EAEJ,OAAQJ,GACJ,IAAK,IACDI,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,MACT,MACJ,IAAK,IACDA,EAAS,MACT,MACJ,IAAK,IACDA,EAAS,MACT,MACJ,IAAK,IACDA,EAAS,SAMjB,MAAO,KAAKA,MAAWF,QAG3B,OAAO,IAAIG,OAAO,IAAIT,EAAMU,KAAK,SAMxBC,EAAaC,GACtBA,EACKC,QAAQ,OAAQ,IAChBA,QAAQ,eAAgB,OACxBC,OAQIC,EAAoBH,GAEtBA,EAAKC,QADS,gBACa,IAAIG,cAQ7BhB,EAAQ,CAACY,EAAMf,IAAgBF,EAAeiB,EAAMf,GAUpDoB,EAAkBC,IAC3B,IAAIN,EAAOM,EACX,MAAMC,EAAI,IAAIC,WAAW,GACnBC,EAAI,IAAID,WAAW,GAIzB,OAHAR,EAAOA,EAAKI,cACZJ,EAAOA,EAAKU,OAAO,GAAKV,EAAKU,OAAO,EAAG,GAEhCV,EACFW,MAAM,IACNrB,IAAIsB,IACD,MAAMC,EAAOD,EAAEJ,WAAW,GAE1B,GAAIK,GAAQN,GAAKM,GAAQJ,EAAG,CAGxB,OADcI,EAAON,EACN,EACnB,CAEA,OAAOK,IAEVd,KAAK,KAUDgB,EAAkBd,IAC3B,IACIT,EADAwB,EAAYf,EAGhB,KAAOe,EAAUC,OAAS,GACtBzB,EAAQwB,EAAUtB,MAAM,EAAG,GAC3BsB,EAAapB,SAASJ,EAAO,IAAM,GAAMwB,EAAUtB,MAAMF,EAAMyB,QAGnE,OAAOrB,SAASoB,EAAW,IAAM,IAexBE,EAA8BhC,MACnCA,IAAeE,EAAUF,KAClBE,EAAUF,GAYZiC,EAAwB,CAACC,EAAQnB,EAAMoB,KAChD,GAAe,IAAXD,IAAiBnB,EAAKgB,OAAQ,OAAO,EAIzC,MAAMK,EAAarB,EAAKgB,OAASI,EAAaJ,OACxCM,EAAaD,EAAa,EAC1BE,EAAa,CAACC,EAAWC,IAAa,KAAKC,KAAKF,EAAUG,OAAOF,IACjEG,EAAgBT,EAASE,EAI/B,OAAIC,IAAeC,EAAWvB,EAAM4B,EAAgB,IAAML,EAAWvB,EAAM4B,IAChET,EAAS,GAKfG,GAAcC,EAAWvB,EAAMmB,EAAS,GAClCA,EAAS,EAGbA,GAOEU,EAAkBC,GAA2CA,EAAqBrC,MAAM,EAAG"}
|