@adyen/adyen-web 6.45.1 → 6.45.2

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 (205) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +1846 -1889
  4. package/dist/es/components/ANCV/components/ANCVInput.js +1 -1
  5. package/dist/es/components/ANCV/components/ANCVInput.js.map +1 -1
  6. package/dist/es/components/Ach/Ach.js +1 -1
  7. package/dist/es/components/Ach/Ach.js.map +1 -1
  8. package/dist/es/components/Ach/components/AchComponent.js +1 -1
  9. package/dist/es/components/Ach/components/AchComponent.js.map +1 -1
  10. package/dist/es/components/AmazonPay/AmazonPay.js +1 -1
  11. package/dist/es/components/AmazonPay/AmazonPay.js.map +1 -1
  12. package/dist/es/components/BacsDD/BacsDD.js +1 -1
  13. package/dist/es/components/BacsDD/BacsDD.js.map +1 -1
  14. package/dist/es/components/BacsDD/components/BacsInput.js +1 -1
  15. package/dist/es/components/BacsDD/components/BacsInput.js.map +1 -1
  16. package/dist/es/components/BankTransfer/BankTransfer.js +1 -1
  17. package/dist/es/components/BankTransfer/BankTransfer.js.map +1 -1
  18. package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
  19. package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
  20. package/dist/es/components/Blik/Blik.js +1 -1
  21. package/dist/es/components/Blik/Blik.js.map +1 -1
  22. package/dist/es/components/Blik/components/BlikInput.js +1 -1
  23. package/dist/es/components/Blik/components/BlikInput.js.map +1 -1
  24. package/dist/es/components/Card/Card.js +1 -1
  25. package/dist/es/components/Card/Card.js.map +1 -1
  26. package/dist/es/components/Card/components/CardInput/types.js.map +1 -1
  27. package/dist/es/components/CashAppPay/CashAppPay.js +1 -1
  28. package/dist/es/components/CashAppPay/CashAppPay.js.map +1 -1
  29. package/dist/es/components/CustomCard/CustomCard.js +1 -1
  30. package/dist/es/components/CustomCard/CustomCard.js.map +1 -1
  31. package/dist/es/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  32. package/dist/es/components/Donation/Donation.js +1 -1
  33. package/dist/es/components/Donation/Donation.js.map +1 -1
  34. package/dist/es/components/Donation/components/DonationComponent.js +1 -1
  35. package/dist/es/components/Donation/components/DonationComponent.js.map +1 -1
  36. package/dist/es/components/Dropin/Dropin.js +1 -1
  37. package/dist/es/components/Dropin/Dropin.js.map +1 -1
  38. package/dist/es/components/Dropin/components/DropinComponent.js.map +1 -1
  39. package/dist/es/components/Giftcard/Giftcard.js.map +1 -1
  40. package/dist/es/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  41. package/dist/es/components/Giropay/Giropay.js +1 -1
  42. package/dist/es/components/Giropay/Giropay.js.map +1 -1
  43. package/dist/es/components/MBWay/MBWay.js +1 -1
  44. package/dist/es/components/MBWay/MBWay.js.map +1 -1
  45. package/dist/es/components/MBWay/components/MBWayInput/MBWayInput.js +1 -1
  46. package/dist/es/components/MBWay/components/MBWayInput/MBWayInput.js.map +1 -1
  47. package/dist/es/components/Multibanco/Multibanco.js +1 -1
  48. package/dist/es/components/Multibanco/Multibanco.js.map +1 -1
  49. package/dist/es/components/PayByBankPix/PayByBankPix.js +1 -1
  50. package/dist/es/components/PayByBankPix/PayByBankPix.js.map +1 -1
  51. package/dist/es/components/PayByBankUS/PayByBankUS.js +1 -1
  52. package/dist/es/components/PayByBankUS/PayByBankUS.js.map +1 -1
  53. package/dist/es/components/PayTo/components/BSBInput.js +1 -1
  54. package/dist/es/components/PayTo/components/BSBInput.js.map +1 -1
  55. package/dist/es/components/PayTo/components/PayToNameFields.js +1 -1
  56. package/dist/es/components/PayTo/components/PayToNameFields.js.map +1 -1
  57. package/dist/es/components/PayTo/components/PayToPhone.js +1 -1
  58. package/dist/es/components/PayTo/components/PayToPhone.js.map +1 -1
  59. package/dist/es/components/Pix/Pix.js +1 -1
  60. package/dist/es/components/Pix/Pix.js.map +1 -1
  61. package/dist/es/components/Pix/components/PixInput/PixInput.js +1 -1
  62. package/dist/es/components/Pix/components/PixInput/PixInput.js.map +1 -1
  63. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  64. package/dist/es/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  65. package/dist/es/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js +1 -1
  66. package/dist/es/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  67. package/dist/es/components/Redirect/Redirect.js +1 -1
  68. package/dist/es/components/Redirect/Redirect.js.map +1 -1
  69. package/dist/es/components/Sepa/Sepa.js.map +1 -1
  70. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  71. package/dist/es/components/Trustly/Trustly.js +1 -1
  72. package/dist/es/components/Trustly/Trustly.js.map +1 -1
  73. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  74. package/dist/es/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  75. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  76. package/dist/es/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  77. package/dist/es/components/internal/BaseElement/BaseElement.js.map +1 -1
  78. package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js +1 -1
  79. package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js.map +1 -1
  80. package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
  81. package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
  82. package/dist/es/components/internal/IbanInput/validate.js +1 -1
  83. package/dist/es/components/internal/IbanInput/validate.js.map +1 -1
  84. package/dist/es/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  85. package/dist/es/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  86. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  87. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  88. package/dist/es/components/internal/RedirectButton/RedirectButton.js +1 -1
  89. package/dist/es/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  90. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  91. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  92. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  93. package/dist/es/components/internal/UIElement/utils.js +1 -1
  94. package/dist/es/components/internal/UIElement/utils.js.map +1 -1
  95. package/dist/es/core/config.js +1 -1
  96. package/dist/es/index.d.ts +1846 -1889
  97. package/dist/es/utils/Validator/Validator.js +1 -1
  98. package/dist/es/utils/Validator/Validator.js.map +1 -1
  99. package/dist/es/utils/useForm/reducer.js +1 -1
  100. package/dist/es/utils/useForm/reducer.js.map +1 -1
  101. package/dist/es/utils/useForm/useForm.js +1 -1
  102. package/dist/es/utils/useForm/useForm.js.map +1 -1
  103. package/dist/es/utils/useForm/useFormWithA11y.js +1 -1
  104. package/dist/es/utils/useForm/useFormWithA11y.js.map +1 -1
  105. package/dist/es-legacy/components/ANCV/components/ANCVInput.js +1 -1
  106. package/dist/es-legacy/components/ANCV/components/ANCVInput.js.map +1 -1
  107. package/dist/es-legacy/components/Ach/Ach.js +1 -1
  108. package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
  109. package/dist/es-legacy/components/Ach/components/AchComponent.js +1 -1
  110. package/dist/es-legacy/components/Ach/components/AchComponent.js.map +1 -1
  111. package/dist/es-legacy/components/AmazonPay/AmazonPay.js +1 -1
  112. package/dist/es-legacy/components/AmazonPay/AmazonPay.js.map +1 -1
  113. package/dist/es-legacy/components/BacsDD/BacsDD.js +1 -1
  114. package/dist/es-legacy/components/BacsDD/BacsDD.js.map +1 -1
  115. package/dist/es-legacy/components/BacsDD/components/BacsInput.js +1 -1
  116. package/dist/es-legacy/components/BacsDD/components/BacsInput.js.map +1 -1
  117. package/dist/es-legacy/components/BankTransfer/BankTransfer.js +1 -1
  118. package/dist/es-legacy/components/BankTransfer/BankTransfer.js.map +1 -1
  119. package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
  120. package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
  121. package/dist/es-legacy/components/Blik/Blik.js +1 -1
  122. package/dist/es-legacy/components/Blik/Blik.js.map +1 -1
  123. package/dist/es-legacy/components/Blik/components/BlikInput.js +1 -1
  124. package/dist/es-legacy/components/Blik/components/BlikInput.js.map +1 -1
  125. package/dist/es-legacy/components/Card/Card.js +1 -1
  126. package/dist/es-legacy/components/Card/Card.js.map +1 -1
  127. package/dist/es-legacy/components/Card/components/CardInput/types.js.map +1 -1
  128. package/dist/es-legacy/components/CashAppPay/CashAppPay.js +1 -1
  129. package/dist/es-legacy/components/CashAppPay/CashAppPay.js.map +1 -1
  130. package/dist/es-legacy/components/CustomCard/CustomCard.js +1 -1
  131. package/dist/es-legacy/components/CustomCard/CustomCard.js.map +1 -1
  132. package/dist/es-legacy/components/CustomCard/CustomCardInput/CustomCardInput.js.map +1 -1
  133. package/dist/es-legacy/components/Donation/Donation.js +1 -1
  134. package/dist/es-legacy/components/Donation/Donation.js.map +1 -1
  135. package/dist/es-legacy/components/Donation/components/DonationComponent.js +1 -1
  136. package/dist/es-legacy/components/Donation/components/DonationComponent.js.map +1 -1
  137. package/dist/es-legacy/components/Dropin/Dropin.js +1 -1
  138. package/dist/es-legacy/components/Dropin/Dropin.js.map +1 -1
  139. package/dist/es-legacy/components/Dropin/components/DropinComponent.js.map +1 -1
  140. package/dist/es-legacy/components/Giftcard/Giftcard.js.map +1 -1
  141. package/dist/es-legacy/components/Giftcard/components/GiftcardComponent.js.map +1 -1
  142. package/dist/es-legacy/components/Giropay/Giropay.js +1 -1
  143. package/dist/es-legacy/components/Giropay/Giropay.js.map +1 -1
  144. package/dist/es-legacy/components/MBWay/MBWay.js +1 -1
  145. package/dist/es-legacy/components/MBWay/MBWay.js.map +1 -1
  146. package/dist/es-legacy/components/MBWay/components/MBWayInput/MBWayInput.js +1 -1
  147. package/dist/es-legacy/components/MBWay/components/MBWayInput/MBWayInput.js.map +1 -1
  148. package/dist/es-legacy/components/Multibanco/Multibanco.js +1 -1
  149. package/dist/es-legacy/components/Multibanco/Multibanco.js.map +1 -1
  150. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js +1 -1
  151. package/dist/es-legacy/components/PayByBankPix/PayByBankPix.js.map +1 -1
  152. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js +1 -1
  153. package/dist/es-legacy/components/PayByBankUS/PayByBankUS.js.map +1 -1
  154. package/dist/es-legacy/components/PayTo/components/BSBInput.js +1 -1
  155. package/dist/es-legacy/components/PayTo/components/BSBInput.js.map +1 -1
  156. package/dist/es-legacy/components/PayTo/components/PayToNameFields.js +1 -1
  157. package/dist/es-legacy/components/PayTo/components/PayToNameFields.js.map +1 -1
  158. package/dist/es-legacy/components/PayTo/components/PayToPhone.js +1 -1
  159. package/dist/es-legacy/components/PayTo/components/PayToPhone.js.map +1 -1
  160. package/dist/es-legacy/components/Pix/Pix.js +1 -1
  161. package/dist/es-legacy/components/Pix/Pix.js.map +1 -1
  162. package/dist/es-legacy/components/Pix/components/PixInput/PixInput.js +1 -1
  163. package/dist/es-legacy/components/Pix/components/PixInput/PixInput.js.map +1 -1
  164. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js +1 -1
  165. package/dist/es-legacy/components/PreAuthorizedDebitCanada/PreAuthorizedDebitCanada.js.map +1 -1
  166. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js +1 -1
  167. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  168. package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
  169. package/dist/es-legacy/components/Redirect/Redirect.js.map +1 -1
  170. package/dist/es-legacy/components/Sepa/Sepa.js.map +1 -1
  171. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js.map +1 -1
  172. package/dist/es-legacy/components/Trustly/Trustly.js +1 -1
  173. package/dist/es-legacy/components/Trustly/Trustly.js.map +1 -1
  174. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js +1 -1
  175. package/dist/es-legacy/components/helpers/IssuerListContainer/IssuerListContainer.js.map +1 -1
  176. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js +1 -1
  177. package/dist/es-legacy/components/helpers/QRLoaderContainer/QRLoaderContainer.js.map +1 -1
  178. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  179. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js +1 -1
  180. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js.map +1 -1
  181. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js +1 -1
  182. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
  183. package/dist/es-legacy/components/internal/IbanInput/validate.js +1 -1
  184. package/dist/es-legacy/components/internal/IbanInput/validate.js.map +1 -1
  185. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js +1 -1
  186. package/dist/es-legacy/components/internal/OpenInvoice/OpenInvoice.js.map +1 -1
  187. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  188. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  189. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js +1 -1
  190. package/dist/es-legacy/components/internal/RedirectButton/RedirectButton.js.map +1 -1
  191. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js.map +1 -1
  192. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  193. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  194. package/dist/es-legacy/components/internal/UIElement/utils.js +1 -1
  195. package/dist/es-legacy/components/internal/UIElement/utils.js.map +1 -1
  196. package/dist/es-legacy/core/config.js +1 -1
  197. package/dist/es-legacy/utils/Validator/Validator.js +1 -1
  198. package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
  199. package/dist/es-legacy/utils/useForm/reducer.js +1 -1
  200. package/dist/es-legacy/utils/useForm/reducer.js.map +1 -1
  201. package/dist/es-legacy/utils/useForm/useForm.js +1 -1
  202. package/dist/es-legacy/utils/useForm/useForm.js.map +1 -1
  203. package/dist/es-legacy/utils/useForm/useFormWithA11y.js +1 -1
  204. package/dist/es-legacy/utils/useForm/useFormWithA11y.js.map +1 -1
  205. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{ValidationRuleResult as t}from"./ValidationRuleResult.js";function r(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}class e{get isValid(){return this.validationResults.reduce((t,r)=>t&&r.isValid,!0)}hasError(t=!1){return Boolean(this.getError(t))}getError(t=!1){return this.validationResults.find(r=>r.hasError(t))??null}getAllErrors(){return this.validationResults.filter(t=>t.hasError())}constructor(t){r(this,"validationResults",void 0),this.validationResults=t}}class s{setRules(t){this.rules={...this.rules,...t}}getRulesFor(t){let r=this.rules[t]??this.rules.default;return Array.isArray(r)||(r=[r]),r}validate({key:r,value:s,mode:i="blur"},l){const u=this.getRulesFor(r).map(r=>new t(r,s,i,l,this.i18n));return new e(u)}constructor(t,e){r(this,"rules",{default:{validate:()=>!0,modes:["blur","input"]}}),r(this,"i18n",void 0),this.setRules(t),this.i18n=e}}export{e as ValidationResult,s as default};
1
+ import{ValidationRuleResult as t}from"./ValidationRuleResult.js";function r(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}class e{get isValid(){return this.validationResults.reduce((t,r)=>t&&r.isValid,!0)}hasError(t=!1){return Boolean(this.getError(t))}getError(t=!1){return this.validationResults.find(r=>r.hasError(t))}getAllErrors(){return this.validationResults.filter(t=>t.hasError())}constructor(t){r(this,"validationResults",void 0),this.validationResults=t}}class s{setRules(t){this.rules={...this.rules,...t}}getRulesFor(t){let r=this.rules[t]??this.rules.default;return Array.isArray(r)||(r=[r]),r}validate({key:r,value:s,mode:i="blur"},l){const u=this.getRulesFor(r).map(r=>new t(r,s,i,l,this.i18n));return new e(u)}constructor(t,e){r(this,"rules",{default:{validate:()=>!0,modes:["blur","input"]}}),r(this,"i18n",void 0),this.setRules(t),this.i18n=e}}export{s as default};
2
2
  //# sourceMappingURL=Validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.js","sources":["../../../../src/utils/Validator/Validator.ts"],"sourcesContent":["import { ValidatorRules, ValidatorRule, FieldContext, FieldData } from './types';\nimport { ValidationRuleResult } from './ValidationRuleResult';\nimport type Language from '../../language';\n\nexport class ValidationResult {\n private readonly validationResults: ValidationRuleResult[];\n\n constructor(results: ValidationRuleResult[]) {\n this.validationResults = results;\n }\n\n /** Checks if all validation rules have passed */\n get isValid(): boolean {\n return this.validationResults.reduce((acc, result) => acc && result.isValid, true);\n }\n\n /** Checks if any validation rule returned an error */\n hasError(isValidatingForm = false): boolean {\n return Boolean(this.getError(isValidatingForm));\n }\n\n /** Returns the first validation result that returned an error */\n getError(isValidatingForm = false): ValidationRuleResult | null {\n return this.validationResults.find(result => result.hasError(isValidatingForm)) ?? null;\n }\n\n /** Returns all validation results that returned an error */\n getAllErrors() {\n return this.validationResults.filter(result => result.hasError());\n }\n}\n\nclass Validator {\n public rules: ValidatorRules = {\n default: {\n validate: () => true,\n modes: ['blur', 'input']\n }\n };\n\n private readonly i18n: Language;\n\n constructor(rules: ValidatorRules, i18n: Language) {\n this.setRules(rules);\n this.i18n = i18n;\n }\n\n setRules(newRules: ValidatorRules) {\n this.rules = {\n ...this.rules,\n ...newRules\n };\n }\n\n /**\n * Get all validation rules for a field\n */\n private getRulesFor(field: string): ValidatorRule[] {\n let fieldRules: ValidatorRule | ValidatorRule[] = this.rules[field] ?? this.rules['default'];\n\n if (!Array.isArray(fieldRules)) {\n fieldRules = [fieldRules];\n }\n\n return fieldRules;\n }\n\n /**\n * Validates a field\n */\n validate({ key, value, mode = 'blur' }: FieldData, context?: FieldContext) {\n const fieldRules = this.getRulesFor(key);\n // create an ValidationRuleResult, we run the actual validation inside of it\n // validate is called in the constructor of ValidationRuleResult\n // line rule.validate(value, context);\n //\n const validationRulesResult = fieldRules.map(rule => new ValidationRuleResult(rule, value, mode, context, this.i18n));\n\n return new ValidationResult(validationRulesResult);\n }\n}\n\nexport default Validator;\n"],"names":["ValidationResult","isValid","this","validationResults","reduce","acc","result","hasError","isValidatingForm","Boolean","getError","find","getAllErrors","filter","constructor","results","_define_property","Validator","setRules","newRules","rules","getRulesFor","field","fieldRules","Array","isArray","validate","key","value","mode","context","validationRulesResult","map","rule","ValidationRuleResult","i18n","default","modes"],"mappings":"yLAIO,MAAMA,EAQT,WAAIC,GACA,OAAOC,KAAKC,kBAAkBC,OAAO,CAACC,EAAKC,IAAWD,GAAOC,EAAOL,SAAS,EACjF,CAGAM,QAAAA,CAASC,GAAmB,GACxB,OAAOC,QAAQP,KAAKQ,SAASF,GACjC,CAGAE,QAAAA,CAASF,GAAmB,GACxB,OAAON,KAAKC,kBAAkBQ,KAAKL,GAAUA,EAAOC,SAASC,KAAsB,IACvF,CAGAI,YAAAA,GACI,OAAOV,KAAKC,kBAAkBU,OAAOP,GAAUA,EAAOC,WAC1D,CAtBA,WAAAO,CAAYC,GAFZC,EAAAd,KAAiBC,4BAGbD,KAAKC,kBAAoBY,CAC7B,EAuBJ,MAAME,EAeFC,QAAAA,CAASC,GACLjB,KAAKkB,MAAQ,IACNlB,KAAKkB,SACLD,EAEX,CAKQE,WAAAA,CAAYC,GAChB,IAAIC,EAA8CrB,KAAKkB,MAAME,IAAUpB,KAAKkB,MAAM,QAMlF,OAJKI,MAAMC,QAAQF,KACfA,EAAa,CAACA,IAGXA,CACX,CAKAG,QAAAA,EAASC,IAAEA,EAAGC,MAAEA,EAAKC,KAAEA,EAAO,QAAqBC,GAC/C,MAKMC,EALa7B,KAAKmB,YAAYM,GAKKK,IAAIC,GAAQ,IAAIC,EAAqBD,EAAML,EAAOC,EAAMC,EAAS5B,KAAKiC,OAE/G,OAAO,IAAInC,EAAiB+B,EAChC,CArCA,WAAAjB,CAAYM,EAAuBe,GATnCnB,EAAAd,KAAOkB,QAAwB,CAC3BgB,QAAS,CACLV,SAAU,KAAM,EAChBW,MAAO,CAAC,OAAQ,YAIxBrB,EAAAd,KAAiBiC,eAGbjC,KAAKgB,SAASE,GACdlB,KAAKiC,KAAOA,CAChB"}
