@internetarchive/elements 1.1.7-webdev-9378.0 → 1.1.7-webdev-9054.1

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 (207) hide show
  1. package/dist/src/elements/ia-donation-form/analytics.d.ts +12 -0
  2. package/dist/src/elements/ia-donation-form/analytics.d.ts.map +1 -0
  3. package/dist/src/elements/ia-donation-form/analytics.js +2 -0
  4. package/dist/src/elements/ia-donation-form/analytics.js.map +1 -0
  5. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts +79 -0
  6. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.d.ts.map +1 -0
  7. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js +2 -0
  8. package/dist/src/elements/ia-donation-form/braintree/braintree-manager-interface.js.map +1 -0
  9. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts +73 -0
  10. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.d.ts.map +1 -0
  11. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js +126 -0
  12. package/dist/src/elements/ia-donation-form/braintree/braintree-manager.js.map +1 -0
  13. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts +10 -0
  14. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.d.ts.map +1 -0
  15. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js +9 -0
  16. package/dist/src/elements/ia-donation-form/braintree/hosting-environment.js.map +1 -0
  17. package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts +47 -0
  18. package/dist/src/elements/ia-donation-form/braintree/payment-clients.d.ts.map +1 -0
  19. package/dist/src/elements/ia-donation-form/braintree/payment-clients.js +104 -0
  20. package/dist/src/elements/ia-donation-form/braintree/payment-clients.js.map +1 -0
  21. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts +11 -0
  22. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.d.ts.map +1 -0
  23. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js +2 -0
  24. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-interface.js.map +1 -0
  25. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +20 -0
  26. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts.map +1 -0
  27. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js +2 -0
  28. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -0
  29. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +21 -0
  30. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.d.ts.map +1 -0
  31. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js +83 -0
  32. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -0
  33. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts +11 -0
  34. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.d.ts.map +1 -0
  35. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js +13 -0
  36. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -0
  37. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts +27 -0
  38. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.d.ts.map +1 -0
  39. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js +67 -0
  40. package/dist/src/elements/ia-donation-form/braintree/payment-providers/apple-pay/apple-pay.js.map +1 -0
  41. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts +19 -0
  42. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.d.ts.map +1 -0
  43. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js +2 -0
  44. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card-interface.js.map +1 -0
  45. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts +42 -0
  46. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.d.ts.map +1 -0
  47. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js +99 -0
  48. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/credit-card.js.map +1 -0
  49. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts +14 -0
  50. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.d.ts.map +1 -0
  51. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js +9 -0
  52. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-configuration.js.map +1 -0
  53. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts +40 -0
  54. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.d.ts.map +1 -0
  55. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js +58 -0
  56. package/dist/src/elements/ia-donation-form/braintree/payment-providers/credit-card/hosted-field-container.js.map +1 -0
  57. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts +8 -0
  58. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.d.ts.map +1 -0
  59. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js +2 -0
  60. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay-interface.js.map +1 -0
  61. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts +19 -0
  62. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.d.ts.map +1 -0
  63. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js +45 -0
  64. package/dist/src/elements/ia-donation-form/braintree/payment-providers/google-pay/google-pay.js.map +1 -0
  65. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts +57 -0
  66. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.d.ts.map +1 -0
  67. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js +44 -0
  68. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-button-datasource.js.map +1 -0
  69. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts +14 -0
  70. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.d.ts.map +1 -0
  71. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js +2 -0
  72. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal-interface.js.map +1 -0
  73. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts +27 -0
  74. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.d.ts.map +1 -0
  75. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js +44 -0
  76. package/dist/src/elements/ia-donation-form/braintree/payment-providers/paypal/paypal.js.map +1 -0
  77. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts +8 -0
  78. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.d.ts.map +1 -0
  79. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js +2 -0
  80. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-interface.js.map +1 -0
  81. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts +44 -0
  82. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.d.ts.map +1 -0
  83. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js +65 -0
  84. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo-restoration-state-handler.js.map +1 -0
  85. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts +25 -0
  86. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.d.ts.map +1 -0
  87. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js +42 -0
  88. package/dist/src/elements/ia-donation-form/braintree/payment-providers/venmo/venmo.js.map +1 -0
  89. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts +18 -0
  90. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.d.ts.map +1 -0
  91. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js +2 -0
  92. package/dist/src/elements/ia-donation-form/braintree/payment-providers-interface.js.map +1 -0
  93. package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts +42 -0
  94. package/dist/src/elements/ia-donation-form/braintree/payment-providers.d.ts.map +1 -0
  95. package/dist/src/elements/ia-donation-form/braintree/payment-providers.js +99 -0
  96. package/dist/src/elements/ia-donation-form/braintree/payment-providers.js.map +1 -0
  97. package/dist/src/elements/ia-donation-form/donation-form-error.d.ts +5 -0
  98. package/dist/src/elements/ia-donation-form/donation-form-error.d.ts.map +1 -0
  99. package/dist/src/elements/ia-donation-form/donation-form-error.js +8 -0
  100. package/dist/src/elements/ia-donation-form/donation-form-error.js.map +1 -0
  101. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts +118 -0
  102. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.d.ts.map +1 -0
  103. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js +194 -0
  104. package/dist/src/elements/ia-donation-form/flow-handlers/donation-flow-modal-manager.js.map +1 -0
  105. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts +24 -0
  106. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.d.ts.map +1 -0
  107. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js +70 -0
  108. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/apple-pay-flow-handler.js.map +1 -0
  109. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts +44 -0
  110. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.d.ts.map +1 -0
  111. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js +116 -0
  112. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/credit-card-flow-handler.js.map +1 -0
  113. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts +24 -0
  114. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.d.ts.map +1 -0
  115. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js +74 -0
  116. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/google-pay-flow-handler.js.map +1 -0
  117. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts +47 -0
  118. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.d.ts.map +1 -0
  119. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js +204 -0
  120. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/paypal-flow-handler.js.map +1 -0
  121. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts +30 -0
  122. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.d.ts.map +1 -0
  123. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js +77 -0
  124. package/dist/src/elements/ia-donation-form/flow-handlers/handlers/venmo-flow-handler.js.map +1 -0
  125. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts +80 -0
  126. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.d.ts.map +1 -0
  127. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js +72 -0
  128. package/dist/src/elements/ia-donation-form/flow-handlers/payment-flow-handlers.js.map +1 -0
  129. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts +2 -0
  130. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.d.ts.map +1 -0
  131. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js +2 -0
  132. package/dist/src/elements/ia-donation-form/form-elements/contact-form/autocomplete-field-options.js.map +1 -0
  133. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts +3 -0
  134. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.d.ts.map +1 -0
  135. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js +254 -0
  136. package/dist/src/elements/ia-donation-form/form-elements/contact-form/countries.js.map +1 -0
  137. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts +68 -0
  138. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.d.ts.map +1 -0
  139. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js +483 -0
  140. package/dist/src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.js.map +1 -0
  141. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts +26 -0
  142. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.d.ts.map +1 -0
  143. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js +163 -0
  144. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-badged-input.js.map +1 -0
  145. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.d.ts +39 -0
  146. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.d.ts.map +1 -0
  147. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.js +212 -0
  148. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.js.map +1 -0
  149. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts +118 -0
  150. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.d.ts.map +1 -0
  151. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js +774 -0
  152. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.js.map +1 -0
  153. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts +31 -0
  154. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.d.ts.map +1 -0
  155. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js +93 -0
  156. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-header.js.map +1 -0
  157. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts +33 -0
  158. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.d.ts.map +1 -0
  159. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js +380 -0
  160. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-payment-selector.js.map +1 -0
  161. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts +11 -0
  162. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.d.ts.map +1 -0
  163. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js +59 -0
  164. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-summary.js.map +1 -0
  165. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts +10 -0
  166. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.d.ts.map +1 -0
  167. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js +75 -0
  168. package/dist/src/elements/ia-donation-form/form-elements/ia-donation-total-amount.js.map +1 -0
  169. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts +111 -0
  170. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.d.ts.map +1 -0
  171. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js +522 -0
  172. package/dist/src/elements/ia-donation-form/ia-donation-form-controller.js.map +1 -0
  173. package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts +95 -0
  174. package/dist/src/elements/ia-donation-form/ia-donation-form.d.ts.map +1 -0
  175. package/dist/src/elements/ia-donation-form/ia-donation-form.js +522 -0
  176. package/dist/src/elements/ia-donation-form/ia-donation-form.js.map +1 -0
  177. package/dist/src/elements/ia-donation-form/icons/apple-pay.svg +22 -0
  178. package/dist/src/elements/ia-donation-form/icons/calendar.svg +12 -0
  179. package/dist/src/elements/ia-donation-form/icons/credit-card.svg +7 -0
  180. package/dist/src/elements/ia-donation-form/icons/google-pay.svg +38 -0
  181. package/dist/src/elements/ia-donation-form/icons/lock.svg +6 -0
  182. package/dist/src/elements/ia-donation-form/icons/paypal.svg +39 -0
  183. package/dist/src/elements/ia-donation-form/icons/venmo.svg +9 -0
  184. package/dist/src/elements/ia-donation-form/icons.d.ts +9 -0
  185. package/dist/src/elements/ia-donation-form/icons.d.ts.map +1 -0
  186. package/dist/src/elements/ia-donation-form/icons.js +27 -0
  187. package/dist/src/elements/ia-donation-form/icons.js.map +1 -0
  188. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts +27 -0
  189. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.d.ts.map +1 -0
  190. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js +195 -0
  191. package/dist/src/elements/ia-donation-form/modals/ia-donation-confirm-modal.js.map +1 -0
  192. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts +7 -0
  193. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.d.ts.map +1 -0
  194. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js +63 -0
  195. package/dist/src/elements/ia-donation-form/modals/ia-donation-error-modal-content.js.map +1 -0
  196. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts +28 -0
  197. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.d.ts.map +1 -0
  198. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js +313 -0
  199. package/dist/src/elements/ia-donation-form/modals/ia-donation-upsell-modal-content.js.map +1 -0
  200. package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts +36 -0
  201. package/dist/src/elements/ia-donation-form/recaptcha-manager.d.ts.map +1 -0
  202. package/dist/src/elements/ia-donation-form/recaptcha-manager.js +76 -0
  203. package/dist/src/elements/ia-donation-form/recaptcha-manager.js.map +1 -0
  204. package/dist/src/elements/ia-image-viewer/image-viewer-gestures.d.ts.map +1 -1
  205. package/dist/src/elements/ia-image-viewer/image-viewer-gestures.js +2 -4
  206. package/dist/src/elements/ia-image-viewer/image-viewer-gestures.js.map +1 -1
  207. package/package.json +12 -1
