@internetarchive/donation-monthly-portal 0.0.0-monthly8 → 0.0.0-processorid2

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 (539) hide show
  1. package/README.md +7 -102
  2. package/dist/index.d.ts +6 -7
  3. package/dist/index.js +3 -7
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/edit-plan-form.d.ts +19 -0
  6. package/dist/src/edit-plan-form.js +78 -0
  7. package/dist/src/edit-plan-form.js.map +1 -0
  8. package/dist/src/form-sections/amount.d.ts +33 -0
  9. package/dist/src/form-sections/amount.js +320 -0
  10. package/dist/src/form-sections/amount.js.map +1 -0
  11. package/dist/src/form-sections/cancel.d.ts +16 -0
  12. package/dist/src/form-sections/cancel.js +167 -0
  13. package/dist/src/form-sections/cancel.js.map +1 -0
  14. package/dist/src/form-sections/date.d.ts +38 -0
  15. package/dist/src/form-sections/date.js +361 -0
  16. package/dist/src/form-sections/date.js.map +1 -0
  17. package/dist/src/models/plan.d.ts +57 -0
  18. package/dist/src/models/plan.js +90 -0
  19. package/dist/src/models/plan.js.map +1 -0
  20. package/dist/src/models/receipt.d.ts +21 -0
  21. package/dist/src/models/receipt.js +37 -0
  22. package/dist/src/models/receipt.js.map +1 -0
  23. package/dist/src/monthly-giving-circle.d.ts +29 -20
  24. package/dist/src/monthly-giving-circle.js +189 -115
  25. package/dist/src/monthly-giving-circle.js.map +1 -1
  26. package/dist/src/plans.d.ts +10 -0
  27. package/dist/src/plans.js +203 -0
  28. package/dist/src/plans.js.map +1 -0
  29. package/dist/src/presentational/donation-section-info.d.ts +5 -0
  30. package/dist/src/presentational/donation-section-info.js +28 -0
  31. package/dist/src/presentational/donation-section-info.js.map +1 -0
  32. package/dist/src/presentational/mgc-button.d.ts +9 -0
  33. package/dist/src/presentational/mgc-button.js +119 -0
  34. package/dist/src/presentational/mgc-button.js.map +1 -0
  35. package/dist/src/presentational/mgc-title.d.ts +8 -0
  36. package/dist/src/presentational/mgc-title.js +101 -0
  37. package/dist/src/presentational/mgc-title.js.map +1 -0
  38. package/dist/src/presentational/mgc-update-status.d.ts +7 -0
  39. package/dist/src/presentational/mgc-update-status.js +53 -0
  40. package/dist/src/presentational/mgc-update-status.js.map +1 -0
  41. package/dist/src/receipts.d.ts +25 -0
  42. package/dist/src/receipts.js +201 -0
  43. package/dist/src/receipts.js.map +1 -0
  44. package/dist/src/welcome-message.d.ts +6 -3
  45. package/dist/src/welcome-message.js +60 -19
  46. package/dist/src/welcome-message.js.map +1 -1
  47. package/dist/test/edit-plan-form.test.d.ts +1 -0
  48. package/dist/test/edit-plan-form.test.js +49 -0
  49. package/dist/test/edit-plan-form.test.js.map +1 -0
  50. package/dist/test/form-sections/amount.test.d.ts +1 -0
  51. package/dist/test/form-sections/amount.test.js +49 -0
  52. package/dist/test/form-sections/amount.test.js.map +1 -0
  53. package/dist/test/form-sections/date.test.d.ts +1 -0
  54. package/dist/test/form-sections/date.test.js +136 -0
  55. package/dist/test/form-sections/date.test.js.map +1 -0
  56. package/dist/test/monthly-giving-circle.test.d.ts +1 -0
  57. package/dist/test/monthly-giving-circle.test.js +149 -0
  58. package/dist/test/monthly-giving-circle.test.js.map +1 -0
  59. package/dist/test/receipt-email-request-flow.test.d.ts +1 -0
  60. package/dist/test/receipt-email-request-flow.test.js +58 -0
  61. package/dist/test/receipt-email-request-flow.test.js.map +1 -0
  62. package/dist/vite.config.d.ts +2 -0
  63. package/dist/vite.config.js +26 -0
  64. package/dist/vite.config.js.map +1 -0
  65. package/package.json +63 -68
  66. package/src/edit-plan-form.ts +91 -0
  67. package/src/form-sections/amount.ts +355 -0
  68. package/src/form-sections/cancel.ts +170 -0
  69. package/src/form-sections/date.ts +392 -0
  70. package/src/models/plan.ts +159 -0
  71. package/src/models/receipt.ts +55 -0
  72. package/src/monthly-giving-circle.ts +231 -118
  73. package/src/plans.ts +205 -0
  74. package/src/presentational/donation-section-info.ts +25 -0
  75. package/src/presentational/mgc-button.ts +114 -0
  76. package/src/presentational/mgc-title.ts +95 -0
  77. package/src/presentational/mgc-update-status.ts +47 -0
  78. package/src/receipts.ts +226 -0
  79. package/src/welcome-message.ts +54 -22
  80. package/dist/demo/braintree-endpoint-manager.d.ts +0 -9
  81. package/dist/demo/braintree-endpoint-manager.js +0 -45
  82. package/dist/demo/braintree-endpoint-manager.js.map +0 -1
  83. package/dist/demo/demo-analytics-handler.d.ts +0 -17
  84. package/dist/demo/demo-analytics-handler.js +0 -14
  85. package/dist/demo/demo-analytics-handler.js.map +0 -1
  86. package/dist/demo/submit-form-with.d.ts +0 -7
  87. package/dist/demo/submit-form-with.js +0 -22
  88. package/dist/demo/submit-form-with.js.map +0 -1
  89. package/dist/src/braintree-manager/braintree-interfaces.d.ts +0 -147
  90. package/dist/src/braintree-manager/braintree-interfaces.js +0 -6
  91. package/dist/src/braintree-manager/braintree-interfaces.js.map +0 -1
  92. package/dist/src/braintree-manager/braintree-manager.d.ts +0 -124
  93. package/dist/src/braintree-manager/braintree-manager.js +0 -148
  94. package/dist/src/braintree-manager/braintree-manager.js.map +0 -1
  95. package/dist/src/braintree-manager/payment-clients.d.ts +0 -47
  96. package/dist/src/braintree-manager/payment-clients.js +0 -117
  97. package/dist/src/braintree-manager/payment-clients.js.map +0 -1
  98. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.d.ts +0 -8
  99. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js +0 -2
  100. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js.map +0 -1
  101. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.d.ts +0 -6
  102. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js +0 -2
  103. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js.map +0 -1
  104. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +0 -10
  105. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js +0 -2
  106. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +0 -1
  107. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +0 -21
  108. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js +0 -100
  109. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +0 -1
  110. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.d.ts +0 -10
  111. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js +0 -13
  112. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js.map +0 -1
  113. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.d.ts +0 -20
  114. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js +0 -73
  115. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +0 -1
  116. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.d.ts +0 -16
  117. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js +0 -2
  118. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +0 -1
  119. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.d.ts +0 -29
  120. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js +0 -100
  121. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +0 -1
  122. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.d.ts +0 -11
  123. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js +0 -8
  124. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js.map +0 -1
  125. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.d.ts +0 -34
  126. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js +0 -53
  127. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +0 -1
  128. package/dist/src/braintree-manager/payment-providers/google-pay-interface.d.ts +0 -7
  129. package/dist/src/braintree-manager/payment-providers/google-pay-interface.js +0 -2
  130. package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +0 -1
  131. package/dist/src/braintree-manager/payment-providers/google-pay.d.ts +0 -18
  132. package/dist/src/braintree-manager/payment-providers/google-pay.js +0 -41
  133. package/dist/src/braintree-manager/payment-providers/google-pay.js.map +0 -1
  134. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.d.ts +0 -145
  135. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js +0 -61
  136. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +0 -1
  137. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.d.ts +0 -11
  138. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js +0 -2
  139. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js.map +0 -1
  140. package/dist/src/braintree-manager/payment-providers/paypal/paypal.d.ts +0 -23
  141. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js +0 -45
  142. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +0 -1
  143. package/dist/src/braintree-manager/payment-providers/venmo-interface.d.ts +0 -6
  144. package/dist/src/braintree-manager/payment-providers/venmo-interface.js +0 -2
  145. package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +0 -1
  146. package/dist/src/braintree-manager/payment-providers/venmo.d.ts +0 -28
  147. package/dist/src/braintree-manager/payment-providers/venmo.js +0 -52
  148. package/dist/src/braintree-manager/payment-providers/venmo.js.map +0 -1
  149. package/dist/src/braintree-manager/payment-providers-interface.d.ts +0 -16
  150. package/dist/src/braintree-manager/payment-providers-interface.js +0 -2
  151. package/dist/src/braintree-manager/payment-providers-interface.js.map +0 -1
  152. package/dist/src/braintree-manager/payment-providers.d.ts +0 -45
  153. package/dist/src/braintree-manager/payment-providers.js +0 -106
  154. package/dist/src/braintree-manager/payment-providers.js.map +0 -1
  155. package/dist/src/cancel-plan.d.ts +0 -15
  156. package/dist/src/cancel-plan.js +0 -94
  157. package/dist/src/cancel-plan.js.map +0 -1
  158. package/dist/src/donation-date.d.ts +0 -17
  159. package/dist/src/donation-date.js +0 -91
  160. package/dist/src/donation-date.js.map +0 -1
  161. package/dist/src/donation-form-controller.d.ts +0 -117
  162. package/dist/src/donation-form-controller.js +0 -568
  163. package/dist/src/donation-form-controller.js.map +0 -1
  164. package/dist/src/donation-form-error.d.ts +0 -3
  165. package/dist/src/donation-form-error.js +0 -7
  166. package/dist/src/donation-form-error.js.map +0 -1
  167. package/dist/src/donation-form.d.ts +0 -120
  168. package/dist/src/donation-form.js +0 -539
  169. package/dist/src/donation-form.js.map +0 -1
  170. package/dist/src/edit-subscription.d.ts +0 -24
  171. package/dist/src/edit-subscription.js +0 -140
  172. package/dist/src/edit-subscription.js.map +0 -1
  173. package/dist/src/form-elements/badged-input.d.ts +0 -32
  174. package/dist/src/form-elements/badged-input.js +0 -121
  175. package/dist/src/form-elements/badged-input.js.map +0 -1
  176. package/dist/src/form-elements/contact-form/autocomplete-field-options.d.ts +0 -1
  177. package/dist/src/form-elements/contact-form/autocomplete-field-options.js +0 -2
  178. package/dist/src/form-elements/contact-form/autocomplete-field-options.js.map +0 -1
  179. package/dist/src/form-elements/contact-form/contact-form.d.ts +0 -55
  180. package/dist/src/form-elements/contact-form/contact-form.js +0 -438
  181. package/dist/src/form-elements/contact-form/contact-form.js.map +0 -1
  182. package/dist/src/form-elements/contact-form/countries.d.ts +0 -3
  183. package/dist/src/form-elements/contact-form/countries.js +0 -253
  184. package/dist/src/form-elements/contact-form/countries.js.map +0 -1
  185. package/dist/src/form-elements/header/donation-form-header.d.ts +0 -27
  186. package/dist/src/form-elements/header/donation-form-header.js +0 -96
  187. package/dist/src/form-elements/header/donation-form-header.js.map +0 -1
  188. package/dist/src/form-elements/header/donation-summary.d.ts +0 -11
  189. package/dist/src/form-elements/header/donation-summary.js +0 -58
  190. package/dist/src/form-elements/header/donation-summary.js.map +0 -1
  191. package/dist/src/form-elements/payment-selector.d.ts +0 -26
  192. package/dist/src/form-elements/payment-selector.js +0 -337
  193. package/dist/src/form-elements/payment-selector.js.map +0 -1
  194. package/dist/src/form-elements/total-amount.d.ts +0 -8
  195. package/dist/src/form-elements/total-amount.js +0 -48
  196. package/dist/src/form-elements/total-amount.js.map +0 -1
  197. package/dist/src/modals/confirm-donation-modal-content.d.ts +0 -31
  198. package/dist/src/modals/confirm-donation-modal-content.js +0 -179
  199. package/dist/src/modals/confirm-donation-modal-content.js.map +0 -1
  200. package/dist/src/modals/error-modal-content.d.ts +0 -14
  201. package/dist/src/modals/error-modal-content.js +0 -50
  202. package/dist/src/modals/error-modal-content.js.map +0 -1
  203. package/dist/src/modals/upsell-modal-content.d.ts +0 -32
  204. package/dist/src/modals/upsell-modal-content.js +0 -285
  205. package/dist/src/modals/upsell-modal-content.js.map +0 -1
  206. package/dist/src/models/subscription-summary.d.ts +0 -37
  207. package/dist/src/models/subscription-summary.js +0 -20
  208. package/dist/src/models/subscription-summary.js.map +0 -1
  209. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.d.ts +0 -181
  210. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +0 -242
  211. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +0 -1
  212. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.d.ts +0 -21
  213. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js +0 -77
  214. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +0 -1
  215. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.d.ts +0 -70
  216. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js +0 -141
  217. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +0 -1
  218. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.d.ts +0 -22
  219. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js +0 -75
  220. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +0 -1
  221. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.d.ts +0 -52
  222. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js +0 -240
  223. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +0 -1
  224. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.d.ts +0 -30
  225. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js +0 -91
  226. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +0 -1
  227. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.d.ts +0 -75
  228. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js +0 -95
  229. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +0 -1
  230. package/dist/src/payment-flow-handlers/payment-flow-handlers.d.ts +0 -111
  231. package/dist/src/payment-flow-handlers/payment-flow-handlers.js +0 -108
  232. package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +0 -1
  233. package/dist/src/payment-method.d.ts +0 -17
  234. package/dist/src/payment-method.js +0 -108
  235. package/dist/src/payment-method.js.map +0 -1
  236. package/dist/src/plan-amount.d.ts +0 -12
  237. package/dist/src/plan-amount.js +0 -84
  238. package/dist/src/plan-amount.js.map +0 -1
  239. package/dist/src/recaptcha-manager/recaptcha-manager.d.ts +0 -48
  240. package/dist/src/recaptcha-manager/recaptcha-manager.js +0 -89
  241. package/dist/src/recaptcha-manager/recaptcha-manager.js.map +0 -1
  242. package/dist/src/recent-donations.d.ts +0 -15
  243. package/dist/src/recent-donations.js +0 -64
  244. package/dist/src/recent-donations.js.map +0 -1
  245. package/dist/src/recent-subscriptions.d.ts +0 -0
  246. package/dist/src/recent-subscriptions.js +0 -2
  247. package/dist/src/recent-subscriptions.js.map +0 -1
  248. package/dist/src/subscription-model.d.ts +0 -0
  249. package/dist/src/subscription-model.js +0 -2
  250. package/dist/src/subscription-model.js.map +0 -1
  251. package/dist/src/subscription-summary.d.ts +0 -12
  252. package/dist/src/subscription-summary.js +0 -118
  253. package/dist/src/subscription-summary.js.map +0 -1
  254. package/dist/src/util/promisedSleep.d.ts +0 -1
  255. package/dist/src/util/promisedSleep.js +0 -4
  256. package/dist/src/util/promisedSleep.js.map +0 -1
  257. package/dist/test/helpers/fillInContactForm.d.ts +0 -2
  258. package/dist/test/helpers/fillInContactForm.js +0 -20
  259. package/dist/test/helpers/fillInContactForm.js.map +0 -1
  260. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.d.ts +0 -7
  261. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js +0 -10
  262. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js.map +0 -1
  263. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.d.ts +0 -15
  264. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js +0 -33
  265. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +0 -1
  266. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.d.ts +0 -9
  267. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js +0 -16
  268. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js.map +0 -1
  269. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.d.ts +0 -15
  270. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js +0 -31
  271. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js.map +0 -1
  272. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.d.ts +0 -9
  273. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js +0 -18
  274. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js.map +0 -1
  275. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.d.ts +0 -30
  276. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js +0 -30
  277. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +0 -1
  278. package/dist/test/mocks/mock-braintree-manager.d.ts +0 -45
  279. package/dist/test/mocks/mock-braintree-manager.js +0 -72
  280. package/dist/test/mocks/mock-braintree-manager.js.map +0 -1
  281. package/dist/test/mocks/mock-donation-info.d.ts +0 -4
  282. package/dist/test/mocks/mock-donation-info.js +0 -11
  283. package/dist/test/mocks/mock-donation-info.js.map +0 -1
  284. package/dist/test/mocks/mock-endpoint-manager.d.ts +0 -12
  285. package/dist/test/mocks/mock-endpoint-manager.js +0 -20
  286. package/dist/test/mocks/mock-endpoint-manager.js.map +0 -1
  287. package/dist/test/mocks/mock-hosted-fields-config.d.ts +0 -4
  288. package/dist/test/mocks/mock-hosted-fields-config.js +0 -38
  289. package/dist/test/mocks/mock-hosted-fields-config.js.map +0 -1
  290. package/dist/test/mocks/mock-hosted-fields-container.d.ts +0 -13
  291. package/dist/test/mocks/mock-hosted-fields-container.js +0 -28
  292. package/dist/test/mocks/mock-hosted-fields-container.js.map +0 -1
  293. package/dist/test/mocks/mock-lazy-loader.d.ts +0 -15
  294. package/dist/test/mocks/mock-lazy-loader.js +0 -21
  295. package/dist/test/mocks/mock-lazy-loader.js.map +0 -1
  296. package/dist/test/mocks/mock-modal-manager.d.ts +0 -17
  297. package/dist/test/mocks/mock-modal-manager.js +0 -27
  298. package/dist/test/mocks/mock-modal-manager.js.map +0 -1
  299. package/dist/test/mocks/mock-payment-clients.d.ts +0 -29
  300. package/dist/test/mocks/mock-payment-clients.js +0 -89
  301. package/dist/test/mocks/mock-payment-clients.js.map +0 -1
  302. package/dist/test/mocks/mock-paypal-button-renderer.d.ts +0 -5
  303. package/dist/test/mocks/mock-paypal-button-renderer.js +0 -7
  304. package/dist/test/mocks/mock-paypal-button-renderer.js.map +0 -1
  305. package/dist/test/mocks/mock-recaptcha-manager.d.ts +0 -7
  306. package/dist/test/mocks/mock-recaptcha-manager.js +0 -15
  307. package/dist/test/mocks/mock-recaptcha-manager.js.map +0 -1
  308. package/dist/test/mocks/models/mock-billing-info.d.ts +0 -2
  309. package/dist/test/mocks/models/mock-billing-info.js +0 -10
  310. package/dist/test/mocks/models/mock-billing-info.js.map +0 -1
  311. package/dist/test/mocks/models/mock-custom-fields.d.ts +0 -2
  312. package/dist/test/mocks/models/mock-custom-fields.js +0 -7
  313. package/dist/test/mocks/models/mock-custom-fields.js.map +0 -1
  314. package/dist/test/mocks/models/mock-customer-info.d.ts +0 -2
  315. package/dist/test/mocks/models/mock-customer-info.js +0 -7
  316. package/dist/test/mocks/models/mock-customer-info.js.map +0 -1
  317. package/dist/test/mocks/models/mock-donation-request.d.ts +0 -2
  318. package/dist/test/mocks/models/mock-donation-request.js +0 -19
  319. package/dist/test/mocks/models/mock-donation-request.js.map +0 -1
  320. package/dist/test/mocks/models/mock-success-response.d.ts +0 -2
  321. package/dist/test/mocks/models/mock-success-response.js +0 -14
  322. package/dist/test/mocks/models/mock-success-response.js.map +0 -1
  323. package/dist/test/mocks/payment-clients/mock-applepay-client.d.ts +0 -21
  324. package/dist/test/mocks/payment-clients/mock-applepay-client.js +0 -73
  325. package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +0 -1
  326. package/dist/test/mocks/payment-clients/mock-applepay-payment.d.ts +0 -6
  327. package/dist/test/mocks/payment-clients/mock-applepay-payment.js +0 -43
  328. package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +0 -1
  329. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.d.ts +0 -22
  330. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js +0 -36
  331. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +0 -1
  332. package/dist/test/mocks/payment-clients/mock-applepay-session.d.ts +0 -30
  333. package/dist/test/mocks/payment-clients/mock-applepay-session.js +0 -53
  334. package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +0 -1
  335. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.d.ts +0 -10
  336. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js +0 -13
  337. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +0 -1
  338. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.d.ts +0 -22
  339. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js +0 -35
  340. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +0 -1
  341. package/dist/test/mocks/payment-clients/mock-braintree-client.d.ts +0 -14
  342. package/dist/test/mocks/payment-clients/mock-braintree-client.js +0 -20
  343. package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +0 -1
  344. package/dist/test/mocks/payment-clients/mock-data-collector.d.ts +0 -11
  345. package/dist/test/mocks/payment-clients/mock-data-collector.js +0 -18
  346. package/dist/test/mocks/payment-clients/mock-data-collector.js.map +0 -1
  347. package/dist/test/mocks/payment-clients/mock-googlepay-client.d.ts +0 -22
  348. package/dist/test/mocks/payment-clients/mock-googlepay-client.js +0 -43
  349. package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +0 -1
  350. package/dist/test/mocks/payment-clients/mock-googlepay-library.d.ts +0 -10
  351. package/dist/test/mocks/payment-clients/mock-googlepay-library.js +0 -23
  352. package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +0 -1
  353. package/dist/test/mocks/payment-clients/mock-grecaptcha.d.ts +0 -23
  354. package/dist/test/mocks/payment-clients/mock-grecaptcha.js +0 -62
  355. package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +0 -1
  356. package/dist/test/mocks/payment-clients/mock-hostedfields-client.d.ts +0 -33
  357. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js +0 -55
  358. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +0 -1
  359. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.d.ts +0 -1
  360. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js +0 -51
  361. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +0 -1
  362. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.d.ts +0 -1
  363. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js +0 -14
  364. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +0 -1
  365. package/dist/test/mocks/payment-clients/mock-paypal-client.d.ts +0 -23
  366. package/dist/test/mocks/payment-clients/mock-paypal-client.js +0 -63
  367. package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +0 -1
  368. package/dist/test/mocks/payment-clients/mock-paypal-library.d.ts +0 -4
  369. package/dist/test/mocks/payment-clients/mock-paypal-library.js +0 -10
  370. package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +0 -1
  371. package/dist/test/mocks/payment-clients/mock-venmo-client.d.ts +0 -22
  372. package/dist/test/mocks/payment-clients/mock-venmo-client.js +0 -37
  373. package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +0 -1
  374. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.d.ts +0 -10
  375. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js +0 -15
  376. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +0 -1
  377. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.d.ts +0 -9
  378. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js +0 -20
  379. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +0 -1
  380. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.d.ts +0 -18
  381. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js +0 -42
  382. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +0 -1
  383. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.d.ts +0 -8
  384. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js +0 -17
  385. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +0 -1
  386. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.d.ts +0 -28
  387. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js +0 -53
  388. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +0 -1
  389. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.d.ts +0 -11
  390. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js +0 -38
  391. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +0 -1
  392. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.d.ts +0 -12
  393. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js +0 -16
  394. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +0 -1
  395. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.d.ts +0 -7
  396. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js +0 -23
  397. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +0 -1
  398. package/dist/test/mocks/payment-providers/mock-payment-providers.d.ts +0 -21
  399. package/dist/test/mocks/payment-providers/mock-payment-providers.js +0 -47
  400. package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +0 -1
  401. package/dist/test/tests/braintree-manager.test.d.ts +0 -1
  402. package/dist/test/tests/braintree-manager.test.js +0 -166
  403. package/dist/test/tests/braintree-manager.test.js.map +0 -1
  404. package/dist/test/tests/donation-form-controller.test.d.ts +0 -1
  405. package/dist/test/tests/donation-form-controller.test.js +0 -187
  406. package/dist/test/tests/donation-form-controller.test.js.map +0 -1
  407. package/dist/test/tests/donation-form.test.d.ts +0 -1
  408. package/dist/test/tests/donation-form.test.js +0 -102
  409. package/dist/test/tests/donation-form.test.js.map +0 -1
  410. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.d.ts +0 -1
  411. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +0 -216
  412. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +0 -1
  413. package/dist/test/tests/form-elements/donation-summary.test.d.ts +0 -1
  414. package/dist/test/tests/form-elements/donation-summary.test.js +0 -33
  415. package/dist/test/tests/form-elements/donation-summary.test.js.map +0 -1
  416. package/dist/test/tests/form-elements/payment-selector.test.d.ts +0 -1
  417. package/dist/test/tests/form-elements/payment-selector.test.js +0 -60
  418. package/dist/test/tests/form-elements/payment-selector.test.js.map +0 -1
  419. package/dist/test/tests/modals/error-modal-content.test.d.ts +0 -1
  420. package/dist/test/tests/modals/error-modal-content.test.js +0 -15
  421. package/dist/test/tests/modals/error-modal-content.test.js.map +0 -1
  422. package/dist/test/tests/modals/upsell-modal-content.test.d.ts +0 -1
  423. package/dist/test/tests/modals/upsell-modal-content.test.js +0 -164
  424. package/dist/test/tests/modals/upsell-modal-content.test.js.map +0 -1
  425. package/dist/test/tests/models/donation-payment-info.test.d.ts +0 -1
  426. package/dist/test/tests/models/donation-payment-info.test.js +0 -75
  427. package/dist/test/tests/models/donation-payment-info.test.js.map +0 -1
  428. package/dist/test/tests/payment-clients.test.d.ts +0 -1
  429. package/dist/test/tests/payment-clients.test.js +0 -131
  430. package/dist/test/tests/payment-clients.test.js.map +0 -1
  431. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.d.ts +0 -1
  432. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js +0 -161
  433. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +0 -1
  434. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.d.ts +0 -1
  435. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js +0 -37
  436. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +0 -1
  437. package/dist/test/tests/payment-providers/applepay.test.d.ts +0 -1
  438. package/dist/test/tests/payment-providers/applepay.test.js +0 -79
  439. package/dist/test/tests/payment-providers/applepay.test.js.map +0 -1
  440. package/dist/test/tests/payment-providers/creditcard.test.d.ts +0 -1
  441. package/dist/test/tests/payment-providers/creditcard.test.js +0 -191
  442. package/dist/test/tests/payment-providers/creditcard.test.js.map +0 -1
  443. package/dist/test/tests/payment-providers/googlepay.test.d.ts +0 -1
  444. package/dist/test/tests/payment-providers/googlepay.test.js +0 -49
  445. package/dist/test/tests/payment-providers/googlepay.test.js.map +0 -1
  446. package/dist/test/tests/payment-providers/payment-providers.test.d.ts +0 -1
  447. package/dist/test/tests/payment-providers/payment-providers.test.js +0 -39
  448. package/dist/test/tests/payment-providers/payment-providers.test.js.map +0 -1
  449. package/dist/test/tests/payment-providers/paypal-button-datasource.test.d.ts +0 -1
  450. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js +0 -163
  451. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +0 -1
  452. package/dist/test/tests/payment-providers/paypal.test.d.ts +0 -1
  453. package/dist/test/tests/payment-providers/paypal.test.js +0 -39
  454. package/dist/test/tests/payment-providers/paypal.test.js.map +0 -1
  455. package/dist/test/tests/payment-providers/venmo.test.d.ts +0 -1
  456. package/dist/test/tests/payment-providers/venmo.test.js +0 -78
  457. package/dist/test/tests/payment-providers/venmo.test.js.map +0 -1
  458. package/dist/test/tests/recaptcha-manager.test.d.ts +0 -1
  459. package/dist/test/tests/recaptcha-manager.test.js +0 -63
  460. package/dist/test/tests/recaptcha-manager.test.js.map +0 -1
  461. package/src/@types/analytics-handler/index.d.ts +0 -8
  462. package/src/@types/braintree-web/LICENSE +0 -21
  463. package/src/@types/braintree-web/README.md +0 -16
  464. package/src/@types/braintree-web/index.d.ts +0 -93
  465. package/src/@types/braintree-web/modules/american-express.d.ts +0 -50
  466. package/src/@types/braintree-web/modules/apple-pay.d.ts +0 -213
  467. package/src/@types/braintree-web/modules/client.d.ts +0 -103
  468. package/src/@types/braintree-web/modules/core.d.ts +0 -34
  469. package/src/@types/braintree-web/modules/data-collector.d.ts +0 -13
  470. package/src/@types/braintree-web/modules/google-payment.d.ts +0 -269
  471. package/src/@types/braintree-web/modules/hosted-fields.d.ts +0 -366
  472. package/src/@types/braintree-web/modules/paypal-checkout.d.ts +0 -262
  473. package/src/@types/braintree-web/modules/paypal.d.ts +0 -177
  474. package/src/@types/braintree-web/modules/three-d-secure.d.ts +0 -141
  475. package/src/@types/braintree-web/modules/unionpay.d.ts +0 -224
  476. package/src/@types/braintree-web/modules/us-bank-account.d.ts +0 -81
  477. package/src/@types/braintree-web/modules/venmo.d.ts +0 -110
  478. package/src/@types/braintree-web/package.json +0 -64
  479. package/src/@types/paypal-checkout-components/LICENSE +0 -21
  480. package/src/@types/paypal-checkout-components/README.md +0 -16
  481. package/src/@types/paypal-checkout-components/index.d.ts +0 -67
  482. package/src/@types/paypal-checkout-components/modules/button.d.ts +0 -50
  483. package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +0 -244
  484. package/src/@types/paypal-checkout-components/modules/configuration.d.ts +0 -114
  485. package/src/@types/paypal-checkout-components/package.json +0 -58
  486. package/src/braintree-manager/braintree-interfaces.ts +0 -172
  487. package/src/braintree-manager/braintree-manager.ts +0 -281
  488. package/src/braintree-manager/payment-clients.ts +0 -147
  489. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +0 -13
  490. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +0 -8
  491. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +0 -10
  492. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +0 -119
  493. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +0 -21
  494. package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +0 -98
  495. package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +0 -21
  496. package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +0 -130
  497. package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +0 -19
  498. package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +0 -85
  499. package/src/braintree-manager/payment-providers/google-pay-interface.ts +0 -8
  500. package/src/braintree-manager/payment-providers/google-pay.ts +0 -59
  501. package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +0 -218
  502. package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +0 -13
  503. package/src/braintree-manager/payment-providers/paypal/paypal.ts +0 -78
  504. package/src/braintree-manager/payment-providers/venmo-interface.ts +0 -8
  505. package/src/braintree-manager/payment-providers/venmo.ts +0 -67
  506. package/src/braintree-manager/payment-providers-interface.ts +0 -25
  507. package/src/braintree-manager/payment-providers.ts +0 -147
  508. package/src/cancel-plan.ts +0 -84
  509. package/src/donation-date.ts +0 -89
  510. package/src/donation-form-controller.ts +0 -623
  511. package/src/donation-form-error.ts +0 -6
  512. package/src/donation-form.ts +0 -572
  513. package/src/edit-subscription.ts +0 -119
  514. package/src/form-elements/badged-input.ts +0 -109
  515. package/src/form-elements/contact-form/autocomplete-field-options.ts +0 -63
  516. package/src/form-elements/contact-form/contact-form.ts +0 -434
  517. package/src/form-elements/contact-form/countries.ts +0 -252
  518. package/src/form-elements/header/donation-form-header.ts +0 -98
  519. package/src/form-elements/header/donation-summary.ts +0 -61
  520. package/src/form-elements/payment-selector.ts +0 -342
  521. package/src/form-elements/total-amount.ts +0 -46
  522. package/src/modals/confirm-donation-modal-content.ts +0 -170
  523. package/src/modals/error-modal-content.ts +0 -48
  524. package/src/modals/upsell-modal-content.ts +0 -284
  525. package/src/models/subscription-summary.ts +0 -56
  526. package/src/payment-flow-handlers/donation-flow-modal-manager.ts +0 -440
  527. package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +0 -109
  528. package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +0 -232
  529. package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +0 -111
  530. package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +0 -333
  531. package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +0 -119
  532. package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +0 -127
  533. package/src/payment-flow-handlers/payment-flow-handlers.ts +0 -219
  534. package/src/payment-method.ts +0 -99
  535. package/src/plan-amount.ts +0 -79
  536. package/src/recaptcha-manager/recaptcha-manager.ts +0 -123
  537. package/src/recent-donations.ts +0 -65
  538. package/src/subscription-summary.ts +0 -111
  539. package/src/util/promisedSleep.ts +0 -3