1
+ {"version":3,"file":"Validator.js","sources":["../../../../src/utils/Validator/Validator.ts"],"sourcesContent":["import { ValidatorRules, ValidatorRule, FieldContext, FieldData } from './types';\nimport { ValidationRuleResult } from './ValidationRuleResult';\nimport type Language from '../../language';\n\nclass ValidationResult {\n private validationResults: ValidationRuleResult[];\n\n constructor(results: ValidationRuleResult[]) {\n this.validationResults = results;\n }\n\n /** Checks if all validation rules have passed */\n get isValid(): boolean {\n return this.validationResults.reduce((acc, result) => acc && result.isValid, true);\n }\n\n /** Checks if any validation rule returned an error */\n hasError(isValidatingForm = false): boolean {\n return Boolean(this.getError(isValidatingForm));\n }\n\n /** Returns the first validation result that returned an error */\n getError(isValidatingForm = false) {\n return this.validationResults.find(result => result.hasError(isValidatingForm));\n }\n\n /** Returns all validation results that returned an error */\n getAllErrors() {\n return this.validationResults.filter(result => result.hasError());\n }\n}\n\nclass Validator {\n public rules: ValidatorRules = {\n default: {\n validate: () => true,\n modes: ['blur', 'input']\n }\n };\n\n private readonly i18n: Language;\n\n constructor(rules: ValidatorRules, i18n: Language) {\n this.setRules(rules);\n this.i18n = i18n;\n }\n\n setRules(newRules) {\n this.rules = {\n ...this.rules,\n ...newRules\n };\n }\n\n /**\n * Get all validation rules for a field\n */\n private getRulesFor(field: string): ValidatorRule[] {\n let fieldRules: ValidatorRule | ValidatorRule[] = this.rules[field] ?? this.rules['default'];\n\n if (!Array.isArray(fieldRules)) {\n fieldRules = [fieldRules];\n }\n\n return fieldRules;\n }\n\n /**\n * Validates a field\n */\n validate({ key, value, mode = 'blur' }: FieldData, context?: FieldContext) {\n const fieldRules = this.getRulesFor(key);\n // create an ValidationRuleResult, we run the actual validation inside of it\n // validate is called in the constructor of ValidationRuleResult\n // line rule.validate(value, context);\n //\n const validationRulesResult = fieldRules.map(rule => new ValidationRuleResult(rule, value, mode, context, this.i18n));\n\n return new ValidationResult(validationRulesResult);\n }\n}\n\nexport default Validator;\n"],"names":["ValidationResult","isValid","this","validationResults","reduce","acc","result","hasError","isValidatingForm","Boolean","getError","find","getAllErrors","filter","constructor","results","_define_property","Validator","setRules","newRules","rules","getRulesFor","field","fieldRules","Array","isArray","validate","key","value","mode","context","validationRulesResult","map","rule","ValidationRuleResult","i18n","default","modes"],"mappings":"yLAIA,MAAMA,EAQF,WAAIC,GACA,OAAOC,KAAKC,kBAAkBC,OAAO,CAACC,EAAKC,IAAWD,GAAOC,EAAOL,SAAS,EACjF,CAGAM,QAAAA,CAASC,GAAmB,GACxB,OAAOC,QAAQP,KAAKQ,SAASF,GACjC,CAGAE,QAAAA,CAASF,GAAmB,GACxB,OAAON,KAAKC,kBAAkBQ,KAAKL,GAAUA,EAAOC,SAASC,GACjE,CAGAI,YAAAA,GACI,OAAOV,KAAKC,kBAAkBU,OAAOP,GAAUA,EAAOC,WAC1D,CAtBA,WAAAO,CAAYC,GAFZC,EAAAd,KAAQC,4BAGJD,KAAKC,kBAAoBY,CAC7B,EAuBJ,MAAME,EAeFC,QAAAA,CAASC,GACLjB,KAAKkB,MAAQ,IACNlB,KAAKkB,SACLD,EAEX,CAKQE,WAAAA,CAAYC,GAChB,IAAIC,EAA8CrB,KAAKkB,MAAME,IAAUpB,KAAKkB,MAAM,QAMlF,OAJKI,MAAMC,QAAQF,KACfA,EAAa,CAACA,IAGXA,CACX,CAKAG,QAAAA,EAASC,IAAEA,EAAGC,MAAEA,EAAKC,KAAEA,EAAO,QAAqBC,GAC/C,MAKMC,EALa7B,KAAKmB,YAAYM,GAKKK,IAAIC,GAAQ,IAAIC,EAAqBD,EAAML,EAAOC,EAAMC,EAAS5B,KAAKiC,OAE/G,OAAO,IAAInC,EAAiB+B,EAChC,CArCA,WAAAjB,CAAYM,EAAuBe,GATnCnB,EAAAd,KAAOkB,QAAwB,CAC3BgB,QAAS,CACLV,SAAU,KAAM,EAChBW,MAAO,CAAC,OAAQ,YAIxBrB,EAAAd,KAAiBiC,eAGbjC,KAAKgB,SAASE,GACdlB,KAAKiC,KAAOA,CAChB"}
@@ -1,2 +1,2 @@
1
- const e=(e,r)=>Object.keys(e).filter(e=>!r.includes(e)).reduce((r,a)=>(r[a]=e[a],r),{}),r=(e,r,a,l,d)=>r.reduce((e,r)=>({...e,[r]:e[r]??d?.[r]??l?.[r]??a}),e);function a({schema:e,defaultData:r,processField:a,fieldProblems:l}){const d=e=>{if(void 0===r[e])return{valid:!1,errors:null,data:null,fieldProblems:l?.[e]??null};const[d,s]=a({key:e,value:r[e],mode:"blur"},{state:{data:r}});return{valid:s.isValid&&!l?.[e]||!1,errors:s.hasError()?s.getError():null,data:d,fieldProblems:l?.[e]??null}},s=e.reduce((e,r)=>{const{valid:a,errors:l,data:s,fieldProblems:t}=d(r);return{valid:{...e.valid,[r]:a},errors:{...e.errors,[r]:l},data:{...e.data,[r]:s},fieldProblems:{...e.fieldProblems,[r]:t}}},{data:{},valid:{},errors:{},fieldProblems:{}});return{schema:e,data:s.data,valid:s.valid,errors:s.errors,fieldProblems:s.fieldProblems}}function l(l){return function(d,s){switch(s.type){case"setData":{const{key:e,value:r}=s;return{...d,data:{...d.data,[e]:r}}}case"mergeData":return{...d,data:{...d.data,...s.data}};case"setValid":{const{key:e,value:r}=s;return{...d,valid:{...d.valid,[e]:r}}}case"setErrors":{const{key:e,value:r}=s;return{...d,errors:{...d.errors,[e]:r}}}case"setFieldProblems":{const{fieldProblems:e}=s;return d?.schema?.reduce((r,a)=>({...r,fieldProblems:{...d.fieldProblems,[a]:e?.[a]??null},valid:{...d.valid,[a]:d.valid?.[a]&&!e?.[a]}}),d)??d}case"updateField":{const{key:e,value:r,mode:a}=s,[t,o]=l({key:e,value:r,mode:a},{state:d}),i=d.data[e],c={...d.fieldProblems};return i!==t&&(c[e]=null),{...d,data:{...d.data,[e]:t},errors:{...d.errors,[e]:o.hasError()?o.getError():null},valid:{...d.valid,[e]:o.isValid&&!c[e]||!1},fieldProblems:c}}case"mergeForm":{const{formValue:e}=s,r={...d,data:{...d.data,...e?.data},errors:{...d.errors,...e?.errors},valid:{...d.valid,...e?.valid},fieldProblems:{...d.fieldProblems,...e?.fieldProblems}};return r.valid&&(r.isValid=Object.values(r.valid).every(e=>e)),r}case"setSchema":{const{schema:t,defaultData:o}=s,i=a({schema:t,defaultData:o,processField:l}),c=d.schema.filter(e=>!t?.includes(e)),u=t?.filter(e=>!d.schema.includes(e)),n={data:e(d.data,u),errors:e(d.errors,u),valid:e(d.valid,u)},v=r(e(d.data,c),u,null,i.data,d.local?.data),m=r(e(d.valid,c),u,!1,i.valid,d.local?.valid),f=r(e(d.errors,c),u,null,i.errors,d.local?.errors);return{...d,schema:t,data:v,valid:m,errors:f,local:n}}case"validateForm":{const e=(s.selectedSchema||d.schema).reduce((e,r)=>{const[,a]=l({key:r,value:d.data[r],mode:"blur"},{state:d});return{valid:{...e.valid,[r]:a.isValid&&!d.fieldProblems[r]||!1},errors:{...e.errors,[r]:a.hasError(!0)?a.getError(!0):null}}},{valid:d.valid,errors:d.errors});return{...d,valid:e.valid,errors:e.errors}}default:throw new Error("Undefined useForm action")}}}export{l as getReducer,a as init};
1
+ const r=(r,e)=>Object.keys(r).filter(r=>!e.includes(r)).reduce((e,a)=>(e[a]=r[a],e),{}),e=(r,e,a,l,d)=>e.reduce((r,e)=>({...r,[e]:r[e]??d?.[e]??l?.[e]??a}),r);function a({schema:r,defaultData:e,processField:a,fieldProblems:l}){const d=r=>{if(void 0===e[r])return{valid:!1,errors:null,data:null,fieldProblems:l?.[r]??null};const[d,s]=a({key:r,value:e[r],mode:"blur"},{state:{data:e}});return{valid:s.isValid&&!l?.[r]||!1,errors:s.hasError()?s.getError():null,data:d,fieldProblems:l?.[r]??null}},s=r.reduce((r,e)=>{const{valid:a,errors:l,data:s,fieldProblems:t}=d(e);return{valid:{...r.valid,[e]:a},errors:{...r.errors,[e]:l},data:{...r.data,[e]:s},fieldProblems:{...r.fieldProblems,[e]:t}}},{data:{},valid:{},errors:{},fieldProblems:{}});return{schema:r,data:s.data,valid:s.valid,errors:s.errors,fieldProblems:s.fieldProblems}}function l(l){return function(d,{type:s,key:t,value:o,mode:i,schema:c,defaultData:u,formValue:n,selectedSchema:m,fieldProblems:v,data:f}){const b=m||d.schema;switch(s){case"setData":return{...d,data:{...d.data,[t]:o}};case"mergeData":return{...d,data:{...d.data,...f}};case"setValid":return{...d,valid:{...d.valid,[t]:o}};case"setErrors":return{...d,errors:{...d.errors,[t]:o}};case"setFieldProblems":return d?.schema?.reduce((r,e)=>({...r,fieldProblems:{...d.fieldProblems,[e]:v?.[e]??null},valid:{...d.valid,[e]:d.valid?.[e]&&!v[e]}}),d)??d;case"updateField":{const[r,e]=l({key:t,value:o,mode:i},{state:d}),a=d.data[t],s={...d.fieldProblems};return a!==r&&(s[t]=null),{...d,data:{...d.data,[t]:r},errors:{...d.errors,[t]:e.hasError()?e.getError():null},valid:{...d.valid,[t]:e.isValid&&!s[t]||!1},fieldProblems:s}}case"mergeForm":{const r={...d,data:{...d.data,...n.data},errors:{...d.errors,...n.errors},valid:{...d.valid,...n.valid},fieldProblems:{...d.fieldProblems,...n.fieldProblems}};return r.valid&&(r.isValid=Object.values(r.valid).every(r=>r)),r}case"setSchema":{const s=a({schema:c,defaultData:u,processField:l,fieldProblems:v}),t=d.schema.filter(r=>!c.includes(r)),o=c.filter(r=>!d.schema.includes(r)),i={data:r(d.data,o),errors:r(d.errors,o),valid:r(d.valid,o)},n=e(r(d.data,t),o,null,s.data,d.local?.data),m=e(r(d.valid,t),o,!1,s.valid,d.local?.valid),f=e(r(d.errors,t),o,null,s.errors,d.local?.errors);return{...d,schema:c,data:n,valid:m,errors:f,local:i}}case"validateForm":{const r=b.reduce((r,e)=>{const[,a]=l({key:e,value:d.data[e],mode:"blur"},{state:d});return{valid:{...r.valid,[e]:a.isValid&&!d.fieldProblems[e]||!1},errors:{...r.errors,[e]:a.hasError(!0)?a.getError(!0):null}}},{valid:d.valid,errors:d.errors});return{...d,valid:r.valid,errors:r.errors}}default:throw new Error("Undefined useForm action")}}}export{l as getReducer,a as init};
2
2
  //# sourceMappingURL=reducer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","sources":["../../../../src/utils/useForm/reducer.ts"],"sourcesContent":["import { FormAction, FormInitArg, FormState, FormStateErrors, FormStateValid, ProcessFieldType } from './types';\n\nconst omitKeys = <O extends object>(obj: O, omit: string[]): O =>\n Object.keys(obj)\n .filter(k => !omit.includes(k))\n .reduce((a, c) => {\n a[c] = obj[c];\n return a;\n }, {} as O);\n\nconst addKeys = <O extends object>(obj: O, add: string[], initialValue: unknown, defaultData?: NoInfer<O>, pendingData?: NoInfer<O>): O =>\n add.reduce((a, c) => ({ ...a, [c]: a[c] ?? pendingData?.[c] ?? defaultData?.[c] ?? initialValue }), obj);\n\n/**\n * Processes default data and sets as default in state\n */\nexport function init<FormSchema>({ schema, defaultData, processField, fieldProblems }: FormInitArg<FormSchema>): FormState<FormSchema> {\n const getProcessedState = (fieldKey: string) => {\n if (defaultData[fieldKey] === undefined) return { valid: false, errors: null, data: null, fieldProblems: fieldProblems?.[fieldKey] ?? null };\n\n const [formattedValue, validationResult] = processField(\n { key: fieldKey, value: defaultData[fieldKey], mode: 'blur' },\n { state: { data: defaultData } }\n );\n\n return {\n valid: (validationResult.isValid && !fieldProblems?.[fieldKey]) || false,\n errors: validationResult.hasError() ? validationResult.getError() : null,\n data: formattedValue,\n fieldProblems: fieldProblems?.[fieldKey] ?? null\n };\n };\n\n const formData = schema.reduce(\n (acc: Pick<FormState<FormSchema>, 'data' | 'valid' | 'errors' | 'fieldProblems'>, fieldKey) => {\n const { valid, errors, data, fieldProblems } = getProcessedState(fieldKey);\n\n return {\n valid: { ...acc.valid, [fieldKey]: valid },\n errors: { ...acc.errors, [fieldKey]: errors },\n data: { ...acc.data, [fieldKey]: data },\n fieldProblems: { ...acc.fieldProblems, [fieldKey]: fieldProblems }\n };\n },\n { data: {} as FormSchema, valid: {}, errors: {}, fieldProblems: {} }\n );\n\n return {\n schema,\n data: formData.data,\n valid: formData.valid,\n errors: formData.errors,\n fieldProblems: formData.fieldProblems\n };\n}\n\nexport function getReducer<FormSchema extends object>(processField: ProcessFieldType) {\n return function reducer(state: FormState<FormSchema>, action: FormAction<FormSchema>): FormState<FormSchema> {\n switch (action.type) {\n case 'setData': {\n const { key, value } = action;\n return { ...state, data: { ...state['data'], [key]: value } };\n }\n case 'mergeData': {\n return { ...state, data: { ...state['data'], ...action.data } };\n }\n case 'setValid': {\n const { key, value } = action;\n return { ...state, valid: { ...state['valid'], [key]: value } };\n }\n case 'setErrors': {\n const { key, value } = action;\n return { ...state, errors: { ...state['errors'], [key]: value } };\n }\n case 'setFieldProblems': {\n const { fieldProblems } = action;\n return (\n state?.schema?.reduce(\n (acc, key) => ({\n ...acc,\n fieldProblems: { ...state['fieldProblems'], [key]: fieldProblems?.[key] ?? null },\n valid: { ...state['valid'], [key]: state['valid']?.[key] && !fieldProblems?.[key] }\n }),\n state\n ) ?? state\n );\n }\n case 'updateField': {\n const { key, value, mode } = action;\n const [formattedValue, validation] = processField({ key, value, mode }, { state });\n const oldValue = state.data[key];\n const fieldProblems = { ...state.fieldProblems };\n if (oldValue !== formattedValue) {\n fieldProblems[key] = null;\n }\n return {\n ...state,\n data: { ...state['data'], [key]: formattedValue },\n errors: { ...state['errors'], [key]: validation.hasError() ? validation.getError() : null },\n valid: { ...state['valid'], [key]: (validation.isValid && !fieldProblems[key]) || false },\n fieldProblems\n };\n }\n case 'mergeForm': {\n const { formValue } = action;\n // To provide a uniform result from forms even if there are multiple levels of nested forms are present\n const mergedState = {\n ...state,\n data: { ...state['data'], ...formValue?.['data'] },\n errors: { ...state['errors'], ...formValue?.['errors'] },\n valid: { ...state['valid'], ...formValue?.['valid'] },\n fieldProblems: { ...state['fieldProblems'], ...formValue?.['fieldProblems'] }\n };\n if (mergedState['valid']) {\n mergedState.isValid = Object.values(mergedState.valid).every(isValid => isValid);\n }\n return mergedState;\n }\n case 'setSchema': {\n const { schema, defaultData } = action;\n const defaultState = init({ schema, defaultData, processField });\n const removedSchemaFields = state.schema.filter(x => !schema?.includes(x));\n const newSchemaFields = schema?.filter(x => !state.schema.includes(x));\n\n // if we remove a key from the schema we also lost the latest value of the field\n // to prevent this we have to store the value in a local state so we can recover it when the key is re-added to the schema\n const local = {\n data: omitKeys(state.data, newSchemaFields),\n errors: omitKeys(state.errors, newSchemaFields),\n valid: omitKeys(state.valid, newSchemaFields)\n };\n\n // reindex data and validation according to the new schema\n const data = addKeys(\n omitKeys<FormSchema>(state.data, removedSchemaFields),\n newSchemaFields,\n null,\n defaultState.data,\n state.local?.data\n );\n const valid = addKeys(\n omitKeys<FormStateValid>(state.valid, removedSchemaFields),\n newSchemaFields,\n false,\n defaultState.valid,\n state.local?.valid\n );\n const errors = addKeys(\n omitKeys<FormStateErrors>(state.errors, removedSchemaFields),\n newSchemaFields,\n null,\n defaultState.errors,\n state.local?.errors\n );\n\n return { ...state, schema, data, valid, errors, local };\n }\n case 'validateForm': {\n const validationSchema: string[] = action.selectedSchema || state.schema;\n const formValidation = validationSchema.reduce(\n (acc, cur) => {\n const [, validation] = processField({ key: cur, value: state.data[cur], mode: 'blur' }, { state });\n return {\n valid: { ...acc['valid'], [cur]: (validation.isValid && !state.fieldProblems[cur]) || false },\n errors: { ...acc['errors'], [cur]: validation.hasError(true) ? validation.getError(true) : null }\n };\n },\n { valid: state.valid, errors: state.errors }\n );\n\n return { ...state, valid: formValidation.valid, errors: formValidation.errors };\n }\n default:\n throw new Error('Undefined useForm action');\n }\n };\n}\n"],"names":["omitKeys","obj","omit","Object","keys","filter","k","includes","reduce","a","c","addKeys","add","initialValue","defaultData","pendingData","init","schema","processField","fieldProblems","getProcessedState","fieldKey","undefined","valid","errors","data","formattedValue","validationResult","key","value","mode","state","isValid","hasError","getError","formData","acc","getReducer","action","type","validation","oldValue","formValue","mergedState","values","every","defaultState","removedSchemaFields","x","newSchemaFields","local","formValidation","selectedSchema","cur","Error"],"mappings":"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"}