@@ -0,0 +1,163 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement, nothing, } from 'lit';
3
+ import { property } from 'lit/decorators.js';
4
+ import { customElement } from '../../../util/custom-element.js';
5
+ import themeStyles from '../../../themes/theme-styles.js';
6
+ /** Whether a hidden icon or required marker keeps its space, so neighbouring fields still line up. */
7
+ export const SpacerOption = {
8
+ LeaveSpace: 'leave-space',
9
+ CompressSpace: 'compress-space',
10
+ };
11
+ /**
12
+ * A bordered field wrapper with an icon on the left and a required marker,
13
+ * which turns red on error. The field itself is slotted in, so it works for
14
+ * plain inputs, selects and Braintree's hosted field containers alike.
15
+ */
16
+ let IADonationBadgedInput = class IADonationBadgedInput extends LitElement {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.error = false;
20
+ this.required = false;
21
+ /** When there's no icon, whether its column stays or collapses */
22
+ this.iconSpaceOption = SpacerOption.LeaveSpace;
23
+ /** When the field isn't required, whether the marker's space stays or collapses */
24
+ this.requiredIndicatorSpaceOption = SpacerOption.LeaveSpace;
25
+ }
26
+ render() {
27
+ return html `
28
+ <div
29
+ class="input-wrapper ${this.errorClass} ${this.iconSpaceOptionClass}"
30
+ >
31
+ <div class="icon-container">${this.icon}</div>
32
+ <div class="required-indicator ${this.requiredIndicatorSpaceOption}">
33
+ ${this.required ? html `*` : nothing}
34
+ </div>
35
+
36
+ <slot></slot>
37
+ </div>
38
+ `;
39
+ }
40
+ get errorClass() {
41
+ return this.error ? 'error' : '';
42
+ }
43
+ get iconSpaceOptionClass() {
44
+ return this.iconSpaceOption === SpacerOption.CompressSpace
45
+ ? 'compress-space'
46
+ : '';
47
+ }
48
+ static get styles() {
49
+ return [
50
+ themeStyles,
51
+ css `
52
+ :host {
53
+ --donation-badged-input-base-font-size--: var(
54
+ --ia-donation-form-base-font-size,
55
+ 10px
56
+ );
57
+ --donation-badged-input-border--: var(
58
+ --ia-donation-form-input-border,
59
+ 1px solid #d9d9d9
60
+ );
61
+ --donation-badged-input-error-color--: var(
62
+ --ia-donation-badged-input-error-color,
63
+ var(--color-danger)
64
+ );
65
+ --donation-badged-input-icon-size--: var(
66
+ --ia-donation-badged-input-icon-size,
67
+ calc(var(--donation-badged-input-base-font-size--) * 2)
68
+ );
69
+ --donation-badged-input-icon-color--: var(
70
+ --ia-donation-badged-input-icon-color,
71
+ #2c2c2c
72
+ );
73
+ --donation-badged-input-icon-spacer-width--: var(
74
+ --ia-donation-badged-input-icon-spacer-width,
75
+ calc(var(--donation-badged-input-base-font-size--) * 3)
76
+ );
77
+ --donation-badged-input-no-icon-spacer-width--: var(
78
+ --ia-donation-badged-input-no-icon-spacer-width,
79
+ var(--donation-badged-input-base-font-size--)
80
+ );
81
+ --donation-badged-input-height--: var(
82
+ --ia-donation-badged-input-height,
83
+ calc(var(--donation-badged-input-base-font-size--) * 3)
84
+ );
85
+ --donation-badged-input-required-color--: var(
86
+ --ia-donation-badged-input-required-color,
87
+ var(--color-danger)
88
+ );
89
+ --donation-badged-input-required-margin--: var(
90
+ --ia-donation-badged-input-required-margin,
91
+ 0 0.25rem 0 0
92
+ );
93
+ --donation-badged-input-required-font-size--: var(
94
+ --ia-donation-badged-input-required-font-size,
95
+ calc(var(--donation-badged-input-base-font-size--) * 2)
96
+ );
97
+ }
98
+
99
+ .input-wrapper {
100
+ border: var(--donation-badged-input-border--);
101
+ height: var(--donation-badged-input-height--);
102
+ display: flex;
103
+ align-items: center;
104
+ }
105
+
106
+ .input-wrapper.error {
107
+ box-shadow: inset 0px 0px 0px 1px
108
+ var(--donation-badged-input-error-color--);
109
+ border-color: var(--donation-badged-input-error-color--);
110
+ }
111
+
112
+ .input-wrapper.compress-space .icon-container {
113
+ width: var(--donation-badged-input-no-icon-spacer-width--);
114
+ }
115
+
116
+ .icon-container {
117
+ width: var(--donation-badged-input-icon-spacer-width--);
118
+ display: flex;
119
+ align-items: center;
120
+ justify-content: center;
121
+ flex-shrink: 0;
122
+ }
123
+
124
+ /* Masked glyphs take their shape from the mask and their colour from here */
125
+ .icon-container .ia-icon {
126
+ width: var(--donation-badged-input-icon-size--);
127
+ height: var(--donation-badged-input-icon-size--);
128
+ background-color: var(--donation-badged-input-icon-color--);
129
+ }
130
+
131
+ .required-indicator {
132
+ color: var(--donation-badged-input-required-color--);
133
+ font-size: var(--donation-badged-input-required-font-size--);
134
+ margin: var(--donation-badged-input-required-margin--);
135
+ }
136
+
137
+ .required-indicator.leave-space {
138
+ width: 0.5em;
139
+ }
140
+ `,
141
+ ];
142
+ }
143
+ };
144
+ __decorate([
145
+ property({ type: Boolean })
146
+ ], IADonationBadgedInput.prototype, "error", void 0);
147
+ __decorate([
148
+ property({ type: Object })
149
+ ], IADonationBadgedInput.prototype, "icon", void 0);
150
+ __decorate([
151
+ property({ type: Boolean })
152
+ ], IADonationBadgedInput.prototype, "required", void 0);
153
+ __decorate([
154
+ property({ type: String })
155
+ ], IADonationBadgedInput.prototype, "iconSpaceOption", void 0);
156
+ __decorate([
157
+ property({ type: String })
158
+ ], IADonationBadgedInput.prototype, "requiredIndicatorSpaceOption", void 0);
159
+ IADonationBadgedInput = __decorate([
160
+ customElement('ia-donation-badged-input')
161
+ ], IADonationBadgedInput);
162
+ export { IADonationBadgedInput };
163
+ //# sourceMappingURL=ia-donation-badged-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-donation-badged-input.js","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/form-elements/ia-donation-badged-input.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,UAAU,EACV,OAAO,GAGR,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD,sGAAsG;AACtG,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,aAAa;IACzB,aAAa,EAAE,gBAAgB;CACvB,CAAC;AAIX;;;;GAIG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,UAAU;IAA9C;;QACwB,UAAK,GAAG,KAAK,CAAC;QAId,aAAQ,GAAG,KAAK,CAAC;QAE9C,kEAAkE;QACtC,oBAAe,GACzC,YAAY,CAAC,UAAU,CAAC;QAE1B,mFAAmF;QACvD,iCAA4B,GACtD,YAAY,CAAC,UAAU,CAAC;IA0H5B,CAAC;IAxHC,MAAM;QACJ,OAAO,IAAI,CAAA;;+BAEgB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB;;sCAErC,IAAI,CAAC,IAAI;yCACN,IAAI,CAAC,4BAA4B;YAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,CAAC,CAAC,CAAC,OAAO;;;;;KAKxC,CAAC;IACJ,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,eAAe,KAAK,YAAY,CAAC,aAAa;YACxD,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO;YACL,WAAW;YACX,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyFF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAtI8B;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDAAe;AAEf;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAAuB;AAErB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;uDAAkB;AAGlB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DACD;AAGE;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2EACD;AAbf,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CAuIjC","sourcesContent":["import {\n css,\n html,\n LitElement,\n nothing,\n type CSSResultGroup,\n type TemplateResult,\n} from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\n\nimport themeStyles from '@src/themes/theme-styles';\n\n/** Whether a hidden icon or required marker keeps its space, so neighbouring fields still line up. */\nexport const SpacerOption = {\n LeaveSpace: 'leave-space',\n CompressSpace: 'compress-space',\n} as const;\n\nexport type SpacerOption = (typeof SpacerOption)[keyof typeof SpacerOption];\n\n/**\n * A bordered field wrapper with an icon on the left and a required marker,\n * which turns red on error. The field itself is slotted in, so it works for\n * plain inputs, selects and Braintree's hosted field containers alike.\n */\n@customElement('ia-donation-badged-input')\nexport class IADonationBadgedInput extends LitElement {\n @property({ type: Boolean }) error = false;\n\n @property({ type: Object }) icon?: TemplateResult;\n\n @property({ type: Boolean }) required = false;\n\n /** When there's no icon, whether its column stays or collapses */\n @property({ type: String }) iconSpaceOption: SpacerOption =\n SpacerOption.LeaveSpace;\n\n /** When the field isn't required, whether the marker's space stays or collapses */\n @property({ type: String }) requiredIndicatorSpaceOption: SpacerOption =\n SpacerOption.LeaveSpace;\n\n render(): TemplateResult {\n return html`\n <div\n class=\"input-wrapper ${this.errorClass} ${this.iconSpaceOptionClass}\"\n >\n <div class=\"icon-container\">${this.icon}</div>\n <div class=\"required-indicator ${this.requiredIndicatorSpaceOption}\">\n ${this.required ? html`*` : nothing}\n </div>\n\n <slot></slot>\n </div>\n `;\n }\n\n private get errorClass(): string {\n return this.error ? 'error' : '';\n }\n\n private get iconSpaceOptionClass(): string {\n return this.iconSpaceOption === SpacerOption.CompressSpace\n ? 'compress-space'\n : '';\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n :host {\n --donation-badged-input-base-font-size--: var(\n --ia-donation-form-base-font-size,\n 10px\n );\n --donation-badged-input-border--: var(\n --ia-donation-form-input-border,\n 1px solid #d9d9d9\n );\n --donation-badged-input-error-color--: var(\n --ia-donation-badged-input-error-color,\n var(--color-danger)\n );\n --donation-badged-input-icon-size--: var(\n --ia-donation-badged-input-icon-size,\n calc(var(--donation-badged-input-base-font-size--) * 2)\n );\n --donation-badged-input-icon-color--: var(\n --ia-donation-badged-input-icon-color,\n #2c2c2c\n );\n --donation-badged-input-icon-spacer-width--: var(\n --ia-donation-badged-input-icon-spacer-width,\n calc(var(--donation-badged-input-base-font-size--) * 3)\n );\n --donation-badged-input-no-icon-spacer-width--: var(\n --ia-donation-badged-input-no-icon-spacer-width,\n var(--donation-badged-input-base-font-size--)\n );\n --donation-badged-input-height--: var(\n --ia-donation-badged-input-height,\n calc(var(--donation-badged-input-base-font-size--) * 3)\n );\n --donation-badged-input-required-color--: var(\n --ia-donation-badged-input-required-color,\n var(--color-danger)\n );\n --donation-badged-input-required-margin--: var(\n --ia-donation-badged-input-required-margin,\n 0 0.25rem 0 0\n );\n --donation-badged-input-required-font-size--: var(\n --ia-donation-badged-input-required-font-size,\n calc(var(--donation-badged-input-base-font-size--) * 2)\n );\n }\n\n .input-wrapper {\n border: var(--donation-badged-input-border--);\n height: var(--donation-badged-input-height--);\n display: flex;\n align-items: center;\n }\n\n .input-wrapper.error {\n box-shadow: inset 0px 0px 0px 1px\n var(--donation-badged-input-error-color--);\n border-color: var(--donation-badged-input-error-color--);\n }\n\n .input-wrapper.compress-space .icon-container {\n width: var(--donation-badged-input-no-icon-spacer-width--);\n }\n\n .icon-container {\n width: var(--donation-badged-input-icon-spacer-width--);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n /* Masked glyphs take their shape from the mask and their colour from here */\n .icon-container .ia-icon {\n width: var(--donation-badged-input-icon-size--);\n height: var(--donation-badged-input-icon-size--);\n background-color: var(--donation-badged-input-icon-color--);\n }\n\n .required-indicator {\n color: var(--donation-badged-input-required-color--);\n font-size: var(--donation-badged-input-required-font-size--);\n margin: var(--donation-badged-input-required-margin--);\n }\n\n .required-indicator.leave-space {\n width: 0.5em;\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ import { type HostedFieldContainerInterface } from '../braintree/payment-providers/credit-card/hosted-field-container.js';
3
+ import './ia-donation-badged-input.js';
4
+ /**
5
+ * The Braintree hosted fields (card number, expiration, CVC) and their error
6
+ * message. It owns the containers Braintree renders into, the way
7
+ * `ia-donation-contact-form` owns its inputs.
8
+ *
9
+ * Braintree renders each real `<input>` inside a cross-origin iframe, so a
10
+ * `<label for>` can't point at it and the visible labels are text only. No
11
+ * placeholders are configured on the hosted fields either, so the label is
12
+ * the only text a donor sees.
13
+ *
14
+ * This renders into the light DOM, since Braintree's hosted fields don't work
15
+ * inside a shadow root. Its styles are a `<style>` block with every selector
16
+ * prefixed by the tag name.
17
+ */
18
+ export declare class IADonationCreditCardFields extends LitElement {
19
+ private numberField;
20
+ private expirationField;
21
+ private cvvField;
22
+ private errorMessageField;
23
+ get hostedFieldContainer(): HostedFieldContainerInterface;
24
+ render(): TemplateResult;
25
+ /** Light DOM, so Braintree can render its hosted fields */
26
+ createRenderRoot(): this;
27
+ /**
28
+ * The element renders into the light DOM, so instead of a `styles` block
29
+ * it writes its own `<style>` tag, with every selector prefixed by the tag
30
+ * name so nothing leaks onto the rest of the page.
31
+ */
32
+ private get getStyles();
33
+ }
34
+ declare global {
35
+ interface HTMLElementTagNameMap {
36
+ 'ia-donation-credit-card-fields': IADonationCreditCardFields;
37
+ }
38
+ }
39
+ //# sourceMappingURL=ia-donation-credit-card-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-donation-credit-card-fields.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAM5D,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,mEAAmE,CAAC;AAG3E,OAAO,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,qBACa,0BAA2B,SAAQ,UAAU;IACxB,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,eAAe,CAAkB;IAEhD,OAAO,CAAC,QAAQ,CAAkB;IAExB,OAAO,CAAC,iBAAiB,CAAkB;IAE9E,IAAI,oBAAoB,IAAI,6BAA6B,CAOxD;IAED,MAAM,IAAI,cAAc;IAmDxB,2DAA2D;IAC3D,gBAAgB,IAAI,IAAI;IAIxB;;;;OAIG;IACH,OAAO,KAAK,SAAS,GAsGpB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gCAAgC,EAAE,0BAA0B,CAAC;KAC9D;CACF"}
@@ -0,0 +1,212 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from 'lit';
3
+ import { query } from 'lit/decorators.js';
4
+ import { msg } from '@lit/localize';
5
+ import { customElement } from '../../../util/custom-element.js';
6
+ import { HostedFieldContainer, } from '../braintree/payment-providers/credit-card/hosted-field-container.js';
7
+ import { calendarIcon, creditCardIcon, lockIcon } from '../icons.js';
8
+ import { SpacerOption } from './ia-donation-badged-input.js';
9
+ import './ia-donation-badged-input.js';
10
+ /**
11
+ * The Braintree hosted fields (card number, expiration, CVC) and their error
12
+ * message. It owns the containers Braintree renders into, the way
13
+ * `ia-donation-contact-form` owns its inputs.
14
+ *
15
+ * Braintree renders each real `<input>` inside a cross-origin iframe, so a
16
+ * `<label for>` can't point at it and the visible labels are text only. No
17
+ * placeholders are configured on the hosted fields either, so the label is
18
+ * the only text a donor sees.
19
+ *
20
+ * This renders into the light DOM, since Braintree's hosted fields don't work
21
+ * inside a shadow root. Its styles are a `<style>` block with every selector
22
+ * prefixed by the tag name.
23
+ */
24
+ let IADonationCreditCardFields = class IADonationCreditCardFields extends LitElement {
25
+ get hostedFieldContainer() {
26
+ return new HostedFieldContainer({
27
+ number: this.numberField,
28
+ cvv: this.cvvField,
29
+ expirationDate: this.expirationField,
30
+ errorContainer: this.errorMessageField,
31
+ });
32
+ }
33
+ render() {
34
+ return html `
35
+ <div id="braintree-error-message"></div>
36
+ <div class="braintree-row">
37
+ <div class="field">
38
+ <span class="field-label"
39
+ >${msg('Card Number')}<span class="required-asterisk">
40
+ *</span
41
+ ></span
42
+ >
43
+ <ia-donation-badged-input
44
+ .icon=${creditCardIcon}
45
+ .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}
46
+ class="creditcard"
47
+ >
48
+ <div class="braintree-input" id="braintree-creditcard"></div>
49
+ </ia-donation-badged-input>
50
+ </div>
51
+ </div>
52
+ <div class="braintree-row expiration-cvv-row">
53
+ <div class="field">
54
+ <span class="field-label"
55
+ >${msg('Expiration (MM / YY)')}<span class="required-asterisk">
56
+ *</span
57
+ ></span
58
+ >
59
+ <ia-donation-badged-input
60
+ .icon=${calendarIcon}
61
+ .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}
62
+ class="expiration"
63
+ >
64
+ <div class="braintree-input" id="braintree-expiration"></div>
65
+ </ia-donation-badged-input>
66
+ </div>
67
+ <div class="field">
68
+ <span class="field-label"
69
+ >${msg('CVC')}<span class="required-asterisk"> *</span></span
70
+ >
71
+ <ia-donation-badged-input
72
+ .icon=${lockIcon}
73
+ .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}
74
+ class="cvv"
75
+ >
76
+ <div class="braintree-input" id="braintree-cvv"></div>
77
+ </ia-donation-badged-input>
78
+ </div>
79
+ </div>
80
+ ${this.getStyles}
81
+ `;
82
+ }
83
+ /** Light DOM, so Braintree can render its hosted fields */
84
+ createRenderRoot() {
85
+ return this;
86
+ }
87
+ /**
88
+ * The element renders into the light DOM, so instead of a `styles` block
89
+ * it writes its own `<style>` tag, with every selector prefixed by the tag
90
+ * name so nothing leaks onto the rest of the page.
91
+ */
92
+ get getStyles() {
93
+ return html `
94
+ <style>
95
+ ia-donation-credit-card-fields {
96
+ --donation-card-base-font-size--: var(
97
+ --ia-donation-form-base-font-size,
98
+ 10px
99
+ );
100
+ --donation-card-label-font-family--: var(
101
+ --ia-donation-field-label-font-family,
102
+ var(
103
+ --ia-theme-base-font-family,
104
+ 'Helvetica Neue',
105
+ Helvetica,
106
+ Arial,
107
+ sans-serif
108
+ )
109
+ );
110
+ --donation-card-label-font-size--: var(
111
+ --ia-donation-field-label-font-size,
112
+ calc(var(--donation-card-base-font-size--) * 1.4)
113
+ );
114
+ --donation-card-label-color--: var(
115
+ --ia-donation-field-label-color,
116
+ #2c2c2c
117
+ );
118
+ --donation-card-label-margin-bottom--: var(
119
+ --ia-donation-field-label-margin-bottom,
120
+ calc(var(--donation-card-base-font-size--) * 0.5)
121
+ );
122
+ --donation-card-row-gap--: var(
123
+ --ia-donation-field-row-gap,
124
+ calc(var(--donation-card-base-font-size--) * 0.5)
125
+ );
126
+ --donation-card-required-color--: var(
127
+ --ia-donation-badged-input-required-color,
128
+ var(--ia-theme-color-danger, #e51c23)
129
+ );
130
+ --donation-card-error-color--: var(--ia-theme-color-danger, #e51c23);
131
+ }
132
+
133
+ ia-donation-credit-card-fields .field-label {
134
+ display: block;
135
+ font-family: var(--donation-card-label-font-family--);
136
+ font-size: var(--donation-card-label-font-size--);
137
+ font-weight: bold;
138
+ color: var(--donation-card-label-color--);
139
+ margin-bottom: var(--donation-card-label-margin-bottom--);
140
+ }
141
+
142
+ ia-donation-credit-card-fields .required-asterisk {
143
+ color: var(--donation-card-required-color--);
144
+ }
145
+
146
+ /*
147
+ A grid, so a label that wraps to two lines in one column doesn't push
148
+ that column's input out of line with its sibling. Both labels share
149
+ row line 1 and both inputs share row line 2.
150
+ */
151
+ ia-donation-credit-card-fields .braintree-row {
152
+ display: grid;
153
+ grid-auto-flow: column;
154
+ grid-auto-columns: 1fr;
155
+ grid-template-rows: auto auto;
156
+ column-gap: var(--donation-card-row-gap--);
157
+ }
158
+
159
+ /*
160
+ The expiration column is wider than the CVC column so its
161
+ "Expiration (MM / YY)" label stays on one line. CVC's label has
162
+ room to spare.
163
+ */
164
+ ia-donation-credit-card-fields .braintree-row.expiration-cvv-row {
165
+ grid-template-columns:
166
+ calc(50% + var(--donation-card-base-font-size--) * 2.5)
167
+ calc(50% - var(--donation-card-base-font-size--) * 2.5);
168
+ }
169
+
170
+ ia-donation-credit-card-fields .braintree-row + .braintree-row {
171
+ margin-top: var(--donation-card-row-gap--);
172
+ }
173
+
174
+ ia-donation-credit-card-fields .field {
175
+ display: contents;
176
+ }
177
+
178
+ ia-donation-credit-card-fields ia-donation-badged-input {
179
+ width: 100%;
180
+ }
181
+
182
+ ia-donation-credit-card-fields .braintree-input {
183
+ width: 100%;
184
+ height: 100%;
185
+ }
186
+
187
+ ia-donation-credit-card-fields #braintree-error-message {
188
+ color: var(--donation-card-error-color--);
189
+ font-size: calc(var(--donation-card-base-font-size--) * 1.4);
190
+ margin-bottom: calc(var(--donation-card-base-font-size--) * 0.6);
191
+ }
192
+ </style>
193
+ `;
194
+ }
195
+ };
196
+ __decorate([
197
+ query('#braintree-creditcard')
198
+ ], IADonationCreditCardFields.prototype, "numberField", void 0);
199
+ __decorate([
200
+ query('#braintree-expiration')
201
+ ], IADonationCreditCardFields.prototype, "expirationField", void 0);
202
+ __decorate([
203
+ query('#braintree-cvv')
204
+ ], IADonationCreditCardFields.prototype, "cvvField", void 0);
205
+ __decorate([
206
+ query('#braintree-error-message')
207
+ ], IADonationCreditCardFields.prototype, "errorMessageField", void 0);
208
+ IADonationCreditCardFields = __decorate([
209
+ customElement('ia-donation-credit-card-fields')
210
+ ], IADonationCreditCardFields);
211
+ export { IADonationCreditCardFields };
212
+ //# sourceMappingURL=ia-donation-credit-card-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-donation-credit-card-fields.js","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/form-elements/ia-donation-credit-card-fields.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EACL,oBAAoB,GAErB,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,UAAU;IASxD,IAAI,oBAAoB;QACtB,OAAO,IAAI,oBAAoB,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,cAAc,EAAE,IAAI,CAAC,iBAAiB;SACvC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;eAKA,GAAG,CAAC,aAAa,CAAC;;;;;oBAKb,cAAc;4CACU,YAAY,CAAC,aAAa;;;;;;;;;;eAUvD,GAAG,CAAC,sBAAsB,CAAC;;;;;oBAKtB,YAAY;4CACY,YAAY,CAAC,aAAa;;;;;;;;eAQvD,GAAG,CAAC,KAAK,CAAC;;;oBAGL,QAAQ;4CACgB,YAAY,CAAC,aAAa;;;;;;;QAO9D,IAAI,CAAC,SAAS;KACjB,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,gBAAgB;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,IAAY,SAAS;QACnB,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoGV,CAAC;IACJ,CAAC;CACF,CAAA;AArLyC;IAAvC,KAAK,CAAC,uBAAuB,CAAC;+DAAsC;AAE7B;IAAvC,KAAK,CAAC,uBAAuB,CAAC;mEAA0C;AAExC;IAAhC,KAAK,CAAC,gBAAgB,CAAC;4DAAmC;AAEhB;IAA1C,KAAK,CAAC,0BAA0B,CAAC;qEAA4C;AAPnE,0BAA0B;IADtC,aAAa,CAAC,gCAAgC,CAAC;GACnC,0BAA0B,CAsLtC","sourcesContent":["import { html, LitElement, type TemplateResult } from 'lit';\nimport { query } from 'lit/decorators.js';\nimport { msg } from '@lit/localize';\n\nimport { customElement } from '@src/util/custom-element';\n\nimport {\n HostedFieldContainer,\n type HostedFieldContainerInterface,\n} from '../braintree/payment-providers/credit-card/hosted-field-container';\nimport { calendarIcon, creditCardIcon, lockIcon } from '../icons';\nimport { SpacerOption } from './ia-donation-badged-input';\nimport './ia-donation-badged-input';\n\n/**\n * The Braintree hosted fields (card number, expiration, CVC) and their error\n * message. It owns the containers Braintree renders into, the way\n * `ia-donation-contact-form` owns its inputs.\n *\n * Braintree renders each real `<input>` inside a cross-origin iframe, so a\n * `<label for>` can't point at it and the visible labels are text only. No\n * placeholders are configured on the hosted fields either, so the label is\n * the only text a donor sees.\n *\n * This renders into the light DOM, since Braintree's hosted fields don't work\n * inside a shadow root. Its styles are a `<style>` block with every selector\n * prefixed by the tag name.\n */\n@customElement('ia-donation-credit-card-fields')\nexport class IADonationCreditCardFields extends LitElement {\n @query('#braintree-creditcard') private numberField!: HTMLDivElement;\n\n @query('#braintree-expiration') private expirationField!: HTMLDivElement;\n\n @query('#braintree-cvv') private cvvField!: HTMLDivElement;\n\n @query('#braintree-error-message') private errorMessageField!: HTMLDivElement;\n\n get hostedFieldContainer(): HostedFieldContainerInterface {\n return new HostedFieldContainer({\n number: this.numberField,\n cvv: this.cvvField,\n expirationDate: this.expirationField,\n errorContainer: this.errorMessageField,\n });\n }\n\n render(): TemplateResult {\n return html`\n <div id=\"braintree-error-message\"></div>\n <div class=\"braintree-row\">\n <div class=\"field\">\n <span class=\"field-label\"\n >${msg('Card Number')}<span class=\"required-asterisk\">\n *</span\n ></span\n >\n <ia-donation-badged-input\n .icon=${creditCardIcon}\n .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}\n class=\"creditcard\"\n >\n <div class=\"braintree-input\" id=\"braintree-creditcard\"></div>\n </ia-donation-badged-input>\n </div>\n </div>\n <div class=\"braintree-row expiration-cvv-row\">\n <div class=\"field\">\n <span class=\"field-label\"\n >${msg('Expiration (MM / YY)')}<span class=\"required-asterisk\">\n *</span\n ></span\n >\n <ia-donation-badged-input\n .icon=${calendarIcon}\n .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}\n class=\"expiration\"\n >\n <div class=\"braintree-input\" id=\"braintree-expiration\"></div>\n </ia-donation-badged-input>\n </div>\n <div class=\"field\">\n <span class=\"field-label\"\n >${msg('CVC')}<span class=\"required-asterisk\"> *</span></span\n >\n <ia-donation-badged-input\n .icon=${lockIcon}\n .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}\n class=\"cvv\"\n >\n <div class=\"braintree-input\" id=\"braintree-cvv\"></div>\n </ia-donation-badged-input>\n </div>\n </div>\n ${this.getStyles}\n `;\n }\n\n /** Light DOM, so Braintree can render its hosted fields */\n createRenderRoot(): this {\n return this;\n }\n\n /**\n * The element renders into the light DOM, so instead of a `styles` block\n * it writes its own `<style>` tag, with every selector prefixed by the tag\n * name so nothing leaks onto the rest of the page.\n */\n private get getStyles(): TemplateResult {\n return html`\n <style>\n ia-donation-credit-card-fields {\n --donation-card-base-font-size--: var(\n --ia-donation-form-base-font-size,\n 10px\n );\n --donation-card-label-font-family--: var(\n --ia-donation-field-label-font-family,\n var(\n --ia-theme-base-font-family,\n 'Helvetica Neue',\n Helvetica,\n Arial,\n sans-serif\n )\n );\n --donation-card-label-font-size--: var(\n --ia-donation-field-label-font-size,\n calc(var(--donation-card-base-font-size--) * 1.4)\n );\n --donation-card-label-color--: var(\n --ia-donation-field-label-color,\n #2c2c2c\n );\n --donation-card-label-margin-bottom--: var(\n --ia-donation-field-label-margin-bottom,\n calc(var(--donation-card-base-font-size--) * 0.5)\n );\n --donation-card-row-gap--: var(\n --ia-donation-field-row-gap,\n calc(var(--donation-card-base-font-size--) * 0.5)\n );\n --donation-card-required-color--: var(\n --ia-donation-badged-input-required-color,\n var(--ia-theme-color-danger, #e51c23)\n );\n --donation-card-error-color--: var(--ia-theme-color-danger, #e51c23);\n }\n\n ia-donation-credit-card-fields .field-label {\n display: block;\n font-family: var(--donation-card-label-font-family--);\n font-size: var(--donation-card-label-font-size--);\n font-weight: bold;\n color: var(--donation-card-label-color--);\n margin-bottom: var(--donation-card-label-margin-bottom--);\n }\n\n ia-donation-credit-card-fields .required-asterisk {\n color: var(--donation-card-required-color--);\n }\n\n /*\n A grid, so a label that wraps to two lines in one column doesn't push\n that column's input out of line with its sibling. Both labels share\n row line 1 and both inputs share row line 2.\n */\n ia-donation-credit-card-fields .braintree-row {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n grid-template-rows: auto auto;\n column-gap: var(--donation-card-row-gap--);\n }\n\n /*\n The expiration column is wider than the CVC column so its\n \"Expiration (MM / YY)\" label stays on one line. CVC's label has\n room to spare.\n */\n ia-donation-credit-card-fields .braintree-row.expiration-cvv-row {\n grid-template-columns:\n calc(50% + var(--donation-card-base-font-size--) * 2.5)\n calc(50% - var(--donation-card-base-font-size--) * 2.5);\n }\n\n ia-donation-credit-card-fields .braintree-row + .braintree-row {\n margin-top: var(--donation-card-row-gap--);\n }\n\n ia-donation-credit-card-fields .field {\n display: contents;\n }\n\n ia-donation-credit-card-fields ia-donation-badged-input {\n width: 100%;\n }\n\n ia-donation-credit-card-fields .braintree-input {\n width: 100%;\n height: 100%;\n }\n\n ia-donation-credit-card-fields #braintree-error-message {\n color: var(--donation-card-error-color--);\n font-size: calc(var(--donation-card-base-font-size--) * 1.4);\n margin-bottom: calc(var(--donation-card-base-font-size--) * 0.6);\n }\n </style>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ia-donation-credit-card-fields': IADonationCreditCardFields;\n }\n}\n"]}
@@ -0,0 +1,118 @@
1
+ import { LitElement, type CSSResultGroup, type PropertyValues, type TemplateResult } from 'lit';
2
+ import { DonationPaymentInfo } from '../models/donation-payment-info.js';
3
+ import './ia-donation-section.js';
4
+ /** Whether the numbered step badges show on the sections. */
5
+ export declare const EditDonationStepNumberMode: {
6
+ readonly HideNumbers: "hidenumbers";
7
+ readonly ShowNumbers: "shownumbers";
8
+ };
9
+ export type EditDonationStepNumberMode = (typeof EditDonationStepNumberMode)[keyof typeof EditDonationStepNumberMode];
10
+ /** The radio button groups in the form. */
11
+ export declare const EditDonationSelectionGroup: {
12
+ readonly DonationType: "donationType";
13
+ readonly Amount: "amount";
14
+ };
15
+ export type EditDonationSelectionGroup = (typeof EditDonationSelectionGroup)[keyof typeof EditDonationSelectionGroup];
16
+ /** The outcome of validating an amount. Sent in the `editDonationError` event. */
17
+ export declare const EditDonationInfoStatus: {
18
+ readonly ValidDonationAmount: "valid_donation_amount";
19
+ readonly InvalidDonationAmount: "invalid_donation_amount";
20
+ readonly DonationTooHigh: "donation_too_high";
21
+ readonly DonationTooLow: "donation_too_low";
22
+ };
23
+ export type EditDonationInfoStatus = (typeof EditDonationInfoStatus)[keyof typeof EditDonationInfoStatus];
24
+ /** How the one-time / monthly choice is presented. */
25
+ export declare const EditDonationFrequencySelectionMode: {
26
+ readonly Button: "button";
27
+ readonly Checkbox: "checkbox";
28
+ readonly Hide: "hide";
29
+ };
30
+ export type EditDonationFrequencySelectionMode = (typeof EditDonationFrequencySelectionMode)[keyof typeof EditDonationFrequencySelectionMode];
31
+ /** Whether the amount buttons wrap onto several lines or stay on one. */
32
+ export declare const EditDonationAmountSelectionLayout: {
33
+ readonly SingleLine: "single-line";
34
+ readonly MultiLine: "multi-line";
35
+ };
36
+ export type EditDonationAmountSelectionLayout = (typeof EditDonationAmountSelectionLayout)[keyof typeof EditDonationAmountSelectionLayout];
37
+ /**
38
+ * The part of the donation form where the donor picks a frequency, an amount
39
+ * (preset or custom) and whether to cover the processing fee. Fires
40
+ * `donationInfoChanged` with the new `DonationPaymentInfo` on every change
41
+ * and `editDonationError` when a custom amount is out of range.
42
+ *
43
+ * The petabox donation banner uses this on its own, without the rest of the
44
+ * form.
45
+ */
46
+ export declare class IADonationEditDonation extends LitElement {
47
+ donationInfo: DonationPaymentInfo;
48
+ stepNumberMode: EditDonationStepNumberMode;
49
+ /**
50
+ * A convenience for setting the selected amount from plain HTML. When
51
+ * present it wins over `donationInfo`.
52
+ */
53
+ defaultSelectedAmount?: number;
54
+ amountOptions: number[];
55
+ amountSelectionLayout: EditDonationAmountSelectionLayout;
56
+ frequencySelectionMode: EditDonationFrequencySelectionMode;
57
+ customAmountMode: 'display' | 'hide';
58
+ coverFeesCheckboxMode: 'display' | 'hide';
59
+ /** `slot` renders the `edit-donation-amount-title` slot in place of the default headline. */
60
+ amountTitleDisplayMode: 'default' | 'slot';
61
+ private error?;
62
+ private customAmountSelected;
63
+ private customAmountButton;
64
+ private customAmountInput;
65
+ private currencyValidator;
66
+ render(): TemplateResult;
67
+ updated(changedProperties: PropertyValues): void;
68
+ private get frequencyButtonsTemplate();
69
+ private get frequencyCheckboxTemplate();
70
+ private get coverFeesCheckboxTemplate();
71
+ /** The amount step is 2 when the frequency buttons come first, otherwise 1. */
72
+ private get amountSelectionSectionNumber();
73
+ private get formSectionNumberMode();
74
+ /**
75
+ * Picks the amount grid's column count, and how many columns the custom
76
+ * amount field spans, from how many preset amounts there are.
77
+ */
78
+ private setupAmountColumnsLayoutConfig;
79
+ /**
80
+ * Syncs the radios and the custom field with `donationInfo`. A preset
81
+ * amount checks its radio and clears the custom field; anything else
82
+ * selects the custom field and formats the amount into it.
83
+ */
84
+ private updateSelectedDonationInfo;
85
+ private get coverFeesText();
86
+ /**
87
+ * Formats a dollar amount without cents when it's a whole number and with
88
+ * them when it isn't: `$5` and `$5.50`.
89
+ */
90
+ private formatShortenedAmount;
91
+ private get frequencyTemplate();
92
+ private get presetAmountsTemplate();
93
+ private getRadioButton;
94
+ private get isCustomAmount();
95
+ private get customAmountDisplayValue();
96
+ private get customAmountTemplate();
97
+ private customRadioSelected;
98
+ private customAmountFocused;
99
+ /**
100
+ * Once focus leaves the custom field the mid-keystroke protection is over,
101
+ * so the UI re-syncs with `donationInfo`: a typed amount equal to a preset
102
+ * moves to that preset, anything else gets re-formatted in place.
103
+ */
104
+ private customAmountBlurred;
105
+ private coverFeesChecked;
106
+ private customAmountChanged;
107
+ private handleCustomAmountInput;
108
+ private handleDonationInfoStatus;
109
+ private amountChanged;
110
+ private getDonationInfoStatus;
111
+ private radioSelected;
112
+ private monthlyCheckboxChecked;
113
+ private dispatchEditDonationError;
114
+ private presetAmountChanged;
115
+ private updateDonationInfo;
116
+ static get styles(): CSSResultGroup;
117
+ }
118
+ //# sourceMappingURL=ia-donation-edit-donation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-donation-edit-donation.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/form-elements/ia-donation-edit-donation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAQb,OAAO,EACL,mBAAmB,EAGpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,uBAAuB,CAAC;AAE/B,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B;;;CAG7B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAE/E,2CAA2C;AAC3C,eAAO,MAAM,0BAA0B;;;CAG7B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAE/E,kFAAkF;AAClF,eAAO,MAAM,sBAAsB;;;;;CAKzB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAChC,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAEvE,sDAAsD;AACtD,eAAO,MAAM,kCAAkC;;;;CAIrC,CAAC;AAEX,MAAM,MAAM,kCAAkC,GAC5C,CAAC,OAAO,kCAAkC,CAAC,CAAC,MAAM,OAAO,kCAAkC,CAAC,CAAC;AAE/F,yEAAyE;AACzE,eAAO,MAAM,iCAAiC;;;CAGpC,CAAC;AAEX,MAAM,MAAM,iCAAiC,GAC3C,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,OAAO,iCAAiC,CAAC,CAAC;AAE7F;;;;;;;;GAQG;AACH,qBACa,sBAAuB,SAAQ,UAAU;IAEpD,YAAY,EAAE,mBAAmB,CAA+B;IAGhE,cAAc,EAAE,0BAA0B,CACD;IAEzC;;;OAGG;IACyB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAEhC,aAAa,EAAE,MAAM,EAAE,CAA0B;IAG5E,qBAAqB,EAAE,iCAAiC,CACV;IAG9C,sBAAsB,EAAE,kCAAkC,CACd;IAED,gBAAgB,EACvD,SAAS,GACT,MAAM,CAAa;IAEoB,qBAAqB,EAC5D,SAAS,GACT,MAAM,CAAa;IAEvB,6FAA6F;IAClD,sBAAsB,EAC7D,SAAS,GACT,MAAM,CAAa;IAEd,OAAO,CAAC,KAAK,CAAC,CAAiB;IAE/B,OAAO,CAAC,oBAAoB,CAAS;IAEd,OAAO,CAAC,kBAAkB,CAAoB;IAE/C,OAAO,CAAC,iBAAiB,CAAoB;IAE5E,OAAO,CAAC,iBAAiB,CAA8C;IAEvE,MAAM,IAAI,cAAc;IA2CxB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IA8BhD,OAAO,KAAK,wBAAwB,GAYnC;IAED,OAAO,KAAK,yBAAyB,GAapC;IAED,OAAO,KAAK,yBAAyB,GAapC;IAED,+EAA+E;IAC/E,OAAO,KAAK,4BAA4B,GAKvC;IAED,OAAO,KAAK,qBAAqB,GAOhC;IAED;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAsDtC;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAmClC,OAAO,KAAK,aAAa,GAMxB;IAED;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAK7B,OAAO,KAAK,iBAAiB,GAoB5B;IAED,OAAO,KAAK,qBAAqB,GAkBhC;IAED,OAAO,CAAC,cAAc;IAqCtB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,wBAAwB,GAGnC;IAED,OAAO,KAAK,oBAAoB,GA6B/B;IAED,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,mBAAmB;IAM3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,kBAAkB;IAmB1B,MAAM,KAAK,MAAM,IAAI,cAAc,CAsNlC;CACF"}