@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.
- package/README.md +7 -102
- package/dist/index.d.ts +6 -7
- package/dist/index.js +3 -7
- package/dist/index.js.map +1 -1
- package/dist/src/edit-plan-form.d.ts +19 -0
- package/dist/src/edit-plan-form.js +78 -0
- package/dist/src/edit-plan-form.js.map +1 -0
- package/dist/src/form-sections/amount.d.ts +33 -0
- package/dist/src/form-sections/amount.js +320 -0
- package/dist/src/form-sections/amount.js.map +1 -0
- package/dist/src/form-sections/cancel.d.ts +16 -0
- package/dist/src/form-sections/cancel.js +167 -0
- package/dist/src/form-sections/cancel.js.map +1 -0
- package/dist/src/form-sections/date.d.ts +38 -0
- package/dist/src/form-sections/date.js +361 -0
- package/dist/src/form-sections/date.js.map +1 -0
- package/dist/src/models/plan.d.ts +57 -0
- package/dist/src/models/plan.js +90 -0
- package/dist/src/models/plan.js.map +1 -0
- package/dist/src/models/receipt.d.ts +21 -0
- package/dist/src/models/receipt.js +37 -0
- package/dist/src/models/receipt.js.map +1 -0
- package/dist/src/monthly-giving-circle.d.ts +29 -20
- package/dist/src/monthly-giving-circle.js +189 -115
- package/dist/src/monthly-giving-circle.js.map +1 -1
- package/dist/src/plans.d.ts +10 -0
- package/dist/src/plans.js +203 -0
- package/dist/src/plans.js.map +1 -0
- package/dist/src/presentational/donation-section-info.d.ts +5 -0
- package/dist/src/presentational/donation-section-info.js +28 -0
- package/dist/src/presentational/donation-section-info.js.map +1 -0
- package/dist/src/presentational/mgc-button.d.ts +9 -0
- package/dist/src/presentational/mgc-button.js +119 -0
- package/dist/src/presentational/mgc-button.js.map +1 -0
- package/dist/src/presentational/mgc-title.d.ts +8 -0
- package/dist/src/presentational/mgc-title.js +101 -0
- package/dist/src/presentational/mgc-title.js.map +1 -0
- package/dist/src/presentational/mgc-update-status.d.ts +7 -0
- package/dist/src/presentational/mgc-update-status.js +53 -0
- package/dist/src/presentational/mgc-update-status.js.map +1 -0
- package/dist/src/receipts.d.ts +25 -0
- package/dist/src/receipts.js +201 -0
- package/dist/src/receipts.js.map +1 -0
- package/dist/src/welcome-message.d.ts +6 -3
- package/dist/src/welcome-message.js +60 -19
- package/dist/src/welcome-message.js.map +1 -1
- package/dist/test/edit-plan-form.test.d.ts +1 -0
- package/dist/test/edit-plan-form.test.js +49 -0
- package/dist/test/edit-plan-form.test.js.map +1 -0
- package/dist/test/form-sections/amount.test.d.ts +1 -0
- package/dist/test/form-sections/amount.test.js +49 -0
- package/dist/test/form-sections/amount.test.js.map +1 -0
- package/dist/test/form-sections/date.test.d.ts +1 -0
- package/dist/test/form-sections/date.test.js +136 -0
- package/dist/test/form-sections/date.test.js.map +1 -0
- package/dist/test/monthly-giving-circle.test.d.ts +1 -0
- package/dist/test/monthly-giving-circle.test.js +149 -0
- package/dist/test/monthly-giving-circle.test.js.map +1 -0
- package/dist/test/receipt-email-request-flow.test.d.ts +1 -0
- package/dist/test/receipt-email-request-flow.test.js +58 -0
- package/dist/test/receipt-email-request-flow.test.js.map +1 -0
- package/dist/vite.config.d.ts +2 -0
- package/dist/vite.config.js +26 -0
- package/dist/vite.config.js.map +1 -0
- package/package.json +63 -68
- package/src/edit-plan-form.ts +91 -0
- package/src/form-sections/amount.ts +355 -0
- package/src/form-sections/cancel.ts +170 -0
- package/src/form-sections/date.ts +392 -0
- package/src/models/plan.ts +159 -0
- package/src/models/receipt.ts +55 -0
- package/src/monthly-giving-circle.ts +231 -118
- package/src/plans.ts +205 -0
- package/src/presentational/donation-section-info.ts +25 -0
- package/src/presentational/mgc-button.ts +114 -0
- package/src/presentational/mgc-title.ts +95 -0
- package/src/presentational/mgc-update-status.ts +47 -0
- package/src/receipts.ts +226 -0
- package/src/welcome-message.ts +54 -22
- package/dist/demo/braintree-endpoint-manager.d.ts +0 -9
- package/dist/demo/braintree-endpoint-manager.js +0 -45
- package/dist/demo/braintree-endpoint-manager.js.map +0 -1
- package/dist/demo/demo-analytics-handler.d.ts +0 -17
- package/dist/demo/demo-analytics-handler.js +0 -14
- package/dist/demo/demo-analytics-handler.js.map +0 -1
- package/dist/demo/submit-form-with.d.ts +0 -7
- package/dist/demo/submit-form-with.js +0 -22
- package/dist/demo/submit-form-with.js.map +0 -1
- package/dist/src/braintree-manager/braintree-interfaces.d.ts +0 -147
- package/dist/src/braintree-manager/braintree-interfaces.js +0 -6
- package/dist/src/braintree-manager/braintree-interfaces.js.map +0 -1
- package/dist/src/braintree-manager/braintree-manager.d.ts +0 -124
- package/dist/src/braintree-manager/braintree-manager.js +0 -148
- package/dist/src/braintree-manager/braintree-manager.js.map +0 -1
- package/dist/src/braintree-manager/payment-clients.d.ts +0 -47
- package/dist/src/braintree-manager/payment-clients.js +0 -117
- package/dist/src/braintree-manager/payment-clients.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.d.ts +0 -8
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js +0 -2
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.d.ts +0 -6
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js +0 -2
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +0 -10
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js +0 -2
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +0 -21
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js +0 -100
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.d.ts +0 -10
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js +0 -13
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.d.ts +0 -20
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js +0 -73
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.d.ts +0 -16
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js +0 -2
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.d.ts +0 -29
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js +0 -100
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.d.ts +0 -11
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js +0 -8
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.d.ts +0 -34
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js +0 -53
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/google-pay-interface.d.ts +0 -7
- package/dist/src/braintree-manager/payment-providers/google-pay-interface.js +0 -2
- package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/google-pay.d.ts +0 -18
- package/dist/src/braintree-manager/payment-providers/google-pay.js +0 -41
- package/dist/src/braintree-manager/payment-providers/google-pay.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.d.ts +0 -145
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js +0 -61
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.d.ts +0 -11
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js +0 -2
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.d.ts +0 -23
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.js +0 -45
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/venmo-interface.d.ts +0 -6
- package/dist/src/braintree-manager/payment-providers/venmo-interface.js +0 -2
- package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers/venmo.d.ts +0 -28
- package/dist/src/braintree-manager/payment-providers/venmo.js +0 -52
- package/dist/src/braintree-manager/payment-providers/venmo.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers-interface.d.ts +0 -16
- package/dist/src/braintree-manager/payment-providers-interface.js +0 -2
- package/dist/src/braintree-manager/payment-providers-interface.js.map +0 -1
- package/dist/src/braintree-manager/payment-providers.d.ts +0 -45
- package/dist/src/braintree-manager/payment-providers.js +0 -106
- package/dist/src/braintree-manager/payment-providers.js.map +0 -1
- package/dist/src/cancel-plan.d.ts +0 -15
- package/dist/src/cancel-plan.js +0 -94
- package/dist/src/cancel-plan.js.map +0 -1
- package/dist/src/donation-date.d.ts +0 -17
- package/dist/src/donation-date.js +0 -91
- package/dist/src/donation-date.js.map +0 -1
- package/dist/src/donation-form-controller.d.ts +0 -117
- package/dist/src/donation-form-controller.js +0 -568
- package/dist/src/donation-form-controller.js.map +0 -1
- package/dist/src/donation-form-error.d.ts +0 -3
- package/dist/src/donation-form-error.js +0 -7
- package/dist/src/donation-form-error.js.map +0 -1
- package/dist/src/donation-form.d.ts +0 -120
- package/dist/src/donation-form.js +0 -539
- package/dist/src/donation-form.js.map +0 -1
- package/dist/src/edit-subscription.d.ts +0 -24
- package/dist/src/edit-subscription.js +0 -140
- package/dist/src/edit-subscription.js.map +0 -1
- package/dist/src/form-elements/badged-input.d.ts +0 -32
- package/dist/src/form-elements/badged-input.js +0 -121
- package/dist/src/form-elements/badged-input.js.map +0 -1
- package/dist/src/form-elements/contact-form/autocomplete-field-options.d.ts +0 -1
- package/dist/src/form-elements/contact-form/autocomplete-field-options.js +0 -2
- package/dist/src/form-elements/contact-form/autocomplete-field-options.js.map +0 -1
- package/dist/src/form-elements/contact-form/contact-form.d.ts +0 -55
- package/dist/src/form-elements/contact-form/contact-form.js +0 -438
- package/dist/src/form-elements/contact-form/contact-form.js.map +0 -1
- package/dist/src/form-elements/contact-form/countries.d.ts +0 -3
- package/dist/src/form-elements/contact-form/countries.js +0 -253
- package/dist/src/form-elements/contact-form/countries.js.map +0 -1
- package/dist/src/form-elements/header/donation-form-header.d.ts +0 -27
- package/dist/src/form-elements/header/donation-form-header.js +0 -96
- package/dist/src/form-elements/header/donation-form-header.js.map +0 -1
- package/dist/src/form-elements/header/donation-summary.d.ts +0 -11
- package/dist/src/form-elements/header/donation-summary.js +0 -58
- package/dist/src/form-elements/header/donation-summary.js.map +0 -1
- package/dist/src/form-elements/payment-selector.d.ts +0 -26
- package/dist/src/form-elements/payment-selector.js +0 -337
- package/dist/src/form-elements/payment-selector.js.map +0 -1
- package/dist/src/form-elements/total-amount.d.ts +0 -8
- package/dist/src/form-elements/total-amount.js +0 -48
- package/dist/src/form-elements/total-amount.js.map +0 -1
- package/dist/src/modals/confirm-donation-modal-content.d.ts +0 -31
- package/dist/src/modals/confirm-donation-modal-content.js +0 -179
- package/dist/src/modals/confirm-donation-modal-content.js.map +0 -1
- package/dist/src/modals/error-modal-content.d.ts +0 -14
- package/dist/src/modals/error-modal-content.js +0 -50
- package/dist/src/modals/error-modal-content.js.map +0 -1
- package/dist/src/modals/upsell-modal-content.d.ts +0 -32
- package/dist/src/modals/upsell-modal-content.js +0 -285
- package/dist/src/modals/upsell-modal-content.js.map +0 -1
- package/dist/src/models/subscription-summary.d.ts +0 -37
- package/dist/src/models/subscription-summary.js +0 -20
- package/dist/src/models/subscription-summary.js.map +0 -1
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.d.ts +0 -181
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +0 -242
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +0 -1
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.d.ts +0 -21
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js +0 -77
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +0 -1
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.d.ts +0 -70
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js +0 -141
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +0 -1
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.d.ts +0 -22
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js +0 -75
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +0 -1
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.d.ts +0 -52
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js +0 -240
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +0 -1
- package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.d.ts +0 -30
- package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js +0 -91
- package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +0 -1
- package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.d.ts +0 -75
- package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js +0 -95
- package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +0 -1
- package/dist/src/payment-flow-handlers/payment-flow-handlers.d.ts +0 -111
- package/dist/src/payment-flow-handlers/payment-flow-handlers.js +0 -108
- package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +0 -1
- package/dist/src/payment-method.d.ts +0 -17
- package/dist/src/payment-method.js +0 -108
- package/dist/src/payment-method.js.map +0 -1
- package/dist/src/plan-amount.d.ts +0 -12
- package/dist/src/plan-amount.js +0 -84
- package/dist/src/plan-amount.js.map +0 -1
- package/dist/src/recaptcha-manager/recaptcha-manager.d.ts +0 -48
- package/dist/src/recaptcha-manager/recaptcha-manager.js +0 -89
- package/dist/src/recaptcha-manager/recaptcha-manager.js.map +0 -1
- package/dist/src/recent-donations.d.ts +0 -15
- package/dist/src/recent-donations.js +0 -64
- package/dist/src/recent-donations.js.map +0 -1
- package/dist/src/recent-subscriptions.d.ts +0 -0
- package/dist/src/recent-subscriptions.js +0 -2
- package/dist/src/recent-subscriptions.js.map +0 -1
- package/dist/src/subscription-model.d.ts +0 -0
- package/dist/src/subscription-model.js +0 -2
- package/dist/src/subscription-model.js.map +0 -1
- package/dist/src/subscription-summary.d.ts +0 -12
- package/dist/src/subscription-summary.js +0 -118
- package/dist/src/subscription-summary.js.map +0 -1
- package/dist/src/util/promisedSleep.d.ts +0 -1
- package/dist/src/util/promisedSleep.js +0 -4
- package/dist/src/util/promisedSleep.js.map +0 -1
- package/dist/test/helpers/fillInContactForm.d.ts +0 -2
- package/dist/test/helpers/fillInContactForm.js +0 -20
- package/dist/test/helpers/fillInContactForm.js.map +0 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.d.ts +0 -7
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js +0 -10
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js.map +0 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.d.ts +0 -15
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js +0 -33
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +0 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.d.ts +0 -9
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js +0 -16
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js.map +0 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.d.ts +0 -15
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js +0 -31
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js.map +0 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.d.ts +0 -9
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js +0 -18
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js.map +0 -1
- package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.d.ts +0 -30
- package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js +0 -30
- package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +0 -1
- package/dist/test/mocks/mock-braintree-manager.d.ts +0 -45
- package/dist/test/mocks/mock-braintree-manager.js +0 -72
- package/dist/test/mocks/mock-braintree-manager.js.map +0 -1
- package/dist/test/mocks/mock-donation-info.d.ts +0 -4
- package/dist/test/mocks/mock-donation-info.js +0 -11
- package/dist/test/mocks/mock-donation-info.js.map +0 -1
- package/dist/test/mocks/mock-endpoint-manager.d.ts +0 -12
- package/dist/test/mocks/mock-endpoint-manager.js +0 -20
- package/dist/test/mocks/mock-endpoint-manager.js.map +0 -1
- package/dist/test/mocks/mock-hosted-fields-config.d.ts +0 -4
- package/dist/test/mocks/mock-hosted-fields-config.js +0 -38
- package/dist/test/mocks/mock-hosted-fields-config.js.map +0 -1
- package/dist/test/mocks/mock-hosted-fields-container.d.ts +0 -13
- package/dist/test/mocks/mock-hosted-fields-container.js +0 -28
- package/dist/test/mocks/mock-hosted-fields-container.js.map +0 -1
- package/dist/test/mocks/mock-lazy-loader.d.ts +0 -15
- package/dist/test/mocks/mock-lazy-loader.js +0 -21
- package/dist/test/mocks/mock-lazy-loader.js.map +0 -1
- package/dist/test/mocks/mock-modal-manager.d.ts +0 -17
- package/dist/test/mocks/mock-modal-manager.js +0 -27
- package/dist/test/mocks/mock-modal-manager.js.map +0 -1
- package/dist/test/mocks/mock-payment-clients.d.ts +0 -29
- package/dist/test/mocks/mock-payment-clients.js +0 -89
- package/dist/test/mocks/mock-payment-clients.js.map +0 -1
- package/dist/test/mocks/mock-paypal-button-renderer.d.ts +0 -5
- package/dist/test/mocks/mock-paypal-button-renderer.js +0 -7
- package/dist/test/mocks/mock-paypal-button-renderer.js.map +0 -1
- package/dist/test/mocks/mock-recaptcha-manager.d.ts +0 -7
- package/dist/test/mocks/mock-recaptcha-manager.js +0 -15
- package/dist/test/mocks/mock-recaptcha-manager.js.map +0 -1
- package/dist/test/mocks/models/mock-billing-info.d.ts +0 -2
- package/dist/test/mocks/models/mock-billing-info.js +0 -10
- package/dist/test/mocks/models/mock-billing-info.js.map +0 -1
- package/dist/test/mocks/models/mock-custom-fields.d.ts +0 -2
- package/dist/test/mocks/models/mock-custom-fields.js +0 -7
- package/dist/test/mocks/models/mock-custom-fields.js.map +0 -1
- package/dist/test/mocks/models/mock-customer-info.d.ts +0 -2
- package/dist/test/mocks/models/mock-customer-info.js +0 -7
- package/dist/test/mocks/models/mock-customer-info.js.map +0 -1
- package/dist/test/mocks/models/mock-donation-request.d.ts +0 -2
- package/dist/test/mocks/models/mock-donation-request.js +0 -19
- package/dist/test/mocks/models/mock-donation-request.js.map +0 -1
- package/dist/test/mocks/models/mock-success-response.d.ts +0 -2
- package/dist/test/mocks/models/mock-success-response.js +0 -14
- package/dist/test/mocks/models/mock-success-response.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-applepay-client.d.ts +0 -21
- package/dist/test/mocks/payment-clients/mock-applepay-client.js +0 -73
- package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-applepay-payment.d.ts +0 -6
- package/dist/test/mocks/payment-clients/mock-applepay-payment.js +0 -43
- package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.d.ts +0 -22
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js +0 -36
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-applepay-session.d.ts +0 -30
- package/dist/test/mocks/payment-clients/mock-applepay-session.js +0 -53
- package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.d.ts +0 -10
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js +0 -13
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.d.ts +0 -22
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js +0 -35
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-braintree-client.d.ts +0 -14
- package/dist/test/mocks/payment-clients/mock-braintree-client.js +0 -20
- package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-data-collector.d.ts +0 -11
- package/dist/test/mocks/payment-clients/mock-data-collector.js +0 -18
- package/dist/test/mocks/payment-clients/mock-data-collector.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-client.d.ts +0 -22
- package/dist/test/mocks/payment-clients/mock-googlepay-client.js +0 -43
- package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-library.d.ts +0 -10
- package/dist/test/mocks/payment-clients/mock-googlepay-library.js +0 -23
- package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-grecaptcha.d.ts +0 -23
- package/dist/test/mocks/payment-clients/mock-grecaptcha.js +0 -62
- package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.d.ts +0 -33
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.js +0 -55
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.d.ts +0 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js +0 -51
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.d.ts +0 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js +0 -14
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-paypal-client.d.ts +0 -23
- package/dist/test/mocks/payment-clients/mock-paypal-client.js +0 -63
- package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-paypal-library.d.ts +0 -4
- package/dist/test/mocks/payment-clients/mock-paypal-library.js +0 -10
- package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +0 -1
- package/dist/test/mocks/payment-clients/mock-venmo-client.d.ts +0 -22
- package/dist/test/mocks/payment-clients/mock-venmo-client.js +0 -37
- package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.d.ts +0 -10
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js +0 -15
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.d.ts +0 -9
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js +0 -20
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.d.ts +0 -18
- package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js +0 -42
- package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.d.ts +0 -8
- package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js +0 -17
- package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.d.ts +0 -28
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js +0 -53
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.d.ts +0 -11
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js +0 -38
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.d.ts +0 -12
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js +0 -16
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +0 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.d.ts +0 -7
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js +0 -23
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +0 -1
- package/dist/test/mocks/payment-providers/mock-payment-providers.d.ts +0 -21
- package/dist/test/mocks/payment-providers/mock-payment-providers.js +0 -47
- package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +0 -1
- package/dist/test/tests/braintree-manager.test.d.ts +0 -1
- package/dist/test/tests/braintree-manager.test.js +0 -166
- package/dist/test/tests/braintree-manager.test.js.map +0 -1
- package/dist/test/tests/donation-form-controller.test.d.ts +0 -1
- package/dist/test/tests/donation-form-controller.test.js +0 -187
- package/dist/test/tests/donation-form-controller.test.js.map +0 -1
- package/dist/test/tests/donation-form.test.d.ts +0 -1
- package/dist/test/tests/donation-form.test.js +0 -102
- package/dist/test/tests/donation-form.test.js.map +0 -1
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.d.ts +0 -1
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +0 -216
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +0 -1
- package/dist/test/tests/form-elements/donation-summary.test.d.ts +0 -1
- package/dist/test/tests/form-elements/donation-summary.test.js +0 -33
- package/dist/test/tests/form-elements/donation-summary.test.js.map +0 -1
- package/dist/test/tests/form-elements/payment-selector.test.d.ts +0 -1
- package/dist/test/tests/form-elements/payment-selector.test.js +0 -60
- package/dist/test/tests/form-elements/payment-selector.test.js.map +0 -1
- package/dist/test/tests/modals/error-modal-content.test.d.ts +0 -1
- package/dist/test/tests/modals/error-modal-content.test.js +0 -15
- package/dist/test/tests/modals/error-modal-content.test.js.map +0 -1
- package/dist/test/tests/modals/upsell-modal-content.test.d.ts +0 -1
- package/dist/test/tests/modals/upsell-modal-content.test.js +0 -164
- package/dist/test/tests/modals/upsell-modal-content.test.js.map +0 -1
- package/dist/test/tests/models/donation-payment-info.test.d.ts +0 -1
- package/dist/test/tests/models/donation-payment-info.test.js +0 -75
- package/dist/test/tests/models/donation-payment-info.test.js.map +0 -1
- package/dist/test/tests/payment-clients.test.d.ts +0 -1
- package/dist/test/tests/payment-clients.test.js +0 -131
- package/dist/test/tests/payment-clients.test.js.map +0 -1
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js +0 -161
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +0 -1
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js +0 -37
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +0 -1
- package/dist/test/tests/payment-providers/applepay.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/applepay.test.js +0 -79
- package/dist/test/tests/payment-providers/applepay.test.js.map +0 -1
- package/dist/test/tests/payment-providers/creditcard.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/creditcard.test.js +0 -191
- package/dist/test/tests/payment-providers/creditcard.test.js.map +0 -1
- package/dist/test/tests/payment-providers/googlepay.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/googlepay.test.js +0 -49
- package/dist/test/tests/payment-providers/googlepay.test.js.map +0 -1
- package/dist/test/tests/payment-providers/payment-providers.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/payment-providers.test.js +0 -39
- package/dist/test/tests/payment-providers/payment-providers.test.js.map +0 -1
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.js +0 -163
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +0 -1
- package/dist/test/tests/payment-providers/paypal.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/paypal.test.js +0 -39
- package/dist/test/tests/payment-providers/paypal.test.js.map +0 -1
- package/dist/test/tests/payment-providers/venmo.test.d.ts +0 -1
- package/dist/test/tests/payment-providers/venmo.test.js +0 -78
- package/dist/test/tests/payment-providers/venmo.test.js.map +0 -1
- package/dist/test/tests/recaptcha-manager.test.d.ts +0 -1
- package/dist/test/tests/recaptcha-manager.test.js +0 -63
- package/dist/test/tests/recaptcha-manager.test.js.map +0 -1
- package/src/@types/analytics-handler/index.d.ts +0 -8
- package/src/@types/braintree-web/LICENSE +0 -21
- package/src/@types/braintree-web/README.md +0 -16
- package/src/@types/braintree-web/index.d.ts +0 -93
- package/src/@types/braintree-web/modules/american-express.d.ts +0 -50
- package/src/@types/braintree-web/modules/apple-pay.d.ts +0 -213
- package/src/@types/braintree-web/modules/client.d.ts +0 -103
- package/src/@types/braintree-web/modules/core.d.ts +0 -34
- package/src/@types/braintree-web/modules/data-collector.d.ts +0 -13
- package/src/@types/braintree-web/modules/google-payment.d.ts +0 -269
- package/src/@types/braintree-web/modules/hosted-fields.d.ts +0 -366
- package/src/@types/braintree-web/modules/paypal-checkout.d.ts +0 -262
- package/src/@types/braintree-web/modules/paypal.d.ts +0 -177
- package/src/@types/braintree-web/modules/three-d-secure.d.ts +0 -141
- package/src/@types/braintree-web/modules/unionpay.d.ts +0 -224
- package/src/@types/braintree-web/modules/us-bank-account.d.ts +0 -81
- package/src/@types/braintree-web/modules/venmo.d.ts +0 -110
- package/src/@types/braintree-web/package.json +0 -64
- package/src/@types/paypal-checkout-components/LICENSE +0 -21
- package/src/@types/paypal-checkout-components/README.md +0 -16
- package/src/@types/paypal-checkout-components/index.d.ts +0 -67
- package/src/@types/paypal-checkout-components/modules/button.d.ts +0 -50
- package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +0 -244
- package/src/@types/paypal-checkout-components/modules/configuration.d.ts +0 -114
- package/src/@types/paypal-checkout-components/package.json +0 -58
- package/src/braintree-manager/braintree-interfaces.ts +0 -172
- package/src/braintree-manager/braintree-manager.ts +0 -281
- package/src/braintree-manager/payment-clients.ts +0 -147
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +0 -13
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +0 -8
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +0 -10
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +0 -119
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +0 -21
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +0 -98
- package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +0 -21
- package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +0 -130
- package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +0 -19
- package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +0 -85
- package/src/braintree-manager/payment-providers/google-pay-interface.ts +0 -8
- package/src/braintree-manager/payment-providers/google-pay.ts +0 -59
- package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +0 -218
- package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +0 -13
- package/src/braintree-manager/payment-providers/paypal/paypal.ts +0 -78
- package/src/braintree-manager/payment-providers/venmo-interface.ts +0 -8
- package/src/braintree-manager/payment-providers/venmo.ts +0 -67
- package/src/braintree-manager/payment-providers-interface.ts +0 -25
- package/src/braintree-manager/payment-providers.ts +0 -147
- package/src/cancel-plan.ts +0 -84
- package/src/donation-date.ts +0 -89
- package/src/donation-form-controller.ts +0 -623
- package/src/donation-form-error.ts +0 -6
- package/src/donation-form.ts +0 -572
- package/src/edit-subscription.ts +0 -119
- package/src/form-elements/badged-input.ts +0 -109
- package/src/form-elements/contact-form/autocomplete-field-options.ts +0 -63
- package/src/form-elements/contact-form/contact-form.ts +0 -434
- package/src/form-elements/contact-form/countries.ts +0 -252
- package/src/form-elements/header/donation-form-header.ts +0 -98
- package/src/form-elements/header/donation-summary.ts +0 -61
- package/src/form-elements/payment-selector.ts +0 -342
- package/src/form-elements/total-amount.ts +0 -46
- package/src/modals/confirm-donation-modal-content.ts +0 -170
- package/src/modals/error-modal-content.ts +0 -48
- package/src/modals/upsell-modal-content.ts +0 -284
- package/src/models/subscription-summary.ts +0 -56
- package/src/payment-flow-handlers/donation-flow-modal-manager.ts +0 -440
- package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +0 -109
- package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +0 -232
- package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +0 -111
- package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +0 -333
- package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +0 -119
- package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +0 -127
- package/src/payment-flow-handlers/payment-flow-handlers.ts +0 -219
- package/src/payment-method.ts +0 -99
- package/src/plan-amount.ts +0 -79
- package/src/recaptcha-manager/recaptcha-manager.ts +0 -123
- package/src/recent-donations.ts +0 -65
- package/src/subscription-summary.ts +0 -111
- package/src/util/promisedSleep.ts +0 -3
package/README.md
CHANGED
|
@@ -1,115 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
@@ -1,144 +1,17 @@
|
|
2
|
+
 [](https://codecov.io/gh/internetarchive/iaux-monthly-giving-circle)
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
# \<iaux-monthly-giving-circle>
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
The Internet Archive monthly donation management, web components.
|
|
6
7
|
|
|
7
8
|
## Installation
|
|
8
9
|
```bash
|
|
9
|
-
|
|
10
|
+
npm i @internetarchive/donation-monthly-portal
|
|
10
11
|
```
|
|
11
12
|
|
|
12
13
|
## Usage
|
|
13
14
|
```html
|
|
14
|
-
|
|
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
|
-
|
|
19
|
+
npm i && npm start
|
|
115
20
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
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 {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
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,
|
|
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"]}
|