package/README.md CHANGED
@@ -1,115 +1,20 @@
1
- # \<donation-form>
1
+ @@ -1,144 +1,17 @@
2
+ ![Build Status](https://github.com/internetarchive/iaux-monthly-giving-circle/actions/workflows/ci.yml/badge.svg) [![codecov](https://codecov.io/gh/internetarchive/iaux-monthly-giving-circle/branch/main/graph/badge.svg?token=ZOYRJ2BV9W)](https://codecov.io/gh/internetarchive/iaux-monthly-giving-circle)
2
3
 
3
- The Internet Archive Donation Form
4
+ # \<iaux-monthly-giving-circle>
4
5
 
5
- ![Donation Form](./assets/img/screenshot.png "Donation Form")
6
+ The Internet Archive monthly donation management, web components.
6
7
 
7
8
  ## Installation
8
9
  ```bash
9
- yarn add @internetarchive/donation-form
10
+ npm i @internetarchive/donation-monthly-portal
10
11
  ```
11
12
 
12
13
  ## Usage
13
14
  ```html
14
- <script type="module">
15
- import '@internetarchive/donation-form';
16
- import '@internetarchive/modal-manager';
17
- // create an endpoint manager that conforms to `BraintreeEndpointManagerInterface`
18
- import BraintreeEndpointManager from './braintree-endpoint-manager.js';
19
-
20
- // instantiate the endpoint manager
21
- const endpointManager = new BraintreeEndpointManager();
22
- const formController = document.querySelector('donation-form-controller');
23
- const modalManager = document.querySelector('modal-manager');
24
- const recaptchaElement = document.querySelector('#recaptcha');
25
-
26
- // pass in all of the dependencies to the <donation-form-controller>
27
- formController.endpointManager = endpointManager;
28
- formController.modalManager = modalManager;
29
- formController.recaptchaElement = recaptchaElement;
30
- formController.analyticsHandler = window.archive_analytics;
31
- </script>
32
-
33
- <!--
34
- There's some environment-specific styling, depending on the host
35
- layout and configuration
36
- -->
37
- <style>
38
- donation-form-controller {
39
- min-height: 362px;
40
- display: block;
41
- }
42
-
43
- body.modal-manager-open {
44
- overflow: hidden;
45
- }
46
-
47
- modal-manager {
48
- display: none;
49
- --modalBottomMargin: 10px;
50
- --modalWidth: 320px;
51
- }
52
-
53
- modal-manager[mode='open'] {
54
- display: block;
55
- }
56
-
57
- #recaptcha {
58
- position: absolute;
59
- z-index: 10;
60
- }
61
- </style>
62
-
63
- <!--
64
- The <donation-form-controller> orchestrates the interactions
65
- between the donation-form itself and other dependencies like
66
- the modal manager, recaptcha, and some clear DOM dependencies
67
- like the PayPal button and Braintree hosted fields.
68
-
69
- The <donation-form> component can be used independently of the
70
- controller, but will need something to handle some of the interactions.
71
- -->
72
- <donation-form-controller
73
- environment='dev/prod'
74
- braintreeAuthToken='{braintree_auth_token}'
75
- recaptchaSiteKey='{recaptcha_key}'
76
- venmoProfileId='{venmo_profile_id}'
77
- googlePayMerchantId='{google_merchant_id}'
78
- referrer='{referrer}'
79
- loggedInUser='{logged_in_user}'>
80
- </donation-form-controller>
81
-
82
- <div id="recaptcha"></div>
83
-
84
- <modal-manager>
85
- <!--
86
- The PayPal button does not work in the shadow DOM so it
87
- must be slotted in from the top.
88
- -->
89
- <div slot="paypal-upsell-button">
90
- <div id="paypal-upsell-button"></div>
91
- </div>
92
- </modal-manager>
93
- ```
94
-
95
- # Development
96
-
97
- ## Prerequisite
98
- ```bash
99
- yarn install
100
- ```
101
-
102
- ## Start Development Server
103
- ```bash
104
- yarn run start
105
- ```
106
-
107
- ## Testing
108
- ```bash
109
- yarn run test
15
+ please see demo.
110
16
  ```
111
17
 
112
- ## Linting
113
18
  ```bash
114
- yarn lint
19
+ npm i && npm start
115
20
  ```
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
- export { BraintreeManagerInterface, BraintreeEndpointManagerInterface, HostingEnvironment, } from './src/braintree-manager/braintree-interfaces';
2
- export { DonationFormController } from './src/donation-form-controller';
3
- export { DonationForm } from './src/donation-form';
4
- export { RecaptchaManager, RecaptchaManagerInterface, } from './src/recaptcha-manager/recaptcha-manager';
5
- export { PaymentFlowHandlers, PaymentFlowHandlersInterface, } from './src/payment-flow-handlers/payment-flow-handlers';
6
- export { PaymentClients, PaymentClientsInterface } from './src/braintree-manager/payment-clients';
7
- export { BraintreeManager } from './src/braintree-manager/braintree-manager';
1
+ export { MonthlyGivingCircle } from './src/monthly-giving-circle';
2
+ export type { APlanUpdate } from './src/monthly-giving-circle';
3
+ export { Receipt } from './src/models/receipt';
4
+ export type { AReceipt } from './src/models/receipt';
5
+ export { MonthlyPlan } from './src/models/plan';
6
+ export type { Plan, BtData } from './src/models/plan';
package/dist/index.js CHANGED
@@ -1,8 +1,4 @@
1
- export { HostingEnvironment, } from './src/braintree-manager/braintree-interfaces';
2
- export { DonationFormController } from './src/donation-form-controller';
3
- export { DonationForm } from './src/donation-form';
4
- export { RecaptchaManager, } from './src/recaptcha-manager/recaptcha-manager';
5
- export { PaymentFlowHandlers, } from './src/payment-flow-handlers/payment-flow-handlers';
6
- export { PaymentClients } from './src/braintree-manager/payment-clients';
7
- export { BraintreeManager } from './src/braintree-manager/braintree-manager';
1
+ export { MonthlyGivingCircle } from './src/monthly-giving-circle';
2
+ export { Receipt } from './src/models/receipt';
3
+ export { MonthlyPlan } from './src/models/plan';
8
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,gBAAgB,GAEjB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,mBAAmB,GAEpB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,cAAc,EAA2B,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC","sourcesContent":["export {\n BraintreeManagerInterface,\n BraintreeEndpointManagerInterface,\n HostingEnvironment,\n} from './src/braintree-manager/braintree-interfaces';\n\nexport { DonationFormController } from './src/donation-form-controller';\nexport { DonationForm } from './src/donation-form';\nexport {\n RecaptchaManager,\n RecaptchaManagerInterface,\n} from './src/recaptcha-manager/recaptcha-manager';\nexport {\n PaymentFlowHandlers,\n PaymentFlowHandlersInterface,\n} from './src/payment-flow-handlers/payment-flow-handlers';\nexport { PaymentClients, PaymentClientsInterface } from './src/braintree-manager/payment-clients';\nexport { BraintreeManager } from './src/braintree-manager/braintree-manager';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["export { MonthlyGivingCircle } from './src/monthly-giving-circle';\nexport type { APlanUpdate } from './src/monthly-giving-circle';\nexport { Receipt } from './src/models/receipt';\nexport type { AReceipt } from './src/models/receipt';\nexport { MonthlyPlan } from './src/models/plan';\nexport type { Plan, BtData } from './src/models/plan';\n"]}
@@ -0,0 +1,19 @@
1
+ import { LitElement } from 'lit';
2
+ import type { MonthlyPlan } from './models/plan';
3
+ import './form-sections/amount';
4
+ import './form-sections/date';
5
+ import './form-sections/cancel';
6
+ export declare class IauxEditPlanForm extends LitElement {
7
+ plan?: MonthlyPlan;
8
+ updateAmountHandler?: (plan: MonthlyPlan, amountUpdates: {
9
+ amount: number;
10
+ baseAmount: number;
11
+ coverFees: boolean;
12
+ feeCovered: number;
13
+ }) => void;
14
+ createRenderRoot(): this;
15
+ amountUpdates(status: 'success' | 'fail'): void;
16
+ dateUpdates(status: 'success' | 'fail'): void;
17
+ render(): import("lit").TemplateResult<1>;
18
+ mailToText(): string;
19
+ }
@@ -0,0 +1,78 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import './form-sections/amount';
5
+ import './form-sections/date';
6
+ import './form-sections/cancel';
7
+ let IauxEditPlanForm = class IauxEditPlanForm extends LitElement {
8
+ createRenderRoot() {
9
+ return this;
10
+ }
11
+ amountUpdates(status) {
12
+ const amountForm = this.querySelector('ia-mgc-edit-plan-amount');
13
+ amountForm.amountUpdated(status);
14
+ }
15
+ dateUpdates(status) {
16
+ const dateForm = this.querySelector('ia-mgc-edit-date');
17
+ dateForm.dateUpdated(status);
18
+ }
19
+ render() {
20
+ return html `
21
+ <section class="mgc-edit-plan">
22
+ <ia-mgc-edit-plan-amount
23
+ .plan=${this.plan}
24
+ @updateAmount=${(e) => {
25
+ var _a;
26
+ const { amount, baseAmount, coverFees, feeCovered } = e.detail;
27
+ if (this.plan) {
28
+ (_a = this.updateAmountHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.plan, {
29
+ amount,
30
+ baseAmount,
31
+ coverFees,
32
+ feeCovered,
33
+ });
34
+ }
35
+ }}
36
+ ></ia-mgc-edit-plan-amount>
37
+ <hr />
38
+ <ia-mgc-edit-date
39
+ @updateDate=${(e) => {
40
+ const { newDate } = e.detail;
41
+ if (this.plan) {
42
+ this.dispatchEvent(new CustomEvent('updateDate', {
43
+ detail: { plan: this.plan, newDate },
44
+ }));
45
+ }
46
+ }}
47
+ .plan=${this.plan}
48
+ ></ia-mgc-edit-date>
49
+ <hr />
50
+ <ia-mgc-cancel-plan
51
+ .plan=${this.plan}
52
+ @cancelPlan=${() => {
53
+ this.dispatchEvent(new Event('cancelPlan'));
54
+ }}
55
+ ></ia-mgc-cancel-plan>
56
+ <hr />
57
+ <p class="email-edit-plan">
58
+ Need to update your plan further? Please email us at
59
+ <a href=${this.mailToText}>donations@archive.org</a>.
60
+ </p>
61
+ </section>
62
+ `;
63
+ }
64
+ mailToText() {
65
+ return `mailto:donations@archive.org?subject=I'd like to update my monthly donation`;
66
+ }
67
+ };
68
+ __decorate([
69
+ property({ type: Object })
70
+ ], IauxEditPlanForm.prototype, "plan", void 0);
71
+ __decorate([
72
+ property({ type: Object })
73
+ ], IauxEditPlanForm.prototype, "updateAmountHandler", void 0);
74
+ IauxEditPlanForm = __decorate([
75
+ customElement('ia-mgc-edit-plan')
76
+ ], IauxEditPlanForm);
77
+ export { IauxEditPlanForm };
78
+ //# sourceMappingURL=edit-plan-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-plan-form.js","sourceRoot":"","sources":["../../src/edit-plan-form.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,wBAAwB,CAAC;AAChC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,wBAAwB,CAAC;AAKhC,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,UAAU;IAa9C,gBAAgB;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAA0B;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CACnC,yBAAyB,CACL,CAAC;QACvB,UAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,MAA0B;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAoB,CAAC;QAC3E,QAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;kBAGG,IAAI,CAAC,IAAI;0BACD,CAAC,CAAc,EAAE,EAAE;;YACjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YAC/D,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,MAAA,IAAI,CAAC,mBAAmB,qDAAG,IAAI,CAAC,IAAI,EAAE;oBACpC,MAAM;oBACN,UAAU;oBACV,SAAS;oBACT,UAAU;iBACX,CAAC,CAAC;aACJ;QACH,CAAC;;;;wBAIa,CAAC,CAAc,EAAE,EAAE;YAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;oBAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;iBACrC,CAAC,CACH,CAAC;aACH;QACH,CAAC;kBACO,IAAI,CAAC,IAAI;;;;kBAIT,IAAI,CAAC,IAAI;wBACH,GAAG,EAAE;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9C,CAAC;;;;;oBAKS,IAAI,CAAC,UAAU;;;KAG9B,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,6EAA6E,CAAC;IACvF,CAAC;CACF,CAAA;AA9E6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAoB;AAEnB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6DAQjB;AAXC,gBAAgB;IAD5B,aAAa,CAAC,kBAAkB,CAAC;GACrB,gBAAgB,CA+E5B;SA/EY,gBAAgB","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport type { MonthlyPlan } from './models/plan';\nimport './form-sections/amount';\nimport './form-sections/date';\nimport './form-sections/cancel';\nimport type { MGCEditPlanAmount } from './form-sections/amount';\nimport type { MGCEditPlanDate } from './form-sections/date';\n\n@customElement('ia-mgc-edit-plan')\nexport class IauxEditPlanForm extends LitElement {\n @property({ type: Object }) plan?: MonthlyPlan;\n\n @property({ type: Object }) updateAmountHandler?: (\n plan: MonthlyPlan,\n amountUpdates: {\n amount: number;\n baseAmount: number;\n coverFees: boolean;\n feeCovered: number;\n }\n ) => void;\n\n createRenderRoot() {\n return this;\n }\n\n amountUpdates(status: 'success' | 'fail') {\n const amountForm = this.querySelector(\n 'ia-mgc-edit-plan-amount'\n ) as MGCEditPlanAmount;\n amountForm!.amountUpdated(status);\n }\n\n dateUpdates(status: 'success' | 'fail') {\n const dateForm = this.querySelector('ia-mgc-edit-date') as MGCEditPlanDate;\n dateForm!.dateUpdated(status);\n }\n\n render() {\n return html`\n <section class=\"mgc-edit-plan\">\n <ia-mgc-edit-plan-amount\n .plan=${this.plan}\n @updateAmount=${(e: CustomEvent) => {\n const { amount, baseAmount, coverFees, feeCovered } = e.detail;\n if (this.plan) {\n this.updateAmountHandler?.(this.plan, {\n amount,\n baseAmount,\n coverFees,\n feeCovered,\n });\n }\n }}\n ></ia-mgc-edit-plan-amount>\n <hr />\n <ia-mgc-edit-date\n @updateDate=${(e: CustomEvent) => {\n const { newDate } = e.detail;\n if (this.plan) {\n this.dispatchEvent(\n new CustomEvent('updateDate', {\n detail: { plan: this.plan, newDate },\n })\n );\n }\n }}\n .plan=${this.plan}\n ></ia-mgc-edit-date>\n <hr />\n <ia-mgc-cancel-plan\n .plan=${this.plan}\n @cancelPlan=${() => {\n this.dispatchEvent(new Event('cancelPlan'));\n }}\n ></ia-mgc-cancel-plan>\n <hr />\n <p class=\"email-edit-plan\">\n Need to update your plan further? Please email us at\n <a href=${this.mailToText}>donations@archive.org</a>.\n </p>\n </section>\n `;\n }\n\n mailToText(): string {\n return `mailto:donations@archive.org?subject=I'd like to update my monthly donation`;\n }\n}\n"]}
@@ -0,0 +1,33 @@
1
+ import { LitElement, PropertyValues, TemplateResult } from 'lit';
2
+ import '@internetarchive/donation-form-section';
3
+ import { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';
4
+ import type { MonthlyPlan } from '../models/plan';
5
+ import '../presentational/donation-section-info';
6
+ import '../presentational/mgc-button';
7
+ import type { MGCButton } from '../presentational/mgc-button';
8
+ import '../presentational/mgc-update-status';
9
+ export declare class MGCEditPlanAmount extends LitElement {
10
+ plan?: MonthlyPlan;
11
+ donationPaymentInfo?: DonationPaymentInfo;
12
+ newAmount: number;
13
+ currentlyEditing: boolean;
14
+ coverFees: boolean;
15
+ updateMessage: string;
16
+ errorMessage: string;
17
+ updateStatus: 'success' | 'fail' | '';
18
+ form: HTMLFormElement;
19
+ updated(changed: PropertyValues): void;
20
+ protected render(): TemplateResult<1>;
21
+ amountUpdated(status: 'success' | 'fail'): Promise<void>;
22
+ requestAmountUpdate(e: Event): void;
23
+ captureAmountChanges(newAmount?: number): void;
24
+ closeForm(): void;
25
+ clearInputField(): void;
26
+ handleSubmit(e: Event, iaButton?: MGCButton): void;
27
+ private updateButtonState;
28
+ clearStatusMessaging(): Promise<void>;
29
+ totalAmountWithFees(): number;
30
+ get coveredFeesText(): string;
31
+ get editAmountForm(): TemplateResult;
32
+ static styles: import("lit").CSSResult;
33
+ }
@@ -0,0 +1,320 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, nothing, css, } from 'lit';
3
+ import { customElement, property, query } from 'lit/decorators.js';
4
+ import '@internetarchive/donation-form-section';
5
+ import { DonationPaymentInfo, DonationType, } from '@internetarchive/donation-form-data-models';
6
+ import '../presentational/donation-section-info';
7
+ import '../presentational/mgc-button';
8
+ import '../presentational/mgc-update-status';
9
+ let MGCEditPlanAmount = class MGCEditPlanAmount extends LitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.newAmount = 0;
13
+ this.currentlyEditing = false;
14
+ this.coverFees = false;
15
+ this.updateMessage = '';
16
+ this.errorMessage = '';
17
+ this.updateStatus = '';
18
+ }
19
+ updated(changed) {
20
+ if (changed.has('plan') && this.plan) {
21
+ this.captureAmountChanges();
22
+ }
23
+ if (changed.has('coverFees')) {
24
+ this.captureAmountChanges();
25
+ }
26
+ if (changed.has('currentlyEditing') && this.currentlyEditing) {
27
+ this.form.focus();
28
+ }
29
+ if (changed.has('donationPaymentInfo') && !this.donationPaymentInfo) {
30
+ this.captureAmountChanges();
31
+ }
32
+ }
33
+ render() {
34
+ var _a;
35
+ return html `
36
+ <section>
37
+ <donation-form-section badgemode="hidebadge" headline="Amount">
38
+ ${!this.currentlyEditing
39
+ ? html `<ia-mgc-form-section-info
40
+ @editingRequested=${() => {
41
+ this.currentlyEditing = true;
42
+ this.clearStatusMessaging();
43
+ }}
44
+ ><span>USD $${(_a = this.plan) === null || _a === void 0 ? void 0 : _a.amount}</span>
45
+ </ia-mgc-form-section-info>`
46
+ : nothing}
47
+ ${this.currentlyEditing ? this.editAmountForm : nothing}
48
+ </donation-form-section>
49
+ </section>
50
+ `;
51
+ }
52
+ /* External Function that is called by consumer to tell the form there has been data update */
53
+ async amountUpdated(status) {
54
+ this.clearInputField();
55
+ this.updateStatus = status;
56
+ this.updateMessage =
57
+ status === 'success' ? 'Amount updated' : 'Failed. Try again.';
58
+ if (status === 'success') {
59
+ this.closeForm();
60
+ await this.updateComplete;
61
+ this.updateStatus = status;
62
+ this.updateMessage = 'Amount updated';
63
+ return;
64
+ }
65
+ this.form.querySelector('ia-mgc-button#update-amount').isDisabled = false;
66
+ this.captureAmountChanges();
67
+ await this.updateComplete;
68
+ }
69
+ /* Dispatches amount change request */
70
+ requestAmountUpdate(e) {
71
+ var _a, _b, _c, _d, _e;
72
+ e.preventDefault();
73
+ const input = this.form.querySelector('input[name="amount"]');
74
+ this.newAmount = Number(input.value);
75
+ this.captureAmountChanges(this.newAmount);
76
+ console.log('<plan-amount> - update amount', {
77
+ newValue: this.newAmount,
78
+ oldValue: (_a = this.plan) === null || _a === void 0 ? void 0 : _a.plan.amount,
79
+ display: (_b = this.donationPaymentInfo) === null || _b === void 0 ? void 0 : _b.amount,
80
+ });
81
+ const newAmount = Number(DonationPaymentInfo.calculateTotal(Number((_c = this.donationPaymentInfo) === null || _c === void 0 ? void 0 : _c.amount), this.coverFees));
82
+ this.dispatchEvent(new CustomEvent('updateAmount', {
83
+ detail: {
84
+ plan: this.plan,
85
+ amount: newAmount,
86
+ baseAmount: (_d = this.donationPaymentInfo) === null || _d === void 0 ? void 0 : _d.amount,
87
+ coverFees: this.coverFees,
88
+ feeCovered: (_e = this.donationPaymentInfo) === null || _e === void 0 ? void 0 : _e.feeAmountCovered,
89
+ },
90
+ }));
91
+ }
92
+ /* captures form changes */
93
+ captureAmountChanges(newAmount) {
94
+ if (!this.donationPaymentInfo && this.plan) {
95
+ this.donationPaymentInfo = new DonationPaymentInfo({
96
+ donationType: DonationType.Monthly,
97
+ amount: 0,
98
+ coverFees: true,
99
+ });
100
+ return;
101
+ }
102
+ let newPlan;
103
+ if (newAmount) {
104
+ newPlan = new DonationPaymentInfo({
105
+ donationType: DonationType.Monthly,
106
+ amount: newAmount,
107
+ coverFees: true,
108
+ });
109
+ }
110
+ else {
111
+ const amount = this.donationPaymentInfo
112
+ ? this.donationPaymentInfo.amount
113
+ : this.plan.amount;
114
+ newPlan = new DonationPaymentInfo({
115
+ donationType: DonationType.Monthly,
116
+ amount,
117
+ coverFees: true,
118
+ });
119
+ }
120
+ this.donationPaymentInfo = newPlan;
121
+ }
122
+ closeForm() {
123
+ this.clearInputField();
124
+ this.clearStatusMessaging();
125
+ this.currentlyEditing = false;
126
+ this.coverFees = false;
127
+ this.errorMessage = '';
128
+ }
129
+ clearInputField() {
130
+ const input = this.form.querySelector('input[name="amount"]');
131
+ input.value = '';
132
+ this.newAmount = 0;
133
+ this.donationPaymentInfo = undefined;
134
+ }
135
+ handleSubmit(e, iaButton) {
136
+ var _a;
137
+ e.preventDefault();
138
+ this.clearStatusMessaging();
139
+ const button = iaButton !== null && iaButton !== void 0 ? iaButton : this.form.querySelector('#update-amount');
140
+ if (button)
141
+ this.updateButtonState(button);
142
+ if (!this.newAmount) {
143
+ this.errorMessage = 'Please enter a new amount';
144
+ if (button)
145
+ button.isDisabled = false;
146
+ return;
147
+ }
148
+ const input = this.form.querySelector('input[name="amount"]');
149
+ const requestedAmount = (_a = Number(input.value)) !== null && _a !== void 0 ? _a : 0;
150
+ const amountTooLow = requestedAmount < 1;
151
+ const amountTooHigh = requestedAmount >= 9999;
152
+ if (amountTooLow) {
153
+ this.errorMessage = 'Please enter a valid amount';
154
+ }
155
+ if (amountTooHigh) {
156
+ this.errorMessage =
157
+ 'Amount must be less than $9,999. Would you like to donate more? Please contact us at donations@archive.org';
158
+ }
159
+ if (amountTooHigh || amountTooLow) {
160
+ if (button)
161
+ this.updateButtonState(button);
162
+ return;
163
+ }
164
+ this.requestAmountUpdate(e);
165
+ }
166
+ async updateButtonState(iaButton) {
167
+ // eslint-disable-next-line no-param-reassign
168
+ iaButton.isDisabled = true;
169
+ await (iaButton === null || iaButton === void 0 ? void 0 : iaButton.updateComplete);
170
+ }
171
+ async clearStatusMessaging() {
172
+ this.errorMessage = '';
173
+ this.updateMessage = '';
174
+ this.updateStatus = '';
175
+ await this.updateComplete;
176
+ }
177
+ /* DISPLAY */
178
+ totalAmountWithFees() {
179
+ if (this.newAmount === 0) {
180
+ return 0;
181
+ }
182
+ return DonationPaymentInfo.calculateTotal(this.newAmount, this.coverFees);
183
+ }
184
+ get coveredFeesText() {
185
+ var _a;
186
+ return `I'll generously add $${(_a = this.donationPaymentInfo) === null || _a === void 0 ? void 0 : _a.feeAmountCovered} to cover fees.`;
187
+ }
188
+ get editAmountForm() {
189
+ var _a;
190
+ return html `
191
+ <section>
192
+ <form
193
+ id="edit-plan-amount"
194
+ @submit=${(e) => this.handleSubmit(e)}
195
+ >
196
+ <p>Current donation amount: $${(_a = this.plan) === null || _a === void 0 ? void 0 : _a.amount}</p>
197
+ <div>
198
+ $
199
+ <input
200
+ min="1"
201
+ max="9999"
202
+ type="number"
203
+ id="amount"
204
+ name="amount"
205
+ ?required=${true}
206
+ @focus=${() => this.clearStatusMessaging()}
207
+ @input=${(e) => {
208
+ const newAmount = Number(e.target.value);
209
+ this.captureAmountChanges(newAmount);
210
+ this.newAmount = newAmount;
211
+ }}
212
+ />
213
+ / month
214
+ </div>
215
+ <div>
216
+ <div class="checkbox-option-container">
217
+ <input
218
+ type="checkbox"
219
+ id="cover-fees"
220
+ tabindex="0"
221
+ @change=${(e) => {
222
+ const input = e.target;
223
+ const coverFees = input.checked;
224
+ this.coverFees = coverFees;
225
+ this.captureAmountChanges();
226
+ }}
227
+ />
228
+ <label for="cover-fees">${this.coveredFeesText}</label>
229
+ </div>
230
+ <p>Total: USD $${this.totalAmountWithFees()}</p>
231
+ <div class="cta-container">
232
+ <ia-mgc-button
233
+ class="ia-button secondary"
234
+ .clickHandler=${(e) => {
235
+ e.preventDefault();
236
+ this.closeForm();
237
+ }}
238
+ >
239
+ Cancel
240
+ </ia-mgc-button>
241
+ <ia-mgc-button
242
+ id="update-amount"
243
+ class="ia-button primary"
244
+ type="submit"
245
+ .clickHandler=${(e, iaButton) => this.handleSubmit(e, iaButton)}
246
+ >
247
+ Update
248
+ </ia-mgc-button>
249
+ <ia-mgc-update-status .status=${this.updateStatus}
250
+ >${this.updateMessage}</ia-mgc-update-status
251
+ >
252
+ </div>
253
+ </div>
254
+ <p class="error">${this.errorMessage}</p>
255
+ </form>
256
+ </section>
257
+ `;
258
+ }
259
+ };
260
+ MGCEditPlanAmount.styles = css `
261
+ input#amount {
262
+ width: 50px;
263
+ }
264
+
265
+ .cta-container {
266
+ display: flex;
267
+ flex-direction: row;
268
+ flex-wrap: wrap;
269
+ align-content: center;
270
+ justify-content: flex-start;
271
+ align-items: center;
272
+ gap: 10px;
273
+ }
274
+
275
+ p.error {
276
+ color: var(--mgc-warning-color-dark, #bb0505);
277
+ }
278
+
279
+ ia-mgc-update-status {
280
+ display: inline-block;
281
+ margin-left: 1rem;
282
+ }
283
+
284
+ .checkbox-option-container {
285
+ margin: 10px 0;
286
+ display: flex;
287
+ }
288
+ `;
289
+ __decorate([
290
+ property({ type: Object })
291
+ ], MGCEditPlanAmount.prototype, "plan", void 0);
292
+ __decorate([
293
+ property({ type: Object })
294
+ ], MGCEditPlanAmount.prototype, "donationPaymentInfo", void 0);
295
+ __decorate([
296
+ property({ type: Number })
297
+ ], MGCEditPlanAmount.prototype, "newAmount", void 0);
298
+ __decorate([
299
+ property({ type: Boolean, reflect: true })
300
+ ], MGCEditPlanAmount.prototype, "currentlyEditing", void 0);
301
+ __decorate([
302
+ property({ type: Boolean })
303
+ ], MGCEditPlanAmount.prototype, "coverFees", void 0);
304
+ __decorate([
305
+ property({ type: String })
306
+ ], MGCEditPlanAmount.prototype, "updateMessage", void 0);
307
+ __decorate([
308
+ property({ type: String })
309
+ ], MGCEditPlanAmount.prototype, "errorMessage", void 0);
310
+ __decorate([
311
+ property({ type: String })
312
+ ], MGCEditPlanAmount.prototype, "updateStatus", void 0);
313
+ __decorate([
314
+ query('form')
315
+ ], MGCEditPlanAmount.prototype, "form", void 0);
316
+ MGCEditPlanAmount = __decorate([
317
+ customElement('ia-mgc-edit-plan-amount')
318
+ ], MGCEditPlanAmount);
319
+ export { MGCEditPlanAmount };
320
+ //# sourceMappingURL=amount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amount.js","sourceRoot":"","sources":["../../../src/form-sections/amount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LitElement,\n html,\n PropertyValues,\n nothing,\n css,\n TemplateResult,\n} from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport '@internetarchive/donation-form-section';\nimport {\n DonationPaymentInfo,\n DonationType,\n} from '@internetarchive/donation-form-data-models';\n\nimport type { MonthlyPlan } from '../models/plan';\nimport '../presentational/donation-section-info';\nimport '../presentational/mgc-button';\nimport type { MGCButton } from '../presentational/mgc-button';\nimport '../presentational/mgc-update-status';\n\n@customElement('ia-mgc-edit-plan-amount')\nexport class MGCEditPlanAmount extends LitElement {\n @property({ type: Object }) plan?: MonthlyPlan;\n\n // captures the changes made to the amount && calculates the total amount with fees\n @property({ type: Object }) donationPaymentInfo?: DonationPaymentInfo;\n\n @property({ type: Number }) newAmount: number = 0;\n\n @property({ type: Boolean, reflect: true }) currentlyEditing: boolean = false;\n\n @property({ type: Boolean }) coverFees: boolean = false;\n\n @property({ type: String }) updateMessage: string = '';\n\n @property({ type: String }) errorMessage: string = '';\n\n @property({ type: String }) updateStatus: 'success' | 'fail' | '' = '';\n\n @query('form') form!: HTMLFormElement;\n\n updated(changed: PropertyValues) {\n if (changed.has('plan') && this.plan) {\n this.captureAmountChanges();\n }\n if (changed.has('coverFees')) {\n this.captureAmountChanges();\n }\n if (changed.has('currentlyEditing') && this.currentlyEditing) {\n this.form.focus();\n }\n\n if (changed.has('donationPaymentInfo') && !this.donationPaymentInfo) {\n this.captureAmountChanges();\n }\n }\n\n protected render() {\n return html`\n <section>\n <donation-form-section badgemode=\"hidebadge\" headline=\"Amount\">\n ${!this.currentlyEditing\n ? html`<ia-mgc-form-section-info\n @editingRequested=${() => {\n this.currentlyEditing = true;\n this.clearStatusMessaging();\n }}\n ><span>USD $${this.plan?.amount}</span>\n </ia-mgc-form-section-info>`\n : nothing}\n ${this.currentlyEditing ? this.editAmountForm : nothing}\n </donation-form-section>\n </section>\n `;\n }\n\n /* External Function that is called by consumer to tell the form there has been data update */\n async amountUpdated(status: 'success' | 'fail') {\n this.clearInputField();\n\n this.updateStatus = status;\n this.updateMessage =\n status === 'success' ? 'Amount updated' : 'Failed. Try again.';\n\n if (status === 'success') {\n this.closeForm();\n await this.updateComplete;\n\n this.updateStatus = status;\n this.updateMessage = 'Amount updated';\n\n return;\n }\n\n (\n this.form.querySelector('ia-mgc-button#update-amount') as MGCButton\n ).isDisabled = false;\n\n this.captureAmountChanges();\n\n await this.updateComplete;\n }\n\n /* Dispatches amount change request */\n requestAmountUpdate(e: Event): void {\n e.preventDefault();\n\n const input = this.form.querySelector(\n 'input[name=\"amount\"]'\n ) as HTMLInputElement;\n this.newAmount = Number(input.value);\n\n this.captureAmountChanges(this.newAmount);\n\n console.log('<plan-amount> - update amount', {\n newValue: this.newAmount,\n oldValue: this.plan?.plan.amount,\n display: this.donationPaymentInfo?.amount,\n });\n const newAmount = Number(\n DonationPaymentInfo.calculateTotal(\n Number(this.donationPaymentInfo?.amount),\n this.coverFees\n )\n );\n this.dispatchEvent(\n new CustomEvent('updateAmount', {\n detail: {\n plan: this.plan,\n amount: newAmount,\n baseAmount: this.donationPaymentInfo?.amount,\n coverFees: this.coverFees,\n feeCovered: this.donationPaymentInfo?.feeAmountCovered,\n },\n })\n );\n }\n\n /* captures form changes */\n captureAmountChanges(newAmount?: number) {\n if (!this.donationPaymentInfo && this.plan) {\n this.donationPaymentInfo = new DonationPaymentInfo({\n donationType: DonationType.Monthly,\n amount: 0,\n coverFees: true,\n });\n return;\n }\n\n let newPlan;\n if (newAmount) {\n newPlan = new DonationPaymentInfo({\n donationType: DonationType.Monthly,\n amount: newAmount,\n coverFees: true,\n });\n } else {\n const amount = this.donationPaymentInfo\n ? this.donationPaymentInfo.amount\n : this.plan!.amount;\n\n newPlan = new DonationPaymentInfo({\n donationType: DonationType.Monthly,\n amount,\n coverFees: true,\n });\n }\n\n this.donationPaymentInfo = newPlan;\n }\n\n closeForm() {\n this.clearInputField();\n this.clearStatusMessaging();\n this.currentlyEditing = false;\n this.coverFees = false;\n this.errorMessage = '';\n }\n\n clearInputField() {\n const input = this.form.querySelector(\n 'input[name=\"amount\"]'\n ) as HTMLInputElement;\n input.value = '';\n this.newAmount = 0;\n this.donationPaymentInfo = undefined;\n }\n\n handleSubmit(e: Event, iaButton?: MGCButton) {\n e.preventDefault();\n this.clearStatusMessaging();\n\n const button =\n iaButton ?? (this.form.querySelector('#update-amount') as MGCButton);\n if (button) this.updateButtonState(button);\n\n if (!this.newAmount) {\n this.errorMessage = 'Please enter a new amount';\n if (button) button.isDisabled = false;\n return;\n }\n\n const input = this.form.querySelector(\n 'input[name=\"amount\"]'\n ) as HTMLInputElement;\n const requestedAmount = Number(input.value) ?? 0;\n const amountTooLow = requestedAmount < 1;\n const amountTooHigh = requestedAmount >= 9999;\n\n if (amountTooLow) {\n this.errorMessage = 'Please enter a valid amount';\n }\n\n if (amountTooHigh) {\n this.errorMessage =\n 'Amount must be less than $9,999. Would you like to donate more? Please contact us at donations@archive.org';\n }\n\n if (amountTooHigh || amountTooLow) {\n if (button) this.updateButtonState(button);\n return;\n }\n\n this.requestAmountUpdate(e);\n }\n\n private async updateButtonState(iaButton: MGCButton) {\n // eslint-disable-next-line no-param-reassign\n (iaButton as MGCButton).isDisabled = true;\n await iaButton?.updateComplete;\n }\n\n async clearStatusMessaging() {\n this.errorMessage = '';\n this.updateMessage = '';\n this.updateStatus = '';\n await this.updateComplete;\n }\n\n /* DISPLAY */\n totalAmountWithFees(): number {\n if (this.newAmount === 0) {\n return 0;\n }\n\n return DonationPaymentInfo.calculateTotal(this.newAmount, this.coverFees);\n }\n\n get coveredFeesText() {\n return `I'll generously add $${this.donationPaymentInfo?.feeAmountCovered} to cover fees.`;\n }\n\n get editAmountForm(): TemplateResult {\n return html`\n <section>\n <form\n id=\"edit-plan-amount\"\n @submit=${(e: Event) => this.handleSubmit(e)}\n >\n <p>Current donation amount: $${this.plan?.amount}</p>\n <div>\n $\n <input\n min=\"1\"\n max=\"9999\"\n type=\"number\"\n id=\"amount\"\n name=\"amount\"\n ?required=${true}\n @focus=${() => this.clearStatusMessaging()}\n @input=${(e: Event) => {\n const newAmount = Number((e.target as HTMLInputElement).value);\n this.captureAmountChanges(newAmount);\n this.newAmount = newAmount;\n }}\n />\n / month\n </div>\n <div>\n <div class=\"checkbox-option-container\">\n <input\n type=\"checkbox\"\n id=\"cover-fees\"\n tabindex=\"0\"\n @change=${(e: Event) => {\n const input = e.target as HTMLInputElement;\n const coverFees = input.checked;\n this.coverFees = coverFees;\n this.captureAmountChanges();\n }}\n />\n <label for=\"cover-fees\">${this.coveredFeesText}</label>\n </div>\n <p>Total: USD $${this.totalAmountWithFees()}</p>\n <div class=\"cta-container\">\n <ia-mgc-button\n class=\"ia-button secondary\"\n .clickHandler=${(e: Event) => {\n e.preventDefault();\n this.closeForm();\n }}\n >\n Cancel\n </ia-mgc-button>\n <ia-mgc-button\n id=\"update-amount\"\n class=\"ia-button primary\"\n type=\"submit\"\n .clickHandler=${(e: Event, iaButton: MGCButton) =>\n this.handleSubmit(e, iaButton)}\n >\n Update\n </ia-mgc-button>\n <ia-mgc-update-status .status=${this.updateStatus}\n >${this.updateMessage}</ia-mgc-update-status\n >\n </div>\n </div>\n <p class=\"error\">${this.errorMessage}</p>\n </form>\n </section>\n `;\n }\n\n static styles = css`\n input#amount {\n width: 50px;\n }\n\n .cta-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-content: center;\n justify-content: flex-start;\n align-items: center;\n gap: 10px;\n }\n\n p.error {\n color: var(--mgc-warning-color-dark, #bb0505);\n }\n\n ia-mgc-update-status {\n display: inline-block;\n margin-left: 1rem;\n }\n\n .checkbox-option-container {\n margin: 10px 0;\n display: flex;\n }\n `;\n}\n"]}