@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.
Files changed (492) hide show
  1. package/dist/cjs/adyen.css +20 -22
  2. package/dist/cjs/adyen.css.map +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +122 -581
  6. package/dist/es/adyen.css +20 -22
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
  9. package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
  10. package/dist/es/components/AmazonPay/components/AmazonPayButton.js +1 -1
  11. package/dist/es/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
  12. package/dist/es/components/AmazonPay/components/AmazonPayComponent.js +1 -1
  13. package/dist/es/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  14. package/dist/es/components/AmazonPay/components/OrderButton.js +1 -1
  15. package/dist/es/components/AmazonPay/components/OrderButton.js.map +1 -1
  16. package/dist/es/components/AmazonPay/components/SignOutButton.js +1 -1
  17. package/dist/es/components/AmazonPay/components/SignOutButton.js.map +1 -1
  18. package/dist/es/components/AmazonPay/utils.js +1 -1
  19. package/dist/es/components/AmazonPay/utils.js.map +1 -1
  20. package/dist/es/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
  21. package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
  22. package/dist/es/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
  23. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  24. package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
  25. package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
  26. package/dist/es/components/CashAppPay/components/CashAppComponent.js +1 -1
  27. package/dist/es/components/CashAppPay/components/CashAppComponent.js.map +1 -1
  28. package/dist/es/components/CashAppPay/services/CashAppService.js +1 -1
  29. package/dist/es/components/CashAppPay/services/CashAppService.js.map +1 -1
  30. package/dist/es/components/CashAppPay/services/types.js.map +1 -1
  31. package/dist/es/components/CustomCard/CustomCard.js +1 -1
  32. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  33. package/dist/es/components/Donation/components/DonationComponent.js.map +1 -1
  34. package/dist/es/components/Donation/components/FixedAmounts.js.map +1 -1
  35. package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
  36. package/dist/es/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
  37. package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
  38. package/dist/es/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js.map +1 -1
  39. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  40. package/dist/es/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  41. package/dist/es/components/Giftcard/Giftcard.js +1 -1
  42. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  43. package/dist/es/components/Giftcard/components/GiftcardComponent.js +1 -1
  44. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  45. package/dist/es/components/Giftcard/types.js +2 -0
  46. package/dist/es/components/Giftcard/types.js.map +1 -0
  47. package/dist/es/components/Giftcard/utils.js +2 -0
  48. package/dist/es/components/Giftcard/utils.js.map +1 -0
  49. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  50. package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
  51. package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
  52. package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
  53. package/dist/es/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
  54. package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
  55. package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
  56. package/dist/es/components/PayPal/Paypal.js +1 -1
  57. package/dist/es/components/PayPal/Paypal.js.map +1 -1
  58. package/dist/es/components/PayPal/components/PaypalButtons.js +1 -1
  59. package/dist/es/components/PayPal/components/PaypalButtons.js.map +1 -1
  60. package/dist/es/components/PayPal/components/PaypalComponent.js +1 -1
  61. package/dist/es/components/PayPal/components/PaypalComponent.js.map +1 -1
  62. package/dist/es/components/PayPal/config.js +1 -1
  63. package/dist/es/components/PayPal/config.js.map +1 -1
  64. package/dist/es/components/PayPal/utils/get-paypal-locale.js +1 -1
  65. package/dist/es/components/PayPal/utils/get-paypal-locale.js.map +1 -1
  66. package/dist/es/components/PayPal/utils/get-paypal-settings.js +1 -1
  67. package/dist/es/components/PayPal/utils/get-paypal-settings.js.map +1 -1
  68. package/dist/es/components/PayPal/utils/get-paypal-url.js +1 -1
  69. package/dist/es/components/PayPal/utils/get-paypal-url.js.map +1 -1
  70. package/dist/es/components/PayPalFastlane/Fastlane.js +1 -1
  71. package/dist/es/components/PayPalFastlane/Fastlane.js.map +1 -1
  72. package/dist/es/components/PayPalFastlane/FastlaneSDK.js +1 -1
  73. package/dist/es/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
  74. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  75. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  76. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  77. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  78. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  79. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  80. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
  81. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  82. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  83. package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
  84. package/dist/es/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
  85. package/dist/es/components/ThreeDS2/components/utils.js +1 -1
  86. package/dist/es/components/ThreeDS2/components/utils.js.map +1 -1
  87. package/dist/es/components/components-name-map.js +1 -1
  88. package/dist/es/components/components-name-map.js.map +1 -1
  89. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  90. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  91. package/dist/es/components/index.js +1 -1
  92. package/dist/es/components/internal/Address/Address.js +1 -1
  93. package/dist/es/components/internal/Address/Address.js.map +1 -1
  94. package/dist/es/components/internal/Address/Specifications.js +1 -1
  95. package/dist/es/components/internal/Address/Specifications.js.map +1 -1
  96. package/dist/es/components/internal/Address/components/AddressSearch.js +1 -1
  97. package/dist/es/components/internal/Address/components/AddressSearch.js.map +1 -1
  98. package/dist/es/components/internal/Address/components/CountryField.js +1 -1
  99. package/dist/es/components/internal/Address/components/CountryField.js.map +1 -1
  100. package/dist/es/components/internal/Address/components/FieldContainer.js +1 -1
  101. package/dist/es/components/internal/Address/components/FieldContainer.js.map +1 -1
  102. package/dist/es/components/internal/Address/components/StateField.js +1 -1
  103. package/dist/es/components/internal/Address/components/StateField.js.map +1 -1
  104. package/dist/es/components/internal/Address/constants.js.map +1 -1
  105. package/dist/es/components/internal/Address/utils.js.map +1 -1
  106. package/dist/es/components/internal/Address/validate.formats.js +1 -1
  107. package/dist/es/components/internal/Address/validate.formats.js.map +1 -1
  108. package/dist/es/components/internal/BaseElement/BaseElement.js +1 -1
  109. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  110. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
  111. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  112. package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
  113. package/dist/es/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
  114. package/dist/es/components/internal/CompanyDetails/CompanyDetails.js +1 -1
  115. package/dist/es/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
  116. package/dist/es/components/internal/CompanyDetails/validate.js +1 -1
  117. package/dist/es/components/internal/CompanyDetails/validate.js.map +1 -1
  118. package/dist/es/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
  119. package/dist/es/components/internal/FormFields/Field/Field.js +1 -1
  120. package/dist/es/components/internal/FormFields/Field/Field.js.map +1 -1
  121. package/dist/es/components/internal/FormFields/InputBase.js +1 -1
  122. package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
  123. package/dist/es/components/internal/FormFields/InputDate/InputDate.js +1 -1
  124. package/dist/es/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
  125. package/dist/es/components/internal/FormFields/InputDate/utils.js.map +1 -1
  126. package/dist/es/components/internal/FormFields/Select/Select.js +1 -1
  127. package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
  128. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  129. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  130. package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
  131. package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
  132. package/dist/es/components/internal/IbanInput/specifications.js.map +1 -1
  133. package/dist/es/components/internal/IbanInput/utils.js +1 -1
  134. package/dist/es/components/internal/IbanInput/utils.js.map +1 -1
  135. package/dist/es/components/internal/PayButton/utils.js.map +1 -1
  136. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  137. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  138. package/dist/es/components/internal/PersonalDetails/validate.js +1 -1
  139. package/dist/es/components/internal/PersonalDetails/validate.js.map +1 -1
  140. package/dist/es/components/internal/PhoneInput/PhoneInputFields.js +1 -1
  141. package/dist/es/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
  142. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  143. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  144. package/dist/es/components/internal/QRLoader/QRLoader.js.map +1 -1
  145. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
  146. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
  147. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  148. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  149. package/dist/es/components/internal/UIElement/utils.js.map +1 -1
  150. package/dist/es/components/tx-variants.js +1 -1
  151. package/dist/es/components/tx-variants.js.map +1 -1
  152. package/dist/es/core/Services/http.js.map +1 -1
  153. package/dist/es/core/config.js +1 -1
  154. package/dist/es/core/config.js.map +1 -1
  155. package/dist/es/core/core.js +1 -1
  156. package/dist/es/core/core.js.map +1 -1
  157. package/dist/es/core/utils.js +1 -1
  158. package/dist/es/core/utils.js.map +1 -1
  159. package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
  160. package/dist/es/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
  161. package/dist/es/index.d.ts +122 -581
  162. package/dist/es/index.js +1 -1
  163. package/dist/es/language/Language.js +1 -1
  164. package/dist/es/language/Language.js.map +1 -1
  165. package/dist/es/language/utils.js +1 -1
  166. package/dist/es/language/utils.js.map +1 -1
  167. package/dist/es/utils/Script.js.map +1 -1
  168. package/dist/es/utils/Validator/ValidationRuleResult.js.map +1 -1
  169. package/dist/es/utils/Validator/Validator.js +1 -1
  170. package/dist/es/utils/Validator/Validator.js.map +1 -1
  171. package/dist/es/utils/Validator/defaultRules.js +1 -1
  172. package/dist/es/utils/Validator/defaultRules.js.map +1 -1
  173. package/dist/es/utils/amount-util.js +1 -1
  174. package/dist/es/utils/amount-util.js.map +1 -1
  175. package/dist/es/utils/browserInfo.js.map +1 -1
  176. package/dist/es/utils/createSdkData.js +1 -1
  177. package/dist/es/utils/createSdkData.js.map +1 -1
  178. package/dist/es/utils/get-issuer-image.js +1 -1
  179. package/dist/es/utils/get-issuer-image.js.map +1 -1
  180. package/dist/es/utils/get-process-message-handler.js.map +1 -1
  181. package/dist/es/utils/getConsentUrl.js +1 -1
  182. package/dist/es/utils/getConsentUrl.js.map +1 -1
  183. package/dist/es/utils/getErrorMessage.js.map +1 -1
  184. package/dist/es/utils/getOrigin.js.map +1 -1
  185. package/dist/es/utils/isValidURL.js +1 -1
  186. package/dist/es/utils/isValidURL.js.map +1 -1
  187. package/dist/es/utils/promiseTimeout.js.map +1 -1
  188. package/dist/es/utils/useAutoFocus.js.map +1 -1
  189. package/dist/es/utils/validator-utils.js +1 -1
  190. package/dist/es/utils/validator-utils.js.map +1 -1
  191. package/dist/es-legacy/adyen.css +20 -22
  192. package/dist/es-legacy/adyen.css.map +1 -1
  193. package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
  194. package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
  195. package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js +1 -1
  196. package/dist/es-legacy/components/AmazonPay/components/AmazonPayButton.js.map +1 -1
  197. package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js +1 -1
  198. package/dist/es-legacy/components/AmazonPay/components/AmazonPayComponent.js.map +1 -1
  199. package/dist/es-legacy/components/AmazonPay/components/OrderButton.js +1 -1
  200. package/dist/es-legacy/components/AmazonPay/components/OrderButton.js.map +1 -1
  201. package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js +1 -1
  202. package/dist/es-legacy/components/AmazonPay/components/SignOutButton.js.map +1 -1
  203. package/dist/es-legacy/components/AmazonPay/utils.js +1 -1
  204. package/dist/es-legacy/components/AmazonPay/utils.js.map +1 -1
  205. package/dist/es-legacy/components/ApplePay/services/ApplePaySdkLoader.js.map +1 -1
  206. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js +1 -1
  207. package/dist/es-legacy/components/Card/components/CardInput/components/Installments/Installments.js.map +1 -1
  208. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  209. package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
  210. package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
  211. package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js +1 -1
  212. package/dist/es-legacy/components/CashAppPay/components/CashAppComponent.js.map +1 -1
  213. package/dist/es-legacy/components/CashAppPay/services/CashAppService.js +1 -1
  214. package/dist/es-legacy/components/CashAppPay/services/CashAppService.js.map +1 -1
  215. package/dist/es-legacy/components/CashAppPay/services/types.js.map +1 -1
  216. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  217. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  218. package/dist/es-legacy/components/Donation/components/DonationComponent.js.map +1 -1
  219. package/dist/es-legacy/components/Donation/components/FixedAmounts.js.map +1 -1
  220. package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js +1 -1
  221. package/dist/es-legacy/components/Dragonpay/components/DragonpayVoucherResult/DragonpayVoucherResult.js.map +1 -1
  222. package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js +1 -1
  223. package/dist/es-legacy/components/Dropin/components/PaymentMethod/DisableOneClickConfirmation.js.map +1 -1
  224. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js +1 -1
  225. package/dist/es-legacy/components/Dropin/components/PaymentMethod/PaymentMethodItem/PaymentMethodItem.js.map +1 -1
  226. package/dist/es-legacy/components/Giftcard/Giftcard.js +1 -1
  227. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  228. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js +1 -1
  229. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  230. package/dist/es-legacy/components/Giftcard/types.js +2 -0
  231. package/dist/es-legacy/components/Giftcard/types.js.map +1 -0
  232. package/dist/es-legacy/components/Giftcard/utils.js +2 -0
  233. package/dist/es-legacy/components/Giftcard/utils.js.map +1 -0
  234. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  235. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
  236. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
  237. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js +1 -1
  238. package/dist/es-legacy/components/PayByBankPix/components/Enrollment/useIssuerWithLogo.js.map +1 -1
  239. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
  240. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
  241. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  242. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  243. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js +1 -1
  244. package/dist/es-legacy/components/PayPal/components/PaypalButtons.js.map +1 -1
  245. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js +1 -1
  246. package/dist/es-legacy/components/PayPal/components/PaypalComponent.js.map +1 -1
  247. package/dist/es-legacy/components/PayPal/config.js +1 -1
  248. package/dist/es-legacy/components/PayPal/config.js.map +1 -1
  249. package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js +1 -1
  250. package/dist/es-legacy/components/PayPal/utils/get-paypal-locale.js.map +1 -1
  251. package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js +1 -1
  252. package/dist/es-legacy/components/PayPal/utils/get-paypal-settings.js.map +1 -1
  253. package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js +1 -1
  254. package/dist/es-legacy/components/PayPal/utils/get-paypal-url.js.map +1 -1
  255. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js +1 -1
  256. package/dist/es-legacy/components/PayPalFastlane/Fastlane.js.map +1 -1
  257. package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js +1 -1
  258. package/dist/es-legacy/components/PayPalFastlane/FastlaneSDK.js.map +1 -1
  259. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  260. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js.map +1 -1
  261. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  262. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  263. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  264. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  265. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js.map +1 -1
  266. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  267. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  268. package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js +1 -1
  269. package/dist/es-legacy/components/ThreeDS2/components/Form/ThreeDS2Form.js.map +1 -1
  270. package/dist/es-legacy/components/ThreeDS2/components/utils.js +1 -1
  271. package/dist/es-legacy/components/ThreeDS2/components/utils.js.map +1 -1
  272. package/dist/es-legacy/components/components-name-map.js +1 -1
  273. package/dist/es-legacy/components/components-name-map.js.map +1 -1
  274. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  275. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  276. package/dist/es-legacy/components/index.js +1 -1
  277. package/dist/es-legacy/components/internal/Address/Address.js +1 -1
  278. package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
  279. package/dist/es-legacy/components/internal/Address/Specifications.js +1 -1
  280. package/dist/es-legacy/components/internal/Address/Specifications.js.map +1 -1
  281. package/dist/es-legacy/components/internal/Address/components/AddressSearch.js +1 -1
  282. package/dist/es-legacy/components/internal/Address/components/AddressSearch.js.map +1 -1
  283. package/dist/es-legacy/components/internal/Address/components/CountryField.js +1 -1
  284. package/dist/es-legacy/components/internal/Address/components/CountryField.js.map +1 -1
  285. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js +1 -1
  286. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js.map +1 -1
  287. package/dist/es-legacy/components/internal/Address/components/StateField.js +1 -1
  288. package/dist/es-legacy/components/internal/Address/components/StateField.js.map +1 -1
  289. package/dist/es-legacy/components/internal/Address/constants.js.map +1 -1
  290. package/dist/es-legacy/components/internal/Address/utils.js.map +1 -1
  291. package/dist/es-legacy/components/internal/Address/validate.formats.js +1 -1
  292. package/dist/es-legacy/components/internal/Address/validate.formats.js.map +1 -1
  293. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  294. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  295. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
  296. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  297. package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js +1 -1
  298. package/dist/es-legacy/components/internal/ClickToPay/components/CtPSection/CtPLogoutLink.js.map +1 -1
  299. package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js +1 -1
  300. package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
  301. package/dist/es-legacy/components/internal/CompanyDetails/validate.js +1 -1
  302. package/dist/es-legacy/components/internal/CompanyDetails/validate.js.map +1 -1
  303. package/dist/es-legacy/components/internal/ConsentCheckboxLabel/ConsentCheckboxLabel.js.map +1 -1
  304. package/dist/es-legacy/components/internal/FormFields/Field/Field.js +1 -1
  305. package/dist/es-legacy/components/internal/FormFields/Field/Field.js.map +1 -1
  306. package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
  307. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  308. package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js +1 -1
  309. package/dist/es-legacy/components/internal/FormFields/InputDate/InputDate.js.map +1 -1
  310. package/dist/es-legacy/components/internal/FormFields/InputDate/utils.js.map +1 -1
  311. package/dist/es-legacy/components/internal/FormFields/Select/Select.js +1 -1
  312. package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
  313. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  314. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  315. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js +1 -1
  316. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
  317. package/dist/es-legacy/components/internal/IbanInput/specifications.js.map +1 -1
  318. package/dist/es-legacy/components/internal/IbanInput/utils.js +1 -1
  319. package/dist/es-legacy/components/internal/IbanInput/utils.js.map +1 -1
  320. package/dist/es-legacy/components/internal/PayButton/utils.js.map +1 -1
  321. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  322. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  323. package/dist/es-legacy/components/internal/PersonalDetails/validate.js +1 -1
  324. package/dist/es-legacy/components/internal/PersonalDetails/validate.js.map +1 -1
  325. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js +1 -1
  326. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
  327. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  328. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  329. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js.map +1 -1
  330. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js +1 -1
  331. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processAriaConfig.js.map +1 -1
  332. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  333. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  334. package/dist/es-legacy/components/internal/UIElement/utils.js.map +1 -1
  335. package/dist/es-legacy/components/tx-variants.js +1 -1
  336. package/dist/es-legacy/components/tx-variants.js.map +1 -1
  337. package/dist/es-legacy/core/Services/http.js.map +1 -1
  338. package/dist/es-legacy/core/config.js +1 -1
  339. package/dist/es-legacy/core/config.js.map +1 -1
  340. package/dist/es-legacy/core/core.js +1 -1
  341. package/dist/es-legacy/core/core.js.map +1 -1
  342. package/dist/es-legacy/core/utils.js +1 -1
  343. package/dist/es-legacy/core/utils.js.map +1 -1
  344. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js +1 -1
  345. package/dist/es-legacy/hooks/usePaymentStatusTimer/usePaymentStatusTimer.js.map +1 -1
  346. package/dist/es-legacy/index.js +1 -1
  347. package/dist/es-legacy/language/Language.js +1 -1
  348. package/dist/es-legacy/language/Language.js.map +1 -1
  349. package/dist/es-legacy/language/utils.js +1 -1
  350. package/dist/es-legacy/language/utils.js.map +1 -1
  351. package/dist/es-legacy/utils/Script.js.map +1 -1
  352. package/dist/es-legacy/utils/Validator/ValidationRuleResult.js.map +1 -1
  353. package/dist/es-legacy/utils/Validator/Validator.js +1 -1
  354. package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
  355. package/dist/es-legacy/utils/Validator/defaultRules.js +1 -1
  356. package/dist/es-legacy/utils/Validator/defaultRules.js.map +1 -1
  357. package/dist/es-legacy/utils/amount-util.js +1 -1
  358. package/dist/es-legacy/utils/amount-util.js.map +1 -1
  359. package/dist/es-legacy/utils/browserInfo.js.map +1 -1
  360. package/dist/es-legacy/utils/createSdkData.js +1 -1
  361. package/dist/es-legacy/utils/createSdkData.js.map +1 -1
  362. package/dist/es-legacy/utils/get-issuer-image.js +1 -1
  363. package/dist/es-legacy/utils/get-issuer-image.js.map +1 -1
  364. package/dist/es-legacy/utils/get-process-message-handler.js.map +1 -1
  365. package/dist/es-legacy/utils/getConsentUrl.js +1 -1
  366. package/dist/es-legacy/utils/getConsentUrl.js.map +1 -1
  367. package/dist/es-legacy/utils/getErrorMessage.js.map +1 -1
  368. package/dist/es-legacy/utils/getOrigin.js.map +1 -1
  369. package/dist/es-legacy/utils/isValidURL.js +1 -1
  370. package/dist/es-legacy/utils/isValidURL.js.map +1 -1
  371. package/dist/es-legacy/utils/promiseTimeout.js.map +1 -1
  372. package/dist/es-legacy/utils/useAutoFocus.js.map +1 -1
  373. package/dist/es-legacy/utils/validator-utils.js +1 -1
  374. package/dist/es-legacy/utils/validator-utils.js.map +1 -1
  375. package/package.json +25 -24
  376. package/styles/adyen.css +20 -22
  377. package/dist/es/components/PayPal/PayPalCredit.js +0 -2
  378. package/dist/es/components/PayPal/PayPalCredit.js.map +0 -1
  379. package/dist/es/components/PayPal/PayPalPaylater.js +0 -2
  380. package/dist/es/components/PayPal/PayPalPaylater.js.map +0 -1
  381. package/dist/es/components/PayPal/Venmo.js +0 -2
  382. package/dist/es/components/PayPal/Venmo.js.map +0 -1
  383. package/dist/es/components/PayPal/components/PayPalButton.js +0 -2
  384. package/dist/es/components/PayPal/components/PayPalButton.js.map +0 -1
  385. package/dist/es/components/PayPal/components/PayPalComponentV6.js +0 -2
  386. package/dist/es/components/PayPal/components/PayPalComponentV6.js.map +0 -1
  387. package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
  388. package/dist/es/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
  389. package/dist/es/components/PayPal/components/PayPalCreditButton.js +0 -2
  390. package/dist/es/components/PayPal/components/PayPalCreditButton.js.map +0 -1
  391. package/dist/es/components/PayPal/components/PayPalCreditComponent.js +0 -2
  392. package/dist/es/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
  393. package/dist/es/components/PayPal/components/PayPalMessaging.js +0 -2
  394. package/dist/es/components/PayPal/components/PayPalMessaging.js.map +0 -1
  395. package/dist/es/components/PayPal/components/PayPalPayLaterButton.js +0 -2
  396. package/dist/es/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
  397. package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
  398. package/dist/es/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
  399. package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
  400. package/dist/es/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
  401. package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
  402. package/dist/es/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
  403. package/dist/es/components/PayPal/components/PayPalSpinner.js +0 -2
  404. package/dist/es/components/PayPal/components/PayPalSpinner.js.map +0 -1
  405. package/dist/es/components/PayPal/components/VenmoButton.js +0 -2
  406. package/dist/es/components/PayPal/components/VenmoButton.js.map +0 -1
  407. package/dist/es/components/PayPal/components/VenmoComponent.js +0 -2
  408. package/dist/es/components/PayPal/components/VenmoComponent.js.map +0 -1
  409. package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
  410. package/dist/es/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
  411. package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
  412. package/dist/es/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
  413. package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
  414. package/dist/es/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
  415. package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
  416. package/dist/es/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
  417. package/dist/es/components/PayPal/hooks/usePayPalStatus.js +0 -2
  418. package/dist/es/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
  419. package/dist/es/components/PayPal/hooks/useStartPayPalSession.js +0 -2
  420. package/dist/es/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
  421. package/dist/es/components/PayPal/models/BasePayPalElement.js +0 -2
  422. package/dist/es/components/PayPal/models/BasePayPalElement.js.map +0 -1
  423. package/dist/es/components/PayPal/services/PayPalSdkLoader.js +0 -2
  424. package/dist/es/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
  425. package/dist/es/components/PayPal/services/PayPalService.js +0 -2
  426. package/dist/es/components/PayPal/services/PayPalService.js.map +0 -1
  427. package/dist/es/components/PayPal/services/request-paypal-oauth-token.js +0 -2
  428. package/dist/es/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
  429. package/dist/es/components/PayPal/services/request-paypal-order-details.js +0 -2
  430. package/dist/es/components/PayPal/services/request-paypal-order-details.js.map +0 -1
  431. package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
  432. package/dist/es/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
  433. package/dist/es/utils/is-live-environment.js +0 -2
  434. package/dist/es/utils/is-live-environment.js.map +0 -1
  435. package/dist/es-legacy/components/PayPal/PayPalCredit.js +0 -2
  436. package/dist/es-legacy/components/PayPal/PayPalCredit.js.map +0 -1
  437. package/dist/es-legacy/components/PayPal/PayPalPaylater.js +0 -2
  438. package/dist/es-legacy/components/PayPal/PayPalPaylater.js.map +0 -1
  439. package/dist/es-legacy/components/PayPal/Venmo.js +0 -2
  440. package/dist/es-legacy/components/PayPal/Venmo.js.map +0 -1
  441. package/dist/es-legacy/components/PayPal/components/PayPalButton.js +0 -2
  442. package/dist/es-legacy/components/PayPal/components/PayPalButton.js.map +0 -1
  443. package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js +0 -2
  444. package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.js.map +0 -1
  445. package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js +0 -2
  446. package/dist/es-legacy/components/PayPal/components/PayPalComponentV6.module.scss.js.map +0 -1
  447. package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js +0 -2
  448. package/dist/es-legacy/components/PayPal/components/PayPalCreditButton.js.map +0 -1
  449. package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js +0 -2
  450. package/dist/es-legacy/components/PayPal/components/PayPalCreditComponent.js.map +0 -1
  451. package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js +0 -2
  452. package/dist/es-legacy/components/PayPal/components/PayPalMessaging.js.map +0 -1
  453. package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js +0 -2
  454. package/dist/es-legacy/components/PayPal/components/PayPalPayLaterButton.js.map +0 -1
  455. package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js +0 -2
  456. package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.js.map +0 -1
  457. package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js +0 -2
  458. package/dist/es-legacy/components/PayPal/components/PayPalPaylaterComponent.module.scss.js.map +0 -1
  459. package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js +0 -2
  460. package/dist/es-legacy/components/PayPal/components/PayPalProcessingSpinner.js.map +0 -1
  461. package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js +0 -2
  462. package/dist/es-legacy/components/PayPal/components/PayPalSpinner.js.map +0 -1
  463. package/dist/es-legacy/components/PayPal/components/VenmoButton.js +0 -2
  464. package/dist/es-legacy/components/PayPal/components/VenmoButton.js.map +0 -1
  465. package/dist/es-legacy/components/PayPal/components/VenmoComponent.js +0 -2
  466. package/dist/es-legacy/components/PayPal/components/VenmoComponent.js.map +0 -1
  467. package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js +0 -2
  468. package/dist/es-legacy/components/PayPal/hooks/usePayPalButtonEligibility.js.map +0 -1
  469. package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js +0 -2
  470. package/dist/es-legacy/components/PayPal/hooks/usePayPalOneTimeSession.js.map +0 -1
  471. package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js +0 -2
  472. package/dist/es-legacy/components/PayPal/hooks/usePayPalSaveSession.js.map +0 -1
  473. package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js +0 -2
  474. package/dist/es-legacy/components/PayPal/hooks/usePayPalSessionOptions.js.map +0 -1
  475. package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js +0 -2
  476. package/dist/es-legacy/components/PayPal/hooks/usePayPalStatus.js.map +0 -1
  477. package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js +0 -2
  478. package/dist/es-legacy/components/PayPal/hooks/useStartPayPalSession.js.map +0 -1
  479. package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js +0 -2
  480. package/dist/es-legacy/components/PayPal/models/BasePayPalElement.js.map +0 -1
  481. package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js +0 -2
  482. package/dist/es-legacy/components/PayPal/services/PayPalSdkLoader.js.map +0 -1
  483. package/dist/es-legacy/components/PayPal/services/PayPalService.js +0 -2
  484. package/dist/es-legacy/components/PayPal/services/PayPalService.js.map +0 -1
  485. package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js +0 -2
  486. package/dist/es-legacy/components/PayPal/services/request-paypal-oauth-token.js.map +0 -1
  487. package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js +0 -2
  488. package/dist/es-legacy/components/PayPal/services/request-paypal-order-details.js.map +0 -1
  489. package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js +0 -2
  490. package/dist/es-legacy/components/PayPal/utils/is-paypal-service-config-equal.js.map +0 -1
  491. package/dist/es-legacy/utils/is-live-environment.js +0 -2
  492. 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 readonly?: boolean;\n uniqueId?: string;\n disabled?: boolean;\n className?: string;\n placeholder?: string;\n value?: string;\n name?: string;\n checked?: boolean;\n setRef?: RefCallback<HTMLInputElement>;\n trimOnBlur?: boolean;\n i18n?: Language;\n label?: string;\n onBlurHandler?: GenericEventHandler<HTMLInputElement>;\n onFocusHandler?: GenericEventHandler<HTMLInputElement>;\n maxlength?: number | null;\n addContextualElement?: boolean;\n type?: string;\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, ...props }: Readonly<InputBaseProps>) {\n const { autoCorrect, classNameModifiers, isInvalid, isValid, readonly = null, spellcheck, type, 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 classNameModifiers: cnm,\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}` : null;\n const extraDescribedBy = typeof ariaDescribedByProp === 'string' && ariaDescribedByProp ? ariaDescribedByProp : null;\n const mergedAriaDescribedBy = [extraDescribedBy, internalDescribedBy].filter(Boolean).join(' ') || null;\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\nInputBase.defaultProps = {\n type: 'text',\n classNameModifiers: []\n};\n"],"names":["InputBase","_0","setRef","props","autoCorrect","classNameModifiers","isInvalid","isValid","readonly","spellcheck","type","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","cnm","uid","iiv","iv","addContextualElement","ace","ariaDescribedByProp","autocomplete","restProps","mergedAriaDescribedBy","ARIA_ERROR_SUFFIX","ARIA_CONTEXT_SUFFIX","filter","Boolean","join","h","id","aria-required","required","readOnly","aria-describedby","aria-invalid","onFocus","ref","defaultProps"],"mappings":"k8CA+Ce,SAASA,EAAUC,OAAAC,OAAEA,GAA4CD,EAAjCE,EAAAA,EAAAA,EAAAA,YAC3C,MAAMC,YAAEA,EAAWC,mBAAEA,EAAkBC,UAAEA,EAASC,QAAEA,EAAOC,SAAEA,EAAW,KAAIC,WAAEA,EAAUC,KAAEA,EAAIC,SAAEA,EAAQC,SAAEA,GAAaT,EACjHU,EAAYV,EAAMU,UAMpBC,OAAOC,UAAUC,eAAeC,KAAKd,EAAO,aAC5Ce,QAAQC,MAAM,+EAGlB,MAAMC,EAAcC,EACfC,IACGnB,IAAAA,EAAa,QAAbA,EAAAA,EAAMoB,mBAANpB,GAAAA,OAAAA,EAAgBmB,IAEpB,CAACnB,EAAMoB,UAGLC,EAAgBH,EACjBC,KACOnB,aAAAA,EAAAA,EAAOsB,YAAWtB,EAAMsB,UAAUH,IAE1C,CAACnB,aAAAA,EAAAA,EAAOsB,YAGNC,EAAaL,EACdC,QACGnB,EAOAA,EALA,GAFAA,iBAAAA,EAAAA,EAAOwB,qBAAPxB,IAAAA,GAAAA,EAAAA,KAAAA,EAAuBmB,GAEnBnB,EAAMyB,WAAY,CAClB,MAAMC,EAAQP,EAAMQ,OACpBD,EAAME,MAAQC,EAAoBH,EAAME,MAC5C,CAEA5B,SAAa,QAAbA,EAAAA,EAAO8B,cAAP9B,IAAAA,GAAAA,OAAAA,EAAgBmB,IAEpB,CAACnB,EAAM8B,OAAQ9B,EAAMwB,gBAGnBO,EAAcb,EACfC,IACGnB,IAAAA,EAAAA,iBAAAA,EAAAA,EAAOgC,sBAAPhC,IAAAA,GAAAA,EAAAA,KAAAA,EAAwBmB,IAE5B,CAACnB,EAAMgC,iBAGLC,EAAkBC,EACpB,wBACA,CAAC,0BAA0B3B,KAC3BG,EACA,CACI,iCAAkCP,EAClC,+BAAgCC,IAEnCF,QAAAA,EAAsB,IAAIiC,IAAIC,GAAK,0BAA0BA,OAK9DlC,mBAAoBmC,EACpB7B,SAAU8B,EACVnC,UAAWoC,EACXnC,QAASoC,EACTC,qBAAsBC,EACtB,mBAAoBC,EAAmBC,aACvCA,GAEA5C,EADG6C,EAAAA,EACH7C,EAAAA,8EAHA,oCAOE8C,EAAwB,CAD0B,iBAAxBH,GAAoCA,EAAsBA,EAAsB,KADpFnC,EAAW,GAAGA,IAAWL,EAAY4C,EAAoBC,IAAwB,MAEvCC,OAAOC,SAASC,KAAK,MAAQ,KAEnG,OACIC,EAAC1B,QAAAA,oUAAAA,CAAAA,CACG2B,GAAI7C,GACAqC,GAAAA,CAEJD,aAAcA,EACdU,gBAAeT,EAAUU,SACzBhD,KAAMA,EACNG,UAAWuB,EACXuB,SAAUnD,EAEVC,WAAYA,EACZL,YAAaA,EACbwD,mBAAkBX,EAClBY,eAAcvD,EACdiB,QAASH,EACTa,OAAQP,EACRoC,QAAS5B,EACTT,UAAWD,EACXZ,SAAUA,EACVmD,IAAK7D,IAGjB,CAEAF,EAAUgE,aAAe,CACrBtD,KAAM,OACNL,mBAAoB"}
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 p(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 a(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 s(c){const s=t(n,[]);return e(r,a(p({},c),s?{type:"date"}:{onInput:e=>{const{value:t}=e.target;e.target.value=o(t),c.onInput(e)},maxLength:10}))}export{s as default};
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,IAChB,MAAMC,MAAEA,GAAUD,EAAEE,OACpBF,EAAEE,OAAOD,MAAQE,EAAWF,GAC5BT,EAAMO,QAAQC,IAOiCI,UAAW,KAClE"}
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 a from"./components/SelectList.js";import i from"../../../../utils/uuid.js";import{keys as c}from"./constants.js";import{ARIA_ERROR_SUFFIX as u,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 g({items:g=[],className:v="",classNameModifiers:h=[],filterable:y=!0,readonly:b=!1,onChange:k=()=>{},onInput:w,selectedValue:I,name:L,isInvalid:j,isValid:D,placeholder:x,uniqueId:T,disabled:_,disableTextFilter:B,clearOnSelect:C,blurOnClose:E,onListToggle:N,required:P,additionalDescribedBy:S}){const{i18n:$}=f(),M=t(null),R=t(null),q=t(null),A=t(null),[F,K]=n(null),[O,V]=n(!1),[H,U]=n(null),z=r(()=>`select-${i()}`,[]),G=g.find(e=>e.id===I)||{},[J,Q]=n(),[W,X]=n(G),Y=G,Z=B?g:g.filter(e=>!F||e.name.toLowerCase().includes(F.toLowerCase())),ee=[T?`${T}${j?u:d}`:null,S].filter(Boolean).join(" ")||null,te=e=>{if(!e)return;const t=document.getElementById(`listItem-${e.id}`);m(t)},ne=()=>{E&&M.current.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:F?Z[0]:{id:I},t&&!t.disabled&&(k({target:{value:t.id,name:L}}),C&&Q(null),ne())},se=e=>{switch(e.key){case c.space:case c.enter:le(e);break;case c.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 c.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(()=>{O?Q(null):K(null)},[O]),o(()=>{O&&y&&M.current&&M.current.focus(),null==N||N(O)},[O]),o(()=>{function e(e){(e.composedPath?!e.composedPath().includes(R.current):!R.current.contains(e.target))&&ne()}return document.addEventListener("click",e,!1),()=>{document.removeEventListener("click",e,!1)}},[R]),o(()=>{const e=setTimeout(()=>{0===Z.length?U($.get("select.noOptionsFound")):U($.get("select.results",{values:{count:Z.length}}))},500);return()=>clearTimeout(e)},[O,Z.length,$]),e("div",{className:l(["adyen-checkout__dropdown",v,...h.map(e=>`adyen-checkout__dropdown--${e}`)]),ref:R},e(s,{inputText:J,id:null!=T?T:null,active:W,selected:Y,filterInputRef:M,filterable:y,isInvalid:j,isValid:D,onButtonKeyDown:e=>{p(e),e.key===c.enter&&y&&O&&F?le(e):e.key===c.escape?ne():![c.arrowUp,c.arrowDown,c.enter].includes(e.key)&&(e.key!==c.space||y&&O)?(e.shiftKey&&e.key===c.tab||e.key===c.tab)&&ne():(e.preventDefault(),O?se(e):re())},onInput:e=>{const t=e.target.value;Q(t),K(t),O||re(),w&&w(t)},placeholder:x,readonly:b,selectListId:z,showList:O,toggleButtonRef:q,toggleList:e=>{e.preventDefault(),O?(Q(Y.name),ne()):(Q(null),re())},disabled:_,ariaDescribedBy:ee,required:P}),e(a,{active:W,filteredItems:Z,onHover:e=>{e.preventDefault();const t=oe(e);X(t)},onSelect:le,selected:Y,selectListId:z,selectListRef:A,showList:O}),e("div",{key:J,role:"status","aria-live":"polite","aria-relevant":"additions text",className:"adyen-checkout__dropdown__status"},H))}g.defaultProps={className:"",classNameModifiers:[],filterable:!0,items:[],readonly:!1,onChange:()=>{}};export{g as default};
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 n from"../../../Img/Img.js";import{TagList as r}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,n,r,a={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(o=Reflect.ownKeys(Object(e)),r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}if(a=function(e,t){if(null==e)return{};var o,n,r={},a=Object.getOwnPropertyNames(e);for(n=0;n<a.length;n++)o=a[n],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o]);return r}(e,t),Object.getOwnPropertySymbols)for(o=Object.getOwnPropertySymbols(e),r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}function d(t){let{filterable:o,toggleButtonRef:n,showList:r,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]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),n.forEach(function(t){i(e,t,o[t])})}return e}({},o),{ref:n}))}return e("button",{role:"combobox",type:"button",id:s.id,className:s.className,"aria-haspopup":"listbox","aria-expanded":r,"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:n},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:u?null:i.filterable?m:i.toggleList,onKeyDown:u?null: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(n,{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(r,{tags:c.tags,className:"adyen-checkout__dropdown__button__tags"})):e(t,null,c.icon&&e(n,{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(r,{tags:c.tags,className:"adyen-checkout__dropdown__button__tags"})))}export{s as default};
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:n.ownerName&&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&&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};
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":"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"}
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(`^${s.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};
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,KACtC,GAAoB,OAAhBA,IAAyBC,EAAUD,KAAiBC,EAAUD,GAAaD,UAC3E,OAAO,EAGX,MAGMG,EAHkBD,EAAUD,GAAaD,UAGjBI,MAAM,WAAWC,IAAIC,IAE/C,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,EAAMd,IAAgBF,EAAegB,EAAMd,GAUpDmB,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,EAA8B/B,MACnCA,IAAeC,EAAUD,KAClBC,EAAUD,GAYZgC,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"}
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"}