1
+ {"version":3,"file":"reducer.js","sources":["../../../../src/utils/useForm/reducer.ts"],"sourcesContent":["const omitKeys = (obj, omit) =>\n Object.keys(obj)\n .filter(k => !omit.includes(k))\n .reduce((a, c) => {\n a[c] = obj[c];\n return a;\n }, {});\n\nconst addKeys = (obj, add, initialValue, defaultData, pendingData) =>\n add.reduce((a, c) => ({ ...a, [c]: a[c] ?? pendingData?.[c] ?? defaultData?.[c] ?? initialValue }), obj);\n\n/**\n * Processes default data and sets as default in state\n */\nexport function init({ schema, defaultData, processField, fieldProblems }) {\n const getProcessedState = fieldKey => {\n if (typeof defaultData[fieldKey] === 'undefined')\n return { valid: false, errors: null, data: null, fieldProblems: fieldProblems?.[fieldKey] ?? null };\n\n const [formattedValue, validationResult] = processField(\n { key: fieldKey, value: defaultData[fieldKey], mode: 'blur' },\n { state: { data: defaultData } }\n );\n\n return {\n valid: (validationResult.isValid && !fieldProblems?.[fieldKey]) || false,\n errors: validationResult.hasError() ? validationResult.getError() : null,\n data: formattedValue,\n fieldProblems: fieldProblems?.[fieldKey] ?? null\n };\n };\n\n const formData = schema.reduce(\n (acc: any, fieldKey) => {\n const { valid, errors, data, fieldProblems } = getProcessedState(fieldKey);\n\n return {\n valid: { ...acc.valid, [fieldKey]: valid },\n errors: { ...acc.errors, [fieldKey]: errors },\n data: { ...acc.data, [fieldKey]: data },\n fieldProblems: { ...acc.fieldProblems, [fieldKey]: fieldProblems }\n };\n },\n { data: {}, valid: {}, errors: {}, fieldProblems: {} }\n );\n\n return {\n schema,\n data: formData.data,\n valid: formData.valid,\n errors: formData.errors,\n fieldProblems: formData.fieldProblems\n };\n}\n\nexport function getReducer(processField) {\n return function reducer(state, { type, key, value, mode, schema, defaultData, formValue, selectedSchema, fieldProblems, data }) {\n const validationSchema: string[] = selectedSchema || state.schema;\n\n switch (type) {\n case 'setData': {\n return { ...state, data: { ...state['data'], [key]: value } };\n }\n case 'mergeData': {\n return { ...state, data: { ...state['data'], ...data } };\n }\n case 'setValid': {\n return { ...state, valid: { ...state['valid'], [key]: value } };\n }\n case 'setErrors': {\n return { ...state, errors: { ...state['errors'], [key]: value } };\n }\n case 'setFieldProblems': {\n return (\n state?.schema?.reduce(\n (acc, key) => ({\n ...acc,\n fieldProblems: { ...state['fieldProblems'], [key]: fieldProblems?.[key] ?? null },\n valid: { ...state['valid'], [key]: state['valid']?.[key] && !fieldProblems[key] }\n }),\n state\n ) ?? state\n );\n }\n case 'updateField': {\n const [formattedValue, validation] = processField({ key, value, mode }, { state });\n const oldValue = state.data[key];\n const fieldProblems = { ...state.fieldProblems };\n if (oldValue !== formattedValue) {\n fieldProblems[key] = null;\n }\n return {\n ...state,\n data: { ...state['data'], [key]: formattedValue },\n errors: { ...state['errors'], [key]: validation.hasError() ? validation.getError() : null },\n valid: { ...state['valid'], [key]: (validation.isValid && !fieldProblems[key]) || false },\n fieldProblems\n };\n }\n case 'mergeForm': {\n // To provide a uniform result from forms even if there are multiple levels of nested forms are present\n const mergedState = {\n ...state,\n data: { ...state['data'], ...formValue['data'] },\n errors: { ...state['errors'], ...formValue['errors'] },\n valid: { ...state['valid'], ...formValue['valid'] },\n fieldProblems: { ...state['fieldProblems'], ...formValue['fieldProblems'] }\n };\n if (mergedState['valid']) {\n mergedState.isValid = Object.values(mergedState.valid).every(isValid => isValid);\n }\n return mergedState;\n }\n case 'setSchema': {\n const defaultState = init({ schema, defaultData, processField, fieldProblems });\n const removedSchemaFields = state.schema.filter(x => !schema.includes(x));\n const newSchemaFields = schema.filter(x => !state.schema.includes(x));\n\n // if we remove a key from the schema we also lost the latest value of the field\n // to prevent this we have to store the value in a local state so we can recover it when the key is re-added to the schema\n const local = {\n data: omitKeys(state.data, newSchemaFields),\n errors: omitKeys(state.errors, newSchemaFields),\n valid: omitKeys(state.valid, newSchemaFields)\n };\n\n // reindex data and validation according to the new schema\n const data = addKeys(omitKeys(state.data, removedSchemaFields), newSchemaFields, null, defaultState.data, state.local?.data);\n const valid = addKeys(omitKeys(state.valid, removedSchemaFields), newSchemaFields, false, defaultState.valid, state.local?.valid);\n const errors = addKeys(omitKeys(state.errors, removedSchemaFields), newSchemaFields, null, defaultState.errors, state.local?.errors);\n\n return { ...state, schema, data, valid, errors, local };\n }\n case 'validateForm': {\n const formValidation = validationSchema.reduce(\n (acc, cur) => {\n const [, validation] = processField({ key: cur, value: state.data[cur], mode: 'blur' }, { state });\n return {\n valid: { ...acc['valid'], [cur]: (validation.isValid && !state.fieldProblems[cur]) || false },\n errors: { ...acc['errors'], [cur]: validation.hasError(true) ? validation.getError(true) : null }\n };\n },\n { valid: state.valid, errors: state.errors }\n );\n\n return { ...state, valid: formValidation.valid, errors: formValidation.errors };\n }\n default:\n throw new Error('Undefined useForm action');\n }\n };\n}\n"],"names":["omitKeys","obj","omit","Object","keys","filter","k","includes","reduce","a","c","addKeys","add","initialValue","defaultData","pendingData","init","schema","processField","fieldProblems","getProcessedState","fieldKey","valid","errors","data","formattedValue","validationResult","key","value","mode","state","isValid","hasError","getError","formData","acc","getReducer","type","formValue","selectedSchema","validationSchema","validation","oldValue","mergedState","values","every","defaultState","removedSchemaFields","x","newSchemaFields","local","formValidation","cur","Error"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{useMemo as e,useReducer as a,useCallback as t,useEffect as r}from"../../external/preact/hooks/dist/hooks.js";import s from"../Validator/Validator.js";import{init as o,getReducer as l}from"./reducer.js";import{useCoreContext as m}from"../../core/Context/CoreProvider.js";function d(d){const{rules:i,formatters:c,defaultData:u,fieldProblems:f,schema:n}=d,p=i??{},y=c??{},h=u??{},v=f??{},g=n??[],{i18n:b}=m(),k=e(()=>new s(p,b),[p]),F=({key:e,value:a,mode:t},r)=>{const s=y?.[e],o=function(e){return e&&"formatterFn"in e}(s)?s.formatterFn:s,l=o&&"function"==typeof o?o(a??"",r):a;return[l,k.validate({key:e,value:l,mode:t},r)]},[P,D]=a(l(F),{defaultData:h,schema:g,processField:F,fieldProblems:v},o),V=e(()=>P.schema.reduce((e,a)=>e&&P.valid[a],!0),[P.schema,P.valid]),j=t(e=>{D({type:"validateForm",selectedSchema:e})},[]),x=t((e,a)=>D({type:"setErrors",key:e,value:a}),[]),C=t((e,a)=>D({type:"setValid",key:e,value:a}),[]),S=t((e,a)=>D({type:"setData",key:e,value:a}),[]),E=t(e=>D({type:"mergeData",data:e}),[]),w=t(e=>D({type:"setSchema",schema:e,defaultData:h}),[P.schema]),J=t(e=>D({type:"mergeForm",formValue:e}),[]),M=t(e=>D({type:"setFieldProblems",fieldProblems:e}),[P.schema]);return r(()=>{M(v??{})},[JSON.stringify(v)]),{handleChangeFor:(e,a)=>t=>{const r=((e,a)=>{return(t=a)&&"object"==typeof t&&"target"in t?"checkbox"===a.target?.type?!P.data[e]:a.target?.value:a;var t})(e,t);D({type:"updateField",key:e,value:r,mode:a})},triggerValidation:j,setSchema:w,setData:S,mergeData:E,setValid:C,setErrors:x,isValid:V,mergeForm:J,setFieldProblems:M,schema:P.schema,valid:P.valid,errors:P.errors,data:P.data,fieldProblems:P.fieldProblems}}export{d as default};
1
+ import{useMemo as e,useReducer as a,useCallback as t,useEffect as r}from"../../external/preact/hooks/dist/hooks.js";import s from"../Validator/Validator.js";import{init as o,getReducer as l}from"./reducer.js";import{useCoreContext as m}from"../../core/Context/CoreProvider.js";function d(d){const{rules:i,formatters:c,defaultData:u,fieldProblems:f,schema:n}=d,p=i??{},y=c??{},h=u??{},v=f??{},g=n??[],{i18n:k}=m(),F=e(()=>new s(p,k),[p]),b=({key:e,value:a,mode:t},r)=>{const s=y?.[e],o=function(e){return e&&"formatterFn"in e}(s)?s.formatterFn:s,l=o&&"function"==typeof o?o(a??"",r):a;return[l,F.validate({key:e,value:l,mode:t},r)]},[P,D]=a(l(b),{defaultData:h,schema:g,processField:b,fieldProblems:v},o),V=e(()=>P.schema.reduce((e,a)=>e&&P.valid[a],!0),[P.schema,P.valid]),j=t((e=null)=>{D({type:"validateForm",selectedSchema:e})},[]),x=t((e,a)=>D({type:"setErrors",key:e,value:a}),[]),C=t((e,a)=>D({type:"setValid",key:e,value:a}),[]),S=t((e,a)=>D({type:"setData",key:e,value:a}),[]),E=t(e=>D({type:"mergeData",data:e}),[]),w=t(e=>D({type:"setSchema",schema:e,defaultData:h}),[P.schema]),J=t(e=>D({type:"mergeForm",formValue:e}),[]),M=t(e=>D({type:"setFieldProblems",fieldProblems:e}),[P.schema]);return r(()=>{M(v??{})},[JSON.stringify(v)]),{handleChangeFor:(e,a)=>t=>{const r=((e,a)=>a.target?"checkbox"===a.target.type?!P.data[e]:a.target.value:a)(e,t);D({type:"updateField",key:e,value:r,mode:a})},triggerValidation:j,setSchema:w,setData:S,mergeData:E,setValid:C,setErrors:x,isValid:V,mergeForm:J,setFieldProblems:M,schema:P.schema,valid:P.valid,errors:P.errors,data:P.data,fieldProblems:P.fieldProblems}}export{d as default};
2
2
  //# sourceMappingURL=useForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.js","sources":["../../../../src/utils/useForm/useForm.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from 'preact/hooks';\nimport Validator from '../Validator';\nimport { getReducer, init } from './reducer';\n\nimport type { Form, FormState, FormProps, Formatter, FormAction, FormInitArg, ProcessFieldType, FormChangeEventTarget } from './types';\nimport { useCoreContext } from '../../core/Context/CoreProvider';\nimport { ValidatorMode } from '../Validator/types';\nimport { ValidationRuleResult } from '../Validator/ValidationRuleResult';\n\nfunction isFormatterObject(formatter: Formatter | Function): formatter is Formatter {\n return formatter && 'formatterFn' in formatter;\n}\n\nfunction hasEventTarget(event: unknown): event is { target: FormChangeEventTarget } {\n return !!event && typeof event === 'object' && 'target' in event;\n}\n\nfunction useForm<FormSchema extends object>(props: FormProps): Form<FormSchema> {\n // Normalize null values to empty objects/arrays to avoid type errors\n const {\n rules: providedRules,\n formatters: providedFormatters,\n defaultData: providedDefaultData,\n fieldProblems: providedFieldProblems,\n schema: providedSchema\n } = props;\n const rules = providedRules ?? {};\n const formatters = providedFormatters ?? {};\n const defaultData = (providedDefaultData ?? {}) as FormSchema;\n const fieldProblems = (providedFieldProblems ?? {}) as Record<string, string | null>;\n const schema = providedSchema ?? [];\n\n const { i18n } = useCoreContext();\n\n const validator = useMemo(() => new Validator(rules, i18n), [rules]);\n\n /** Formats and validates a field */\n const processField: ProcessFieldType = ({ key, value, mode }, fieldContext) => {\n // Find a formatting function either stored under 'key' or a level deeper under a 'formatter' property\n const formatter = formatters?.[key];\n const formatterFn = isFormatterObject(formatter) ? formatter.formatterFn : formatter;\n const formattedValue = formatterFn && typeof formatterFn === 'function' ? formatterFn(value ?? '', fieldContext) : value;\n\n const validationResult = validator.validate({ key, value: formattedValue, mode }, fieldContext);\n return [formattedValue, validationResult];\n };\n\n const [state, dispatch] = useReducer<FormState<FormSchema>, FormAction<FormSchema>, FormInitArg<FormSchema>>(\n getReducer<FormSchema>(processField),\n { defaultData, schema, processField, fieldProblems },\n init\n );\n const isValid = useMemo(() => state.schema.reduce((acc, val) => acc && state.valid[val], true), [state.schema, state.valid]);\n\n const getTargetValue = (key: string, e: unknown) => {\n if (!hasEventTarget(e)) return e;\n\n if (e.target?.type === 'checkbox') {\n return !state.data[key];\n }\n return e.target?.value;\n };\n\n /** Formats, validates, and stores a new value for a form field */\n const handleChangeFor = (key: string, mode: ValidatorMode) => {\n return (e: unknown) => {\n const value = getTargetValue(key, e);\n dispatch({ type: 'updateField', key, value, mode });\n };\n };\n\n /** Validates every field in the form OR just those in selectedSchema */\n const triggerValidation = useCallback((selectedSchema?: string[]) => {\n dispatch({ type: 'validateForm', selectedSchema });\n }, []);\n\n const setErrors = useCallback((key: string, value: ValidationRuleResult | null) => dispatch({ type: 'setErrors', key, value }), []);\n const setValid = useCallback((key: string, value: boolean) => dispatch({ type: 'setValid', key, value }), []);\n const setData = useCallback((key: string, value: unknown) => dispatch({ type: 'setData', key, value }), []);\n const mergeData = useCallback((data: FormSchema) => dispatch({ type: 'mergeData', data }), []);\n const setSchema = useCallback((schema: string[]) => dispatch({ type: 'setSchema', schema, defaultData }), [state.schema]);\n const mergeForm = useCallback((formValue: FormState<FormSchema>) => dispatch({ type: 'mergeForm', formValue }), []);\n const setFieldProblems = useCallback(\n (fieldProblems: Record<string, string | null>) => dispatch({ type: 'setFieldProblems', fieldProblems }),\n [state.schema]\n );\n\n // Set reducer fields problems if fieldProblems prop changes\n useEffect(() => {\n setFieldProblems(fieldProblems ?? {});\n }, [JSON.stringify(fieldProblems)]);\n\n return {\n handleChangeFor,\n triggerValidation,\n setSchema,\n setData,\n mergeData,\n setValid,\n setErrors,\n isValid,\n mergeForm,\n setFieldProblems,\n schema: state.schema,\n valid: state.valid,\n errors: state.errors,\n data: state.data,\n fieldProblems: state.fieldProblems\n };\n}\n\nexport default useForm;\n"],"names":["useForm","props","rules","providedRules","formatters","providedFormatters","defaultData","providedDefaultData","fieldProblems","providedFieldProblems","schema","providedSchema","i18n","useCoreContext","validator","useMemo","Validator","processField","key","value","mode","fieldContext","formatter","formatterFn","isFormatterObject","formattedValue","validate","state","dispatch","useReducer","getReducer","init","isValid","reduce","acc","val","valid","triggerValidation","useCallback","selectedSchema","type","setErrors","setValid","setData","mergeData","data","setSchema","mergeForm","formValue","setFieldProblems","useEffect","JSON","stringify","handleChangeFor","e","event","target","getTargetValue","errors"],"mappings":"qRAiBA,SAASA,EAAmCC,GAExC,MACIC,MAAOC,EACPC,WAAYC,EACZC,YAAaC,EACbC,cAAeC,EACfC,OAAQC,GACRV,EACEC,EAAQC,GAAiB,CAAA,EACzBC,EAAaC,GAAsB,CAAA,EACnCC,EAAeC,GAAuB,CAAA,EACtCC,EAAiBC,GAAyB,CAAA,EAC1CC,EAASC,GAAkB,IAE3BC,KAAEA,GAASC,IAEXC,EAAYC,EAAQ,IAAM,IAAIC,EAAUd,EAAOU,GAAO,CAACV,IAGvDe,EAAiC,EAAGC,MAAKC,QAAOC,QAAQC,KAE1D,MAAMC,EAAYlB,IAAac,GACzBK,EA/Bd,SAA2BD,GACvB,OAAOA,GAAa,gBAAiBA,CACzC,CA6B4BE,CAAkBF,GAAaA,EAAUC,YAAcD,EACrEG,EAAiBF,GAAsC,mBAAhBA,EAA6BA,EAAYJ,GAAS,GAAIE,GAAgBF,EAGnH,MAAO,CAACM,EADiBX,EAAUY,SAAS,CAAER,MAAKC,MAAOM,EAAgBL,QAAQC,MAI/EM,EAAOC,GAAYC,EACtBC,EAAuBb,GACvB,CAAEX,cAAaI,SAAQO,eAAcT,iBACrCuB,GAEEC,EAAUjB,EAAQ,IAAMY,EAAMjB,OAAOuB,OAAO,CAACC,EAAKC,IAAQD,GAAOP,EAAMS,MAAMD,IAAM,GAAO,CAACR,EAAMjB,OAAQiB,EAAMS,QAoB/GC,EAAoBC,EAAaC,IACnCX,EAAS,CAAEY,KAAM,eAAgBD,oBAClC,IAEGE,EAAYH,EAAY,CAACpB,EAAaC,IAAuCS,EAAS,CAAEY,KAAM,YAAatB,MAAKC,UAAU,IAC1HuB,EAAWJ,EAAY,CAACpB,EAAaC,IAAmBS,EAAS,CAAEY,KAAM,WAAYtB,MAAKC,UAAU,IACpGwB,EAAUL,EAAY,CAACpB,EAAaC,IAAmBS,EAAS,CAAEY,KAAM,UAAWtB,MAAKC,UAAU,IAClGyB,EAAYN,EAAaO,GAAqBjB,EAAS,CAAEY,KAAM,YAAaK,SAAS,IACrFC,EAAYR,EAAa5B,GAAqBkB,EAAS,CAAEY,KAAM,YAAa9B,SAAQJ,gBAAgB,CAACqB,EAAMjB,SAC3GqC,EAAYT,EAAaU,GAAqCpB,EAAS,CAAEY,KAAM,YAAaQ,cAAc,IAC1GC,EAAmBX,EACpB9B,GAAiDoB,EAAS,CAAEY,KAAM,mBAAoBhC,kBACvF,CAACmB,EAAMjB,SAQX,OAJAwC,EAAU,KACND,EAAiBzC,GAAiB,KACnC,CAAC2C,KAAKC,UAAU5C,KAEZ,CACH6C,gBA7BoB,CAACnC,EAAaE,IAC1BkC,IACJ,MAAMnC,EAZS,EAACD,EAAaoC,KACjC,OA1CgBC,EA0CID,IAzCW,iBAAVC,GAAsB,WAAYA,EA2ChC,aAAnBD,EAAEE,QAAQhB,MACFb,EAAMkB,KAAK3B,GAEhBoC,EAAEE,QAAQrC,MALcmC,EA1CvC,IAAwBC,GAqDEE,CAAevC,EAAKoC,GAClC1B,EAAS,CAAEY,KAAM,cAAetB,MAAKC,QAAOC,UA2BhDiB,oBACAS,YACAH,UACAC,YACAF,WACAD,YACAT,UACAe,YACAE,mBACAvC,OAAQiB,EAAMjB,OACd0B,MAAOT,EAAMS,MACbsB,OAAQ/B,EAAM+B,OACdb,KAAMlB,EAAMkB,KACZrC,cAAemB,EAAMnB,cAE7B"}
1
+ {"version":3,"file":"useForm.js","sources":["../../../../src/utils/useForm/useForm.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from 'preact/hooks';\nimport Validator from '../Validator';\nimport { getReducer, init } from './reducer';\nimport { Form, FormState, FormProps, Formatter } from './types';\nimport { useCoreContext } from '../../core/Context/CoreProvider';\n\nfunction isFormatterObject(formatter: Formatter | Function): formatter is Formatter {\n return formatter && 'formatterFn' in formatter;\n}\n\nfunction useForm<FormSchema>(props: FormProps): Form<FormSchema> {\n // Normalize null values to empty objects/arrays to avoid type errors\n const {\n rules: providedRules,\n formatters: providedFormatters,\n defaultData: providedDefaultData,\n fieldProblems: providedFieldProblems,\n schema: providedSchema\n } = props;\n const rules = providedRules ?? {};\n const formatters = providedFormatters ?? {};\n const defaultData = providedDefaultData ?? {};\n const fieldProblems = providedFieldProblems ?? {};\n const schema = providedSchema ?? [];\n\n const { i18n } = useCoreContext();\n\n const validator = useMemo(() => new Validator(rules, i18n), [rules]);\n\n /** Formats and validates a field */\n const processField = ({ key, value, mode }, fieldContext) => {\n // Find a formatting function either stored under 'key' or a level deeper under a 'formatter' property\n const formatter = formatters?.[key];\n const formatterFn = isFormatterObject(formatter) ? formatter.formatterFn : formatter;\n const formattedValue = formatterFn && typeof formatterFn === 'function' ? formatterFn(value ?? '', fieldContext) : value;\n\n const validationResult = validator.validate({ key, value: formattedValue, mode }, fieldContext);\n return [formattedValue, validationResult];\n };\n\n const [state, dispatch] = useReducer<FormState<FormSchema>, any, any>(\n getReducer(processField),\n { defaultData, schema, processField, fieldProblems },\n init\n );\n const isValid = useMemo(() => state.schema.reduce((acc, val) => acc && state.valid[val], true), [state.schema, state.valid]);\n\n const getTargetValue = (key, e) => {\n if (!e.target) return e;\n\n if (e.target.type === 'checkbox') {\n return !state.data[key];\n }\n return e.target.value;\n };\n\n /** Formats, validates, and stores a new value for a form field */\n const handleChangeFor = (key, mode) => {\n return e => {\n const value = getTargetValue(key, e);\n dispatch({ type: 'updateField', key, value, mode });\n };\n };\n\n /** Validates every field in the form OR just those in selectedSchema */\n const triggerValidation = useCallback((selectedSchema = null) => {\n dispatch({ type: 'validateForm', selectedSchema });\n }, []);\n\n const setErrors = useCallback((key, value) => dispatch({ type: 'setErrors', key, value }), []);\n const setValid = useCallback((key, value) => dispatch({ type: 'setValid', key, value }), []);\n const setData = useCallback((key, value) => dispatch({ type: 'setData', key, value }), []);\n const mergeData = useCallback(data => dispatch({ type: 'mergeData', data }), []);\n const setSchema = useCallback(schema => dispatch({ type: 'setSchema', schema, defaultData }), [state.schema]);\n const mergeForm = useCallback(formValue => dispatch({ type: 'mergeForm', formValue }), []);\n const setFieldProblems = useCallback(fieldProblems => dispatch({ type: 'setFieldProblems', fieldProblems }), [state.schema]);\n\n // Set reducer fields problems if fieldProblems prop changes\n useEffect(() => {\n setFieldProblems(fieldProblems ?? {});\n }, [JSON.stringify(fieldProblems)]);\n\n return {\n handleChangeFor,\n triggerValidation,\n setSchema,\n setData,\n mergeData,\n setValid,\n setErrors,\n isValid,\n mergeForm,\n setFieldProblems,\n schema: state.schema,\n valid: state.valid,\n errors: state.errors,\n data: state.data,\n fieldProblems: state.fieldProblems\n };\n}\n\nexport default useForm;\n"],"names":["useForm","props","rules","providedRules","formatters","providedFormatters","defaultData","providedDefaultData","fieldProblems","providedFieldProblems","schema","providedSchema","i18n","useCoreContext","validator","useMemo","Validator","processField","key","value","mode","fieldContext","formatter","formatterFn","isFormatterObject","formattedValue","validate","state","dispatch","useReducer","getReducer","init","isValid","reduce","acc","val","valid","triggerValidation","useCallback","selectedSchema","type","setErrors","setValid","setData","mergeData","data","setSchema","mergeForm","formValue","setFieldProblems","useEffect","JSON","stringify","handleChangeFor","e","target","getTargetValue","errors"],"mappings":"qRAUA,SAASA,EAAoBC,GAEzB,MACIC,MAAOC,EACPC,WAAYC,EACZC,YAAaC,EACbC,cAAeC,EACfC,OAAQC,GACRV,EACEC,EAAQC,GAAiB,CAAA,EACzBC,EAAaC,GAAsB,CAAA,EACnCC,EAAcC,GAAuB,CAAA,EACrCC,EAAgBC,GAAyB,CAAA,EACzCC,EAASC,GAAkB,IAE3BC,KAAEA,GAASC,IAEXC,EAAYC,EAAQ,IAAM,IAAIC,EAAUd,EAAOU,GAAO,CAACV,IAGvDe,EAAe,EAAGC,MAAKC,QAAOC,QAAQC,KAExC,MAAMC,EAAYlB,IAAac,GACzBK,EA3Bd,SAA2BD,GACvB,OAAOA,GAAa,gBAAiBA,CACzC,CAyB4BE,CAAkBF,GAAaA,EAAUC,YAAcD,EACrEG,EAAiBF,GAAsC,mBAAhBA,EAA6BA,EAAYJ,GAAS,GAAIE,GAAgBF,EAGnH,MAAO,CAACM,EADiBX,EAAUY,SAAS,CAAER,MAAKC,MAAOM,EAAgBL,QAAQC,MAI/EM,EAAOC,GAAYC,EACtBC,EAAWb,GACX,CAAEX,cAAaI,SAAQO,eAAcT,iBACrCuB,GAEEC,EAAUjB,EAAQ,IAAMY,EAAMjB,OAAOuB,OAAO,CAACC,EAAKC,IAAQD,GAAOP,EAAMS,MAAMD,IAAM,GAAO,CAACR,EAAMjB,OAAQiB,EAAMS,QAoB/GC,EAAoBC,EAAY,CAACC,EAAiB,QACpDX,EAAS,CAAEY,KAAM,eAAgBD,oBAClC,IAEGE,EAAYH,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,YAAatB,MAAKC,UAAU,IACrFuB,EAAWJ,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,WAAYtB,MAAKC,UAAU,IACnFwB,EAAUL,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,UAAWtB,MAAKC,UAAU,IACjFyB,EAAYN,EAAYO,GAAQjB,EAAS,CAAEY,KAAM,YAAaK,SAAS,IACvEC,EAAYR,EAAY5B,GAAUkB,EAAS,CAAEY,KAAM,YAAa9B,SAAQJ,gBAAgB,CAACqB,EAAMjB,SAC/FqC,EAAYT,EAAYU,GAAapB,EAAS,CAAEY,KAAM,YAAaQ,cAAc,IACjFC,EAAmBX,EAAY9B,GAAiBoB,EAAS,CAAEY,KAAM,mBAAoBhC,kBAAkB,CAACmB,EAAMjB,SAOpH,OAJAwC,EAAU,KACND,EAAiBzC,GAAiB,KACnC,CAAC2C,KAAKC,UAAU5C,KAEZ,CACH6C,gBA1BoB,CAACnC,EAAKE,IACnBkC,IACH,MAAMnC,EAZS,EAACD,EAAKoC,IACpBA,EAAEC,OAEe,aAAlBD,EAAEC,OAAOf,MACDb,EAAMkB,KAAK3B,GAEhBoC,EAAEC,OAAOpC,MALMmC,EAWJE,CAAetC,EAAKoC,GAClC1B,EAAS,CAAEY,KAAM,cAAetB,MAAKC,QAAOC,UAwBhDiB,oBACAS,YACAH,UACAC,YACAF,WACAD,YACAT,UACAe,YACAE,mBACAvC,OAAQiB,EAAMjB,OACd0B,MAAOT,EAAMS,MACbqB,OAAQ9B,EAAM8B,OACdZ,KAAMlB,EAAMkB,KACZrC,cAAemB,EAAMnB,cAE7B"}
@@ -1,2 +1,2 @@
1
- import{useRef as r,useCallback as o,useEffect as e}from"../../external/preact/hooks/dist/hooks.js";import s from"./useForm.js";import{useErrorFocus as t}from"./useErrorFocus.js";function a(a){const{formHolder:i,...u}=a,c=s(u),{focusFirstError:n}=t(i),f=r(!1),m=o(r=>{f.current=!0,c.triggerValidation(r)},[c.triggerValidation]);return e(()=>{f.current&&(f.current=!1,n(c.errors,c.schema))},[c.errors]),{...c,triggerValidation:m}}export{a as default};
1
+ import{useRef as r,useCallback as o,useEffect as e}from"../../external/preact/hooks/dist/hooks.js";import s from"./useForm.js";import{useErrorFocus as t}from"./useErrorFocus.js";function a(a){const{formHolder:i,...u}=a,n=s(u),{focusFirstError:c}=t(i),f=r(!1),l=o((r=null)=>{f.current=!0,n.triggerValidation(r)},[n.triggerValidation]);return e(()=>{f.current&&(f.current=!1,c(n.errors,n.schema))},[n.errors]),{...n,triggerValidation:l}}export{a as default};
2
2
  //# sourceMappingURL=useFormWithA11y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormWithA11y.js","sources":["../../../../src/utils/useForm/useFormWithA11y.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'preact/hooks';\nimport { RefObject } from 'preact';\nimport useForm from './useForm';\nimport { useErrorFocus } from './useErrorFocus';\nimport { Form, FormProps } from './types';\n\nexport interface FormWithA11yProps extends FormProps {\n /**\n * DOM Element, CSS selector string, or RefObject pointing to the form root.\n * Used to find and focus the first invalid field after submit-time validation.\n */\n formHolder: Element | string | RefObject<Element>;\n}\n\n/**\n * Wraps useForm and adds submit-time focus management via useErrorFocus.\n * Adds inline aria-live announcements on Field error spans, without requiring an SRPanel.\n *\n * Usage:\n * - Pass `formHolder` (CSS selector or Element ref) to enable focus-on-first-error.\n * - Set `errorLive={true}` on the Field components inside the form so their error spans\n * announce changes via aria-live=\"polite\".\n */\nfunction useFormWithA11y<FormSchema extends object>(props: FormWithA11yProps): Form<FormSchema> {\n const { formHolder, ...formProps } = props;\n const form = useForm<FormSchema>(formProps);\n const { focusFirstError } = useErrorFocus(formHolder);\n\n // Tracks whether we are in a submit-triggered validation pass.\n // A ref (not state) so that setting it does not schedule an extra render,\n // and so it does not need to be listed in the useEffect dependency array.\n const isValidating = useRef(false);\n\n const triggerValidation = useCallback(\n (selectedSchema?: string[]) => {\n isValidating.current = true;\n form.triggerValidation(selectedSchema);\n },\n [form.triggerValidation]\n );\n\n // After errors update from a submit-time validation, focus the first error field.\n // Blur-time validations (isValidating.current === false) do NOT trigger focus management.\n useEffect(() => {\n if (!isValidating.current) return;\n isValidating.current = false;\n focusFirstError(form.errors, form.schema);\n }, [form.errors]);\n\n return {\n ...form,\n triggerValidation\n };\n}\n\nexport default useFormWithA11y;\n"],"names":["useFormWithA11y","props","formHolder","formProps","form","useForm","focusFirstError","useErrorFocus","isValidating","useRef","triggerValidation","useCallback","selectedSchema","current","useEffect","errors","schema"],"mappings":"kLAuBA,SAASA,EAA2CC,GAChD,MAAMC,WAAEA,KAAeC,GAAcF,EAC/BG,EAAOC,EAAoBF,IAC3BG,gBAAEA,GAAoBC,EAAcL,GAKpCM,EAAeC,GAAO,GAEtBC,EAAoBC,EACrBC,IACGJ,EAAaK,SAAU,EACvBT,EAAKM,kBAAkBE,IAE3B,CAACR,EAAKM,oBAWV,OANAI,EAAU,KACDN,EAAaK,UAClBL,EAAaK,SAAU,EACvBP,EAAgBF,EAAKW,OAAQX,EAAKY,UACnC,CAACZ,EAAKW,SAEF,IACAX,EACHM,oBAER"}
1
+ {"version":3,"file":"useFormWithA11y.js","sources":["../../../../src/utils/useForm/useFormWithA11y.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'preact/hooks';\nimport { RefObject } from 'preact';\nimport useForm from './useForm';\nimport { useErrorFocus } from './useErrorFocus';\nimport { Form, FormProps } from './types';\n\nexport interface FormWithA11yProps extends FormProps {\n /**\n * DOM Element, CSS selector string, or RefObject pointing to the form root.\n * Used to find and focus the first invalid field after submit-time validation.\n */\n formHolder: Element | string | RefObject<Element>;\n}\n\n/**\n * Wraps useForm and adds submit-time focus management via useErrorFocus.\n * Adds inline aria-live announcements on Field error spans, without requiring an SRPanel.\n *\n * Usage:\n * - Pass `formHolder` (CSS selector or Element ref) to enable focus-on-first-error.\n * - Set `errorLive={true}` on the Field components inside the form so their error spans\n * announce changes via aria-live=\"polite\".\n */\nfunction useFormWithA11y<FormSchema>(props: FormWithA11yProps): Form<FormSchema> {\n const { formHolder, ...formProps } = props;\n const form = useForm<FormSchema>(formProps);\n const { focusFirstError } = useErrorFocus(formHolder);\n\n // Tracks whether we are in a submit-triggered validation pass.\n // A ref (not state) so that setting it does not schedule an extra render,\n // and so it does not need to be listed in the useEffect dependency array.\n const isValidating = useRef(false);\n\n const triggerValidation = useCallback(\n (selectedSchema = null) => {\n isValidating.current = true;\n form.triggerValidation(selectedSchema);\n },\n [form.triggerValidation]\n );\n\n // After errors update from a submit-time validation, focus the first error field.\n // Blur-time validations (isValidating.current === false) do NOT trigger focus management.\n useEffect(() => {\n if (!isValidating.current) return;\n isValidating.current = false;\n focusFirstError(form.errors, form.schema);\n }, [form.errors]);\n\n return {\n ...form,\n triggerValidation\n };\n}\n\nexport default useFormWithA11y;\n"],"names":["useFormWithA11y","props","formHolder","formProps","form","useForm","focusFirstError","useErrorFocus","isValidating","useRef","triggerValidation","useCallback","selectedSchema","current","useEffect","errors","schema"],"mappings":"kLAuBA,SAASA,EAA4BC,GACjC,MAAMC,WAAEA,KAAeC,GAAcF,EAC/BG,EAAOC,EAAoBF,IAC3BG,gBAAEA,GAAoBC,EAAcL,GAKpCM,EAAeC,GAAO,GAEtBC,EAAoBC,EACtB,CAACC,EAAiB,QACdJ,EAAaK,SAAU,EACvBT,EAAKM,kBAAkBE,IAE3B,CAACR,EAAKM,oBAWV,OANAI,EAAU,KACDN,EAAaK,UAClBL,EAAaK,SAAU,EACvBP,EAAgBF,EAAKW,OAAQX,EAAKY,UACnC,CAACZ,EAAKW,SAEF,IACAX,EACHM,oBAER"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useEffect as r,useState as a,useRef as t}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import o from"../../internal/LoadingWrapper/LoadingWrapper.js";import n from"../../internal/FormFields/InputText.js";import s from"../../internal/FormFields/Field/Field.js";import l from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{ancvValidationRules as d}from"../validate.js";function c({showPayButton:c,payButton:u,onChange:m,onSubmit:f,setComponentRef:p}){var b;const{i18n:g}=i(),{handleChangeFor:y,triggerValidation:v,data:h,valid:F,errors:I,isValid:j}=l({schema:["beneficiaryId"],rules:d});r(()=>{m({data:h,errors:I,valid:F,isValid:j})},[m,h,F,I,j]);const[C,k]=a("ready"),x=t({setStatus:k,showValidation:v});return r(()=>{p(x.current)},[p,x.current]),e(o,null,e("div",{className:"adyen-checkout__ancv"},e("p",{className:"adyen-checkout-form-instruction"},g.get("ancv.form.instruction")),e(s,{errorMessage:"string"==typeof(null===(b=I.beneficiaryId)||void 0===b?void 0:b.errorMessage)&&g.get(I.beneficiaryId.errorMessage),label:g.get("ancv.input.label"),isValid:F.beneficiaryId,name:"beneficiaryId"},e(n,{value:h.beneficiaryId,name:"beneficiaryId",spellcheck:!0,required:!0,onInput:y("beneficiaryId","input"),onBlur:y("beneficiaryId","blur"),autocomplete:void 0})),c&&u({status:C,label:g.get("confirmPurchase"),onClick:f})))}c.defaultProps={};export{c as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useEffect as r,useState as a,useRef as t}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import o from"../../internal/LoadingWrapper/LoadingWrapper.js";import n from"../../internal/FormFields/InputText.js";import s from"../../internal/FormFields/Field/Field.js";import l from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import{ancvValidationRules as c}from"../validate.js";function d({showPayButton:d,payButton:u,onChange:m,onSubmit:f,setComponentRef:p}){const{i18n:b}=i(),{handleChangeFor:y,triggerValidation:g,data:h,valid:F,errors:I,isValid:v}=l({schema:["beneficiaryId"],rules:c});r(()=>{m({data:h,errors:I,valid:F,isValid:v})},[m,h,F,I,v]);const[j,C]=a("ready"),k=t({setStatus:C,showValidation:g});return r(()=>{p(k.current)},[p,k.current]),e(o,null,e("div",{className:"adyen-checkout__ancv"},e("p",{className:"adyen-checkout-form-instruction"},b.get("ancv.form.instruction")),e(s,{errorMessage:!!I.beneficiaryId&&b.get(I.beneficiaryId.errorMessage),label:b.get("ancv.input.label"),isValid:F.beneficiaryId,name:"beneficiaryId"},e(n,{value:h.beneficiaryId,name:"beneficiaryId",spellcheck:!0,required:!0,onInput:y("beneficiaryId","input"),onBlur:y("beneficiaryId","blur"),autocomplete:void 0})),d&&u({status:j,label:b.get("confirmPurchase"),onClick:f})))}d.defaultProps={};export{d as default};
2
2
  //# sourceMappingURL=ANCVInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ANCVInput.js","sources":["../../../../../src/components/ANCV/components/ANCVInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport LoadingWrapper from '../../internal/LoadingWrapper';\nimport InputText from '../../internal/FormFields/InputText';\nimport Field from '../../internal/FormFields/Field';\nimport useForm from '../../../utils/useForm';\nimport { ancvValidationRules } from '../validate';\nimport { ANCVDataState } from '../types';\nimport { ComponentMethodsRef } from '../../internal/UIElement/types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport { ValidationRuleResult } from '../../../utils/Validator/ValidationRuleResult';\n\nexport interface ANCVInputProps {\n setComponentRef: (ref: ComponentMethodsRef) => void;\n showPayButton: boolean;\n onSubmit: () => void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n onChange: (data: {\n data: ANCVDataState;\n errors: { [key: string]: ValidationRuleResult };\n valid: { [key: string]: boolean };\n isValid: boolean;\n }) => void;\n}\n\ntype ANCVInputDataState = ANCVDataState;\n\nfunction ANCVInput({ showPayButton, payButton, onChange, onSubmit, setComponentRef }: Readonly<ANCVInputProps>) {\n const { i18n } = useCoreContext();\n\n const { handleChangeFor, triggerValidation, data, valid, errors, isValid } = useForm<ANCVInputDataState>({\n schema: ['beneficiaryId'],\n rules: ancvValidationRules\n });\n\n useEffect(() => {\n onChange({ data, errors, valid, isValid });\n }, [onChange, data, valid, errors, isValid]);\n\n const [status, setStatus] = useState<string>('ready');\n\n const ancvRef = useRef<ComponentMethodsRef>({\n setStatus,\n showValidation: triggerValidation\n });\n\n useEffect(() => {\n setComponentRef(ancvRef.current);\n }, [setComponentRef, ancvRef.current]);\n\n return (\n <LoadingWrapper>\n <div className=\"adyen-checkout__ancv\">\n <p className=\"adyen-checkout-form-instruction\">{i18n.get('ancv.form.instruction')}</p>\n <Field\n errorMessage={typeof errors.beneficiaryId?.errorMessage === 'string' && i18n.get(errors.beneficiaryId.errorMessage)}\n label={i18n.get('ancv.input.label')}\n isValid={valid.beneficiaryId}\n name={'beneficiaryId'}\n >\n <InputText\n value={data.beneficiaryId}\n name={'beneficiaryId'}\n spellcheck={true}\n required={true}\n onInput={handleChangeFor('beneficiaryId', 'input')}\n onBlur={handleChangeFor('beneficiaryId', 'blur')}\n autocomplete={undefined}\n />\n </Field>\n {showPayButton && payButton({ status, label: i18n.get('confirmPurchase'), onClick: onSubmit })}\n </div>\n </LoadingWrapper>\n );\n}\n\nANCVInput.defaultProps = {};\n\nexport default ANCVInput;\n"],"names":["ANCVInput","showPayButton","payButton","onChange","onSubmit","setComponentRef","errors","i18n","useCoreContext","handleChangeFor","triggerValidation","data","valid","isValid","useForm","schema","rules","ancvValidationRules","useEffect","status","setStatus","useState","ancvRef","useRef","showValidation","current","h","LoadingWrapper","div","className","p","get","Field","errorMessage","beneficiaryId","label","name","InputText","value","spellcheck","required","onInput","onBlur","autocomplete","undefined","onClick","defaultProps"],"mappings":"qkBA4BA,SAASA,GAAUC,cAAEA,EAAaC,UAAEA,EAASC,SAAEA,EAAQC,SAAEA,EAAQC,gBAAEA,IA4B1BC,IAAAA,EA3BrC,MAAMC,KAAEA,GAASC,KAEXC,gBAAEA,EAAeC,kBAAEA,EAAiBC,KAAEA,EAAIC,MAAEA,EAAKN,OAAEA,EAAMO,QAAEA,GAAYC,EAA4B,CACrGC,OAAQ,CAAC,iBACTC,MAAOC,IAGXC,EAAU,KACNf,EAAS,CAAEQ,OAAML,SAAQM,QAAOC,aACjC,CAACV,EAAUQ,EAAMC,EAAON,EAAQO,IAEnC,MAAOM,EAAQC,GAAaC,EAAiB,SAEvCC,EAAUC,EAA4B,CACxCH,YACAI,eAAgBd,IAOpB,OAJAQ,EAAU,KACNb,EAAgBiB,EAAQG,UACzB,CAACpB,EAAiBiB,EAAQG,UAGzBC,EAACC,OACGD,EAACE,MAAAA,CAAIC,UAAU,wBACXH,EAACI,IAAAA,CAAED,UAAU,mCAAmCtB,EAAKwB,IAAI,0BACzDL,EAACM,EAAAA,CACGC,aAA4D,iBAAnB,QAApB3B,EAAAA,EAAO4B,yBAAP5B,SAAAA,EAAsB2B,eAA6B1B,EAAKwB,IAAIzB,EAAO4B,cAAcD,cACtGE,MAAO5B,EAAKwB,IAAI,oBAChBlB,QAASD,EAAMsB,cACfE,KAAM,iBAENV,EAACW,EAAAA,CACGC,MAAO3B,EAAKuB,cACZE,KAAM,gBACNG,YAAY,EACZC,UAAU,EACVC,QAAShC,EAAgB,gBAAiB,SAC1CiC,OAAQjC,EAAgB,gBAAiB,QACzCkC,kBAAcC,KAGrB3C,GAAiBC,EAAU,CAAEiB,SAAQgB,MAAO5B,EAAKwB,IAAI,mBAAoBc,QAASzC,KAInG,CAEAJ,EAAU8C,aAAe,CAAA"}
1
+ {"version":3,"file":"ANCVInput.js","sources":["../../../../../src/components/ANCV/components/ANCVInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport LoadingWrapper from '../../internal/LoadingWrapper';\nimport InputText from '../../internal/FormFields/InputText';\nimport Field from '../../internal/FormFields/Field';\nimport useForm from '../../../utils/useForm';\nimport { ancvValidationRules } from '../validate';\nimport { ANCVDataState } from '../types';\nimport { ComponentMethodsRef } from '../../internal/UIElement/types';\nimport { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport { ValidationRuleResult } from '../../../utils/Validator/ValidationRuleResult';\n\nexport interface ANCVInputProps {\n setComponentRef: (ref: ComponentMethodsRef) => void;\n showPayButton: boolean;\n onSubmit: () => void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n onChange: (data: {\n data: ANCVDataState;\n errors: { [key: string]: ValidationRuleResult };\n valid: { [key: string]: boolean };\n isValid: boolean;\n }) => void;\n}\n\ntype ANCVInputDataState = ANCVDataState;\n\nfunction ANCVInput({ showPayButton, payButton, onChange, onSubmit, setComponentRef }: Readonly<ANCVInputProps>) {\n const { i18n } = useCoreContext();\n\n const { handleChangeFor, triggerValidation, data, valid, errors, isValid } = useForm<ANCVInputDataState>({\n schema: ['beneficiaryId'],\n rules: ancvValidationRules\n });\n\n useEffect(() => {\n onChange({ data, errors, valid, isValid });\n }, [onChange, data, valid, errors, isValid]);\n\n const [status, setStatus] = useState<string>('ready');\n\n const ancvRef = useRef<ComponentMethodsRef>({\n setStatus,\n showValidation: triggerValidation\n });\n\n useEffect(() => {\n setComponentRef(ancvRef.current);\n }, [setComponentRef, ancvRef.current]);\n\n return (\n <LoadingWrapper>\n <div className=\"adyen-checkout__ancv\">\n <p className=\"adyen-checkout-form-instruction\">{i18n.get('ancv.form.instruction')}</p>\n <Field\n errorMessage={!!errors.beneficiaryId && i18n.get(errors.beneficiaryId.errorMessage)}\n label={i18n.get('ancv.input.label')}\n isValid={valid.beneficiaryId}\n name={'beneficiaryId'}\n >\n <InputText\n value={data.beneficiaryId}\n name={'beneficiaryId'}\n spellcheck={true}\n required={true}\n onInput={handleChangeFor('beneficiaryId', 'input')}\n onBlur={handleChangeFor('beneficiaryId', 'blur')}\n autocomplete={undefined}\n />\n </Field>\n {showPayButton && payButton({ status, label: i18n.get('confirmPurchase'), onClick: onSubmit })}\n </div>\n </LoadingWrapper>\n );\n}\n\nANCVInput.defaultProps = {};\n\nexport default ANCVInput;\n"],"names":["ANCVInput","showPayButton","payButton","onChange","onSubmit","setComponentRef","i18n","useCoreContext","handleChangeFor","triggerValidation","data","valid","errors","isValid","useForm","schema","rules","ancvValidationRules","useEffect","status","setStatus","useState","ancvRef","useRef","showValidation","current","h","LoadingWrapper","div","className","p","get","Field","errorMessage","beneficiaryId","label","name","InputText","value","spellcheck","required","onInput","onBlur","autocomplete","undefined","onClick","defaultProps"],"mappings":"qkBA4BA,SAASA,GAAUC,cAAEA,EAAaC,UAAEA,EAASC,SAAEA,EAAQC,SAAEA,EAAQC,gBAAEA,IAC/D,MAAMC,KAAEA,GAASC,KAEXC,gBAAEA,EAAeC,kBAAEA,EAAiBC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GAAYC,EAA4B,CACrGC,OAAQ,CAAC,iBACTC,MAAOC,IAGXC,EAAU,KACNf,EAAS,CAAEO,OAAME,SAAQD,QAAOE,aACjC,CAACV,EAAUO,EAAMC,EAAOC,EAAQC,IAEnC,MAAOM,EAAQC,GAAaC,EAAiB,SAEvCC,EAAUC,EAA4B,CACxCH,YACAI,eAAgBf,IAOpB,OAJAS,EAAU,KACNb,EAAgBiB,EAAQG,UACzB,CAACpB,EAAiBiB,EAAQG,UAGzBC,EAACC,OACGD,EAACE,MAAAA,CAAIC,UAAU,wBACXH,EAACI,IAAAA,CAAED,UAAU,mCAAmCvB,EAAKyB,IAAI,0BACzDL,EAACM,EAAAA,CACGC,eAAgBrB,EAAOsB,eAAiB5B,EAAKyB,IAAInB,EAAOsB,cAAcD,cACtEE,MAAO7B,EAAKyB,IAAI,oBAChBlB,QAASF,EAAMuB,cACfE,KAAM,iBAENV,EAACW,EAAAA,CACGC,MAAO5B,EAAKwB,cACZE,KAAM,gBACNG,YAAY,EACZC,UAAU,EACVC,QAASjC,EAAgB,gBAAiB,SAC1CkC,OAAQlC,EAAgB,gBAAiB,QACzCmC,kBAAcC,KAGrB3C,GAAiBC,EAAU,CAAEiB,SAAQgB,MAAO7B,EAAKyB,IAAI,mBAAoBc,QAASzC,KAInG,CAEAJ,EAAU8C,aAAe,CAAA"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as s}from"../tx-variants.js";import n from"./components/AchComponent.js";import a from"./defaultProps.js";function r(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class p extends e{formatData(){var t,e;return!!this.props.storedPaymentMethodId?{paymentMethod:{type:p.type,storedPaymentMethodId:this.props.storedPaymentMethodId}}:function(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},s=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),s.forEach(function(e){r(t,e,o[e])})}return t}({paymentMethod:{type:p.type,ownerName:this.state.data.ownerName,accountHolderType:null===(t=this.state.data.selectedAccountType)||void 0===t?void 0:t.split(".")[0],bankAccountType:null===(e=this.state.data.selectedAccountType)||void 0===e?void 0:e.split(".")[1],bankLocationId:this.state.data.routingNumber,bankAccountNumber:this.state.data.accountNumber}},this.state.storePaymentMethod&&{storePaymentMethod:this.state.storePaymentMethod})}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.bankAccountNumber?`•••• ${this.props.bankAccountNumber.slice(-4)}`:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.i18n.get("ach.savedBankAccount"):""}componentToRender(){return this.props.storedPaymentMethodId?t(o,{showPayButton:this.props.showPayButton,name:this.displayName,payButton:this.payButton,onSubmit:this.submit,setComponentRef:this.setComponentRef}):t(n,{onChange:this.setState,payButton:this.payButton,showPayButton:this.props.showPayButton,hasHolderName:this.props.hasHolderName,placeholders:this.props.placeholders,data:this.props.data,setComponentRef:this.setComponentRef,enableStoreDetails:this.props.enableStoreDetails})}}r(p,"type",s.ach),r(p,"defaultProps",a);export{p as AchElement,p as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as s}from"../tx-variants.js";import a from"./components/AchComponent.js";import n from"./defaultProps.js";function r(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class i extends e{formatData(){var t,e;return!!this.props.storedPaymentMethodId?{paymentMethod:{type:i.type,storedPaymentMethodId:this.props.storedPaymentMethodId}}:function(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},s=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),s.forEach(function(e){r(t,e,o[e])})}return t}({paymentMethod:{type:i.type,ownerName:this.state.data.ownerName,accountHolderType:null===(t=this.state.data.selectedAccountType)||void 0===t?void 0:t.split(".")[0],bankAccountType:null===(e=this.state.data.selectedAccountType)||void 0===e?void 0:e.split(".")[1],bankLocationId:this.state.data.routingNumber,bankAccountNumber:this.state.data.accountNumber}},this.state.storePaymentMethod&&{storePaymentMethod:this.state.storePaymentMethod})}get isValid(){return!!this.props.storedPaymentMethodId||!!this.state.isValid}get displayName(){return this.props.storedPaymentMethodId&&this.props.bankAccountNumber?`•••• ${this.props.bankAccountNumber.slice(-4)}`:this.props.name}get additionalInfo(){return this.props.storedPaymentMethodId?this.props.i18n.get("ach.savedBankAccount"):""}componentToRender(){return this.props.storedPaymentMethodId?t(o,{showPayButton:this.props.showPayButton,name:this.displayName,payButton:this.payButton,onSubmit:this.submit,ref:t=>{this.componentRef=t}}):t(a,{onChange:this.setState,payButton:this.payButton,showPayButton:this.props.showPayButton,hasHolderName:this.props.hasHolderName,placeholders:this.props.placeholders,data:this.props.data,setComponentRef:this.setComponentRef,enableStoreDetails:this.props.enableStoreDetails})}}r(i,"type",s.ach),r(i,"defaultProps",n);export{i as AchElement,i as default};
2
2
  //# sourceMappingURL=Ach.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ach.js","sources":["../../../../src/components/Ach/Ach.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport RedirectButton from '../internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport AchComponent from './components/AchComponent';\nimport defaultProps from './defaultProps';\n\nimport type { AchConfiguration } from './types';\n\nexport class AchElement extends UIElement<AchConfiguration> {\n public static readonly type = TxVariants.ach;\n\n protected static readonly defaultProps = defaultProps;\n\n public override formatData() {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n if (recurringPayment) {\n return {\n paymentMethod: {\n type: AchElement.type,\n storedPaymentMethodId: this.props.storedPaymentMethodId\n }\n };\n }\n\n return {\n paymentMethod: {\n type: AchElement.type,\n ownerName: this.state.data.ownerName,\n accountHolderType: this.state.data.selectedAccountType?.split('.')[0],\n bankAccountType: this.state.data.selectedAccountType?.split('.')[1],\n bankLocationId: this.state.data.routingNumber,\n bankAccountNumber: this.state.data.accountNumber\n },\n ...(this.state.storePaymentMethod && { storePaymentMethod: this.state.storePaymentMethod })\n };\n }\n\n public override get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n public override get displayName(): string {\n if (this.props.storedPaymentMethodId && this.props.bankAccountNumber) {\n return `•••• ${this.props.bankAccountNumber.slice(-4)}`;\n }\n return this.props.name;\n }\n\n public override get additionalInfo(): string {\n return this.props.storedPaymentMethodId ? this.props.i18n.get('ach.savedBankAccount') : '';\n }\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.storedPaymentMethodId ? (\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n payButton={this.payButton}\n onSubmit={this.submit}\n setComponentRef={this.setComponentRef}\n />\n ) : (\n <AchComponent\n onChange={this.setState}\n payButton={this.payButton}\n showPayButton={this.props.showPayButton}\n hasHolderName={this.props.hasHolderName}\n placeholders={this.props.placeholders}\n data={this.props.data}\n setComponentRef={this.setComponentRef}\n enableStoreDetails={this.props.enableStoreDetails}\n />\n );\n }\n}\n\nexport default AchElement;\n"],"names":["AchElement","UIElement","formatData","_this_state_data_selectedAccountType","_this_state_data_selectedAccountType1","this","props","storedPaymentMethodId","paymentMethod","type","_object_spread","ownerName","state","data","accountHolderType","selectedAccountType","split","bankAccountType","bankLocationId","routingNumber","bankAccountNumber","accountNumber","storePaymentMethod","isValid","displayName","slice","name","additionalInfo","i18n","get","componentToRender","h","RedirectButton","showPayButton","payButton","onSubmit","submit","setComponentRef","AchComponent","onChange","setState","hasHolderName","placeholders","enableStoreDetails","_define_property","TxVariants","ach","defaultProps"],"mappings":"obASO,MAAMA,UAAmBC,EAKZC,UAAAA,OAgBeC,EACFC,EAdzB,QAF2BC,KAAKC,MAAMC,sBAG3B,CACHC,cAAe,CACXC,KAAMT,EAAWS,KACjBF,sBAAuBF,KAAKC,MAAMC,0VAKvCG,CAAA,CACHF,cAAe,CACXC,KAAMT,EAAWS,KACjBE,UAAWN,KAAKO,MAAMC,KAAKF,UAC3BG,kBAAsD,QAAnCX,EAAAE,KAAKO,MAAMC,KAAKE,+BAAhBZ,SAAAA,EAAqCa,MAAM,KAAK,GACnEC,gBAAoD,QAAnCb,EAAAC,KAAKO,MAAMC,KAAKE,+BAAhBX,SAAAA,EAAqCY,MAAM,KAAK,GACjEE,eAAgBb,KAAKO,MAAMC,KAAKM,cAChCC,kBAAmBf,KAAKO,MAAMC,KAAKQ,gBAEnChB,KAAKO,MAAMU,oBAAsB,CAAEA,mBAAoBjB,KAAKO,MAAMU,oBAE9E,CAEA,WAAoBC,GAChB,QAAIlB,KAAKC,MAAMC,yBAINF,KAAKO,MAAMW,OACxB,CAEA,eAAoBC,GAChB,OAAInB,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMc,kBACxC,QAAQf,KAAKC,MAAMc,kBAAkBK,OAAM,KAE/CpB,KAAKC,MAAMoB,IACtB,CAEA,kBAAoBC,GAChB,OAAOtB,KAAKC,MAAMC,sBAAwBF,KAAKC,MAAMsB,KAAKC,IAAI,wBAA0B,EAC5F,CAEmBC,iBAAAA,GACf,OAAOzB,KAAKC,MAAMC,sBACdwB,EAACC,EAAAA,CACGC,cAAe5B,KAAKC,MAAM2B,cAC1BP,KAAMrB,KAAKmB,YACXU,UAAW7B,KAAK6B,UAChBC,SAAU9B,KAAK+B,OACfC,gBAAiBhC,KAAKgC,kBAG1BN,EAACO,EAAAA,CACGC,SAAUlC,KAAKmC,SACfN,UAAW7B,KAAK6B,UAChBD,cAAe5B,KAAKC,MAAM2B,cAC1BQ,cAAepC,KAAKC,MAAMmC,cAC1BC,aAAcrC,KAAKC,MAAMoC,aACzB7B,KAAMR,KAAKC,MAAMO,KACjBwB,gBAAiBhC,KAAKgC,gBACtBM,mBAAoBtC,KAAKC,MAAMqC,oBAG3C,EArEAC,EADS5C,EACcS,OAAOoC,EAAWC,KAEzCF,EAHS5C,EAGiB+C,eAAeA"}
