@internetarchive/elements 1.1.6 → 1.1.7-webdev-9054.0

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 (204) 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 +15 -0
  179. package/dist/src/elements/ia-donation-form/icons/credit-card.svg +15 -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/package.json +12 -1
@@ -0,0 +1,483 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement, nothing, } from 'lit';
3
+ import { property, query } from 'lit/decorators.js';
4
+ import { customElement } from '../../../../util/custom-element.js';
5
+ import { ifDefined } from 'lit/directives/if-defined.js';
6
+ import { msg } from '@lit/localize';
7
+ import { BillingInfo, CustomerInfo, DonorContactInfo, } from '../../models/donor-contact-info.js';
8
+ import { SpacerOption, } from '../ia-donation-badged-input.js';
9
+ import '../ia-donation-badged-input.js';
10
+ import { countries } from './countries.js';
11
+ /**
12
+ * The donor's name, email and billing address.
13
+ *
14
+ * This renders into the light DOM, not a shadow root: browser autofill
15
+ * doesn't reach into shadow DOM, and autofill matters a lot on a donation
16
+ * form. So its styles are a `<style>` block with every selector prefixed by
17
+ * the tag name, and its field ids are unique across the page.
18
+ */
19
+ let IADonationContactForm = class IADonationContactForm extends LitElement {
20
+ constructor() {
21
+ super(...arguments);
22
+ /** A key of `countries`. US addresses require a state and a zip code. */
23
+ this.selectedCountry = 'US';
24
+ /** Pre-fills the email field, for a logged-in donor */
25
+ this.donorEmail = '';
26
+ /** At least two non-whitespace characters */
27
+ this.minTwoCharPattern = '.*\\S{2,}.*';
28
+ this.minTwoCharValidationMessage = msg('Enter at least two characters');
29
+ /** At least two non-whitespace characters with at least two characters between them */
30
+ this.streetAddressPattern = '.*?\\S.{2,}\\S.*?';
31
+ this.streetAddressValidationMessage = msg('Enter at least four characters');
32
+ /** 12345, 12345-6789 or 123456789 */
33
+ this.usZipCodePattern = '^\\d{5}(-?\\d{4})?$';
34
+ this.usZipCodeValidationMessage = msg('Enter a valid 5 or 9 digit zip/postal code');
35
+ }
36
+ updated(changed) {
37
+ if (changed.has('donorEmail')) {
38
+ this.emailField.value = this.donorEmail ?? '';
39
+ }
40
+ }
41
+ /** Validates every field, marks the bad ones, and shows the browser's messages. */
42
+ reportValidity() {
43
+ this.validateFormFields();
44
+ return this.validateForm();
45
+ }
46
+ validateFormFields() {
47
+ const fields = [
48
+ { badgedInput: this.emailBadgedInput, inputField: this.emailField },
49
+ {
50
+ badgedInput: this.firstNameBadgedInput,
51
+ inputField: this.firstNameField,
52
+ },
53
+ { badgedInput: this.lastNameBadgedInput, inputField: this.lastNameField },
54
+ {
55
+ badgedInput: this.streetAddressBadgedInput,
56
+ inputField: this.streetAddressField,
57
+ },
58
+ { badgedInput: this.localityBadgedInput, inputField: this.localityField },
59
+ { badgedInput: this.regionBadgedInput, inputField: this.regionField },
60
+ { badgedInput: this.postalBadgedInput, inputField: this.postalCodeField },
61
+ ];
62
+ fields.forEach(({ badgedInput, inputField }) => {
63
+ badgedInput.error = !inputField.checkValidity();
64
+ });
65
+ }
66
+ validateForm() {
67
+ const isValid = this.form.reportValidity();
68
+ this.errorMessage.textContent = isValid
69
+ ? ''
70
+ : msg('Please enter any missing or invalid contact information below');
71
+ return isValid;
72
+ }
73
+ focus() {
74
+ this.emailField.focus();
75
+ }
76
+ render() {
77
+ return html `
78
+ <div id="donation-contact-form-error-message"></div>
79
+ <form>
80
+ <div class="row">
81
+ ${this.generateInput({
82
+ id: 'donation-contact-form-email',
83
+ label: msg('Email'),
84
+ required: true,
85
+ fieldType: 'email',
86
+ name: 'email',
87
+ autocomplete: 'email',
88
+ minlength: 5,
89
+ maxlength: 255,
90
+ })}
91
+ </div>
92
+
93
+ <div class="row">
94
+ ${this.generateInput({
95
+ id: 'donation-contact-form-first-name',
96
+ label: msg('First name'),
97
+ name: 'fname',
98
+ required: true,
99
+ validationPattern: this.minTwoCharPattern,
100
+ validationMessage: this.minTwoCharValidationMessage,
101
+ maxlength: 255,
102
+ autocomplete: 'given-name',
103
+ })}
104
+ ${this.generateInput({
105
+ id: 'donation-contact-form-last-name',
106
+ label: msg('Last name'),
107
+ name: 'lname',
108
+ autocomplete: 'family-name',
109
+ required: true,
110
+ validationPattern: this.minTwoCharPattern,
111
+ validationMessage: this.minTwoCharValidationMessage,
112
+ maxlength: 255,
113
+ })}
114
+ </div>
115
+
116
+ <div class="row">
117
+ ${this.generateInput({
118
+ id: 'donation-contact-form-street-address',
119
+ label: msg('Address'),
120
+ required: true,
121
+ autocomplete: 'address-line1',
122
+ name: 'street-address',
123
+ validationPattern: this.streetAddressPattern,
124
+ validationMessage: this.streetAddressValidationMessage,
125
+ })}
126
+ </div>
127
+ <div class="row">
128
+ ${this.generateInput({
129
+ id: 'donation-contact-form-locality',
130
+ label: msg('City'),
131
+ autocomplete: 'address-level2',
132
+ required: true,
133
+ name: 'locality',
134
+ validationPattern: this.minTwoCharPattern,
135
+ validationMessage: this.minTwoCharValidationMessage,
136
+ })}
137
+ </div>
138
+ <div class="row">${this.countrySelectorTemplate}</div>
139
+ <div class="row region-postal-row">
140
+ ${this.generateInput({
141
+ id: 'donation-contact-form-region',
142
+ label: msg('State / Province'),
143
+ autocomplete: 'address-level1',
144
+ required: this.regionAndPostalCodeRequired,
145
+ name: 'region',
146
+ validationPattern: this.regionAndPostalCodeRequired
147
+ ? this.minTwoCharPattern
148
+ : undefined,
149
+ validationMessage: this.regionAndPostalCodeRequired
150
+ ? this.minTwoCharValidationMessage
151
+ : undefined,
152
+ })}
153
+ ${this.generateInput({
154
+ id: 'donation-contact-form-postal-code',
155
+ label: msg('Zip / Postal Code'),
156
+ autocomplete: 'postal-code',
157
+ required: this.regionAndPostalCodeRequired,
158
+ name: 'postal',
159
+ validationPattern: this.regionAndPostalCodeRequired
160
+ ? this.usZipCodePattern
161
+ : undefined,
162
+ validationMessage: this.regionAndPostalCodeRequired
163
+ ? this.usZipCodeValidationMessage
164
+ : undefined,
165
+ })}
166
+ </div>
167
+ </form>
168
+ ${this.getStyles}
169
+ `;
170
+ }
171
+ get regionAndPostalCodeRequired() {
172
+ return this.selectedCountry === 'US';
173
+ }
174
+ get countrySelectorTemplate() {
175
+ return html `
176
+ <div class="field">
177
+ <label
178
+ for="donation-contact-form-countryCodeAlpha2"
179
+ class="field-label"
180
+ >
181
+ ${msg('Country')}<span class="required-asterisk"> *</span>
182
+ </label>
183
+ <ia-donation-badged-input
184
+ .iconSpaceOption=${SpacerOption.CompressSpace}
185
+ >
186
+ <select
187
+ id="donation-contact-form-countryCodeAlpha2"
188
+ name="country"
189
+ autocomplete="country"
190
+ @change=${(e) => {
191
+ const newValue = e.target.value;
192
+ if (countries[newValue])
193
+ this.selectedCountry = newValue;
194
+ }}
195
+ >
196
+ ${Object.keys(countries).map((key) => {
197
+ const name = countries[key];
198
+ return html `
199
+ <option value=${key} ?selected=${key === this.selectedCountry}>
200
+ ${name}
201
+ </option>
202
+ `;
203
+ })}
204
+ </select>
205
+ </ia-donation-badged-input>
206
+ </div>
207
+ `;
208
+ }
209
+ /** Light DOM, so browser autofill can reach the fields */
210
+ createRenderRoot() {
211
+ return this;
212
+ }
213
+ /** Clears the error state once the donor comes back to a field */
214
+ inputFocused(e) {
215
+ this.errorMessage.textContent = '';
216
+ const input = e.target;
217
+ const badgedInput = this.querySelector(`ia-donation-badged-input.${input.id}`);
218
+ if (badgedInput)
219
+ badgedInput.error = false;
220
+ }
221
+ generateInput(options) {
222
+ const required = options.required ?? true;
223
+ const fieldType = options.fieldType ?? 'text';
224
+ return html `
225
+ <div class="field ${options.id}">
226
+ <label for=${options.id} class="field-label">
227
+ ${options.label}${required
228
+ ? html `<span class="required-asterisk"> *</span>`
229
+ : nothing}
230
+ </label>
231
+ <ia-donation-badged-input
232
+ class=${options.id}
233
+ .iconSpaceOption=${SpacerOption.CompressSpace}
234
+ .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}
235
+ >
236
+ <input
237
+ type=${fieldType}
238
+ id=${options.id}
239
+ class="donation-contact-form-input"
240
+ name=${options.name}
241
+ maxlength=${ifDefined(options.maxlength)}
242
+ minlength=${ifDefined(options.minlength)}
243
+ autocomplete=${options.autocomplete ?? 'on'}
244
+ pattern=${ifDefined(options.validationPattern)}
245
+ title=${ifDefined(options.validationMessage)}
246
+ @focus=${this.inputFocused}
247
+ ?required=${required}
248
+ />
249
+ </ia-donation-badged-input>
250
+ </div>
251
+ `;
252
+ }
253
+ get donorContactInfo() {
254
+ return new DonorContactInfo({
255
+ billing: this.billingInfo,
256
+ customer: this.contactInfo,
257
+ });
258
+ }
259
+ get billingInfo() {
260
+ return new BillingInfo({
261
+ streetAddress: this.streetAddressField.value,
262
+ locality: this.localityField.value,
263
+ region: this.regionField.value,
264
+ postalCode: this.postalCodeField.value,
265
+ countryCodeAlpha2: this.countryCodeAlpha2Field.value,
266
+ });
267
+ }
268
+ get contactInfo() {
269
+ return new CustomerInfo({
270
+ email: this.emailField.value,
271
+ firstName: this.firstNameField.value,
272
+ lastName: this.lastNameField.value,
273
+ });
274
+ }
275
+ /**
276
+ * The element renders into the light DOM, so instead of a `styles` block
277
+ * it writes its own `<style>` tag, with every selector prefixed by the tag
278
+ * name so nothing leaks onto the rest of the page.
279
+ */
280
+ get getStyles() {
281
+ const noIconSpacerWidth = css `var(--ia-donation-badged-input-no-icon-spacer-width, calc(var(--donation-contact-base-font-size--) * 3))`;
282
+ return html `
283
+ <style>
284
+ ia-donation-contact-form {
285
+ --donation-contact-base-font-size--: var(
286
+ --ia-donation-form-base-font-size,
287
+ 10px
288
+ );
289
+ --donation-contact-row-gap--: var(
290
+ --ia-donation-field-row-gap,
291
+ calc(var(--donation-contact-base-font-size--) * 0.5)
292
+ );
293
+ --donation-contact-field-font-family--: var(
294
+ --ia-theme-base-font-family,
295
+ 'Helvetica Neue',
296
+ Helvetica,
297
+ Arial,
298
+ sans-serif
299
+ );
300
+ --donation-contact-field-font-size--: var(
301
+ --ia-donation-contact-field-font-size,
302
+ calc(var(--donation-contact-base-font-size--) * 1.4)
303
+ );
304
+ --donation-contact-field-font-color--: var(
305
+ --ia-donation-form-input-font-color,
306
+ #2c2c2c
307
+ );
308
+ --donation-contact-label-font-family--: var(
309
+ --ia-donation-field-label-font-family,
310
+ var(--donation-contact-field-font-family--)
311
+ );
312
+ --donation-contact-label-font-size--: var(
313
+ --ia-donation-field-label-font-size,
314
+ calc(var(--donation-contact-base-font-size--) * 1.4)
315
+ );
316
+ --donation-contact-label-color--: var(
317
+ --ia-donation-field-label-color,
318
+ #2c2c2c
319
+ );
320
+ --donation-contact-label-margin-bottom--: var(
321
+ --ia-donation-field-label-margin-bottom,
322
+ calc(var(--donation-contact-base-font-size--) * 0.5)
323
+ );
324
+ --donation-contact-required-color--: var(
325
+ --ia-donation-badged-input-required-color,
326
+ var(--ia-theme-color-danger, #e51c23)
327
+ );
328
+ --donation-contact-error-color--: var(
329
+ --ia-theme-color-danger,
330
+ #e51c23
331
+ );
332
+ --donation-contact-no-icon-field-width--: calc(
333
+ 100% - ${noIconSpacerWidth}
334
+ );
335
+ }
336
+
337
+ /*
338
+ A grid, so a label that wraps to two lines in one column doesn't push
339
+ that column's input out of line with its siblings. All labels share
340
+ row line 1 and all inputs share row line 2, each sized to the tallest
341
+ content on its line.
342
+ */
343
+ ia-donation-contact-form .row {
344
+ display: grid;
345
+ grid-auto-flow: column;
346
+ grid-auto-columns: 1fr;
347
+ grid-template-rows: auto auto;
348
+ column-gap: var(--donation-contact-row-gap--);
349
+ }
350
+
351
+ /*
352
+ State / Province gives up room to Zip / Postal Code so the
353
+ "Zip / Postal Code *" label stays on one line.
354
+ */
355
+ ia-donation-contact-form .row.region-postal-row {
356
+ grid-template-columns:
357
+ calc(60% - var(--donation-contact-base-font-size--) * 3)
358
+ calc(40% + var(--donation-contact-base-font-size--) * 3);
359
+ }
360
+
361
+ ia-donation-contact-form .row + .row {
362
+ margin-top: var(--donation-contact-row-gap--);
363
+ }
364
+
365
+ ia-donation-contact-form .field {
366
+ display: contents;
367
+ }
368
+
369
+ ia-donation-contact-form .field-label {
370
+ display: block;
371
+ font-family: var(--donation-contact-label-font-family--);
372
+ font-size: var(--donation-contact-label-font-size--);
373
+ font-weight: bold;
374
+ color: var(--donation-contact-label-color--);
375
+ margin-bottom: var(--donation-contact-label-margin-bottom--);
376
+ }
377
+
378
+ ia-donation-contact-form .required-asterisk {
379
+ color: var(--donation-contact-required-color--);
380
+ }
381
+
382
+ ia-donation-contact-form
383
+ ia-donation-badged-input.donation-contact-form-region,
384
+ ia-donation-contact-form
385
+ ia-donation-badged-input.donation-contact-form-postal-code {
386
+ width: 100%;
387
+ }
388
+
389
+ ia-donation-contact-form #donation-contact-form-error-message {
390
+ color: var(--donation-contact-error-color--);
391
+ font-size: calc(var(--donation-contact-base-font-size--) * 1.4);
392
+ margin-bottom: calc(var(--donation-contact-base-font-size--) * 0.6);
393
+ }
394
+
395
+ ia-donation-contact-form .donation-contact-form-input {
396
+ width: var(--donation-contact-no-icon-field-width--);
397
+ border: 0;
398
+ outline: 0;
399
+ background: transparent;
400
+ font-weight: bold;
401
+ color: var(--donation-contact-field-font-color--);
402
+ font-size: var(--donation-contact-field-font-size--);
403
+ padding: 0;
404
+ font-family: var(--donation-contact-field-font-family--);
405
+ }
406
+
407
+ ia-donation-contact-form #donation-contact-form-countryCodeAlpha2 {
408
+ width: var(--donation-contact-no-icon-field-width--);
409
+ height: 100%;
410
+ box-sizing: border-box;
411
+ font-weight: bold;
412
+ font-size: var(--donation-contact-field-font-size--);
413
+ color: var(--donation-contact-field-font-color--);
414
+ font-family: var(--donation-contact-field-font-family--);
415
+ border: 0;
416
+ background: #fff;
417
+ }
418
+ </style>
419
+ `;
420
+ }
421
+ };
422
+ __decorate([
423
+ query('ia-donation-badged-input.donation-contact-form-email')
424
+ ], IADonationContactForm.prototype, "emailBadgedInput", void 0);
425
+ __decorate([
426
+ query('#donation-contact-form-email')
427
+ ], IADonationContactForm.prototype, "emailField", void 0);
428
+ __decorate([
429
+ query('ia-donation-badged-input.donation-contact-form-first-name')
430
+ ], IADonationContactForm.prototype, "firstNameBadgedInput", void 0);
431
+ __decorate([
432
+ query('#donation-contact-form-first-name')
433
+ ], IADonationContactForm.prototype, "firstNameField", void 0);
434
+ __decorate([
435
+ query('ia-donation-badged-input.donation-contact-form-last-name')
436
+ ], IADonationContactForm.prototype, "lastNameBadgedInput", void 0);
437
+ __decorate([
438
+ query('#donation-contact-form-last-name')
439
+ ], IADonationContactForm.prototype, "lastNameField", void 0);
440
+ __decorate([
441
+ query('ia-donation-badged-input.donation-contact-form-postal-code')
442
+ ], IADonationContactForm.prototype, "postalBadgedInput", void 0);
443
+ __decorate([
444
+ query('#donation-contact-form-postal-code')
445
+ ], IADonationContactForm.prototype, "postalCodeField", void 0);
446
+ __decorate([
447
+ query('ia-donation-badged-input.donation-contact-form-street-address')
448
+ ], IADonationContactForm.prototype, "streetAddressBadgedInput", void 0);
449
+ __decorate([
450
+ query('#donation-contact-form-street-address')
451
+ ], IADonationContactForm.prototype, "streetAddressField", void 0);
452
+ __decorate([
453
+ query('ia-donation-badged-input.donation-contact-form-locality')
454
+ ], IADonationContactForm.prototype, "localityBadgedInput", void 0);
455
+ __decorate([
456
+ query('#donation-contact-form-locality')
457
+ ], IADonationContactForm.prototype, "localityField", void 0);
458
+ __decorate([
459
+ query('ia-donation-badged-input.donation-contact-form-region')
460
+ ], IADonationContactForm.prototype, "regionBadgedInput", void 0);
461
+ __decorate([
462
+ query('#donation-contact-form-region')
463
+ ], IADonationContactForm.prototype, "regionField", void 0);
464
+ __decorate([
465
+ query('#donation-contact-form-countryCodeAlpha2')
466
+ ], IADonationContactForm.prototype, "countryCodeAlpha2Field", void 0);
467
+ __decorate([
468
+ query('#donation-contact-form-error-message')
469
+ ], IADonationContactForm.prototype, "errorMessage", void 0);
470
+ __decorate([
471
+ query('form')
472
+ ], IADonationContactForm.prototype, "form", void 0);
473
+ __decorate([
474
+ property({ type: String })
475
+ ], IADonationContactForm.prototype, "selectedCountry", void 0);
476
+ __decorate([
477
+ property({ type: String })
478
+ ], IADonationContactForm.prototype, "donorEmail", void 0);
479
+ IADonationContactForm = __decorate([
480
+ customElement('ia-donation-contact-form')
481
+ ], IADonationContactForm);
482
+ export { IADonationContactForm };
483
+ //# sourceMappingURL=ia-donation-contact-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-donation-contact-form.js","sourceRoot":"","sources":["../../../../../../src/elements/ia-donation-form/form-elements/contact-form/ia-donation-contact-form.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n nothing,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { msg } from '@lit/localize';\n\nimport {\n BillingInfo,\n CustomerInfo,\n DonorContactInfo,\n} from '../../models/donor-contact-info';\nimport {\n SpacerOption,\n type IADonationBadgedInput,\n} from '../ia-donation-badged-input';\nimport '../ia-donation-badged-input';\nimport type { AutoCompleteFieldOptions } from './autocomplete-field-options';\nimport { countries } from './countries';\n\n/**\n * The donor's name, email and billing address.\n *\n * This renders into the light DOM, not a shadow root: browser autofill\n * doesn't reach into shadow DOM, and autofill matters a lot on a donation\n * form. So its styles are a `<style>` block with every selector prefixed by\n * the tag name, and its field ids are unique across the page.\n */\n@customElement('ia-donation-contact-form')\nexport class IADonationContactForm extends LitElement {\n @query('ia-donation-badged-input.donation-contact-form-email')\n emailBadgedInput!: IADonationBadgedInput;\n @query('#donation-contact-form-email') emailField!: HTMLInputElement;\n\n @query('ia-donation-badged-input.donation-contact-form-first-name')\n firstNameBadgedInput!: IADonationBadgedInput;\n @query('#donation-contact-form-first-name') firstNameField!: HTMLInputElement;\n\n @query('ia-donation-badged-input.donation-contact-form-last-name')\n lastNameBadgedInput!: IADonationBadgedInput;\n @query('#donation-contact-form-last-name') lastNameField!: HTMLInputElement;\n\n @query('ia-donation-badged-input.donation-contact-form-postal-code')\n postalBadgedInput!: IADonationBadgedInput;\n @query('#donation-contact-form-postal-code')\n postalCodeField!: HTMLInputElement;\n\n @query('ia-donation-badged-input.donation-contact-form-street-address')\n streetAddressBadgedInput!: IADonationBadgedInput;\n @query('#donation-contact-form-street-address')\n streetAddressField!: HTMLInputElement;\n\n @query('ia-donation-badged-input.donation-contact-form-locality')\n localityBadgedInput!: IADonationBadgedInput;\n @query('#donation-contact-form-locality') localityField!: HTMLInputElement;\n\n @query('ia-donation-badged-input.donation-contact-form-region')\n regionBadgedInput!: IADonationBadgedInput;\n @query('#donation-contact-form-region') regionField!: HTMLInputElement;\n\n @query('#donation-contact-form-countryCodeAlpha2')\n countryCodeAlpha2Field!: HTMLSelectElement;\n\n @query('#donation-contact-form-error-message') errorMessage!: HTMLDivElement;\n @query('form') form!: HTMLFormElement;\n\n /** A key of `countries`. US addresses require a state and a zip code. */\n @property({ type: String }) selectedCountry = 'US';\n\n /** Pre-fills the email field, for a logged-in donor */\n @property({ type: String }) donorEmail = '';\n\n updated(changed: PropertyValues): void {\n if (changed.has('donorEmail')) {\n this.emailField.value = this.donorEmail ?? '';\n }\n }\n\n /** Validates every field, marks the bad ones, and shows the browser's messages. */\n reportValidity(): boolean {\n this.validateFormFields();\n return this.validateForm();\n }\n\n private validateFormFields(): void {\n const fields: {\n badgedInput: IADonationBadgedInput;\n inputField: HTMLInputElement;\n }[] = [\n { badgedInput: this.emailBadgedInput, inputField: this.emailField },\n {\n badgedInput: this.firstNameBadgedInput,\n inputField: this.firstNameField,\n },\n { badgedInput: this.lastNameBadgedInput, inputField: this.lastNameField },\n {\n badgedInput: this.streetAddressBadgedInput,\n inputField: this.streetAddressField,\n },\n { badgedInput: this.localityBadgedInput, inputField: this.localityField },\n { badgedInput: this.regionBadgedInput, inputField: this.regionField },\n { badgedInput: this.postalBadgedInput, inputField: this.postalCodeField },\n ];\n fields.forEach(({ badgedInput, inputField }) => {\n badgedInput.error = !inputField.checkValidity();\n });\n }\n\n private validateForm(): boolean {\n const isValid = this.form.reportValidity();\n\n this.errorMessage.textContent = isValid\n ? ''\n : msg('Please enter any missing or invalid contact information below');\n\n return isValid;\n }\n\n focus(): void {\n this.emailField.focus();\n }\n\n /** At least two non-whitespace characters */\n private minTwoCharPattern = '.*\\\\S{2,}.*';\n private minTwoCharValidationMessage = msg('Enter at least two characters');\n\n /** At least two non-whitespace characters with at least two characters between them */\n private streetAddressPattern = '.*?\\\\S.{2,}\\\\S.*?';\n private streetAddressValidationMessage = msg(\n 'Enter at least four characters',\n );\n\n /** 12345, 12345-6789 or 123456789 */\n private usZipCodePattern = '^\\\\d{5}(-?\\\\d{4})?$';\n private usZipCodeValidationMessage = msg(\n 'Enter a valid 5 or 9 digit zip/postal code',\n );\n\n render(): TemplateResult {\n return html`\n <div id=\"donation-contact-form-error-message\"></div>\n <form>\n <div class=\"row\">\n ${this.generateInput({\n id: 'donation-contact-form-email',\n label: msg('Email'),\n required: true,\n fieldType: 'email',\n name: 'email',\n autocomplete: 'email',\n minlength: 5,\n maxlength: 255,\n })}\n </div>\n\n <div class=\"row\">\n ${this.generateInput({\n id: 'donation-contact-form-first-name',\n label: msg('First name'),\n name: 'fname',\n required: true,\n validationPattern: this.minTwoCharPattern,\n validationMessage: this.minTwoCharValidationMessage,\n maxlength: 255,\n autocomplete: 'given-name',\n })}\n ${this.generateInput({\n id: 'donation-contact-form-last-name',\n label: msg('Last name'),\n name: 'lname',\n autocomplete: 'family-name',\n required: true,\n validationPattern: this.minTwoCharPattern,\n validationMessage: this.minTwoCharValidationMessage,\n maxlength: 255,\n })}\n </div>\n\n <div class=\"row\">\n ${this.generateInput({\n id: 'donation-contact-form-street-address',\n label: msg('Address'),\n required: true,\n autocomplete: 'address-line1',\n name: 'street-address',\n validationPattern: this.streetAddressPattern,\n validationMessage: this.streetAddressValidationMessage,\n })}\n </div>\n <div class=\"row\">\n ${this.generateInput({\n id: 'donation-contact-form-locality',\n label: msg('City'),\n autocomplete: 'address-level2',\n required: true,\n name: 'locality',\n validationPattern: this.minTwoCharPattern,\n validationMessage: this.minTwoCharValidationMessage,\n })}\n </div>\n <div class=\"row\">${this.countrySelectorTemplate}</div>\n <div class=\"row region-postal-row\">\n ${this.generateInput({\n id: 'donation-contact-form-region',\n label: msg('State / Province'),\n autocomplete: 'address-level1',\n required: this.regionAndPostalCodeRequired,\n name: 'region',\n validationPattern: this.regionAndPostalCodeRequired\n ? this.minTwoCharPattern\n : undefined,\n validationMessage: this.regionAndPostalCodeRequired\n ? this.minTwoCharValidationMessage\n : undefined,\n })}\n ${this.generateInput({\n id: 'donation-contact-form-postal-code',\n label: msg('Zip / Postal Code'),\n autocomplete: 'postal-code',\n required: this.regionAndPostalCodeRequired,\n name: 'postal',\n validationPattern: this.regionAndPostalCodeRequired\n ? this.usZipCodePattern\n : undefined,\n validationMessage: this.regionAndPostalCodeRequired\n ? this.usZipCodeValidationMessage\n : undefined,\n })}\n </div>\n </form>\n ${this.getStyles}\n `;\n }\n\n private get regionAndPostalCodeRequired(): boolean {\n return this.selectedCountry === 'US';\n }\n\n private get countrySelectorTemplate(): TemplateResult {\n return html`\n <div class=\"field\">\n <label\n for=\"donation-contact-form-countryCodeAlpha2\"\n class=\"field-label\"\n >\n ${msg('Country')}<span class=\"required-asterisk\"> *</span>\n </label>\n <ia-donation-badged-input\n .iconSpaceOption=${SpacerOption.CompressSpace}\n >\n <select\n id=\"donation-contact-form-countryCodeAlpha2\"\n name=\"country\"\n autocomplete=\"country\"\n @change=${(e: Event) => {\n const newValue = (e.target as HTMLSelectElement).value;\n if (countries[newValue]) this.selectedCountry = newValue;\n }}\n >\n ${Object.keys(countries).map((key) => {\n const name = countries[key];\n return html`\n <option value=${key} ?selected=${key === this.selectedCountry}>\n ${name}\n </option>\n `;\n })}\n </select>\n </ia-donation-badged-input>\n </div>\n `;\n }\n\n /** Light DOM, so browser autofill can reach the fields */\n createRenderRoot(): this {\n return this;\n }\n\n /** Clears the error state once the donor comes back to a field */\n private inputFocused(e: FocusEvent): void {\n this.errorMessage.textContent = '';\n const input = e.target as HTMLInputElement;\n const badgedInput = this.querySelector<IADonationBadgedInput>(\n `ia-donation-badged-input.${input.id}`,\n );\n if (badgedInput) badgedInput.error = false;\n }\n\n private generateInput(options: {\n id: string;\n label: string;\n required?: boolean;\n fieldType?: 'text' | 'email';\n autocomplete?: AutoCompleteFieldOptions;\n minlength?: number;\n maxlength?: number;\n name: string;\n validationPattern?: string;\n validationMessage?: string;\n }): TemplateResult {\n const required = options.required ?? true;\n const fieldType = options.fieldType ?? 'text';\n\n return html`\n <div class=\"field ${options.id}\">\n <label for=${options.id} class=\"field-label\">\n ${options.label}${required\n ? html`<span class=\"required-asterisk\"> *</span>`\n : nothing}\n </label>\n <ia-donation-badged-input\n class=${options.id}\n .iconSpaceOption=${SpacerOption.CompressSpace}\n .requiredIndicatorSpaceOption=${SpacerOption.CompressSpace}\n >\n <input\n type=${fieldType}\n id=${options.id}\n class=\"donation-contact-form-input\"\n name=${options.name}\n maxlength=${ifDefined(options.maxlength)}\n minlength=${ifDefined(options.minlength)}\n autocomplete=${options.autocomplete ?? 'on'}\n pattern=${ifDefined(options.validationPattern)}\n title=${ifDefined(options.validationMessage)}\n @focus=${this.inputFocused}\n ?required=${required}\n />\n </ia-donation-badged-input>\n </div>\n `;\n }\n\n get donorContactInfo(): DonorContactInfo {\n return new DonorContactInfo({\n billing: this.billingInfo,\n customer: this.contactInfo,\n });\n }\n\n get billingInfo(): BillingInfo {\n return new BillingInfo({\n streetAddress: this.streetAddressField.value,\n locality: this.localityField.value,\n region: this.regionField.value,\n postalCode: this.postalCodeField.value,\n countryCodeAlpha2: this.countryCodeAlpha2Field.value,\n });\n }\n\n get contactInfo(): CustomerInfo {\n return new CustomerInfo({\n email: this.emailField.value,\n firstName: this.firstNameField.value,\n lastName: this.lastNameField.value,\n });\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 const noIconSpacerWidth = css`var(--ia-donation-badged-input-no-icon-spacer-width, calc(var(--donation-contact-base-font-size--) * 3))`;\n\n return html`\n <style>\n ia-donation-contact-form {\n --donation-contact-base-font-size--: var(\n --ia-donation-form-base-font-size,\n 10px\n );\n --donation-contact-row-gap--: var(\n --ia-donation-field-row-gap,\n calc(var(--donation-contact-base-font-size--) * 0.5)\n );\n --donation-contact-field-font-family--: var(\n --ia-theme-base-font-family,\n 'Helvetica Neue',\n Helvetica,\n Arial,\n sans-serif\n );\n --donation-contact-field-font-size--: var(\n --ia-donation-contact-field-font-size,\n calc(var(--donation-contact-base-font-size--) * 1.4)\n );\n --donation-contact-field-font-color--: var(\n --ia-donation-form-input-font-color,\n #2c2c2c\n );\n --donation-contact-label-font-family--: var(\n --ia-donation-field-label-font-family,\n var(--donation-contact-field-font-family--)\n );\n --donation-contact-label-font-size--: var(\n --ia-donation-field-label-font-size,\n calc(var(--donation-contact-base-font-size--) * 1.4)\n );\n --donation-contact-label-color--: var(\n --ia-donation-field-label-color,\n #2c2c2c\n );\n --donation-contact-label-margin-bottom--: var(\n --ia-donation-field-label-margin-bottom,\n calc(var(--donation-contact-base-font-size--) * 0.5)\n );\n --donation-contact-required-color--: var(\n --ia-donation-badged-input-required-color,\n var(--ia-theme-color-danger, #e51c23)\n );\n --donation-contact-error-color--: var(\n --ia-theme-color-danger,\n #e51c23\n );\n --donation-contact-no-icon-field-width--: calc(\n 100% - ${noIconSpacerWidth}\n );\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 siblings. All labels share\n row line 1 and all inputs share row line 2, each sized to the tallest\n content on its line.\n */\n ia-donation-contact-form .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-contact-row-gap--);\n }\n\n /*\n State / Province gives up room to Zip / Postal Code so the\n \"Zip / Postal Code *\" label stays on one line.\n */\n ia-donation-contact-form .row.region-postal-row {\n grid-template-columns:\n calc(60% - var(--donation-contact-base-font-size--) * 3)\n calc(40% + var(--donation-contact-base-font-size--) * 3);\n }\n\n ia-donation-contact-form .row + .row {\n margin-top: var(--donation-contact-row-gap--);\n }\n\n ia-donation-contact-form .field {\n display: contents;\n }\n\n ia-donation-contact-form .field-label {\n display: block;\n font-family: var(--donation-contact-label-font-family--);\n font-size: var(--donation-contact-label-font-size--);\n font-weight: bold;\n color: var(--donation-contact-label-color--);\n margin-bottom: var(--donation-contact-label-margin-bottom--);\n }\n\n ia-donation-contact-form .required-asterisk {\n color: var(--donation-contact-required-color--);\n }\n\n ia-donation-contact-form\n ia-donation-badged-input.donation-contact-form-region,\n ia-donation-contact-form\n ia-donation-badged-input.donation-contact-form-postal-code {\n width: 100%;\n }\n\n ia-donation-contact-form #donation-contact-form-error-message {\n color: var(--donation-contact-error-color--);\n font-size: calc(var(--donation-contact-base-font-size--) * 1.4);\n margin-bottom: calc(var(--donation-contact-base-font-size--) * 0.6);\n }\n\n ia-donation-contact-form .donation-contact-form-input {\n width: var(--donation-contact-no-icon-field-width--);\n border: 0;\n outline: 0;\n background: transparent;\n font-weight: bold;\n color: var(--donation-contact-field-font-color--);\n font-size: var(--donation-contact-field-font-size--);\n padding: 0;\n font-family: var(--donation-contact-field-font-family--);\n }\n\n ia-donation-contact-form #donation-contact-form-countryCodeAlpha2 {\n width: var(--donation-contact-no-icon-field-width--);\n height: 100%;\n box-sizing: border-box;\n font-weight: bold;\n font-size: var(--donation-contact-field-font-size--);\n color: var(--donation-contact-field-font-color--);\n font-family: var(--donation-contact-field-font-family--);\n border: 0;\n background: #fff;\n }\n </style>\n `;\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import { LitElement, type CSSResultGroup, type TemplateResult } from 'lit';
2
+ /** Whether a hidden icon or required marker keeps its space, so neighbouring fields still line up. */
3
+ export declare const SpacerOption: {
4
+ readonly LeaveSpace: "leave-space";
5
+ readonly CompressSpace: "compress-space";
6
+ };
7
+ export type SpacerOption = (typeof SpacerOption)[keyof typeof SpacerOption];
8
+ /**
9
+ * A bordered field wrapper with an icon on the left and a required marker,
10
+ * which turns red on error. The field itself is slotted in, so it works for
11
+ * plain inputs, selects and Braintree's hosted field containers alike.
12
+ */
13
+ export declare class IADonationBadgedInput extends LitElement {
14
+ error: boolean;
15
+ icon?: TemplateResult;
16
+ required: boolean;
17
+ /** When there's no icon, whether its column stays or collapses */
18
+ iconSpaceOption: SpacerOption;
19
+ /** When the field isn't required, whether the marker's space stays or collapses */
20
+ requiredIndicatorSpaceOption: SpacerOption;
21
+ render(): TemplateResult;
22
+ private get errorClass();
23
+ private get iconSpaceOptionClass();
24
+ static get styles(): CSSResultGroup;
25
+ }
26
+ //# sourceMappingURL=ia-donation-badged-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-donation-badged-input.d.ts","sourceRoot":"","sources":["../../../../../src/elements/ia-donation-form/form-elements/ia-donation-badged-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAMb,sGAAsG;AACtG,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E;;;;GAIG;AACH,qBACa,qBAAsB,SAAQ,UAAU;IACtB,KAAK,UAAS;IAEf,IAAI,CAAC,EAAE,cAAc,CAAC;IAErB,QAAQ,UAAS;IAE9C,kEAAkE;IACtC,eAAe,EAAE,YAAY,CAC/B;IAE1B,mFAAmF;IACvD,4BAA4B,EAAE,YAAY,CAC5C;IAE1B,MAAM,IAAI,cAAc;IAexB,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,oBAAoB,GAI/B;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CA8FlC;CACF"}