@internetarchive/donation-form 0.5.18-alpha.1 → 0.5.18

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 (420) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +115 -115
  3. package/dist/demo/braintree-endpoint-manager.d.ts +9 -9
  4. package/dist/demo/braintree-endpoint-manager.js +45 -45
  5. package/dist/demo/braintree-endpoint-manager.js.map +1 -1
  6. package/dist/demo/demo-analytics-handler.d.ts +17 -17
  7. package/dist/demo/demo-analytics-handler.js +13 -13
  8. package/dist/demo/demo-analytics-handler.js.map +1 -1
  9. package/dist/demo/submit-form-with.d.ts +7 -7
  10. package/dist/demo/submit-form-with.js +21 -21
  11. package/dist/demo/submit-form-with.js.map +1 -1
  12. package/dist/index.d.ts +7 -7
  13. package/dist/index.js +7 -7
  14. package/dist/index.js.map +1 -1
  15. package/dist/src/braintree-manager/braintree-interfaces.d.ts +147 -147
  16. package/dist/src/braintree-manager/braintree-interfaces.js +5 -5
  17. package/dist/src/braintree-manager/braintree-interfaces.js.map +1 -1
  18. package/dist/src/braintree-manager/braintree-manager.d.ts +124 -124
  19. package/dist/src/braintree-manager/braintree-manager.js +149 -149
  20. package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
  21. package/dist/src/braintree-manager/payment-clients.d.ts +47 -47
  22. package/dist/src/braintree-manager/payment-clients.js +116 -116
  23. package/dist/src/braintree-manager/payment-clients.js.map +1 -1
  24. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.d.ts +8 -8
  25. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js.map +1 -1
  26. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.d.ts +6 -6
  27. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js.map +1 -1
  28. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +10 -10
  29. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -1
  30. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +21 -21
  31. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js +99 -99
  32. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -1
  33. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.d.ts +10 -10
  34. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js +12 -12
  35. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -1
  36. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.d.ts +20 -20
  37. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js +71 -71
  38. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +1 -1
  39. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.d.ts +16 -16
  40. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +1 -1
  41. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.d.ts +29 -29
  42. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js +99 -99
  43. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +1 -1
  44. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.d.ts +11 -11
  45. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js +7 -7
  46. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js.map +1 -1
  47. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.d.ts +34 -34
  48. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js +52 -52
  49. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +1 -1
  50. package/dist/src/braintree-manager/payment-providers/google-pay-interface.d.ts +7 -7
  51. package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +1 -1
  52. package/dist/src/braintree-manager/payment-providers/google-pay.d.ts +18 -18
  53. package/dist/src/braintree-manager/payment-providers/google-pay.js +40 -40
  54. package/dist/src/braintree-manager/payment-providers/google-pay.js.map +1 -1
  55. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.d.ts +145 -145
  56. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js +60 -60
  57. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +1 -1
  58. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.d.ts +11 -11
  59. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js.map +1 -1
  60. package/dist/src/braintree-manager/payment-providers/paypal/paypal.d.ts +23 -23
  61. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js +46 -46
  62. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +1 -1
  63. package/dist/src/braintree-manager/payment-providers/venmo-interface.d.ts +6 -6
  64. package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +1 -1
  65. package/dist/src/braintree-manager/payment-providers/venmo.d.ts +28 -28
  66. package/dist/src/braintree-manager/payment-providers/venmo.js +50 -50
  67. package/dist/src/braintree-manager/payment-providers/venmo.js.map +1 -1
  68. package/dist/src/braintree-manager/payment-providers-interface.d.ts +16 -16
  69. package/dist/src/braintree-manager/payment-providers-interface.js.map +1 -1
  70. package/dist/src/braintree-manager/payment-providers.d.ts +45 -45
  71. package/dist/src/braintree-manager/payment-providers.js +105 -105
  72. package/dist/src/braintree-manager/payment-providers.js.map +1 -1
  73. package/dist/src/donation-form-controller.d.ts +116 -116
  74. package/dist/src/donation-form-controller.js +562 -562
  75. package/dist/src/donation-form-controller.js.map +1 -1
  76. package/dist/src/donation-form-error.d.ts +3 -3
  77. package/dist/src/donation-form-error.js +6 -6
  78. package/dist/src/donation-form-error.js.map +1 -1
  79. package/dist/src/donation-form.d.ts +120 -120
  80. package/dist/src/donation-form.js +530 -530
  81. package/dist/src/donation-form.js.map +1 -1
  82. package/dist/src/form-elements/badged-input.d.ts +32 -32
  83. package/dist/src/form-elements/badged-input.js +124 -124
  84. package/dist/src/form-elements/badged-input.js.map +1 -1
  85. package/dist/src/form-elements/contact-form/autocomplete-field-options.d.ts +1 -1
  86. package/dist/src/form-elements/contact-form/autocomplete-field-options.js.map +1 -1
  87. package/dist/src/form-elements/contact-form/contact-form.d.ts +53 -53
  88. package/dist/src/form-elements/contact-form/contact-form.js +428 -428
  89. package/dist/src/form-elements/contact-form/contact-form.js.map +1 -1
  90. package/dist/src/form-elements/contact-form/countries.d.ts +3 -3
  91. package/dist/src/form-elements/contact-form/countries.js +252 -252
  92. package/dist/src/form-elements/contact-form/countries.js.map +1 -1
  93. package/dist/src/form-elements/header/donation-form-header.d.ts +27 -27
  94. package/dist/src/form-elements/header/donation-form-header.js +97 -97
  95. package/dist/src/form-elements/header/donation-form-header.js.map +1 -1
  96. package/dist/src/form-elements/header/donation-summary.d.ts +11 -11
  97. package/dist/src/form-elements/header/donation-summary.js +57 -57
  98. package/dist/src/form-elements/header/donation-summary.js.map +1 -1
  99. package/dist/src/form-elements/payment-selector.d.ts +25 -25
  100. package/dist/src/form-elements/payment-selector.js +286 -286
  101. package/dist/src/form-elements/payment-selector.js.map +1 -1
  102. package/dist/src/form-elements/total-amount.d.ts +8 -8
  103. package/dist/src/form-elements/total-amount.js +47 -47
  104. package/dist/src/form-elements/total-amount.js.map +1 -1
  105. package/dist/src/modals/confirm-donation-modal-content.d.ts +31 -31
  106. package/dist/src/modals/confirm-donation-modal-content.js +168 -168
  107. package/dist/src/modals/confirm-donation-modal-content.js.map +1 -1
  108. package/dist/src/modals/error-modal-content.d.ts +14 -14
  109. package/dist/src/modals/error-modal-content.js +49 -49
  110. package/dist/src/modals/error-modal-content.js.map +1 -1
  111. package/dist/src/modals/upsell-modal-content.d.ts +32 -32
  112. package/dist/src/modals/upsell-modal-content.js +294 -294
  113. package/dist/src/modals/upsell-modal-content.js.map +1 -1
  114. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.d.ts +181 -181
  115. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +252 -252
  116. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +1 -1
  117. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.d.ts +21 -21
  118. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js +76 -76
  119. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +1 -1
  120. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.d.ts +70 -70
  121. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js +140 -140
  122. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +1 -1
  123. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.d.ts +22 -22
  124. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js +74 -74
  125. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +1 -1
  126. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.d.ts +52 -52
  127. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js +239 -239
  128. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +1 -1
  129. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.d.ts +30 -30
  130. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js +89 -89
  131. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +1 -1
  132. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.d.ts +75 -75
  133. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js +94 -94
  134. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +1 -1
  135. package/dist/src/payment-flow-handlers/payment-flow-handlers.d.ts +111 -111
  136. package/dist/src/payment-flow-handlers/payment-flow-handlers.js +107 -107
  137. package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +1 -1
  138. package/dist/src/recaptcha-manager/recaptcha-manager.d.ts +48 -48
  139. package/dist/src/recaptcha-manager/recaptcha-manager.js +88 -88
  140. package/dist/src/recaptcha-manager/recaptcha-manager.js.map +1 -1
  141. package/dist/src/util/promisedSleep.d.ts +1 -1
  142. package/dist/src/util/promisedSleep.js +3 -3
  143. package/dist/src/util/promisedSleep.js.map +1 -1
  144. package/dist/test/helpers/fillInContactForm.d.ts +2 -2
  145. package/dist/test/helpers/fillInContactForm.js +19 -19
  146. package/dist/test/helpers/fillInContactForm.js.map +1 -1
  147. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.d.ts +7 -7
  148. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js +9 -9
  149. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js.map +1 -1
  150. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.d.ts +15 -15
  151. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js +32 -32
  152. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +1 -1
  153. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.d.ts +9 -9
  154. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js +15 -15
  155. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js.map +1 -1
  156. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.d.ts +15 -15
  157. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js +30 -30
  158. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js.map +1 -1
  159. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.d.ts +9 -9
  160. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js +17 -17
  161. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js.map +1 -1
  162. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.d.ts +30 -30
  163. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js +29 -29
  164. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +1 -1
  165. package/dist/test/mocks/mock-analytics-handler.d.ts +8 -0
  166. package/dist/test/mocks/mock-analytics-handler.js +10 -0
  167. package/dist/test/mocks/mock-analytics-handler.js.map +1 -0
  168. package/dist/test/mocks/mock-braintree-manager.d.ts +45 -45
  169. package/dist/test/mocks/mock-braintree-manager.js +71 -71
  170. package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
  171. package/dist/test/mocks/mock-donation-info.d.ts +4 -4
  172. package/dist/test/mocks/mock-donation-info.js +10 -10
  173. package/dist/test/mocks/mock-donation-info.js.map +1 -1
  174. package/dist/test/mocks/mock-endpoint-manager.d.ts +12 -12
  175. package/dist/test/mocks/mock-endpoint-manager.js +19 -19
  176. package/dist/test/mocks/mock-endpoint-manager.js.map +1 -1
  177. package/dist/test/mocks/mock-hosted-fields-config.d.ts +4 -4
  178. package/dist/test/mocks/mock-hosted-fields-config.js +37 -37
  179. package/dist/test/mocks/mock-hosted-fields-config.js.map +1 -1
  180. package/dist/test/mocks/mock-hosted-fields-container.d.ts +13 -13
  181. package/dist/test/mocks/mock-hosted-fields-container.js +27 -27
  182. package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
  183. package/dist/test/mocks/mock-lazy-loader.d.ts +15 -15
  184. package/dist/test/mocks/mock-lazy-loader.js +20 -20
  185. package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
  186. package/dist/test/mocks/mock-modal-manager.d.ts +17 -17
  187. package/dist/test/mocks/mock-modal-manager.js +26 -26
  188. package/dist/test/mocks/mock-modal-manager.js.map +1 -1
  189. package/dist/test/mocks/mock-payment-clients.d.ts +29 -29
  190. package/dist/test/mocks/mock-payment-clients.js +78 -78
  191. package/dist/test/mocks/mock-payment-clients.js.map +1 -1
  192. package/dist/test/mocks/mock-paypal-button-renderer.d.ts +5 -5
  193. package/dist/test/mocks/mock-paypal-button-renderer.js +6 -6
  194. package/dist/test/mocks/mock-paypal-button-renderer.js.map +1 -1
  195. package/dist/test/mocks/mock-recaptcha-manager.d.ts +7 -7
  196. package/dist/test/mocks/mock-recaptcha-manager.js +14 -14
  197. package/dist/test/mocks/mock-recaptcha-manager.js.map +1 -1
  198. package/dist/test/mocks/models/mock-billing-info.d.ts +2 -2
  199. package/dist/test/mocks/models/mock-billing-info.js +9 -9
  200. package/dist/test/mocks/models/mock-billing-info.js.map +1 -1
  201. package/dist/test/mocks/models/mock-custom-fields.d.ts +2 -2
  202. package/dist/test/mocks/models/mock-custom-fields.js +7 -7
  203. package/dist/test/mocks/models/mock-custom-fields.js.map +1 -1
  204. package/dist/test/mocks/models/mock-customer-info.d.ts +2 -2
  205. package/dist/test/mocks/models/mock-customer-info.js +6 -6
  206. package/dist/test/mocks/models/mock-customer-info.js.map +1 -1
  207. package/dist/test/mocks/models/mock-donation-request.d.ts +2 -2
  208. package/dist/test/mocks/models/mock-donation-request.js +18 -18
  209. package/dist/test/mocks/models/mock-donation-request.js.map +1 -1
  210. package/dist/test/mocks/models/mock-success-response.d.ts +2 -2
  211. package/dist/test/mocks/models/mock-success-response.js +14 -14
  212. package/dist/test/mocks/models/mock-success-response.js.map +1 -1
  213. package/dist/test/mocks/payment-clients/mock-applepay-client.d.ts +21 -21
  214. package/dist/test/mocks/payment-clients/mock-applepay-client.js +72 -72
  215. package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
  216. package/dist/test/mocks/payment-clients/mock-applepay-payment.d.ts +6 -6
  217. package/dist/test/mocks/payment-clients/mock-applepay-payment.js +42 -42
  218. package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +1 -1
  219. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.d.ts +22 -22
  220. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js +35 -35
  221. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +1 -1
  222. package/dist/test/mocks/payment-clients/mock-applepay-session.d.ts +30 -30
  223. package/dist/test/mocks/payment-clients/mock-applepay-session.js +52 -52
  224. package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
  225. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.d.ts +10 -10
  226. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js +12 -12
  227. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +1 -1
  228. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.d.ts +22 -22
  229. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js +34 -34
  230. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +1 -1
  231. package/dist/test/mocks/payment-clients/mock-braintree-client.d.ts +14 -14
  232. package/dist/test/mocks/payment-clients/mock-braintree-client.js +19 -19
  233. package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +1 -1
  234. package/dist/test/mocks/payment-clients/mock-data-collector.d.ts +11 -11
  235. package/dist/test/mocks/payment-clients/mock-data-collector.js +17 -17
  236. package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
  237. package/dist/test/mocks/payment-clients/mock-googlepay-client.d.ts +22 -22
  238. package/dist/test/mocks/payment-clients/mock-googlepay-client.js +42 -42
  239. package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +1 -1
  240. package/dist/test/mocks/payment-clients/mock-googlepay-library.d.ts +10 -10
  241. package/dist/test/mocks/payment-clients/mock-googlepay-library.js +22 -22
  242. package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +1 -1
  243. package/dist/test/mocks/payment-clients/mock-grecaptcha.d.ts +23 -23
  244. package/dist/test/mocks/payment-clients/mock-grecaptcha.js +62 -62
  245. package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
  246. package/dist/test/mocks/payment-clients/mock-hostedfields-client.d.ts +33 -33
  247. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js +54 -54
  248. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
  249. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.d.ts +1 -1
  250. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js +50 -50
  251. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +1 -1
  252. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.d.ts +1 -1
  253. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js +13 -13
  254. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +1 -1
  255. package/dist/test/mocks/payment-clients/mock-paypal-client.d.ts +23 -23
  256. package/dist/test/mocks/payment-clients/mock-paypal-client.js +62 -62
  257. package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +1 -1
  258. package/dist/test/mocks/payment-clients/mock-paypal-library.d.ts +4 -4
  259. package/dist/test/mocks/payment-clients/mock-paypal-library.js +9 -9
  260. package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +1 -1
  261. package/dist/test/mocks/payment-clients/mock-venmo-client.d.ts +22 -22
  262. package/dist/test/mocks/payment-clients/mock-venmo-client.js +36 -36
  263. package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +1 -1
  264. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.d.ts +10 -10
  265. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js +14 -14
  266. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +1 -1
  267. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.d.ts +9 -9
  268. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js +19 -19
  269. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +1 -1
  270. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.d.ts +18 -18
  271. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js +41 -41
  272. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +1 -1
  273. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.d.ts +8 -8
  274. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js +16 -16
  275. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +1 -1
  276. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.d.ts +28 -28
  277. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js +52 -52
  278. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +1 -1
  279. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.d.ts +11 -11
  280. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js +37 -37
  281. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +1 -1
  282. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.d.ts +12 -12
  283. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js +15 -15
  284. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +1 -1
  285. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.d.ts +7 -7
  286. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js +22 -22
  287. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +1 -1
  288. package/dist/test/mocks/payment-providers/mock-payment-providers.d.ts +21 -21
  289. package/dist/test/mocks/payment-providers/mock-payment-providers.js +45 -45
  290. package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
  291. package/dist/test/tests/braintree-manager.test.d.ts +1 -1
  292. package/dist/test/tests/braintree-manager.test.js +166 -166
  293. package/dist/test/tests/braintree-manager.test.js.map +1 -1
  294. package/dist/test/tests/donation-form-controller.test.d.ts +1 -1
  295. package/dist/test/tests/donation-form-controller.test.js +188 -188
  296. package/dist/test/tests/donation-form-controller.test.js.map +1 -1
  297. package/dist/test/tests/donation-form.test.d.ts +1 -1
  298. package/dist/test/tests/donation-form.test.js +109 -109
  299. package/dist/test/tests/donation-form.test.js.map +1 -1
  300. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.d.ts +1 -1
  301. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +216 -216
  302. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +1 -1
  303. package/dist/test/tests/form-elements/donation-summary.test.d.ts +1 -1
  304. package/dist/test/tests/form-elements/donation-summary.test.js +36 -36
  305. package/dist/test/tests/form-elements/donation-summary.test.js.map +1 -1
  306. package/dist/test/tests/form-elements/payment-selector.test.d.ts +1 -1
  307. package/dist/test/tests/form-elements/payment-selector.test.js +69 -69
  308. package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
  309. package/dist/test/tests/modals/error-modal-content.test.d.ts +1 -1
  310. package/dist/test/tests/modals/error-modal-content.test.js +14 -14
  311. package/dist/test/tests/modals/error-modal-content.test.js.map +1 -1
  312. package/dist/test/tests/modals/upsell-modal-content.test.d.ts +1 -1
  313. package/dist/test/tests/modals/upsell-modal-content.test.js +163 -163
  314. package/dist/test/tests/modals/upsell-modal-content.test.js.map +1 -1
  315. package/dist/test/tests/models/donation-payment-info.test.d.ts +1 -1
  316. package/dist/test/tests/models/donation-payment-info.test.js +74 -74
  317. package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
  318. package/dist/test/tests/payment-clients.test.d.ts +1 -1
  319. package/dist/test/tests/payment-clients.test.js +130 -130
  320. package/dist/test/tests/payment-clients.test.js.map +1 -1
  321. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.d.ts +1 -1
  322. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js +160 -160
  323. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
  324. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.d.ts +1 -1
  325. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js +36 -36
  326. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +1 -1
  327. package/dist/test/tests/payment-providers/applepay.test.d.ts +1 -1
  328. package/dist/test/tests/payment-providers/applepay.test.js +78 -78
  329. package/dist/test/tests/payment-providers/applepay.test.js.map +1 -1
  330. package/dist/test/tests/payment-providers/creditcard.test.d.ts +1 -1
  331. package/dist/test/tests/payment-providers/creditcard.test.js +190 -190
  332. package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
  333. package/dist/test/tests/payment-providers/googlepay.test.d.ts +1 -1
  334. package/dist/test/tests/payment-providers/googlepay.test.js +48 -48
  335. package/dist/test/tests/payment-providers/googlepay.test.js.map +1 -1
  336. package/dist/test/tests/payment-providers/payment-providers.test.d.ts +1 -1
  337. package/dist/test/tests/payment-providers/payment-providers.test.js +38 -38
  338. package/dist/test/tests/payment-providers/payment-providers.test.js.map +1 -1
  339. package/dist/test/tests/payment-providers/paypal-button-datasource.test.d.ts +1 -1
  340. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js +162 -162
  341. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +1 -1
  342. package/dist/test/tests/payment-providers/paypal.test.d.ts +1 -1
  343. package/dist/test/tests/payment-providers/paypal.test.js +38 -38
  344. package/dist/test/tests/payment-providers/paypal.test.js.map +1 -1
  345. package/dist/test/tests/payment-providers/venmo.test.d.ts +1 -1
  346. package/dist/test/tests/payment-providers/venmo.test.js +77 -77
  347. package/dist/test/tests/payment-providers/venmo.test.js.map +1 -1
  348. package/dist/test/tests/recaptcha-manager.test.d.ts +1 -1
  349. package/dist/test/tests/recaptcha-manager.test.js +70 -70
  350. package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
  351. package/package.json +101 -101
  352. package/src/@types/analytics-handler/index.d.ts +8 -8
  353. package/src/@types/braintree-web/LICENSE +21 -21
  354. package/src/@types/braintree-web/index.d.ts +93 -93
  355. package/src/@types/braintree-web/modules/american-express.d.ts +50 -50
  356. package/src/@types/braintree-web/modules/apple-pay.d.ts +213 -213
  357. package/src/@types/braintree-web/modules/client.d.ts +103 -103
  358. package/src/@types/braintree-web/modules/core.d.ts +34 -34
  359. package/src/@types/braintree-web/modules/data-collector.d.ts +13 -13
  360. package/src/@types/braintree-web/modules/google-payment.d.ts +269 -269
  361. package/src/@types/braintree-web/modules/hosted-fields.d.ts +366 -366
  362. package/src/@types/braintree-web/modules/paypal-checkout.d.ts +262 -262
  363. package/src/@types/braintree-web/modules/paypal.d.ts +177 -177
  364. package/src/@types/braintree-web/modules/three-d-secure.d.ts +141 -141
  365. package/src/@types/braintree-web/modules/unionpay.d.ts +224 -224
  366. package/src/@types/braintree-web/modules/us-bank-account.d.ts +81 -81
  367. package/src/@types/braintree-web/modules/venmo.d.ts +110 -110
  368. package/src/@types/braintree-web/package.json +64 -64
  369. package/src/@types/paypal-checkout-components/LICENSE +21 -21
  370. package/src/@types/paypal-checkout-components/index.d.ts +67 -67
  371. package/src/@types/paypal-checkout-components/modules/button.d.ts +50 -50
  372. package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +244 -244
  373. package/src/@types/paypal-checkout-components/modules/configuration.d.ts +114 -114
  374. package/src/@types/paypal-checkout-components/package.json +58 -58
  375. package/src/braintree-manager/braintree-interfaces.ts +172 -172
  376. package/src/braintree-manager/braintree-manager.ts +283 -283
  377. package/src/braintree-manager/payment-clients.ts +148 -148
  378. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +13 -13
  379. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +8 -8
  380. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +10 -10
  381. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +119 -119
  382. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +21 -21
  383. package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +98 -98
  384. package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +21 -21
  385. package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +130 -130
  386. package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +19 -19
  387. package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +85 -85
  388. package/src/braintree-manager/payment-providers/google-pay-interface.ts +8 -8
  389. package/src/braintree-manager/payment-providers/google-pay.ts +59 -59
  390. package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +218 -218
  391. package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +13 -13
  392. package/src/braintree-manager/payment-providers/paypal/paypal.ts +78 -78
  393. package/src/braintree-manager/payment-providers/venmo-interface.ts +8 -8
  394. package/src/braintree-manager/payment-providers/venmo.ts +67 -67
  395. package/src/braintree-manager/payment-providers-interface.ts +25 -25
  396. package/src/braintree-manager/payment-providers.ts +147 -147
  397. package/src/donation-form-controller.ts +619 -619
  398. package/src/donation-form-error.ts +6 -6
  399. package/src/donation-form.ts +566 -566
  400. package/src/form-elements/badged-input.ts +113 -113
  401. package/src/form-elements/contact-form/autocomplete-field-options.ts +63 -63
  402. package/src/form-elements/contact-form/contact-form.ts +427 -427
  403. package/src/form-elements/contact-form/countries.ts +252 -252
  404. package/src/form-elements/header/donation-form-header.ts +100 -100
  405. package/src/form-elements/header/donation-summary.ts +61 -61
  406. package/src/form-elements/payment-selector.ts +293 -293
  407. package/src/form-elements/total-amount.ts +46 -46
  408. package/src/modals/confirm-donation-modal-content.ts +160 -160
  409. package/src/modals/error-modal-content.ts +48 -48
  410. package/src/modals/upsell-modal-content.ts +294 -294
  411. package/src/payment-flow-handlers/donation-flow-modal-manager.ts +450 -450
  412. package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +108 -108
  413. package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +231 -231
  414. package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +113 -113
  415. package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +332 -332
  416. package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +118 -118
  417. package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +127 -127
  418. package/src/payment-flow-handlers/payment-flow-handlers.ts +218 -218
  419. package/src/recaptcha-manager/recaptcha-manager.ts +123 -123
  420. package/src/util/promisedSleep.ts +3 -3