1
+ {"version":3,"file":"Ach.js","sources":["../../../../src/components/Ach/Ach.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport RedirectButton from '../internal/RedirectButton';\nimport { TxVariants } from '../tx-variants';\nimport AchComponent from './components/AchComponent';\nimport defaultProps from './defaultProps';\n\nimport type { AchConfiguration } from './types';\n\nexport class AchElement extends UIElement<AchConfiguration> {\n public static readonly type = TxVariants.ach;\n\n protected static readonly defaultProps = defaultProps;\n\n public override formatData() {\n const recurringPayment = !!this.props.storedPaymentMethodId;\n\n if (recurringPayment) {\n return {\n paymentMethod: {\n type: AchElement.type,\n storedPaymentMethodId: this.props.storedPaymentMethodId\n }\n };\n }\n\n return {\n paymentMethod: {\n type: AchElement.type,\n ownerName: this.state.data.ownerName,\n accountHolderType: this.state.data.selectedAccountType?.split('.')[0],\n bankAccountType: this.state.data.selectedAccountType?.split('.')[1],\n bankLocationId: this.state.data.routingNumber,\n bankAccountNumber: this.state.data.accountNumber\n },\n ...(this.state.storePaymentMethod && { storePaymentMethod: this.state.storePaymentMethod })\n };\n }\n\n public override get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n public override get displayName(): string {\n if (this.props.storedPaymentMethodId && this.props.bankAccountNumber) {\n return `•••• ${this.props.bankAccountNumber.slice(-4)}`;\n }\n return this.props.name;\n }\n\n public override get additionalInfo(): string {\n return this.props.storedPaymentMethodId ? this.props.i18n.get('ach.savedBankAccount') : '';\n }\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.storedPaymentMethodId ? (\n <RedirectButton\n showPayButton={this.props.showPayButton}\n name={this.displayName}\n payButton={this.payButton}\n onSubmit={this.submit}\n ref={ref => {\n this.componentRef = ref;\n }}\n />\n ) : (\n <AchComponent\n onChange={this.setState}\n payButton={this.payButton}\n showPayButton={this.props.showPayButton}\n hasHolderName={this.props.hasHolderName}\n placeholders={this.props.placeholders}\n data={this.props.data}\n setComponentRef={this.setComponentRef}\n enableStoreDetails={this.props.enableStoreDetails}\n />\n );\n }\n}\n\nexport default AchElement;\n"],"names":["AchElement","UIElement","formatData","_this_state_data_selectedAccountType","_this_state_data_selectedAccountType1","this","props","storedPaymentMethodId","paymentMethod","type","_object_spread","ownerName","state","data","accountHolderType","selectedAccountType","split","bankAccountType","bankLocationId","routingNumber","bankAccountNumber","accountNumber","storePaymentMethod","isValid","displayName","slice","name","additionalInfo","i18n","get","componentToRender","h","RedirectButton","showPayButton","payButton","onSubmit","submit","ref","componentRef","AchComponent","onChange","setState","hasHolderName","placeholders","setComponentRef","enableStoreDetails","_define_property","TxVariants","ach","defaultProps"],"mappings":"obASO,MAAMA,UAAmBC,EAKZC,UAAAA,OAgBeC,EACFC,EAdzB,QAF2BC,KAAKC,MAAMC,sBAG3B,CACHC,cAAe,CACXC,KAAMT,EAAWS,KACjBF,sBAAuBF,KAAKC,MAAMC,0VAKvCG,CAAA,CACHF,cAAe,CACXC,KAAMT,EAAWS,KACjBE,UAAWN,KAAKO,MAAMC,KAAKF,UAC3BG,kBAAsD,QAAnCX,EAAAE,KAAKO,MAAMC,KAAKE,+BAAhBZ,SAAAA,EAAqCa,MAAM,KAAK,GACnEC,gBAAoD,QAAnCb,EAAAC,KAAKO,MAAMC,KAAKE,+BAAhBX,SAAAA,EAAqCY,MAAM,KAAK,GACjEE,eAAgBb,KAAKO,MAAMC,KAAKM,cAChCC,kBAAmBf,KAAKO,MAAMC,KAAKQ,gBAEnChB,KAAKO,MAAMU,oBAAsB,CAAEA,mBAAoBjB,KAAKO,MAAMU,oBAE9E,CAEA,WAAoBC,GAChB,QAAIlB,KAAKC,MAAMC,yBAINF,KAAKO,MAAMW,OACxB,CAEA,eAAoBC,GAChB,OAAInB,KAAKC,MAAMC,uBAAyBF,KAAKC,MAAMc,kBACxC,QAAQf,KAAKC,MAAMc,kBAAkBK,OAAM,KAE/CpB,KAAKC,MAAMoB,IACtB,CAEA,kBAAoBC,GAChB,OAAOtB,KAAKC,MAAMC,sBAAwBF,KAAKC,MAAMsB,KAAKC,IAAI,wBAA0B,EAC5F,CAEmBC,iBAAAA,GACf,OAAOzB,KAAKC,MAAMC,sBACdwB,EAACC,EAAAA,CACGC,cAAe5B,KAAKC,MAAM2B,cAC1BP,KAAMrB,KAAKmB,YACXU,UAAW7B,KAAK6B,UAChBC,SAAU9B,KAAK+B,OACfC,IAAKA,IACDhC,KAAKiC,aAAeD,KAI5BN,EAACQ,EAAAA,CACGC,SAAUnC,KAAKoC,SACfP,UAAW7B,KAAK6B,UAChBD,cAAe5B,KAAKC,MAAM2B,cAC1BS,cAAerC,KAAKC,MAAMoC,cAC1BC,aAActC,KAAKC,MAAMqC,aACzB9B,KAAMR,KAAKC,MAAMO,KACjB+B,gBAAiBvC,KAAKuC,gBACtBC,mBAAoBxC,KAAKC,MAAMuC,oBAG3C,EAvEAC,EADS9C,EACcS,OAAOsC,EAAWC,KAEzCF,EAHS9C,EAGiBiD,eAAeA"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useMemo as r,useState as o,useRef as t,useEffect as a,useCallback as n}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import u from"../../internal/FormInstruction/FormInstruction.js";import{AccountTypeSelector as c}from"./AccountTypeSelector.js";import l from"../../internal/FormFields/Fieldset/Fieldset.js";import s from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import m from"../../internal/FormFields/Field/Field.js";import d from"../../internal/FormFields/InputText.js";import{achValidationRules as b,achFormatters as g}from"./validate.js";import p from"../../internal/StoreDetails/StoreDetails.js";import N from"./useSRPanelForACHErrors.js";import f from"../../../core/Context/useImage.js";import{PREFIX as v}from"../../internal/Icon/constants.js";function h({onChange:h,payButton:V,showPayButton:F,placeholders:M,data:y,hasHolderName:j,setComponentRef:w,enableStoreDetails:A}){var S,C,x,I,T;const k=f(),B=r(()=>["selectedAccountType","routingNumber","accountNumber","accountNumberVerification",...j?["ownerName"]:[]],[j]),{i18n:q}=i(),[D,P]=o("ready"),{handleChangeFor:E,triggerValidation:H,data:R,errors:_,valid:$,isValid:z}=s({schema:B,defaultData:y,rules:b,formatters:g}),[G,J]=o(!1),K="loading"===D,L=t(!1),O=t({setStatus:P,showValidation:()=>{L.current=!0,H()}});a(()=>{w(O.current)},[w,O.current]),N({errors:_,data:R,isValidating:L}),a(()=>{h({data:R,valid:$,errors:_,isValid:z,storePaymentMethod:G})},[h,R,$,_,z,G]);const Q=n(e=>{E("accountNumber","input")(e);Boolean(_.accountNumberVerification)&&H(["accountNumberVerification"])},[E,H,R.accountNumberVerification,_.accountNumberVerification]);return e("div",{className:"adyen-checkout__ach"},e(u,null),e(l,{classNameModifiers:[],label:q.get("ach.bankAccount.title")},e(c,{placeholder:null==M?void 0:M.accountTypeSelector,onSelect:E("selectedAccountType"),selectedAccountType:R.selectedAccountType,disabled:K,errorMessage:"string"==typeof(null===(S=_.selectedAccountType)||void 0===S?void 0:S.errorMessage)&&q.get(_.selectedAccountType.errorMessage)}),j&&e(m,{label:q.get("ach.accountHolderNameField.title"),errorMessage:"string"==typeof(null===(C=_.ownerName)||void 0===C?void 0:C.errorMessage)&&q.get(_.ownerName.errorMessage),isValid:!!$.ownerName,name:"ownerName"},e(d,{disabled:K,name:"ownerName",placeholder:null==M?void 0:M.ownerName,value:R.ownerName,onInput:E("ownerName","input"),onBlur:E("ownerName","blur"),required:!0,autocomplete:"name"})),e(m,{label:q.get("ach.routingNumber.label"),classNameModifiers:["col-60"],errorMessage:"string"==typeof(null===(x=_.routingNumber)||void 0===x?void 0:x.errorMessage)&&q.get(_.routingNumber.errorMessage),name:"routingNumber",isValid:!!$.routingNumber},e(d,{disabled:K,name:"routingNumber",placeholder:null==M?void 0:M.routingNumber,value:R.routingNumber,onInput:E("routingNumber","input"),onBlur:E("routingNumber","blur"),required:!0,maxlength:9,autocomplete:void 0})),e(m,{label:q.get("ach.bankAccountNumber.label"),classNameModifiers:["col-40"],errorMessage:"string"==typeof(null===(I=_.accountNumber)||void 0===I?void 0:I.errorMessage)&&q.get(_.accountNumber.errorMessage),isValid:!!$.accountNumber,name:"accountNumber"},e(d,{disabled:K,name:"accountNumber",placeholder:null==M?void 0:M.accountNumber,value:R.accountNumber,onInput:Q,onBlur:E("accountNumber","blur"),required:!0,maxlength:17,autocomplete:void 0})),e(m,{label:q.get("ach.bankAccountNumberVerification.label"),errorMessage:"string"==typeof(null===(T=_.accountNumberVerification)||void 0===T?void 0:T.errorMessage)&&q.get(_.accountNumberVerification.errorMessage),name:"accountNumberVerification",isValid:!!$.accountNumberVerification},e(d,{disabled:K,name:"accountNumberVerification",placeholder:null==M?void 0:M.accountNumberVerification,value:R.accountNumberVerification,onInput:E("accountNumberVerification","input"),onBlur:E("accountNumberVerification","blur"),required:!0,maxlength:17,autocomplete:void 0}))),A&&e(p,{disabled:K,onChange:J}),F&&V({status:D,icon:k({imageFolder:"components/"})(`${v}lock`)}))}export{h as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useMemo as r,useState as o,useRef as t,useEffect as a,useCallback as n}from"../../../external/preact/hooks/dist/hooks.js";import{useCoreContext as i}from"../../../core/Context/CoreProvider.js";import u from"../../internal/FormInstruction/FormInstruction.js";import{AccountTypeSelector as c}from"./AccountTypeSelector.js";import l from"../../internal/FormFields/Fieldset/Fieldset.js";import s from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import m from"../../internal/FormFields/Field/Field.js";import d from"../../internal/FormFields/InputText.js";import{achValidationRules as b,achFormatters as N}from"./validate.js";import p from"../../internal/StoreDetails/StoreDetails.js";import g from"./useSRPanelForACHErrors.js";import f from"../../../core/Context/useImage.js";import{PREFIX as h}from"../../internal/Icon/constants.js";function V({onChange:V,payButton:F,showPayButton:v,placeholders:j,data:M,hasHolderName:y,setComponentRef:w,enableStoreDetails:A}){const S=f(),C=r(()=>["selectedAccountType","routingNumber","accountNumber","accountNumberVerification",...y?["ownerName"]:[]],[y]),{i18n:x}=i(),[I,T]=o("ready"),{handleChangeFor:k,triggerValidation:B,data:q,errors:D,valid:P,isValid:E}=s({schema:C,defaultData:M,rules:b,formatters:N}),[H,R]=o(!1),_="loading"===I,$=t(!1),z=t({setStatus:T,showValidation:()=>{$.current=!0,B()}});a(()=>{w(z.current)},[w,z.current]),g({errors:D,data:q,isValidating:$}),a(()=>{V({data:q,valid:P,errors:D,isValid:E,storePaymentMethod:H})},[V,q,P,D,E,H]);const G=n(e=>{k("accountNumber","input")(e);!!D.accountNumberVerification&&B(["accountNumberVerification"])},[k,B,q.accountNumberVerification,D.accountNumberVerification]);return e("div",{className:"adyen-checkout__ach"},e(u,null),e(l,{classNameModifiers:[],label:x.get("ach.bankAccount.title")},e(c,{placeholder:null==j?void 0:j.accountTypeSelector,onSelect:k("selectedAccountType"),selectedAccountType:q.selectedAccountType,disabled:_,errorMessage:!!D.selectedAccountType&&x.get(D.selectedAccountType.errorMessage)}),y&&e(m,{label:x.get("ach.accountHolderNameField.title"),errorMessage:!!D.ownerName&&x.get(D.ownerName.errorMessage),isValid:!!P.ownerName,name:"ownerName"},e(d,{disabled:_,name:"ownerName",placeholder:null==j?void 0:j.ownerName,value:q.ownerName,onInput:k("ownerName","input"),onBlur:k("ownerName","blur"),required:!0,autocomplete:"name"})),e(m,{label:x.get("ach.routingNumber.label"),classNameModifiers:["col-60"],errorMessage:!!D.routingNumber&&x.get(D.routingNumber.errorMessage),name:"routingNumber",isValid:!!P.routingNumber},e(d,{disabled:_,name:"routingNumber",placeholder:null==j?void 0:j.routingNumber,value:q.routingNumber,onInput:k("routingNumber","input"),onBlur:k("routingNumber","blur"),required:!0,maxlength:9,autocomplete:void 0})),e(m,{label:x.get("ach.bankAccountNumber.label"),classNameModifiers:["col-40"],errorMessage:!!D.accountNumber&&x.get(D.accountNumber.errorMessage),isValid:!!P.accountNumber,name:"accountNumber"},e(d,{disabled:_,name:"accountNumber",placeholder:null==j?void 0:j.accountNumber,value:q.accountNumber,onInput:G,onBlur:k("accountNumber","blur"),required:!0,maxlength:17,autocomplete:void 0})),e(m,{label:x.get("ach.bankAccountNumberVerification.label"),errorMessage:!!D.accountNumberVerification&&x.get(D.accountNumberVerification.errorMessage),name:"accountNumberVerification",isValid:!!P.accountNumberVerification},e(d,{disabled:_,name:"accountNumberVerification",placeholder:null==j?void 0:j.accountNumberVerification,value:q.accountNumberVerification,onInput:k("accountNumberVerification","input"),onBlur:k("accountNumberVerification","blur"),required:!0,maxlength:17,autocomplete:void 0}))),A&&e(p,{disabled:_,onChange:R}),v&&F({status:I,icon:S({imageFolder:"components/"})(`${h}lock`)}))}export{V as default};
2
2
  //# sourceMappingURL=AchComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AchComponent.js","sources":["../../../../../src/components/Ach/components/AchComponent.tsx"],"sourcesContent":["import { h, TargetedInputEvent } from 'preact';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport FormInstruction from '../../internal/FormInstruction';\nimport { AccountTypeSelector } from './AccountTypeSelector';\nimport Fieldset from '../../internal/FormFields/Fieldset';\nimport useForm from '../../../utils/useForm';\nimport Field from '../../internal/FormFields/Field';\nimport InputText from '../../internal/FormFields/InputText';\nimport { achValidationRules, achFormatters } from './validate';\nimport StoreDetails from '../../internal/StoreDetails';\nimport useSRPanelForAchErrors from './useSRPanelForACHErrors';\nimport useImage from '../../../core/Context/useImage';\nimport { PREFIX } from '../../internal/Icon/constants';\n\nimport type { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport type { ComponentMethodsRef } from '../../internal/UIElement/types';\nimport type { AchPlaceholders } from '../types';\nimport type { AchStateErrors } from './useSRPanelForACHErrors';\nimport { ValidationRuleResult } from '../../../utils/Validator/ValidationRuleResult';\n\ntype AchForm = {\n selectedAccountType: string;\n ownerName: string;\n routingNumber: string;\n accountNumber: string;\n accountNumberVerification: string;\n};\n\nexport type AchFormPrefillData = Partial<Pick<AchForm, 'ownerName'>>;\n\ninterface AchComponentProps {\n onChange({\n data,\n valid,\n errors,\n isValid,\n storePaymentMethod\n }: {\n data: AchForm;\n valid: { [key: string]: boolean };\n errors: { [key: string]: ValidationRuleResult };\n isValid: boolean;\n storePaymentMethod: boolean;\n }): void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n hasHolderName: boolean;\n showPayButton: boolean;\n enableStoreDetails: boolean;\n placeholders?: AchPlaceholders;\n data?: AchFormPrefillData;\n}\n\nfunction AchComponent({\n onChange,\n payButton,\n showPayButton,\n placeholders,\n data: defaultData,\n hasHolderName,\n setComponentRef,\n enableStoreDetails\n}: Readonly<AchComponentProps>) {\n const getImage = useImage();\n const schema = useMemo(\n () => ['selectedAccountType', 'routingNumber', 'accountNumber', 'accountNumberVerification', ...(hasHolderName ? ['ownerName'] : [])],\n [hasHolderName]\n );\n const { i18n } = useCoreContext();\n const [status, setStatus] = useState('ready');\n const { handleChangeFor, triggerValidation, data, errors, valid, isValid } = useForm<AchForm>({\n schema,\n defaultData,\n rules: achValidationRules,\n formatters: achFormatters\n });\n const [storePaymentMethod, setStorePaymentMethod] = useState(false);\n const isFormDisabled = status === 'loading';\n\n const isValidating = useRef(false);\n\n const achRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus,\n showValidation: () => {\n isValidating.current = true;\n triggerValidation();\n }\n });\n\n useEffect(() => {\n setComponentRef(achRef.current);\n }, [setComponentRef, achRef.current]);\n\n useSRPanelForAchErrors({ errors: errors as unknown as AchStateErrors, data, isValidating });\n\n useEffect(() => {\n onChange({ data, valid, errors, isValid, storePaymentMethod });\n }, [onChange, data, valid, errors, isValid, storePaymentMethod]);\n\n /**\n * If the \"Verify account number\" field has errors, we want to trigger\n * its validation when there is any change done to the \"Account number\" field\n */\n const onAccountNumberInput = useCallback(\n (event: TargetedInputEvent<HTMLInputElement>) => {\n handleChangeFor('accountNumber', 'input')(event);\n\n const hasAccountVerificationError = Boolean(errors.accountNumberVerification);\n if (hasAccountVerificationError) {\n triggerValidation(['accountNumberVerification']);\n }\n },\n [handleChangeFor, triggerValidation, data.accountNumberVerification, errors.accountNumberVerification]\n );\n\n return (\n <div className=\"adyen-checkout__ach\">\n <FormInstruction />\n\n <Fieldset classNameModifiers={[]} label={i18n.get('ach.bankAccount.title')}>\n <AccountTypeSelector\n placeholder={placeholders?.accountTypeSelector}\n onSelect={handleChangeFor('selectedAccountType')}\n selectedAccountType={data.selectedAccountType}\n disabled={isFormDisabled}\n errorMessage={typeof errors.selectedAccountType?.errorMessage === 'string' && i18n.get(errors.selectedAccountType.errorMessage)}\n />\n\n {hasHolderName && (\n <Field\n label={i18n.get('ach.accountHolderNameField.title')}\n errorMessage={typeof errors.ownerName?.errorMessage === 'string' && i18n.get(errors.ownerName.errorMessage)}\n isValid={!!valid.ownerName}\n name={'ownerName'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'ownerName'}\n placeholder={placeholders?.ownerName}\n value={data.ownerName}\n onInput={handleChangeFor('ownerName', 'input')}\n onBlur={handleChangeFor('ownerName', 'blur')}\n required={true}\n autocomplete={'name'}\n />\n </Field>\n )}\n\n <Field\n label={i18n.get('ach.routingNumber.label')}\n classNameModifiers={['col-60']}\n errorMessage={typeof errors.routingNumber?.errorMessage === 'string' && i18n.get(errors.routingNumber.errorMessage)}\n name={'routingNumber'}\n isValid={!!valid.routingNumber}\n >\n <InputText\n disabled={isFormDisabled}\n name={'routingNumber'}\n placeholder={placeholders?.routingNumber}\n value={data.routingNumber}\n onInput={handleChangeFor('routingNumber', 'input')}\n onBlur={handleChangeFor('routingNumber', 'blur')}\n required={true}\n maxlength={9}\n autocomplete={undefined}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumber.label')}\n classNameModifiers={['col-40']}\n errorMessage={typeof errors.accountNumber?.errorMessage === 'string' && i18n.get(errors.accountNumber.errorMessage)}\n isValid={!!valid.accountNumber}\n name={'accountNumber'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumber'}\n placeholder={placeholders?.accountNumber}\n value={data.accountNumber}\n onInput={onAccountNumberInput}\n onBlur={handleChangeFor('accountNumber', 'blur')}\n required={true}\n maxlength={17}\n autocomplete={undefined}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumberVerification.label')}\n errorMessage={\n typeof errors.accountNumberVerification?.errorMessage === 'string' && i18n.get(errors.accountNumberVerification.errorMessage)\n }\n name={'accountNumberVerification'}\n isValid={!!valid.accountNumberVerification}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumberVerification'}\n placeholder={placeholders?.accountNumberVerification}\n value={data.accountNumberVerification}\n onInput={handleChangeFor('accountNumberVerification', 'input')}\n onBlur={handleChangeFor('accountNumberVerification', 'blur')}\n required={true}\n maxlength={17}\n autocomplete={undefined}\n />\n </Field>\n </Fieldset>\n\n {enableStoreDetails && <StoreDetails disabled={isFormDisabled} onChange={setStorePaymentMethod} />}\n\n {showPayButton && payButton({ status, icon: getImage({ imageFolder: 'components/' })(`${PREFIX}lock`) })}\n </div>\n );\n}\n\nexport default AchComponent;\n"],"names":["AchComponent","onChange","payButton","showPayButton","placeholders","data","defaultData","hasHolderName","setComponentRef","enableStoreDetails","errors","getImage","useImage","schema","useMemo","i18n","useCoreContext","status","setStatus","useState","handleChangeFor","triggerValidation","valid","isValid","useForm","rules","achValidationRules","formatters","achFormatters","storePaymentMethod","setStorePaymentMethod","isFormDisabled","isValidating","useRef","achRef","showValidation","current","useEffect","useSRPanelForAchErrors","onAccountNumberInput","useCallback","event","Boolean","accountNumberVerification","h","div","className","FormInstruction","Fieldset","classNameModifiers","label","get","AccountTypeSelector","placeholder","accountTypeSelector","onSelect","selectedAccountType","disabled","errorMessage","Field","ownerName","name","InputText","value","onInput","onBlur","required","autocomplete","routingNumber","maxlength","undefined","accountNumber","StoreDetails","icon","imageFolder","PREFIX"],"mappings":"o8BAsDA,SAASA,GAAaC,SAClBA,EAAQC,UACRA,EAASC,cACTA,EAAaC,aACbA,EACAC,KAAMC,EAAWC,cACjBA,EAAaC,gBACbA,EAAeC,mBACfA,QAgEqCC,EAMIA,EAoBJA,EAoBAA,EAoBVA,EAhI3B,MAAMC,EAAWC,IACXC,EAASC,EACX,IAAM,CAAC,sBAAuB,gBAAiB,gBAAiB,+BAAiCP,EAAgB,CAAC,aAAe,IACjI,CAACA,KAECQ,KAAEA,GAASC,KACVC,EAAQC,GAAaC,EAAS,UAC/BC,gBAAEA,EAAeC,kBAAEA,EAAiBhB,KAAEA,EAAIK,OAAEA,EAAMY,MAAEA,EAAKC,QAAEA,GAAYC,EAAiB,CAC1FX,SACAP,cACAmB,MAAOC,EACPC,WAAYC,KAETC,EAAoBC,GAAyBX,GAAS,GACvDY,EAA4B,YAAXd,EAEjBe,EAAeC,GAAO,GAEtBC,EAASD,EAA4B,CACvCf,UAAWA,EACXiB,eAAgB,KACZH,EAAaI,SAAU,EACvBf,OAIRgB,EAAU,KACN7B,EAAgB0B,EAAOE,UACxB,CAAC5B,EAAiB0B,EAAOE,UAE5BE,EAAuB,CAAE5B,OAAQA,EAAqCL,OAAM2B,iBAE5EK,EAAU,KACNpC,EAAS,CAAEI,OAAMiB,QAAOZ,SAAQa,UAASM,wBAC1C,CAAC5B,EAAUI,EAAMiB,EAAOZ,EAAQa,EAASM,IAM5C,MAAMU,EAAuBC,EACxBC,IACGrB,EAAgB,gBAAiB,QAAjCA,CAA0CqB,GAENC,QAAQhC,EAAOiC,4BAE/CtB,EAAkB,CAAC,+BAG3B,CAACD,EAAiBC,EAAmBhB,EAAKsC,0BAA2BjC,EAAOiC,4BAGhF,OACIC,EAACC,MAAAA,CAAIC,UAAU,uBACXF,EAACG,QAEDH,EAACI,EAAAA,CAASC,mBAAoB,GAAIC,MAAOnC,EAAKoC,IAAI,0BAC9CP,EAACQ,EAAAA,CACGC,YAAajD,aAAAA,EAAAA,EAAckD,oBAC3BC,SAAUnC,EAAgB,uBAC1BoC,oBAAqBnD,EAAKmD,oBAC1BC,SAAU1B,EACV2B,aAAkE,iBAAnB,QAA1BhD,EAAAA,EAAO8C,+BAAP9C,SAAAA,EAA4BgD,eAA6B3C,EAAKoC,IAAIzC,EAAO8C,oBAAoBE,gBAGrHnD,GACGqC,EAACe,EAAAA,CACGT,MAAOnC,EAAKoC,IAAI,oCAChBO,aAAwD,iBAAnB,QAAhBhD,EAAAA,EAAOkD,qBAAPlD,SAAAA,EAAkBgD,eAA6B3C,EAAKoC,IAAIzC,EAAOkD,UAAUF,cAC9FnC,UAAWD,EAAMsC,UACjBC,KAAM,aAENjB,EAACkB,EAAAA,CACGL,SAAU1B,EACV8B,KAAM,YACNR,YAAajD,aAAAA,EAAAA,EAAcwD,UAC3BG,MAAO1D,EAAKuD,UACZI,QAAS5C,EAAgB,YAAa,SACtC6C,OAAQ7C,EAAgB,YAAa,QACrC8C,UAAU,EACVC,aAAc,UAK1BvB,EAACe,EAAAA,CACGT,MAAOnC,EAAKoC,IAAI,2BAChBF,mBAAoB,CAAC,UACrBS,aAA4D,iBAAnB,QAApBhD,EAAAA,EAAO0D,yBAAP1D,SAAAA,EAAsBgD,eAA6B3C,EAAKoC,IAAIzC,EAAO0D,cAAcV,cACtGG,KAAM,gBACNtC,UAAWD,EAAM8C,eAEjBxB,EAACkB,EAAAA,CACGL,SAAU1B,EACV8B,KAAM,gBACNR,YAAajD,aAAAA,EAAAA,EAAcgE,cAC3BL,MAAO1D,EAAK+D,cACZJ,QAAS5C,EAAgB,gBAAiB,SAC1C6C,OAAQ7C,EAAgB,gBAAiB,QACzC8C,UAAU,EACVG,UAAW,EACXF,kBAAcG,KAItB1B,EAACe,EAAAA,CACGT,MAAOnC,EAAKoC,IAAI,+BAChBF,mBAAoB,CAAC,UACrBS,aAA4D,iBAAnB,QAApBhD,EAAAA,EAAO6D,yBAAP7D,SAAAA,EAAsBgD,eAA6B3C,EAAKoC,IAAIzC,EAAO6D,cAAcb,cACtGnC,UAAWD,EAAMiD,cACjBV,KAAM,iBAENjB,EAACkB,EAAAA,CACGL,SAAU1B,EACV8B,KAAM,gBACNR,YAAajD,aAAAA,EAAAA,EAAcmE,cAC3BR,MAAO1D,EAAKkE,cACZP,QAASzB,EACT0B,OAAQ7C,EAAgB,gBAAiB,QACzC8C,UAAU,EACVG,UAAW,GACXF,kBAAcG,KAItB1B,EAACe,EAAAA,CACGT,MAAOnC,EAAKoC,IAAI,2CAChBO,aAC8D,iBAAnB,QAAhChD,EAAAA,EAAOiC,qCAAPjC,SAAAA,EAAkCgD,eAA6B3C,EAAKoC,IAAIzC,EAAOiC,0BAA0Be,cAEpHG,KAAM,4BACNtC,UAAWD,EAAMqB,2BAEjBC,EAACkB,EAAAA,CACGL,SAAU1B,EACV8B,KAAM,4BACNR,YAAajD,aAAAA,EAAAA,EAAcuC,0BAC3BoB,MAAO1D,EAAKsC,0BACZqB,QAAS5C,EAAgB,4BAA6B,SACtD6C,OAAQ7C,EAAgB,4BAA6B,QACrD8C,UAAU,EACVG,UAAW,GACXF,kBAAcG,MAKzB7D,GAAsBmC,EAAC4B,EAAAA,CAAaf,SAAU1B,EAAgB9B,SAAU6B,IAExE3B,GAAiBD,EAAU,CAAEe,SAAQwD,KAAM9D,EAAS,CAAE+D,YAAa,eAAxB/D,CAAyC,GAAGgE,WAGpG"}
1
+ {"version":3,"file":"AchComponent.js","sources":["../../../../../src/components/Ach/components/AchComponent.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport FormInstruction from '../../internal/FormInstruction';\nimport { AccountTypeSelector } from './AccountTypeSelector';\nimport Fieldset from '../../internal/FormFields/Fieldset';\nimport useForm from '../../../utils/useForm';\nimport Field from '../../internal/FormFields/Field';\nimport InputText from '../../internal/FormFields/InputText';\nimport { achValidationRules, achFormatters } from './validate';\nimport StoreDetails from '../../internal/StoreDetails';\nimport useSRPanelForAchErrors from './useSRPanelForACHErrors';\nimport useImage from '../../../core/Context/useImage';\nimport { PREFIX } from '../../internal/Icon/constants';\n\nimport type { PayButtonProps } from '../../internal/PayButton/PayButton';\nimport type { ComponentMethodsRef } from '../../internal/UIElement/types';\nimport type { AchPlaceholders } from '../types';\nimport type { AchStateErrors } from './useSRPanelForACHErrors';\nimport { ValidationRuleResult } from '../../../utils/Validator/ValidationRuleResult';\n\ntype AchForm = {\n selectedAccountType: string;\n ownerName: string;\n routingNumber: string;\n accountNumber: string;\n accountNumberVerification: string;\n};\n\nexport type AchFormPrefillData = Partial<Pick<AchForm, 'ownerName'>>;\n\ninterface AchComponentProps {\n onChange({\n data,\n valid,\n errors,\n isValid,\n storePaymentMethod\n }: {\n data: AchForm;\n valid: { [key: string]: boolean };\n errors: { [key: string]: ValidationRuleResult };\n isValid: boolean;\n storePaymentMethod: boolean;\n }): void;\n payButton: (props: PayButtonProps) => h.JSX.Element;\n setComponentRef: (ref: ComponentMethodsRef) => void;\n hasHolderName: boolean;\n showPayButton: boolean;\n enableStoreDetails: boolean;\n placeholders?: AchPlaceholders;\n data?: AchFormPrefillData;\n}\n\nfunction AchComponent({\n onChange,\n payButton,\n showPayButton,\n placeholders,\n data: defaultData,\n hasHolderName,\n setComponentRef,\n enableStoreDetails\n}: Readonly<AchComponentProps>) {\n const getImage = useImage();\n const schema = useMemo(\n () => ['selectedAccountType', 'routingNumber', 'accountNumber', 'accountNumberVerification', ...(hasHolderName ? ['ownerName'] : [])],\n [hasHolderName]\n );\n const { i18n } = useCoreContext();\n const [status, setStatus] = useState('ready');\n const { handleChangeFor, triggerValidation, data, errors, valid, isValid } = useForm<AchForm>({\n schema,\n defaultData,\n rules: achValidationRules,\n formatters: achFormatters\n });\n const [storePaymentMethod, setStorePaymentMethod] = useState(false);\n const isFormDisabled = status === 'loading';\n\n const isValidating = useRef(false);\n\n const achRef = useRef<ComponentMethodsRef>({\n setStatus: setStatus,\n showValidation: () => {\n isValidating.current = true;\n triggerValidation();\n }\n });\n\n useEffect(() => {\n setComponentRef(achRef.current);\n }, [setComponentRef, achRef.current]);\n\n useSRPanelForAchErrors({ errors: errors as AchStateErrors, data, isValidating });\n\n useEffect(() => {\n onChange({ data, valid, errors, isValid, storePaymentMethod });\n }, [onChange, data, valid, errors, isValid, storePaymentMethod]);\n\n /**\n * If the \"Verify account number\" field has errors, we want to trigger\n * its validation when there is any change done to the \"Account number\" field\n */\n const onAccountNumberInput = useCallback(\n (event: h.JSX.TargetedInputEvent<HTMLInputElement>) => {\n handleChangeFor('accountNumber', 'input')(event);\n\n const hasAccountVerificationError = !!errors.accountNumberVerification;\n if (hasAccountVerificationError) {\n triggerValidation(['accountNumberVerification']);\n }\n },\n [handleChangeFor, triggerValidation, data.accountNumberVerification, errors.accountNumberVerification]\n );\n\n return (\n <div className=\"adyen-checkout__ach\">\n <FormInstruction />\n\n <Fieldset classNameModifiers={[]} label={i18n.get('ach.bankAccount.title')}>\n <AccountTypeSelector\n placeholder={placeholders?.accountTypeSelector}\n onSelect={handleChangeFor('selectedAccountType')}\n selectedAccountType={data.selectedAccountType}\n disabled={isFormDisabled}\n errorMessage={!!errors.selectedAccountType && i18n.get(errors.selectedAccountType.errorMessage)}\n />\n\n {hasHolderName && (\n <Field\n label={i18n.get('ach.accountHolderNameField.title')}\n errorMessage={!!errors.ownerName && i18n.get(errors.ownerName.errorMessage)}\n isValid={!!valid.ownerName}\n name={'ownerName'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'ownerName'}\n placeholder={placeholders?.ownerName}\n value={data.ownerName}\n onInput={handleChangeFor('ownerName', 'input')}\n onBlur={handleChangeFor('ownerName', 'blur')}\n required={true}\n autocomplete={'name'}\n />\n </Field>\n )}\n\n <Field\n label={i18n.get('ach.routingNumber.label')}\n classNameModifiers={['col-60']}\n errorMessage={!!errors.routingNumber && i18n.get(errors.routingNumber.errorMessage)}\n name={'routingNumber'}\n isValid={!!valid.routingNumber}\n >\n <InputText\n disabled={isFormDisabled}\n name={'routingNumber'}\n placeholder={placeholders?.routingNumber}\n value={data.routingNumber}\n onInput={handleChangeFor('routingNumber', 'input')}\n onBlur={handleChangeFor('routingNumber', 'blur')}\n required={true}\n maxlength={9}\n autocomplete={undefined}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumber.label')}\n classNameModifiers={['col-40']}\n errorMessage={!!errors.accountNumber && i18n.get(errors.accountNumber.errorMessage)}\n isValid={!!valid.accountNumber}\n name={'accountNumber'}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumber'}\n placeholder={placeholders?.accountNumber}\n value={data.accountNumber}\n onInput={onAccountNumberInput}\n onBlur={handleChangeFor('accountNumber', 'blur')}\n required={true}\n maxlength={17}\n autocomplete={undefined}\n />\n </Field>\n\n <Field\n label={i18n.get('ach.bankAccountNumberVerification.label')}\n errorMessage={!!errors.accountNumberVerification && i18n.get(errors.accountNumberVerification.errorMessage)}\n name={'accountNumberVerification'}\n isValid={!!valid.accountNumberVerification}\n >\n <InputText\n disabled={isFormDisabled}\n name={'accountNumberVerification'}\n placeholder={placeholders?.accountNumberVerification}\n value={data.accountNumberVerification}\n onInput={handleChangeFor('accountNumberVerification', 'input')}\n onBlur={handleChangeFor('accountNumberVerification', 'blur')}\n required={true}\n maxlength={17}\n autocomplete={undefined}\n />\n </Field>\n </Fieldset>\n\n {enableStoreDetails && <StoreDetails disabled={isFormDisabled} onChange={setStorePaymentMethod} />}\n\n {showPayButton && payButton({ status, icon: getImage({ imageFolder: 'components/' })(`${PREFIX}lock`) })}\n </div>\n );\n}\n\nexport default AchComponent;\n"],"names":["AchComponent","onChange","payButton","showPayButton","placeholders","data","defaultData","hasHolderName","setComponentRef","enableStoreDetails","getImage","useImage","schema","useMemo","i18n","useCoreContext","status","setStatus","useState","handleChangeFor","triggerValidation","errors","valid","isValid","useForm","rules","achValidationRules","formatters","achFormatters","storePaymentMethod","setStorePaymentMethod","isFormDisabled","isValidating","useRef","achRef","showValidation","current","useEffect","useSRPanelForAchErrors","onAccountNumberInput","useCallback","event","accountNumberVerification","h","div","className","FormInstruction","Fieldset","classNameModifiers","label","get","AccountTypeSelector","placeholder","accountTypeSelector","onSelect","selectedAccountType","disabled","errorMessage","Field","ownerName","name","InputText","value","onInput","onBlur","required","autocomplete","routingNumber","maxlength","undefined","accountNumber","StoreDetails","icon","imageFolder","PREFIX"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as o}from"../internal/UIElement/UIElement.js";import t from"../../utils/browserInfo.js";import n from"./components/AmazonPayComponent.js";import r from"./defaultProps.js";import{getCheckoutDetails as s}from"./services.js";import{TxVariants as i}from"../tx-variants.js";import{sanitizeResponse as l,verifyPaymentDidNotFail as c}from"../internal/UIElement/utils.js";import{AnalyticsInfoEvent as p,InfoEventType as a}from"../../core/Analytics/events/AnalyticsInfoEvent.js";function u(e,o,t){return o in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}function d(e){for(var o=1;o<arguments.length;o++){var t=null!=arguments[o]?arguments[o]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(o){u(e,o,t[o])})}return e}function h(e,o){return o=null!=o?o:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):function(e){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);o.push.apply(o,t)}return o}(Object(o)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}),e}class f extends o{formatProps(e){var o,t;return h(d({},e),{checkoutMode:e.isDropin?"ProcessOrder":e.checkoutMode,environment:null===(o=e.environment)||void 0===o?void 0:o.toUpperCase(),locale:null===(t=e.locale)||void 0===t?void 0:t.replace("-","_"),productType:e.isDropin&&!e.addressDetails?"PayOnly":e.productType})}formatData(){const{amazonCheckoutSessionId:e}=this.props;return{paymentMethod:d({type:f.type},e&&{checkoutSessionId:e}),browserInfo:this.browserInfo}}beforeRender(e){const o=new p(d({type:a.rendered,component:this.type,configData:h(d({},e),{showPayButton:this.props.showPayButton})},(null==e?void 0:e.isExpress)&&{isExpress:e.isExpress},(null==e?void 0:e.expressPage)&&{expressPage:e.expressPage}));this.analytics.sendAnalytics(o)}getShopperDetails(){const{amazonCheckoutSessionId:e,configuration:o={},loadingContext:t,clientKey:n}=this.props;if(!e)return console.error("Could not shopper details. Missing checkoutSessionId.");const r={checkoutSessionId:e,getDeliveryAddress:!0,publicKeyId:(null==o?void 0:o.publicKeyId)||"",region:o.region};return s(null!=t?t:"",null!=n?n:"",r)}handleDeclineFlow(){var e;const{amazonCheckoutSessionId:o,configuration:t={},loadingContext:n,clientKey:r}=this.props;if(!o)return console.error("Could handle the decline flow. Missing checkoutSessionId.");const i={checkoutSessionId:o,getDeclineFlowUrl:!0,publicKeyId:null!==(e=t.publicKeyId)&&void 0!==e?e:"",region:t.region};s(null!=n?n:"",null!=r?r:"",i).then((e={})=>{if(!(null==e?void 0:e.declineFlowUrl))throw e;window.location.assign(e.declineFlowUrl)}).catch(e=>{this.props.onError&&this.props.onError(e,this)})}get isValid(){return!0}get browserInfo(){return t()}submit(){var e,o;const t=(null===(o=this.componentRef)||void 0===o||null===(e=o.getSubmitFunction)||void 0===e?void 0:e.call(o))||null;if(t)return t();this.makePaymentsCall().then(l).then(c).then(this.handleResponse).catch(this.handleFailedResult)}componentToRender(){return e(n,d({setComponentRef:this.setComponentRef,showPayButton:this.props.showPayButton,onClick:this.props.onClick,onError:this.props.onError,onSignOut:this.props.onSignOut},this.props))}constructor(...e){super(...e),u(this,"componentRef",void 0)}}u(f,"type",i.amazonpay),u(f,"defaultProps",r);export{f as AmazonPayElement,f as default};
1
+ import{createElement as e}from"../../external/preact/dist/preact.js";import{UIElement as t}from"../internal/UIElement/UIElement.js";import o from"../../utils/browserInfo.js";import n from"./components/AmazonPayComponent.js";import r from"./defaultProps.js";import{getCheckoutDetails as s}from"./services.js";import{TxVariants as i}from"../tx-variants.js";import{sanitizeResponse as c,verifyPaymentDidNotFail as p}from"../internal/UIElement/utils.js";import{AnalyticsInfoEvent as l,InfoEventType as a}from"../../core/Analytics/events/AnalyticsInfoEvent.js";function u(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function d(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){u(e,t,o[t])})}return e}function h(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}class f extends t{formatProps(e){return h(d({},e),{checkoutMode:e.isDropin?"ProcessOrder":e.checkoutMode,environment:e.environment.toUpperCase(),locale:e.locale.replace("-","_"),productType:e.isDropin&&!e.addressDetails?"PayOnly":e.productType})}formatData(){const{amazonCheckoutSessionId:e}=this.props;return{paymentMethod:d({type:f.type},e&&{checkoutSessionId:e}),browserInfo:this.browserInfo}}beforeRender(e){const t=new l(d({type:a.rendered,component:this.type,configData:h(d({},e),{showPayButton:this.props.showPayButton})},(null==e?void 0:e.isExpress)&&{isExpress:e.isExpress},(null==e?void 0:e.expressPage)&&{expressPage:e.expressPage}));this.analytics.sendAnalytics(t)}getShopperDetails(){const{amazonCheckoutSessionId:e,configuration:t={},loadingContext:o,clientKey:n}=this.props;if(!e)return console.error("Could not shopper details. Missing checkoutSessionId.");const r={checkoutSessionId:e,getDeliveryAddress:!0,publicKeyId:t.publicKeyId,region:t.region};return s(o,n,r)}handleDeclineFlow(){const{amazonCheckoutSessionId:e,configuration:t={},loadingContext:o,clientKey:n}=this.props;if(!e)return console.error("Could handle the decline flow. Missing checkoutSessionId.");const r={checkoutSessionId:e,getDeclineFlowUrl:!0,publicKeyId:t.publicKeyId,region:t.region};s(o,n,r).then((e={})=>{if(!(null==e?void 0:e.declineFlowUrl))throw e;window.location.assign(e.declineFlowUrl)}).catch(e=>{this.props.onError&&this.props.onError(e,this.componentRef)})}get isValid(){return!0}get browserInfo(){return o()}submit(){var e;const t=(null===(e=this.componentRef)||void 0===e?void 0:e.getSubmitFunction())||null;if(t)return t();this.makePaymentsCall().then(c).then(p).then(this.handleResponse).catch(this.handleFailedResult)}componentToRender(){return e(n,d({setComponentRef:this.setComponentRef,showPayButton:this.props.showPayButton,onClick:this.props.onClick,onError:this.props.onError,onSignOut:this.props.onSignOut},this.props))}}u(f,"type",i.amazonpay),u(f,"defaultProps",r);export{f as AmazonPayElement,f as default};
2
2
  //# sourceMappingURL=AmazonPay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AmazonPay.js","sources":["../../../../src/components/AmazonPay/AmazonPay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AmazonPayComponent from './components/AmazonPayComponent';\nimport { AmazonPayElementData, AmazonPayConfiguration, CheckoutDetailsRequest, AmazonPayComponentRef } from './types';\nimport defaultProps from './defaultProps';\nimport { getCheckoutDetails } from './services';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { AnalyticsInfoEvent, InfoEventType } from '../../core/Analytics/events/AnalyticsInfoEvent';\n\nimport './AmazonPay.scss';\n\nexport class AmazonPayElement extends UIElement<AmazonPayConfiguration> {\n public static readonly type = TxVariants.amazonpay;\n\n protected static readonly defaultProps = defaultProps;\n\n protected componentRef: AmazonPayComponentRef | undefined;\n\n formatProps(props: AmazonPayConfiguration): AmazonPayConfiguration {\n return {\n ...props,\n checkoutMode: props.isDropin ? 'ProcessOrder' : props.checkoutMode,\n environment: props.environment?.toUpperCase(),\n locale: props.locale?.replace('-', '_'),\n productType: props.isDropin && !props.addressDetails ? 'PayOnly' : props.productType\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): AmazonPayElementData {\n const { amazonCheckoutSessionId: checkoutSessionId } = this.props;\n return {\n paymentMethod: {\n type: AmazonPayElement.type,\n ...(checkoutSessionId && { checkoutSessionId })\n },\n browserInfo: this.browserInfo\n };\n }\n\n protected override beforeRender(configSetByMerchant?: AmazonPayConfiguration) {\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n getShopperDetails() {\n const { amazonCheckoutSessionId, configuration = {}, loadingContext, clientKey } = this.props;\n if (!amazonCheckoutSessionId) return console.error('Could not shopper details. Missing checkoutSessionId.');\n\n const request: CheckoutDetailsRequest = {\n checkoutSessionId: amazonCheckoutSessionId,\n getDeliveryAddress: true,\n publicKeyId: configuration?.publicKeyId || '',\n region: configuration.region\n };\n\n return getCheckoutDetails(loadingContext ?? '', clientKey ?? '', request);\n }\n\n public handleDeclineFlow() {\n const { amazonCheckoutSessionId, configuration = {}, loadingContext, clientKey } = this.props;\n if (!amazonCheckoutSessionId) return console.error('Could handle the decline flow. Missing checkoutSessionId.');\n\n const request: CheckoutDetailsRequest = {\n checkoutSessionId: amazonCheckoutSessionId,\n getDeclineFlowUrl: true,\n publicKeyId: configuration.publicKeyId ?? '',\n region: configuration.region\n };\n\n getCheckoutDetails(loadingContext ?? '', clientKey ?? '', request)\n .then((response = {}) => {\n if (!response?.declineFlowUrl) throw response;\n window.location.assign(response.declineFlowUrl);\n })\n .catch(error => {\n if (this.props.onError) this.props.onError(error, this);\n });\n }\n\n get isValid() {\n return true;\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n\n public submit(): void {\n const amazonComponentSubmitFunction = this.componentRef?.getSubmitFunction?.() || null;\n if (amazonComponentSubmitFunction) {\n return amazonComponentSubmitFunction();\n }\n this.makePaymentsCall().then(sanitizeResponse).then(verifyPaymentDidNotFail).then(this.handleResponse).catch(this.handleFailedResult);\n }\n\n protected override componentToRender(): h.JSX.Element {\n return (\n <AmazonPayComponent\n setComponentRef={this.setComponentRef}\n showPayButton={this.props.showPayButton}\n onClick={this.props.onClick}\n onError={this.props.onError}\n onSignOut={this.props.onSignOut}\n {...this.props}\n />\n );\n }\n}\n\nexport default AmazonPayElement;\n"],"names":["AmazonPayElement","UIElement","formatProps","props","_object_spread_props","_object_spread","checkoutMode","isDropin","environment","toUpperCase","locale","replace","productType","addressDetails","formatData","amazonCheckoutSessionId","checkoutSessionId","this","paymentMethod","type","browserInfo","beforeRender","configSetByMerchant","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","isExpress","expressPage","analytics","sendAnalytics","getShopperDetails","configuration","loadingContext","clientKey","console","error","request","getDeliveryAddress","publicKeyId","region","getCheckoutDetails","handleDeclineFlow","getDeclineFlowUrl","then","response","declineFlowUrl","window","location","assign","catch","onError","isValid","collectBrowserInfo","submit","_this_componentRef_getSubmitFunction","_this_componentRef","amazonComponentSubmitFunction","componentRef","getSubmitFunction","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","handleResponse","handleFailedResult","componentToRender","h","AmazonPayComponent","setComponentRef","onClick","onSignOut","super","args","_define_property","TxVariants","amazonpay","defaultProps"],"mappings":"q1CAaO,MAAMA,UAAyBC,EAOlCC,WAAAA,CAAYC,OAISA,EACLA,EAJZ,OAAOC,EAAAC,EAAA,CAAA,EACAF,GAAAA,CACHG,aAAcH,EAAMI,SAAW,eAAiBJ,EAAMG,aACtDE,YAA8B,QAAjBL,EAAAA,EAAMK,uBAANL,OAAAA,EAAAA,EAAmBM,cAChCC,eAAQP,EAAAA,EAAMO,cAANP,IAAAA,OAAAA,EAAAA,EAAcQ,QAAQ,IAAK,KACnCC,YAAaT,EAAMI,WAAaJ,EAAMU,eAAiB,UAAYV,EAAMS,aAEjF,CAKAE,UAAAA,GACI,MAAQC,wBAAyBC,GAAsBC,KAAKd,MAC5D,MAAO,CACHe,cAAeb,EAAA,CACXc,KAAMnB,EAAiBmB,MACnBH,GAAqB,CAAEA,sBAE/BI,YAAaH,KAAKG,YAE1B,CAEmBC,YAAAA,CAAaC,GAC5B,MAAMC,EAAQ,IAAIC,EAAmBnB,EAAA,CACjCc,KAAMM,EAAcC,SACpBC,UAAWV,KAAKE,KAChBS,WAAYxB,EAAAC,EAAA,CAAA,EAAKiB,GAAAA,CAAqBO,cAAeZ,KAAKd,MAAM0B,kBAC5DP,aAAAA,EAAAA,EAAqBQ,YAAa,CAAEA,UAAWR,EAAoBQ,YACnER,aAAAA,EAAAA,EAAqBS,cAAe,CAAEA,YAAaT,EAAoBS,eAG/Ed,KAAKe,UAAUC,cAAcV,EACjC,CAEAW,iBAAAA,GACI,MAAMnB,wBAAEA,EAAuBoB,cAAEA,EAAgB,CAAA,EAAEC,eAAEA,EAAcC,UAAEA,GAAcpB,KAAKd,MACxF,IAAKY,EAAyB,OAAOuB,QAAQC,MAAM,yDAEnD,MAAMC,EAAkC,CACpCxB,kBAAmBD,EACnB0B,oBAAoB,EACpBC,aAAaP,aAAAA,EAAAA,EAAeO,cAAe,GAC3CC,OAAQR,EAAcQ,QAG1B,OAAOC,EAAmBR,QAAAA,EAAkB,GAAIC,QAAAA,EAAa,GAAIG,EACrE,CAEOK,iBAAAA,GAOcV,IAAAA,EANjB,MAAMpB,wBAAEA,EAAuBoB,cAAEA,EAAgB,CAAA,EAAEC,eAAEA,EAAcC,UAAEA,GAAcpB,KAAKd,MACxF,IAAKY,EAAyB,OAAOuB,QAAQC,MAAM,6DAEnD,MAAMC,EAAkC,CACpCxB,kBAAmBD,EACnB+B,mBAAmB,EACnBJ,YAAsC,QAAzBP,EAAAA,EAAcO,uBAAdP,EAAAA,EAA6B,GAC1CQ,OAAQR,EAAcQ,QAG1BC,EAAmBR,QAAAA,EAAkB,GAAIC,QAAAA,EAAa,GAAIG,GACrDO,KAAK,CAACC,EAAW,MACd,KAAKA,aAAAA,EAAAA,EAAUC,gBAAgB,MAAMD,EACrCE,OAAOC,SAASC,OAAOJ,EAASC,kBAEnCI,MAAMd,IACCtB,KAAKd,MAAMmD,SAASrC,KAAKd,MAAMmD,QAAQf,EAAOtB,OAE9D,CAEA,WAAIsC,GACA,OAAO,CACX,CAEA,eAAInC,GACA,OAAOoC,GACX,CAEOC,MAAAA,OACmCC,EAAAC,EAAtC,MAAMC,GAAiD,QAAjBD,EAAA1C,KAAK4C,oBAAL,IAAAF,GAAoC,QAApCD,EAAAC,EAAmBG,yBAAnB,IAAAJ,SAAAA,OAAAC,KAA4C,KAClF,GAAIC,EACA,OAAOA,IAEX3C,KAAK8C,mBAAmBhB,KAAKiB,GAAkBjB,KAAKkB,GAAyBlB,KAAK9B,KAAKiD,gBAAgBb,MAAMpC,KAAKkD,mBACtH,CAEmBC,iBAAAA,GACf,OACIC,EAACC,EAAAA,EAAAA,CACGC,gBAAiBtD,KAAKsD,gBACtB1C,cAAeZ,KAAKd,MAAM0B,cAC1B2C,QAASvD,KAAKd,MAAMqE,QACpBlB,QAASrC,KAAKd,MAAMmD,QACpBmB,UAAWxD,KAAKd,MAAMsE,WAClBxD,KAAKd,OAGrB,mBAzGGuE,SAAAC,GAKHC,EAAA3D,KAAU4C,wBAJVe,EADS5E,EACcmB,OAAO0D,EAAWC,WAEzCF,EAHS5E,EAGiB+E,eAAeA"}