@@ -1,293 +1,293 @@
1
- import { LitElement, html, css, CSSResult, TemplateResult, PropertyValues } from 'lit';
2
- import { customElement, property } from 'lit/decorators.js';
3
-
4
- import applePayButtonImage from '@internetarchive/icon-applepay';
5
- import googlePayButtonImage from '@internetarchive/icon-googlepay';
6
- import paypalButtonImage from '@internetarchive/icon-paypal';
7
- import venmoButtonImage from '@internetarchive/icon-venmo';
8
- import { PaymentProvidersInterface } from '../braintree-manager/payment-providers-interface';
9
-
10
- enum PaymentButtonMode {
11
- Loading = 'loading',
12
- Available = 'available',
13
- Unavailable = 'unavailable',
14
- }
15
-
16
- @customElement('payment-selector')
17
- export class PaymentSelector extends LitElement {
18
- @property({ type: Boolean }) donationInfoValid = true;
19
-
20
- @property({ type: Object }) paymentProviders?: PaymentProvidersInterface;
21
-
22
- @property({ type: String }) private applePayMode: PaymentButtonMode = PaymentButtonMode.Loading;
23
-
24
- @property({ type: String }) private googlePayMode: PaymentButtonMode = PaymentButtonMode.Loading;
25
-
26
- @property({ type: String }) private venmoMode: PaymentButtonMode = PaymentButtonMode.Loading;
27
-
28
- @property({ type: String }) private payPalMode: PaymentButtonMode = PaymentButtonMode.Loading;
29
-
30
- /** @inheritdoc */
31
- render(): TemplateResult {
32
- return html`
33
- <div
34
- class="payment-container ${this.donationInfoValid
35
- ? 'donation-info-valid'
36
- : 'donation-info-invalid'}
37
- "
38
- >
39
- <div class="payment-provider-container">
40
- <button
41
- class="applepay provider-button ${this.applePayMode}"
42
- @click=${this.applePaySelected}
43
- tabindex="0"
44
- >
45
- <div class="payment-image">${applePayButtonImage}</div>
46
- </button>
47
-
48
- <button
49
- class="googlepay provider-button ${this.googlePayMode}"
50
- @click=${this.googlePaySelected}
51
- tabindex="0"
52
- >
53
- <div class="payment-image">${googlePayButtonImage}</div>
54
- </button>
55
-
56
- <button
57
- class="venmo provider-button ${this.venmoMode}"
58
- @click=${this.venmoSelected}
59
- tabindex="0"
60
- >
61
- <div class="payment-image">${venmoButtonImage}</div>
62
- </button>
63
-
64
- <div class="paypal-container provider-button ${this.payPalMode}" tabindex="0">
65
- <div class="payment-image">
66
- <div class="paypal-local-button" @click=${this.localPaypalButtonClicked}>
67
- ${paypalButtonImage}
68
- </div>
69
- <slot name="paypal-button"></slot>
70
- </div>
71
- </div>
72
- </div>
73
-
74
- <div class="credit-card-container">
75
- <button
76
- @click=${this.creditCardSelected}
77
- class="button-style credit-card-button"
78
- tabindex="0"
79
- >
80
- <div class="cc-title">Credit Card</div>
81
- <div class="cc-background"></div>
82
- </button>
83
- </div>
84
- </div>
85
- `;
86
- }
87
-
88
- /** @inheritdoc */
89
- firstUpdated(): void {
90
- this.dispatchEvent(new Event('firstUpdated'));
91
- }
92
-
93
- /** @inheritdoc */
94
- updated(changed: PropertyValues): void {
95
- if (changed.has('paymentProviders')) {
96
- this.setButtonVisibility();
97
- }
98
- }
99
-
100
- showPaypalButton(): void {
101
- this.payPalMode = PaymentButtonMode.Available;
102
- }
103
-
104
- private async setButtonVisibility(): Promise<void> {
105
- this.paymentProviders?.venmoHandler
106
- .get()
107
- .then(handler => {
108
- if (!handler) {
109
- this.venmoMode = PaymentButtonMode.Unavailable;
110
- return;
111
- }
112
-
113
- handler
114
- .isBrowserSupported()
115
- .then(supported => {
116
- this.venmoMode = supported
117
- ? PaymentButtonMode.Available
118
- : PaymentButtonMode.Unavailable;
119
- })
120
- .catch(reason => {
121
- console.error('error loading venmo', reason);
122
- this.venmoMode = PaymentButtonMode.Unavailable;
123
- });
124
- })
125
- .catch(reason => {
126
- console.error('venmo unavailable', reason);
127
- this.venmoMode = PaymentButtonMode.Unavailable;
128
- });
129
-
130
- this.paymentProviders?.applePayHandler
131
- .get()
132
- .then(handler => {
133
- if (!handler) {
134
- console.error('applePayHandler unavailable');
135
- this.applePayMode = PaymentButtonMode.Unavailable;
136
- return;
137
- }
138
-
139
- handler
140
- .isAvailable()
141
- .then(supported => {
142
- this.applePayMode = supported
143
- ? PaymentButtonMode.Available
144
- : PaymentButtonMode.Unavailable;
145
- })
146
- .catch(reason => {
147
- console.error('error loading applepay', reason);
148
- this.applePayMode = PaymentButtonMode.Unavailable;
149
- });
150
- })
151
- .catch(reason => {
152
- console.error('apple pay unavailable', reason);
153
- this.applePayMode = PaymentButtonMode.Unavailable;
154
- });
155
-
156
- this.paymentProviders?.googlePayHandler
157
- .get()
158
- .then(handler => {
159
- if (!handler) {
160
- console.error('google pay handler unavailable');
161
- this.googlePayMode = PaymentButtonMode.Unavailable;
162
- return;
163
- }
164
-
165
- handler
166
- .isBrowserSupported()
167
- .then(supported => {
168
- this.googlePayMode = supported
169
- ? PaymentButtonMode.Available
170
- : PaymentButtonMode.Unavailable;
171
- })
172
- .catch(reason => {
173
- console.error('error loading googlepay', reason);
174
- this.googlePayMode = PaymentButtonMode.Unavailable;
175
- });
176
- })
177
- .catch(reason => {
178
- console.error('google pay unavailable', reason);
179
- this.googlePayMode = PaymentButtonMode.Unavailable;
180
- });
181
- }
182
-
183
- private googlePaySelected(): void {
184
- this.dispatchEvent(new Event('googlePaySelected'));
185
- }
186
-
187
- private applePaySelected(e: Event): void {
188
- const event = new CustomEvent('applePaySelected', { detail: { originalEvent: e } });
189
- this.dispatchEvent(event);
190
- }
191
-
192
- private venmoSelected(): void {
193
- this.dispatchEvent(new Event('venmoSelected'));
194
- }
195
-
196
- private creditCardSelected(): void {
197
- this.dispatchEvent(new Event('creditCardSelected'));
198
- }
199
-
200
- private localPaypalButtonClicked(): void {
201
- this.dispatchEvent(new Event('paypalBlockerSelected'));
202
- }
203
-
204
- /** @inheritdoc */
205
- static get styles(): CSSResult {
206
- const paymentButtonWidthCss = css`var(--paymentButtonWidth, 5rem)`;
207
- const paymentButtonHeightCss = css`var(--paymentButtonHeight, 3.2rem)`;
208
- const creditCardFontSizeCss = css`var(--creditCardFontSize, 1.8rem)`;
209
-
210
- return css`
211
- button {
212
- color: inherit;
213
- font-family: inherit;
214
- }
215
-
216
- .payment-container {
217
- width: 100%;
218
- }
219
-
220
- .payment-provider-container {
221
- display: grid;
222
- grid-template-columns: 1fr 1fr 1fr 1fr;
223
- grid-gap: 1rem;
224
- margin-bottom: 1rem;
225
- max-width: 23rem;
226
- }
227
-
228
- .provider-button {
229
- border: 0;
230
- padding: 0;
231
- background: none;
232
- cursor: pointer;
233
- width: ${paymentButtonWidthCss};
234
- height: ${paymentButtonHeightCss};
235
- }
236
-
237
- .provider-button.unavailable {
238
- display: none;
239
- }
240
-
241
- .provider-button.loading {
242
- border: 1px solid #ddd;
243
- border-radius: 2px;
244
- /* account for the borders that don't exist once the provider loads, otherwise the layout shifts */
245
- margin-bottom: -2px;
246
- }
247
-
248
- .provider-button.loading .payment-image {
249
- display: none;
250
- }
251
-
252
- .paypal-local-button {
253
- position: absolute;
254
- width: ${paymentButtonWidthCss};
255
- height: ${paymentButtonHeightCss};
256
- }
257
-
258
- .donation-info-valid .paypal-local-button {
259
- z-index: 0;
260
- }
261
-
262
- .donation-info-invalid .paypal-local-button {
263
- z-index: 250;
264
- }
265
-
266
- .credit-card-button {
267
- color: var(--ccButtonFontColor, #333);
268
- background-color: var(--ccButtonColor, white);
269
- border: 1px solid #333;
270
- border-radius: 4px;
271
- cursor: pointer;
272
- margin: 0;
273
- padding: 0.7rem 1rem;
274
- width: 100%;
275
- }
276
-
277
- .credit-card-button .cc-background {
278
- height: 2.4rem;
279
- width: 100%;
280
- background-repeat: no-repeat;
281
- background-image: url(https://archive.org/images/cc_logos.png);
282
- background-position: 50% 50%;
283
- background-size: contain;
284
- }
285
-
286
- .credit-card-button .cc-title {
287
- font-size: ${creditCardFontSizeCss};
288
- font-weight: 700;
289
- margin-bottom: 0.5rem;
290
- }
291
- `;
292
- }
293
- }
1
+ import { LitElement, html, css, CSSResult, TemplateResult, PropertyValues } from 'lit';
2
+ import { customElement, property } from 'lit/decorators.js';
3
+
4
+ import applePayButtonImage from '@internetarchive/icon-applepay';
5
+ import googlePayButtonImage from '@internetarchive/icon-googlepay';
6
+ import paypalButtonImage from '@internetarchive/icon-paypal';
7
+ import venmoButtonImage from '@internetarchive/icon-venmo';
8
+ import { PaymentProvidersInterface } from '../braintree-manager/payment-providers-interface';
9
+
10
+ enum PaymentButtonMode {
11
+ Loading = 'loading',
12
+ Available = 'available',
13
+ Unavailable = 'unavailable',
14
+ }
15
+
16
+ @customElement('payment-selector')
17
+ export class PaymentSelector extends LitElement {
18
+ @property({ type: Boolean }) donationInfoValid = true;
19
+
20
+ @property({ type: Object }) paymentProviders?: PaymentProvidersInterface;
21
+
22
+ @property({ type: String }) private applePayMode: PaymentButtonMode = PaymentButtonMode.Loading;
23
+
24
+ @property({ type: String }) private googlePayMode: PaymentButtonMode = PaymentButtonMode.Loading;
25
+
26
+ @property({ type: String }) private venmoMode: PaymentButtonMode = PaymentButtonMode.Loading;
27
+
28
+ @property({ type: String }) private payPalMode: PaymentButtonMode = PaymentButtonMode.Loading;
29
+
30
+ /** @inheritdoc */
31
+ render(): TemplateResult {
32
+ return html`
33
+ <div
34
+ class="payment-container ${this.donationInfoValid
35
+ ? 'donation-info-valid'
36
+ : 'donation-info-invalid'}
37
+ "
38
+ >
39
+ <div class="payment-provider-container">
40
+ <button
41
+ class="applepay provider-button ${this.applePayMode}"
42
+ @click=${this.applePaySelected}
43
+ tabindex="0"
44
+ >
45
+ <div class="payment-image">${applePayButtonImage}</div>
46
+ </button>
47
+
48
+ <button
49
+ class="googlepay provider-button ${this.googlePayMode}"
50
+ @click=${this.googlePaySelected}
51
+ tabindex="0"
52
+ >
53
+ <div class="payment-image">${googlePayButtonImage}</div>
54
+ </button>
55
+
56
+ <button
57
+ class="venmo provider-button ${this.venmoMode}"
58
+ @click=${this.venmoSelected}
59
+ tabindex="0"
60
+ >
61
+ <div class="payment-image">${venmoButtonImage}</div>
62
+ </button>
63
+
64
+ <div class="paypal-container provider-button ${this.payPalMode}" tabindex="0">
65
+ <div class="payment-image">
66
+ <div class="paypal-local-button" @click=${this.localPaypalButtonClicked}>
67
+ ${paypalButtonImage}
68
+ </div>
69
+ <slot name="paypal-button"></slot>
70
+ </div>
71
+ </div>
72
+ </div>
73
+
74
+ <div class="credit-card-container">
75
+ <button
76
+ @click=${this.creditCardSelected}
77
+ class="button-style credit-card-button"
78
+ tabindex="0"
79
+ >
80
+ <div class="cc-title">Credit Card</div>
81
+ <div class="cc-background"></div>
82
+ </button>
83
+ </div>
84
+ </div>
85
+ `;
86
+ }
87
+
88
+ /** @inheritdoc */
89
+ firstUpdated(): void {
90
+ this.dispatchEvent(new Event('firstUpdated'));
91
+ }
92
+
93
+ /** @inheritdoc */
94
+ updated(changed: PropertyValues): void {
95
+ if (changed.has('paymentProviders')) {
96
+ this.setButtonVisibility();
97
+ }
98
+ }
99
+
100
+ showPaypalButton(): void {
101
+ this.payPalMode = PaymentButtonMode.Available;
102
+ }
103
+
104
+ private async setButtonVisibility(): Promise<void> {
105
+ this.paymentProviders?.venmoHandler
106
+ .get()
107
+ .then(handler => {
108
+ if (!handler) {
109
+ this.venmoMode = PaymentButtonMode.Unavailable;
110
+ return;
111
+ }
112
+
113
+ handler
114
+ .isBrowserSupported()
115
+ .then(supported => {
116
+ this.venmoMode = supported
117
+ ? PaymentButtonMode.Available
118
+ : PaymentButtonMode.Unavailable;
119
+ })
120
+ .catch(reason => {
121
+ console.error('error loading venmo', reason);
122
+ this.venmoMode = PaymentButtonMode.Unavailable;
123
+ });
124
+ })
125
+ .catch(reason => {
126
+ console.error('venmo unavailable', reason);
127
+ this.venmoMode = PaymentButtonMode.Unavailable;
128
+ });
129
+
130
+ this.paymentProviders?.applePayHandler
131
+ .get()
132
+ .then(handler => {
133
+ if (!handler) {
134
+ console.error('applePayHandler unavailable');
135
+ this.applePayMode = PaymentButtonMode.Unavailable;
136
+ return;
137
+ }
138
+
139
+ handler
140
+ .isAvailable()
141
+ .then(supported => {
142
+ this.applePayMode = supported
143
+ ? PaymentButtonMode.Available
144
+ : PaymentButtonMode.Unavailable;
145
+ })
146
+ .catch(reason => {
147
+ console.error('error loading applepay', reason);
148
+ this.applePayMode = PaymentButtonMode.Unavailable;
149
+ });
150
+ })
151
+ .catch(reason => {
152
+ console.error('apple pay unavailable', reason);
153
+ this.applePayMode = PaymentButtonMode.Unavailable;
154
+ });
155
+
156
+ this.paymentProviders?.googlePayHandler
157
+ .get()
158
+ .then(handler => {
159
+ if (!handler) {
160
+ console.error('google pay handler unavailable');
161
+ this.googlePayMode = PaymentButtonMode.Unavailable;
162
+ return;
163
+ }
164
+
165
+ handler
166
+ .isBrowserSupported()
167
+ .then(supported => {
168
+ this.googlePayMode = supported
169
+ ? PaymentButtonMode.Available
170
+ : PaymentButtonMode.Unavailable;
171
+ })
172
+ .catch(reason => {
173
+ console.error('error loading googlepay', reason);
174
+ this.googlePayMode = PaymentButtonMode.Unavailable;
175
+ });
176
+ })
177
+ .catch(reason => {
178
+ console.error('google pay unavailable', reason);
179
+ this.googlePayMode = PaymentButtonMode.Unavailable;
180
+ });
181
+ }
182
+
183
+ private googlePaySelected(): void {
184
+ this.dispatchEvent(new Event('googlePaySelected'));
185
+ }
186
+
187
+ private applePaySelected(e: Event): void {
188
+ const event = new CustomEvent('applePaySelected', { detail: { originalEvent: e } });
189
+ this.dispatchEvent(event);
190
+ }
191
+
192
+ private venmoSelected(): void {
193
+ this.dispatchEvent(new Event('venmoSelected'));
194
+ }
195
+
196
+ private creditCardSelected(): void {
197
+ this.dispatchEvent(new Event('creditCardSelected'));
198
+ }
199
+
200
+ private localPaypalButtonClicked(): void {
201
+ this.dispatchEvent(new Event('paypalBlockerSelected'));
202
+ }
203
+
204
+ /** @inheritdoc */
205
+ static get styles(): CSSResult {
206
+ const paymentButtonWidthCss = css`var(--paymentButtonWidth, 5rem)`;
207
+ const paymentButtonHeightCss = css`var(--paymentButtonHeight, 3.2rem)`;
208
+ const creditCardFontSizeCss = css`var(--creditCardFontSize, 1.8rem)`;
209
+
210
+ return css`
211
+ button {
212
+ color: inherit;
213
+ font-family: inherit;
214
+ }
215
+
216
+ .payment-container {
217
+ width: 100%;
218
+ }
219
+
220
+ .payment-provider-container {
221
+ display: grid;
222
+ grid-template-columns: 1fr 1fr 1fr 1fr;
223
+ grid-gap: 1rem;
224
+ margin-bottom: 1rem;
225
+ max-width: 23rem;
226
+ }
227
+
228
+ .provider-button {
229
+ border: 0;
230
+ padding: 0;
231
+ background: none;
232
+ cursor: pointer;
233
+ width: ${paymentButtonWidthCss};
234
+ height: ${paymentButtonHeightCss};
235
+ }
236
+
237
+ .provider-button.unavailable {
238
+ display: none;
239
+ }
240
+
241
+ .provider-button.loading {
242
+ border: 1px solid #ddd;
243
+ border-radius: 2px;
244
+ /* account for the borders that don't exist once the provider loads, otherwise the layout shifts */
245
+ margin-bottom: -2px;
246
+ }
247
+
248
+ .provider-button.loading .payment-image {
249
+ display: none;
250
+ }
251
+
252
+ .paypal-local-button {
253
+ position: absolute;
254
+ width: ${paymentButtonWidthCss};
255
+ height: ${paymentButtonHeightCss};
256
+ }
257
+
258
+ .donation-info-valid .paypal-local-button {
259
+ z-index: 0;
260
+ }
261
+
262
+ .donation-info-invalid .paypal-local-button {
263
+ z-index: 250;
264
+ }
265
+
266
+ .credit-card-button {
267
+ color: var(--ccButtonFontColor, #333);
268
+ background-color: var(--ccButtonColor, white);
269
+ border: 1px solid #333;
270
+ border-radius: 4px;
271
+ cursor: pointer;
272
+ margin: 0;
273
+ padding: 0.7rem 1rem;
274
+ width: 100%;
275
+ }
276
+
277
+ .credit-card-button .cc-background {
278
+ height: 2.4rem;
279
+ width: 100%;
280
+ background-repeat: no-repeat;
281
+ background-image: url(https://archive.org/images/cc_logos.png);
282
+ background-position: 50% 50%;
283
+ background-size: contain;
284
+ }
285
+
286
+ .credit-card-button .cc-title {
287
+ font-size: ${creditCardFontSizeCss};
288
+ font-weight: 700;
289
+ margin-bottom: 0.5rem;
290
+ }
291
+ `;
292
+ }
293
+ }
@@ -1,46 +1,46 @@
1
- import { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';
2
- import { css, CSSResult, html, LitElement, TemplateResult } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import currency from 'currency.js';
5
-
6
- @customElement('donation-form-total-amount')
7
- export class TotalAmount extends LitElement {
8
- @property({ type: Object })
9
- donationInfo?: DonationPaymentInfo;
10
-
11
- render(): TemplateResult {
12
- return html`
13
- <div class="top-line"></div>
14
- <div class="total-line">Total: ${this.totalAmount}</div>
15
- `;
16
- }
17
-
18
- private get totalAmount(): string | undefined {
19
- if (!this.donationInfo) return;
20
- const amount = currency(this.donationInfo.total, { symbol: '$' }).format();
21
- const monthly = this.donationInfo.donationType === DonationType.Monthly ? '/month' : '';
22
- return `${amount}${monthly}`;
23
- }
24
-
25
- static get styles(): CSSResult {
26
- const lineColor = css`var(--totalAmountLineColor, #333)`;
27
- const lineThickness = css`var(--totalAmountLineThickness, 2px)`;
28
- const totalAmountVerticalSpacing = css`var(--totalAmountVerticalSpacing, 0.5rem)`;
29
- const totalAmountFontSize = css`var(--totalAmountFontSize, 2.6rem)`;
30
-
31
- return css`
32
- .top-line {
33
- width: 100%;
34
- height: ${lineThickness};
35
- background-color: ${lineColor};
36
- }
37
-
38
- .total-line {
39
- font-size: ${totalAmountFontSize};
40
- font-weight: bold;
41
- text-align: center;
42
- margin-top: ${totalAmountVerticalSpacing};
43
- }
44
- `;
45
- }
46
- }
1
+ import { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';
2
+ import { css, CSSResult, html, LitElement, TemplateResult } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import currency from 'currency.js';
5
+
6
+ @customElement('donation-form-total-amount')
7
+ export class TotalAmount extends LitElement {
8
+ @property({ type: Object })
9
+ donationInfo?: DonationPaymentInfo;
10
+
11
+ render(): TemplateResult {
12
+ return html`
13
+ <div class="top-line"></div>
14
+ <div class="total-line">Total: ${this.totalAmount}</div>
15
+ `;
16
+ }
17
+
18
+ private get totalAmount(): string | undefined {
19
+ if (!this.donationInfo) return;
20
+ const amount = currency(this.donationInfo.total, { symbol: '$' }).format();
21
+ const monthly = this.donationInfo.donationType === DonationType.Monthly ? '/month' : '';
22
+ return `${amount}${monthly}`;
23
+ }
24
+
25
+ static get styles(): CSSResult {
26
+ const lineColor = css`var(--totalAmountLineColor, #333)`;
27
+ const lineThickness = css`var(--totalAmountLineThickness, 2px)`;
28
+ const totalAmountVerticalSpacing = css`var(--totalAmountVerticalSpacing, 0.5rem)`;
29
+ const totalAmountFontSize = css`var(--totalAmountFontSize, 2.6rem)`;
30
+
31
+ return css`
32
+ .top-line {
33
+ width: 100%;
34
+ height: ${lineThickness};
35
+ background-color: ${lineColor};
36
+ }
37
+
38
+ .total-line {
39
+ font-size: ${totalAmountFontSize};
40
+ font-weight: bold;
41
+ text-align: center;
42
+ margin-top: ${totalAmountVerticalSpacing};
43
+ }
44
+ `;
45
+ }
46
+ }