1
+ {"version":3,"file":"AmazonPay.js","sources":["../../../../src/components/AmazonPay/AmazonPay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AmazonPayComponent from './components/AmazonPayComponent';\nimport { AmazonPayElementData, AmazonPayConfiguration, CheckoutDetailsRequest } from './types';\nimport defaultProps from './defaultProps';\nimport { getCheckoutDetails } from './services';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { AnalyticsInfoEvent, InfoEventType } from '../../core/Analytics/events/AnalyticsInfoEvent';\n\nimport './AmazonPay.scss';\n\nexport class AmazonPayElement extends UIElement<AmazonPayConfiguration> {\n public static readonly type = TxVariants.amazonpay;\n\n protected static readonly defaultProps = defaultProps;\n\n formatProps(props) {\n return {\n ...props,\n checkoutMode: props.isDropin ? 'ProcessOrder' : props.checkoutMode,\n environment: props.environment.toUpperCase(),\n locale: props.locale.replace('-', '_'),\n productType: props.isDropin && !props.addressDetails ? 'PayOnly' : props.productType\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData(): AmazonPayElementData {\n const { amazonCheckoutSessionId: checkoutSessionId } = this.props;\n return {\n paymentMethod: {\n type: AmazonPayElement.type,\n ...(checkoutSessionId && { checkoutSessionId })\n },\n browserInfo: this.browserInfo\n };\n }\n\n protected override beforeRender(configSetByMerchant?: AmazonPayConfiguration) {\n const event = new AnalyticsInfoEvent({\n type: InfoEventType.rendered,\n component: this.type,\n configData: { ...configSetByMerchant, showPayButton: this.props.showPayButton },\n ...(configSetByMerchant?.isExpress && { isExpress: configSetByMerchant.isExpress }),\n ...(configSetByMerchant?.expressPage && { expressPage: configSetByMerchant.expressPage })\n });\n\n this.analytics.sendAnalytics(event);\n }\n\n getShopperDetails() {\n const { amazonCheckoutSessionId, configuration = {}, loadingContext, clientKey } = this.props;\n if (!amazonCheckoutSessionId) return console.error('Could not shopper details. Missing checkoutSessionId.');\n\n const request: CheckoutDetailsRequest = {\n checkoutSessionId: amazonCheckoutSessionId,\n getDeliveryAddress: true,\n publicKeyId: configuration.publicKeyId,\n region: configuration.region\n };\n\n return getCheckoutDetails(loadingContext, clientKey, request);\n }\n\n public handleDeclineFlow() {\n const { amazonCheckoutSessionId, configuration = {}, loadingContext, clientKey } = this.props;\n if (!amazonCheckoutSessionId) return console.error('Could handle the decline flow. Missing checkoutSessionId.');\n\n const request: CheckoutDetailsRequest = {\n checkoutSessionId: amazonCheckoutSessionId,\n getDeclineFlowUrl: true,\n publicKeyId: configuration.publicKeyId,\n region: configuration.region\n };\n\n getCheckoutDetails(loadingContext, clientKey, request)\n .then((response = {}) => {\n if (!response?.declineFlowUrl) throw response;\n window.location.assign(response.declineFlowUrl);\n })\n .catch(error => {\n if (this.props.onError) this.props.onError(error, this.componentRef);\n });\n }\n\n get isValid() {\n return true;\n }\n\n get browserInfo() {\n return collectBrowserInfo();\n }\n\n public submit(): void {\n const amazonComponentSubmitFunction = this.componentRef?.getSubmitFunction() || null;\n if (amazonComponentSubmitFunction) {\n return amazonComponentSubmitFunction();\n }\n this.makePaymentsCall().then(sanitizeResponse).then(verifyPaymentDidNotFail).then(this.handleResponse).catch(this.handleFailedResult);\n }\n\n protected override componentToRender(): h.JSX.Element {\n return (\n <AmazonPayComponent\n setComponentRef={this.setComponentRef}\n showPayButton={this.props.showPayButton}\n onClick={this.props.onClick}\n onError={this.props.onError}\n onSignOut={this.props.onSignOut}\n {...this.props}\n />\n );\n }\n}\n\nexport default AmazonPayElement;\n"],"names":["AmazonPayElement","UIElement","formatProps","props","_object_spread_props","_object_spread","checkoutMode","isDropin","environment","toUpperCase","locale","replace","productType","addressDetails","formatData","amazonCheckoutSessionId","checkoutSessionId","this","paymentMethod","type","browserInfo","beforeRender","configSetByMerchant","event","AnalyticsInfoEvent","InfoEventType","rendered","component","configData","showPayButton","isExpress","expressPage","analytics","sendAnalytics","getShopperDetails","configuration","loadingContext","clientKey","console","error","request","getDeliveryAddress","publicKeyId","region","getCheckoutDetails","handleDeclineFlow","getDeclineFlowUrl","then","response","declineFlowUrl","window","location","assign","catch","onError","componentRef","isValid","collectBrowserInfo","submit","_this_componentRef","amazonComponentSubmitFunction","getSubmitFunction","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","handleResponse","handleFailedResult","componentToRender","h","AmazonPayComponent","setComponentRef","onClick","onSignOut","_define_property","TxVariants","amazonpay","defaultProps"],"mappings":"q1CAaO,MAAMA,UAAyBC,EAKlCC,WAAAA,CAAYC,GACR,OAAOC,EAAAC,EAAA,CAAA,EACAF,GAAAA,CACHG,aAAcH,EAAMI,SAAW,eAAiBJ,EAAMG,aACtDE,YAAaL,EAAMK,YAAYC,cAC/BC,OAAQP,EAAMO,OAAOC,QAAQ,IAAK,KAClCC,YAAaT,EAAMI,WAAaJ,EAAMU,eAAiB,UAAYV,EAAMS,aAEjF,CAKAE,UAAAA,GACI,MAAQC,wBAAyBC,GAAsBC,KAAKd,MAC5D,MAAO,CACHe,cAAeb,EAAA,CACXc,KAAMnB,EAAiBmB,MACnBH,GAAqB,CAAEA,sBAE/BI,YAAaH,KAAKG,YAE1B,CAEmBC,YAAAA,CAAaC,GAC5B,MAAMC,EAAQ,IAAIC,EAAmBnB,EAAA,CACjCc,KAAMM,EAAcC,SACpBC,UAAWV,KAAKE,KAChBS,WAAYxB,EAAAC,EAAA,CAAA,EAAKiB,GAAAA,CAAqBO,cAAeZ,KAAKd,MAAM0B,kBAC5DP,aAAAA,EAAAA,EAAqBQ,YAAa,CAAEA,UAAWR,EAAoBQ,YACnER,aAAAA,EAAAA,EAAqBS,cAAe,CAAEA,YAAaT,EAAoBS,eAG/Ed,KAAKe,UAAUC,cAAcV,EACjC,CAEAW,iBAAAA,GACI,MAAMnB,wBAAEA,EAAuBoB,cAAEA,EAAgB,CAAA,EAAEC,eAAEA,EAAcC,UAAEA,GAAcpB,KAAKd,MACxF,IAAKY,EAAyB,OAAOuB,QAAQC,MAAM,yDAEnD,MAAMC,EAAkC,CACpCxB,kBAAmBD,EACnB0B,oBAAoB,EACpBC,YAAaP,EAAcO,YAC3BC,OAAQR,EAAcQ,QAG1B,OAAOC,EAAmBR,EAAgBC,EAAWG,EACzD,CAEOK,iBAAAA,GACH,MAAM9B,wBAAEA,EAAuBoB,cAAEA,EAAgB,CAAA,EAAEC,eAAEA,EAAcC,UAAEA,GAAcpB,KAAKd,MACxF,IAAKY,EAAyB,OAAOuB,QAAQC,MAAM,6DAEnD,MAAMC,EAAkC,CACpCxB,kBAAmBD,EACnB+B,mBAAmB,EACnBJ,YAAaP,EAAcO,YAC3BC,OAAQR,EAAcQ,QAG1BC,EAAmBR,EAAgBC,EAAWG,GACzCO,KAAK,CAACC,EAAW,MACd,KAAKA,aAAAA,EAAAA,EAAUC,gBAAgB,MAAMD,EACrCE,OAAOC,SAASC,OAAOJ,EAASC,kBAEnCI,MAAMd,IACCtB,KAAKd,MAAMmD,SAASrC,KAAKd,MAAMmD,QAAQf,EAAOtB,KAAKsC,eAEnE,CAEA,WAAIC,GACA,OAAO,CACX,CAEA,eAAIpC,GACA,OAAOqC,GACX,CAEOC,MAAAA,GACmC,IAAAC,EAAtC,MAAMC,GAAiD,QAAjBD,EAAA1C,KAAKsC,oBAAL,IAAAI,OAAA,EAAAA,EAAmBE,sBAAuB,KAChF,GAAID,EACA,OAAOA,IAEX3C,KAAK6C,mBAAmBf,KAAKgB,GAAkBhB,KAAKiB,GAAyBjB,KAAK9B,KAAKgD,gBAAgBZ,MAAMpC,KAAKiD,mBACtH,CAEmBC,iBAAAA,GACf,OACIC,EAACC,EAAAA,EAAAA,CACGC,gBAAiBrD,KAAKqD,gBACtBzC,cAAeZ,KAAKd,MAAM0B,cAC1B0C,QAAStD,KAAKd,MAAMoE,QACpBjB,QAASrC,KAAKd,MAAMmD,QACpBkB,UAAWvD,KAAKd,MAAMqE,WAClBvD,KAAKd,OAGrB,EAtGAsE,EADSzE,EACcmB,OAAOuD,EAAWC,WAEzCF,EAHSzE,EAGiB4E,eAAeA"}
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/BacsInput.js";import n from"./components/BacsResult.js";import r from"../internal/PayButton/PayButton.js";import{TxVariants as a}from"../tx-variants.js";function i(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function s(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),n.forEach(function(e){i(t,e,o[e])})}return t}function p(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e.push.apply(e,o)}return e}(Object(e)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(e,o))}),t}class c extends e{formatData(){var t,e,o,n;return s({paymentMethod:s({type:c.type},(null===(t=this.state.data)||void 0===t?void 0:t.holderName)&&{holderName:this.state.data.holderName},(null===(e=this.state.data)||void 0===e?void 0:e.bankAccountNumber)&&{bankAccountNumber:this.state.data.bankAccountNumber},(null===(o=this.state.data)||void 0===o?void 0:o.bankLocationId)&&{bankLocationId:this.state.data.bankLocationId})},(null===(n=this.state.data)||void 0===n?void 0:n.shopperEmail)&&{shopperEmail:this.state.data.shopperEmail})}get isValid(){return!!this.state.isValid}componentToRender(){return this.props.url?t(n,{icon:this.icon,url:this.props.url,paymentMethodType:this.props.paymentMethodType,onActionHandled:this.onActionHandled}):t(o,p(s({},this.props),{setComponentRef:this.setComponentRef,onChange:this.setState,payButton:this.payButton,onSubmit:this.submit}))}constructor(...e){super(...e),i(this,"payButton",e=>t(r,p(s({onClick:this.submit},e),{showReview:!!this.props.onReview})))}}i(c,"type",a.directdebit_GB);export{c as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/BacsInput.js";import r from"./components/BacsResult.js";import n from"../internal/PayButton/PayButton.js";import{TxVariants as a}from"../tx-variants.js";function i(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function s(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter(function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),r.forEach(function(e){i(t,e,o[e])})}return t}function p(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e.push.apply(e,o)}return e}(Object(e)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(e,o))}),t}class c extends e{formatData(){var t,e,o,r;return s({paymentMethod:s({type:c.type},(null===(t=this.state.data)||void 0===t?void 0:t.holderName)&&{holderName:this.state.data.holderName},(null===(e=this.state.data)||void 0===e?void 0:e.bankAccountNumber)&&{bankAccountNumber:this.state.data.bankAccountNumber},(null===(o=this.state.data)||void 0===o?void 0:o.bankLocationId)&&{bankLocationId:this.state.data.bankLocationId})},(null===(r=this.state.data)||void 0===r?void 0:r.shopperEmail)&&{shopperEmail:this.state.data.shopperEmail})}get isValid(){return!!this.state.isValid}componentToRender(){return this.props.url?t(r,{ref:t=>{this.componentRef=t},icon:this.icon,url:this.props.url,paymentMethodType:this.props.paymentMethodType,onActionHandled:this.onActionHandled}):t(o,p(s({ref:t=>{this.componentRef=t}},this.props),{onChange:this.setState,payButton:this.payButton,onSubmit:this.submit}))}constructor(...e){super(...e),i(this,"payButton",e=>t(n,p(s({onClick:this.submit},e),{showReview:!!this.props.onReview})))}}i(c,"type",a.directdebit_GB);export{c as default};
2
2
  //# sourceMappingURL=BacsDD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BacsDD.js","sources":["../../../../src/components/BacsDD/BacsDD.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport BacsInput from './components/BacsInput';\nimport BacsResult from './components/BacsResult';\nimport PayButton from '../internal/PayButton';\nimport { TxVariants } from '../tx-variants';\nimport { VoucherConfiguration } from '../internal/Voucher/types';\nimport { BacsElementData } from './types';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\n\nclass BacsElement extends UIElement<VoucherConfiguration> {\n public static readonly type = TxVariants.directdebit_GB;\n\n formatData(): BacsElementData {\n return {\n paymentMethod: {\n type: BacsElement.type,\n ...(this.state.data?.holderName && { holderName: this.state.data.holderName }),\n ...(this.state.data?.bankAccountNumber && { bankAccountNumber: this.state.data.bankAccountNumber }),\n ...(this.state.data?.bankLocationId && { bankLocationId: this.state.data.bankLocationId })\n },\n ...(this.state.data?.shopperEmail && { shopperEmail: this.state.data.shopperEmail })\n };\n }\n\n get isValid(): boolean {\n return !!this.state.isValid;\n }\n\n protected override payButton = (props: PayButtonProps) => {\n return <PayButton onClick={this.submit} {...props} showReview={!!this.props.onReview} />;\n };\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.url ? (\n <BacsResult\n icon={this.icon}\n url={this.props.url}\n paymentMethodType={this.props.paymentMethodType}\n onActionHandled={this.onActionHandled}\n />\n ) : (\n <BacsInput\n {...this.props}\n setComponentRef={this.setComponentRef}\n onChange={this.setState}\n payButton={this.payButton}\n onSubmit={this.submit}\n />\n );\n }\n}\n\nexport default BacsElement;\n"],"names":["BacsElement","UIElement","formatData","_this_state_data","_this_state_data1","_this_state_data2","_this_state_data3","_object_spread","paymentMethod","type","this","state","data","holderName","bankAccountNumber","bankLocationId","shopperEmail","isValid","componentToRender","props","url","h","BacsResult","icon","paymentMethodType","onActionHandled","BacsInput","setComponentRef","onChange","setState","payButton","onSubmit","submit","super","args","_define_property","PayButton","onClick","showReview","onReview","TxVariants","directdebit_GB"],"mappings":"imCAUA,MAAMA,UAAoBC,EAGtBC,UAAAA,GAIgB,IAAAC,EACAC,EACAC,EAEJC,EAPR,OAAOC,EAAA,CACHC,cAAeD,EAAA,CACXE,KAAMT,EAAYS,OACC,QAAfN,EAAAO,KAAKC,MAAMC,YAAX,IAAAT,SAAAA,EAAiBU,aAAc,CAAEA,WAAYH,KAAKC,MAAMC,KAAKC,aAC9C,QAAfT,EAAAM,KAAKC,MAAMC,YAAX,IAAAR,SAAAA,EAAiBU,oBAAqB,CAAEA,kBAAmBJ,KAAKC,MAAMC,KAAKE,oBAC5D,QAAfT,EAAAK,KAAKC,MAAMC,YAAX,IAAAP,SAAAA,EAAiBU,iBAAkB,CAAEA,eAAgBL,KAAKC,MAAMC,KAAKG,mBAE1D,QAAfT,EAAAI,KAAKC,MAAMC,YAAX,IAAAN,SAAAA,EAAiBU,eAAgB,CAAEA,aAAcN,KAAKC,MAAMC,KAAKI,cAE7E,CAEA,WAAIC,GACA,QAASP,KAAKC,MAAMM,OACxB,CAMmBC,iBAAAA,GACf,OAAOR,KAAKS,MAAMC,IACdC,EAACC,EAAAA,CACGC,KAAMb,KAAKa,KACXH,IAAKV,KAAKS,MAAMC,IAChBI,kBAAmBd,KAAKS,MAAMK,kBAC9BC,gBAAiBf,KAAKe,kBAG1BJ,EAACK,EAAAA,EAAAA,EAAAA,GACOhB,KAAKS,OAAK,CACdQ,gBAAiBjB,KAAKiB,gBACtBC,SAAUlB,KAAKmB,SACfC,UAAWpB,KAAKoB,UAChBC,SAAUrB,KAAKsB,SAG3B,mBAxCJC,SAAAC,GAmBIC,EAAAzB,KAAmBoB,YAAaX,GACrBE,EAACe,EAAAA,EAAAA,EAAAA,CAAUC,QAAS3B,KAAKsB,QAAYb,GAAAA,CAAOmB,aAAc5B,KAAKS,MAAMoB,cAnBhFJ,EADEnC,EACqBS,OAAO+B,EAAWC"}
1
+ {"version":3,"file":"BacsDD.js","sources":["../../../../src/components/BacsDD/BacsDD.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport BacsInput from './components/BacsInput';\nimport BacsResult from './components/BacsResult';\nimport PayButton from '../internal/PayButton';\nimport { TxVariants } from '../tx-variants';\nimport { VoucherConfiguration } from '../internal/Voucher/types';\nimport { BacsElementData } from './types';\nimport { PayButtonProps } from '../internal/PayButton/PayButton';\n\nclass BacsElement extends UIElement<VoucherConfiguration> {\n public static readonly type = TxVariants.directdebit_GB;\n\n formatData(): BacsElementData {\n return {\n paymentMethod: {\n type: BacsElement.type,\n ...(this.state.data?.holderName && { holderName: this.state.data.holderName }),\n ...(this.state.data?.bankAccountNumber && { bankAccountNumber: this.state.data.bankAccountNumber }),\n ...(this.state.data?.bankLocationId && { bankLocationId: this.state.data.bankLocationId })\n },\n ...(this.state.data?.shopperEmail && { shopperEmail: this.state.data.shopperEmail })\n };\n }\n\n get isValid(): boolean {\n return !!this.state.isValid;\n }\n\n protected override payButton = (props: PayButtonProps) => {\n return <PayButton onClick={this.submit} {...props} showReview={!!this.props.onReview} />;\n };\n\n protected override componentToRender(): h.JSX.Element {\n return this.props.url ? (\n <BacsResult\n ref={ref => {\n this.componentRef = ref;\n }}\n icon={this.icon}\n url={this.props.url}\n paymentMethodType={this.props.paymentMethodType}\n onActionHandled={this.onActionHandled}\n // originalAction={this.props.originalAction}\n />\n ) : (\n <BacsInput\n // @ts-ignore ref is internal from the Component\n ref={ref => {\n this.componentRef = ref;\n }}\n {...this.props}\n onChange={this.setState}\n payButton={this.payButton}\n onSubmit={this.submit}\n />\n );\n }\n}\n\nexport default BacsElement;\n"],"names":["BacsElement","UIElement","formatData","_this_state_data","_this_state_data1","_this_state_data2","_this_state_data3","_object_spread","paymentMethod","type","this","state","data","holderName","bankAccountNumber","bankLocationId","shopperEmail","isValid","componentToRender","props","url","h","BacsResult","ref","componentRef","icon","paymentMethodType","onActionHandled","BacsInput","onChange","setState","payButton","onSubmit","submit","super","args","_define_property","PayButton","onClick","showReview","onReview","TxVariants","directdebit_GB"],"mappings":"imCAUA,MAAMA,UAAoBC,EAGtBC,UAAAA,GAIgB,IAAAC,EACAC,EACAC,EAEJC,EAPR,OAAOC,EAAA,CACHC,cAAeD,EAAA,CACXE,KAAMT,EAAYS,OACC,QAAfN,EAAAO,KAAKC,MAAMC,YAAX,IAAAT,SAAAA,EAAiBU,aAAc,CAAEA,WAAYH,KAAKC,MAAMC,KAAKC,aAC9C,QAAfT,EAAAM,KAAKC,MAAMC,YAAX,IAAAR,SAAAA,EAAiBU,oBAAqB,CAAEA,kBAAmBJ,KAAKC,MAAMC,KAAKE,oBAC5D,QAAfT,EAAAK,KAAKC,MAAMC,YAAX,IAAAP,SAAAA,EAAiBU,iBAAkB,CAAEA,eAAgBL,KAAKC,MAAMC,KAAKG,mBAE1D,QAAfT,EAAAI,KAAKC,MAAMC,YAAX,IAAAN,SAAAA,EAAiBU,eAAgB,CAAEA,aAAcN,KAAKC,MAAMC,KAAKI,cAE7E,CAEA,WAAIC,GACA,QAASP,KAAKC,MAAMM,OACxB,CAMmBC,iBAAAA,GACf,OAAOR,KAAKS,MAAMC,IACdC,EAACC,EAAAA,CACGC,IAAKA,IACDb,KAAKc,aAAeD,GAExBE,KAAMf,KAAKe,KACXL,IAAKV,KAAKS,MAAMC,IAChBM,kBAAmBhB,KAAKS,MAAMO,kBAC9BC,gBAAiBjB,KAAKiB,kBAI1BN,EAACO,EAAAA,EAAAA,EAAAA,CAEGL,IAAKA,IACDb,KAAKc,aAAeD,IAEpBb,KAAKS,OAAK,CACdU,SAAUnB,KAAKoB,SACfC,UAAWrB,KAAKqB,UAChBC,SAAUtB,KAAKuB,SAG3B,mBA/CJC,SAAAC,GAmBIC,EAAA1B,KAAmBqB,YAAaZ,GACrBE,EAACgB,EAAAA,EAAAA,EAAAA,CAAUC,QAAS5B,KAAKuB,QAAYd,GAAAA,CAAOoB,aAAc7B,KAAKS,MAAMqB,cAnBhFJ,EADEpC,EACqBS,OAAOgC,EAAWC"}
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as a,useRef as o,useEffect as n}from"../../../external/preact/hooks/dist/hooks.js";import t from"../../../_virtual/index.js";import{useCoreContext as r}from"../../../core/Context/CoreProvider.js";import c from"../../internal/FormFields/Field/Field.js";import i from"../../internal/FormFields/ConsentCheckbox/ConsentCheckbox.js";import{bacsValidationRules as l,bacsFormatters as s}from"./validate.js";import d from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import u from"../../../core/Context/useImage.js";import m from"../../internal/FormFields/InputText.js";import b from"../../internal/FormFields/InputEmail.js";import p from"../../internal/FormInstruction/FormInstruction.js";import{getErrorMessage as h}from"../../../utils/getErrorMessage.js";import{PREFIX as k}from"../../internal/Icon/constants.js";import{useAmount as v}from"../../../core/Context/AmountProvider.js";const f="enter-data",g="confirm-data";function N(N){var _,C,y,I,x,F;const{i18n:E}=r(),j=u(),{amount:A}=v(),{handleChangeFor:L,triggerValidation:M,data:B,valid:V,errors:q,isValid:S}=d({schema:["holderName","bankAccountNumber","bankLocationId","shopperEmail","amountConsentCheckbox","accountConsentCheckbox"],defaultData:N.data,formatters:s,rules:l}),[H,w]=a(f),P=o({setStatus:w,showValidation:()=>{M()}});n(()=>{N.setComponentRef(P.current)},[N.setComponentRef]);return n(()=>{N.onChange({data:B,valid:V,errors:q,isValid:S})},[B,V,q,S]),e("div",{className:t({"adyen-checkout__bacs":!0,"adyen-checkout__bacs--confirm":H===g||"loading"===H})},e(p,null),H==g&&e("div",{className:t({"adyen-checkout__bacs--edit":!0,"adyen-checkout__bacs--edit-dropin":N.isDropin})},e(m,{name:"bacsEdit",className:"adyen-checkout__bacs--edit-button",value:E.get("edit"),"aria-label":E.get("edit"),readonly:!0,onClick:()=>{var e,a;return null===(a=P.current)||void 0===a||null===(e=a.setStatus)||void 0===e?void 0:e.call(a,f)},autocomplete:void 0})),e(c,{className:t({"adyen-checkout__bacs--holder-name":!0,"adyen-checkout__field--inactive":H===g||"loading"===H}),label:E.get("bacs.accountHolderName"),errorMessage:!!q.holderName&&E.get("bacs.accountHolderName.invalid"),isValid:V.holderName,name:"accountHolderName",i18n:E},e(m,{name:"bacs.accountHolderName",className:"adyen-checkout__bacs-input--holder-name",placeholder:null===(C=N.placeholders)||void 0===C?void 0:C.holderName,value:B.holderName,"aria-invalid":!V.holderName,"aria-label":E.get("bacs.accountHolderName"),"aria-required":"true",required:!0,readonly:H===g||"loading"===H,autocorrect:"off",autocomplete:"name",onBlur:L("holderName","blur"),onInput:L("holderName","input")})),e("div",{className:"adyen-checkout__bacs__num-id adyen-checkout__field-wrapper"},e(c,{errorMessage:Boolean(q.bankAccountNumber)&&E.get("bacs.accountNumber.invalid"),label:E.get("bacs.accountNumber"),className:t({"adyen-checkout__bacs--bank-account-number":!0,"adyen-checkout__field--inactive":H===g||"loading"===H}),classNameModifiers:["col-70"],isValid:V.bankAccountNumber,name:"bankAccountNumber",i18n:E},e(m,{value:B.bankAccountNumber,className:"adyen-checkout__bacs-input--bank-account-number",placeholder:null===(y=N.placeholders)||void 0===y?void 0:y.bankAccountNumber,"aria-invalid":!V.bankAccountNumber,"aria-label":E.get("bacs.accountNumber"),"aria-required":"true",required:!0,readonly:H===g||"loading"===H,autocorrect:"off",autocomplete:void 0,onBlur:L("bankAccountNumber","blur"),onInput:L("bankAccountNumber","input")})),e(c,{errorMessage:Boolean(q.bankLocationId)&&E.get("bacs.bankLocationId.invalid"),label:E.get("bacs.bankLocationId"),className:t({"adyen-checkout__bacs--bank-location-id":!0,"adyen-checkout__field--inactive":H===g||"loading"===H}),classNameModifiers:["col-30"],isValid:V.bankLocationId,name:"bankLocationId",i18n:E},e(m,{value:B.bankLocationId,className:"adyen-checkout__bacs-input--bank-location-id",placeholder:null===(I=N.placeholders)||void 0===I?void 0:I.bankLocationId,"aria-invalid":!V.bankLocationId,"aria-label":E.get("bacs.bankLocationId"),"aria-required":"true",required:!0,readonly:H===g||"loading"===H,autocorrect:"off",autocomplete:void 0,onBlur:L("bankLocationId","blur"),onInput:L("bankLocationId","input")}))),e(c,{errorMessage:h(E,null!==(_=q.shopperEmail)&&void 0!==_?_:void 0,E.get("shopperEmail")),label:E.get("shopperEmail"),className:t({"adyen-checkout__bacs--shopper-email":!0,"adyen-checkout__field--inactive":H===g||"loading"===H}),isValid:V.shopperEmail,name:"emailAddress",i18n:E},e(b,{value:B.shopperEmail,name:"shopperEmail",className:"adyen-checkout__bacs-input--shopper-email",classNameModifiers:["large"],placeholder:null===(x=N.placeholders)||void 0===x?void 0:x.shopperEmail,spellcheck:!1,"aria-invalid":!V.shopperEmail,"aria-label":E.get("shopperEmail"),"aria-required":"true",required:!0,readonly:H===g||"loading"===H,autocorrect:"off",autocomplete:"email",onInput:L("shopperEmail","input"),onBlur:L("shopperEmail","blur")})),H===f&&e(i,{classNameModifiers:["amountConsentCheckbox"],errorMessage:q.amountConsentCheckbox,label:E.get("bacs.consent.amount"),onChange:L("amountConsentCheckbox"),checked:Boolean(B.amountConsentCheckbox),i18n:E}),H===f&&e(i,{classNameModifiers:["accountConsentCheckbox"],errorMessage:q.accountConsentCheckbox,label:E.get("bacs.consent.account"),onChange:L("accountConsentCheckbox"),checked:Boolean(B.accountConsentCheckbox),i18n:E}),N.showPayButton&&(null===(F=N.payButton)||void 0===F?void 0:F.call(N,{status:H,label:H===f?E.get("continue"):`${E.get("bacs.confirm")} ${(null==A?void 0:A.value)&&(null==A?void 0:A.currency)?E.amount(A.value,A.currency):""}`,icon:j({imageFolder:"components/"})(`${k}lock`),onClick:()=>{var e,a,o,n;return S?H===f?null===(n=P.current)||void 0===n||null===(o=n.setStatus)||void 0===o?void 0:o.call(n,g):H===g?N.onSubmit():void 0:null===(a=P.current)||void 0===a||null===(e=a.showValidation)||void 0===e?void 0:e.call(a)}})))}N.defaultProps={data:{},placeholders:{}};export{N as default};
1
+ import{createElement as e}from"../../../external/preact/dist/preact.js";import{useState as a,useEffect as o}from"../../../external/preact/hooks/dist/hooks.js";import n from"../../../_virtual/index.js";import{useCoreContext as t}from"../../../core/Context/CoreProvider.js";import r from"../../internal/FormFields/Field/Field.js";import c from"../../internal/FormFields/ConsentCheckbox/ConsentCheckbox.js";import{bacsValidationRules as i,bacsFormatters as l}from"./validate.js";import s from"../../../utils/useForm/useForm.js";import"../../internal/SecuredFields/lib/CSF/utils/userAgent.js";import d from"../../../core/Context/useImage.js";import u from"../../internal/FormFields/InputText.js";import m from"../../internal/FormFields/InputEmail.js";import b from"../../internal/FormInstruction/FormInstruction.js";import{getErrorMessage as p}from"../../../utils/getErrorMessage.js";import{PREFIX as h}from"../../internal/Icon/constants.js";import{useAmount as k}from"../../../core/Context/AmountProvider.js";const g="enter-data",f="confirm-data";function N(N){const{i18n:_}=t(),C=d(),{amount:v}=k(),{handleChangeFor:y,triggerValidation:I,data:x,valid:F,errors:E,isValid:j}=s({schema:["holderName","bankAccountNumber","bankLocationId","shopperEmail","amountConsentCheckbox","accountConsentCheckbox"],defaultData:N.data,formatters:l,rules:i}),[A,L]=a(g);this.setStatus=L,this.showValidation=I;return o(()=>{N.onChange({data:x,valid:F,errors:E,isValid:j})},[x,F,E,j]),e("div",{className:n({"adyen-checkout__bacs":!0,"adyen-checkout__bacs--confirm":A===f||"loading"===A})},e(b,null),A==f&&e("div",{className:n({"adyen-checkout__bacs--edit":!0,"adyen-checkout__bacs--edit-dropin":N.isDropin})},e(u,{name:"bacsEdit",className:"adyen-checkout__bacs--edit-button",value:_.get("edit"),"aria-label":_.get("edit"),readonly:!0,onClick:()=>this.setStatus(g),autocomplete:void 0})),e(r,{className:n({"adyen-checkout__bacs--holder-name":!0,"adyen-checkout__field--inactive":A===f||"loading"===A}),label:_.get("bacs.accountHolderName"),errorMessage:!!E.holderName&&_.get("bacs.accountHolderName.invalid"),isValid:F.holderName,name:"accountHolderName",i18n:_},e(u,{name:"bacs.accountHolderName",className:"adyen-checkout__bacs-input--holder-name",placeholder:N.placeholders.holderName,value:x.holderName,"aria-invalid":!F.holderName,"aria-label":_.get("bacs.accountHolderName"),"aria-required":"true",required:!0,readonly:A===f||"loading"===A,autocorrect:"off",autocomplete:"name",onBlur:y("holderName","blur"),onInput:y("holderName","input")})),e("div",{className:"adyen-checkout__bacs__num-id adyen-checkout__field-wrapper"},e(r,{errorMessage:!!E.bankAccountNumber&&_.get("bacs.accountNumber.invalid"),label:_.get("bacs.accountNumber"),className:n({"adyen-checkout__bacs--bank-account-number":!0,"adyen-checkout__field--inactive":A===f||"loading"===A}),classNameModifiers:["col-70"],isValid:F.bankAccountNumber,name:"bankAccountNumber",i18n:_},e(u,{value:x.bankAccountNumber,className:"adyen-checkout__bacs-input--bank-account-number",placeholder:N.placeholders.bankAccountNumber,"aria-invalid":!F.bankAccountNumber,"aria-label":_.get("bacs.accountNumber"),"aria-required":"true",required:!0,readonly:A===f||"loading"===A,autocorrect:"off",autocomplete:void 0,onBlur:y("bankAccountNumber","blur"),onInput:y("bankAccountNumber","input")})),e(r,{errorMessage:!!E.bankLocationId&&_.get("bacs.bankLocationId.invalid"),label:_.get("bacs.bankLocationId"),className:n({"adyen-checkout__bacs--bank-location-id":!0,"adyen-checkout__field--inactive":A===f||"loading"===A}),classNameModifiers:["col-30"],isValid:F.bankLocationId,name:"bankLocationId",i18n:_},e(u,{value:x.bankLocationId,className:"adyen-checkout__bacs-input--bank-location-id",placeholder:N.placeholders.bankLocationId,"aria-invalid":!F.bankLocationId,"aria-label":_.get("bacs.bankLocationId"),"aria-required":"true",required:!0,readonly:A===f||"loading"===A,autocorrect:"off",autocomplete:void 0,onBlur:y("bankLocationId","blur"),onInput:y("bankLocationId","input")}))),e(r,{errorMessage:p(_,E.shopperEmail,_.get("shopperEmail")),label:_.get("shopperEmail"),className:n({"adyen-checkout__bacs--shopper-email":!0,"adyen-checkout__field--inactive":A===f||"loading"===A}),isValid:F.shopperEmail,name:"emailAddress",i18n:_},e(m,{value:x.shopperEmail,name:"shopperEmail",className:"adyen-checkout__bacs-input--shopper-email",classNameModifiers:["large"],placeholder:N.placeholders.shopperEmail,spellcheck:!1,"aria-invalid":!F.shopperEmail,"aria-label":_.get("shopperEmail"),"aria-required":"true",required:!0,readonly:A===f||"loading"===A,autocorrect:"off",autocomplete:"email",onInput:y("shopperEmail","input"),onBlur:y("shopperEmail","blur")})),A===g&&e(c,{classNameModifiers:["amountConsentCheckbox"],errorMessage:!!E.amountConsentCheckbox,label:_.get("bacs.consent.amount"),onChange:y("amountConsentCheckbox"),checked:!!x.amountConsentCheckbox,i18n:_}),A===g&&e(c,{classNameModifiers:["accountConsentCheckbox"],errorMessage:!!E.accountConsentCheckbox,label:_.get("bacs.consent.account"),onChange:y("accountConsentCheckbox"),checked:!!x.accountConsentCheckbox,i18n:_}),N.showPayButton&&N.payButton({status:A,label:A===g?_.get("continue"):`${_.get("bacs.confirm")} ${(null==v?void 0:v.value)&&(null==v?void 0:v.currency)?_.amount(v.value,v.currency):""}`,icon:C({imageFolder:"components/"})(`${h}lock`),onClick:()=>j?A===g?this.setStatus(f):A===f?N.onSubmit():void 0:this.showValidation()}))}N.defaultProps={data:{},placeholders:{}};export{N as default};
2
2
  //# sourceMappingURL=BacsInput.js.map