@justifi/webcomponents 4.0.5 → 4.2.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 (268) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/Api-11362403.js +111 -0
  3. package/dist/cjs/Api-11362403.js.map +1 -0
  4. package/dist/cjs/Payment-ac4dea02.js +2 -0
  5. package/dist/cjs/Payment-ac4dea02.js.map +1 -0
  6. package/dist/cjs/{index-051b6dd0.js → index-34312a38.js} +185 -21
  7. package/dist/cjs/index-34312a38.js.map +1 -0
  8. package/dist/cjs/index.cjs.js +2 -0
  9. package/dist/cjs/index.cjs.js.map +1 -0
  10. package/dist/cjs/{index.esm-8df4906e.js → index.esm-bcf90c56.js} +2 -244
  11. package/dist/cjs/index.esm-bcf90c56.js.map +1 -0
  12. package/dist/cjs/justifi-bank-account-form.cjs.entry.js +12 -1
  13. package/dist/cjs/justifi-bank-account-form.cjs.entry.js.map +1 -0
  14. package/dist/cjs/justifi-billing-form_2.cjs.entry.js +8 -5
  15. package/dist/cjs/justifi-billing-form_2.cjs.entry.js.map +1 -0
  16. package/dist/cjs/justifi-business-address.cjs.entry.js +7 -4
  17. package/dist/cjs/justifi-business-address.cjs.entry.js.map +1 -0
  18. package/dist/cjs/justifi-business-info.cjs.entry.js +174 -0
  19. package/dist/cjs/justifi-business-info.cjs.entry.js.map +1 -0
  20. package/dist/cjs/justifi-card-form.cjs.entry.js +12 -1
  21. package/dist/cjs/justifi-card-form.cjs.entry.js.map +1 -0
  22. package/dist/cjs/justifi-payment-form.cjs.entry.js +10 -4
  23. package/dist/cjs/justifi-payment-form.cjs.entry.js.map +1 -0
  24. package/dist/cjs/justifi-payment-method-form.cjs.entry.js +15 -7
  25. package/dist/cjs/justifi-payment-method-form.cjs.entry.js.map +1 -0
  26. package/dist/cjs/justifi-payments-list.cjs.entry.js +5 -108
  27. package/dist/cjs/justifi-payments-list.cjs.entry.js.map +1 -0
  28. package/dist/cjs/loader.cjs.js +6 -3
  29. package/dist/cjs/loader.cjs.js.map +1 -0
  30. package/dist/cjs/select-input_2.cjs.entry.js +5 -3
  31. package/dist/cjs/select-input_2.cjs.entry.js.map +1 -0
  32. package/dist/cjs/state-options-efeaa587.js +248 -0
  33. package/dist/cjs/state-options-efeaa587.js.map +1 -0
  34. package/dist/cjs/webcomponents.cjs.js +12 -3
  35. package/dist/cjs/webcomponents.cjs.js.map +1 -0
  36. package/dist/collection/api/Api.js +2 -1
  37. package/dist/collection/api/Api.js.map +1 -0
  38. package/dist/collection/api/Pagination.js +1 -0
  39. package/dist/collection/api/Pagination.js.map +1 -0
  40. package/dist/collection/api/Payment.js +1 -0
  41. package/dist/collection/api/Payment.js.map +1 -0
  42. package/dist/collection/api/index.js +1 -0
  43. package/dist/collection/api/index.js.map +1 -0
  44. package/dist/collection/api/mockData/MockPayments.js +1 -0
  45. package/dist/collection/api/mockData/MockPayments.js.map +1 -0
  46. package/dist/collection/collection-manifest.json +4 -3
  47. package/dist/collection/components/bank-account-form/bank-account-form.js +26 -0
  48. package/dist/collection/components/bank-account-form/bank-account-form.js.map +1 -0
  49. package/dist/collection/components/bank-account-form/bank-account-form.stories.js +11 -1
  50. package/dist/collection/components/bank-account-form/bank-account-form.stories.js.map +1 -0
  51. package/dist/collection/components/bank-account-form/test/bank-account-form.e2e.js +14 -0
  52. package/dist/collection/components/bank-account-form/test/bank-account-form.e2e.js.map +1 -0
  53. package/dist/collection/components/bank-account-form/test/bank-account-form.spec.js +48 -0
  54. package/dist/collection/components/bank-account-form/test/bank-account-form.spec.js.map +1 -0
  55. package/dist/collection/components/billing-form/billing-form-schema.js +1 -0
  56. package/dist/collection/components/billing-form/billing-form-schema.js.map +1 -0
  57. package/dist/collection/components/billing-form/billing-form.css +337 -0
  58. package/dist/collection/components/billing-form/billing-form.js +1 -0
  59. package/dist/collection/components/billing-form/billing-form.js.map +1 -0
  60. package/dist/collection/components/billing-form/billing-form.stories.js +1 -0
  61. package/dist/collection/components/billing-form/billing-form.stories.js.map +1 -0
  62. package/dist/collection/components/billing-form/state-options.js +1 -0
  63. package/dist/collection/components/billing-form/state-options.js.map +1 -0
  64. package/dist/collection/components/billing-form/test/billing-form.spec.js +31 -0
  65. package/dist/collection/components/billing-form/test/billing-form.spec.js.map +1 -0
  66. package/dist/collection/components/business-address/business-address-schema.js +1 -0
  67. package/dist/collection/components/business-address/business-address-schema.js.map +1 -0
  68. package/dist/collection/components/business-address/business-address.css +337 -0
  69. package/dist/collection/components/business-address/business-address.js +1 -0
  70. package/dist/collection/components/business-address/business-address.js.map +1 -0
  71. package/dist/collection/components/business-address/test/business-address.e2e.js +10 -0
  72. package/dist/collection/components/business-address/test/business-address.e2e.js.map +1 -0
  73. package/dist/collection/components/business-address/test/business-address.spec.js +18 -0
  74. package/dist/collection/components/business-address/test/business-address.spec.js.map +1 -0
  75. package/dist/collection/components/business-info/business-info-schema.js +94 -0
  76. package/dist/collection/components/business-info/business-info-schema.js.map +1 -0
  77. package/dist/collection/components/business-info/business-info.css +2274 -0
  78. package/dist/collection/components/business-info/business-info.js +168 -0
  79. package/dist/collection/components/business-info/business-info.js.map +1 -0
  80. package/dist/collection/components/card-form/card-form.js +26 -0
  81. package/dist/collection/components/card-form/card-form.js.map +1 -0
  82. package/dist/collection/components/card-form/card-form.stories.js +11 -1
  83. package/dist/collection/components/card-form/card-form.stories.js.map +1 -0
  84. package/dist/collection/components/card-form/test/card-form.e2e.js +14 -0
  85. package/dist/collection/components/card-form/test/card-form.e2e.js.map +1 -0
  86. package/dist/collection/components/card-form/test/card-form.spec.js +56 -0
  87. package/dist/collection/components/card-form/test/card-form.spec.js.map +1 -0
  88. package/dist/collection/components/payment-form/payment-form.css +412 -0
  89. package/dist/collection/components/payment-form/payment-form.js +8 -2
  90. package/dist/collection/components/payment-form/payment-form.js.map +1 -0
  91. package/dist/collection/components/payment-form/payment-form.stories.js +3 -1
  92. package/dist/collection/components/payment-form/payment-form.stories.js.map +1 -0
  93. package/dist/collection/components/payment-form/payment-method-selector.css +337 -0
  94. package/dist/collection/components/payment-form/payment-method-selector.js +1 -0
  95. package/dist/collection/components/payment-form/payment-method-selector.js.map +1 -0
  96. package/dist/collection/components/payment-form/test/payment-form.e2e.js +23 -0
  97. package/dist/collection/components/payment-form/test/payment-form.e2e.js.map +1 -0
  98. package/dist/collection/components/payment-form/test/payment-form.spec.js +182 -0
  99. package/dist/collection/components/payment-form/test/payment-form.spec.js.map +1 -0
  100. package/dist/collection/components/payment-form/tokenize.js +1 -0
  101. package/dist/collection/components/payment-form/tokenize.js.map +1 -0
  102. package/dist/collection/components/payment-method-form/get-computed-theme.js +1 -0
  103. package/dist/collection/components/payment-method-form/get-computed-theme.js.map +1 -0
  104. package/dist/collection/components/payment-method-form/message-event-types.js +1 -0
  105. package/dist/collection/components/payment-method-form/message-event-types.js.map +1 -0
  106. package/dist/collection/components/payment-method-form/payment-method-form.js +21 -2
  107. package/dist/collection/components/payment-method-form/payment-method-form.js.map +1 -0
  108. package/dist/collection/components/payment-method-form/payment-method-responses.js +1 -0
  109. package/dist/collection/components/payment-method-form/payment-method-responses.js.map +1 -0
  110. package/dist/collection/components/payment-method-form/test/payment-method-form.e2e.js +22 -0
  111. package/dist/collection/components/payment-method-form/test/payment-method-form.e2e.js.map +1 -0
  112. package/dist/collection/components/payment-method-form/test/payment-method-form.spec.js +83 -0
  113. package/dist/collection/components/payment-method-form/test/payment-method-form.spec.js.map +1 -0
  114. package/dist/collection/components/payment-method-form/theme.js +1 -0
  115. package/dist/collection/components/payment-method-form/theme.js.map +1 -0
  116. package/dist/collection/components/payments-list/payments-list.js +1 -0
  117. package/dist/collection/components/payments-list/payments-list.js.map +1 -0
  118. package/dist/collection/components/payments-list/test/payments-list.spec.js +21 -0
  119. package/dist/collection/components/payments-list/test/payments-list.spec.js.map +1 -0
  120. package/dist/collection/components/select-input/select-input.css +337 -0
  121. package/dist/collection/components/select-input/select-input.js +1 -0
  122. package/dist/collection/components/select-input/select-input.js.map +1 -0
  123. package/dist/collection/components/select-input/test/select-input.spec.js +36 -0
  124. package/dist/collection/components/select-input/test/select-input.spec.js.map +1 -0
  125. package/dist/collection/components/text-input/test/text-input.spec.js +19 -0
  126. package/dist/collection/components/text-input/test/text-input.spec.js.map +1 -0
  127. package/dist/collection/components/text-input/text-input.css +337 -0
  128. package/dist/collection/components/text-input/text-input.js +1 -0
  129. package/dist/collection/components/text-input/text-input.js.map +1 -0
  130. package/dist/collection/index.js +1 -0
  131. package/dist/collection/index.js.map +1 -0
  132. package/dist/collection/utils/utils.js +1 -0
  133. package/dist/collection/utils/utils.js.map +1 -0
  134. package/dist/components/Api.js +109 -0
  135. package/dist/components/Api.js.map +1 -0
  136. package/dist/components/Payment.js +2 -0
  137. package/dist/components/Payment.js.map +1 -0
  138. package/dist/components/billing-form.js +6 -3
  139. package/dist/components/billing-form.js.map +1 -0
  140. package/dist/components/index.d.ts +9 -13
  141. package/dist/{esm/index.esm-c6a89005.js → components/index.esm.js} +3 -244
  142. package/dist/components/index.esm.js.map +1 -0
  143. package/dist/components/index.js +3 -11
  144. package/dist/components/index.js.map +1 -0
  145. package/dist/components/justifi-bank-account-form.js +14 -2
  146. package/dist/components/justifi-bank-account-form.js.map +1 -0
  147. package/dist/components/justifi-billing-form.js +2 -0
  148. package/dist/components/justifi-billing-form.js.map +1 -0
  149. package/dist/components/justifi-business-address.js +6 -3
  150. package/dist/components/justifi-business-address.js.map +1 -0
  151. package/dist/components/justifi-business-info.d.ts +11 -0
  152. package/dist/components/justifi-business-info.js +207 -0
  153. package/dist/components/justifi-business-info.js.map +1 -0
  154. package/dist/components/justifi-card-form.js +14 -2
  155. package/dist/components/justifi-card-form.js.map +1 -0
  156. package/dist/components/justifi-payment-form.js +11 -4
  157. package/dist/components/justifi-payment-form.js.map +1 -0
  158. package/dist/components/justifi-payment-method-form.js +2 -0
  159. package/dist/components/justifi-payment-method-form.js.map +1 -0
  160. package/dist/components/justifi-payment-method-selector.js +2 -0
  161. package/dist/components/justifi-payment-method-selector.js.map +1 -0
  162. package/dist/components/justifi-payments-list.js +4 -107
  163. package/dist/components/justifi-payments-list.js.map +1 -0
  164. package/dist/components/payment-method-form.js +17 -8
  165. package/dist/components/payment-method-form.js.map +1 -0
  166. package/dist/components/payment-method-selector.js +4 -2
  167. package/dist/components/payment-method-selector.js.map +1 -0
  168. package/dist/components/select-input.js +2 -0
  169. package/dist/components/select-input.js.map +1 -0
  170. package/dist/components/select-input2.js +4 -2
  171. package/dist/components/select-input2.js.map +1 -0
  172. package/dist/components/state-options.js +3 -1845
  173. package/dist/components/state-options.js.map +1 -0
  174. package/dist/components/text-input.js +2 -0
  175. package/dist/components/text-input.js.map +1 -0
  176. package/dist/components/text-input2.js +4 -2
  177. package/dist/components/text-input2.js.map +1 -0
  178. package/dist/esm/Api-a07f0057.js +109 -0
  179. package/dist/esm/Api-a07f0057.js.map +1 -0
  180. package/dist/esm/Payment-c86e1e84.js +2 -0
  181. package/dist/esm/Payment-c86e1e84.js.map +1 -0
  182. package/dist/esm/{index-605b421a.js → index-044f93fc.js} +185 -22
  183. package/dist/esm/index-044f93fc.js.map +1 -0
  184. package/dist/esm/index.esm-5624a5ed.js +1847 -0
  185. package/dist/esm/index.esm-5624a5ed.js.map +1 -0
  186. package/dist/esm/index.js +2 -0
  187. package/dist/esm/index.js.map +1 -0
  188. package/dist/esm/justifi-bank-account-form.entry.js +12 -1
  189. package/dist/esm/justifi-bank-account-form.entry.js.map +1 -0
  190. package/dist/esm/justifi-billing-form_2.entry.js +7 -4
  191. package/dist/esm/justifi-billing-form_2.entry.js.map +1 -0
  192. package/dist/esm/justifi-business-address.entry.js +6 -3
  193. package/dist/esm/justifi-business-address.entry.js.map +1 -0
  194. package/dist/esm/justifi-business-info.entry.js +170 -0
  195. package/dist/esm/justifi-business-info.entry.js.map +1 -0
  196. package/dist/esm/justifi-card-form.entry.js +12 -1
  197. package/dist/esm/justifi-card-form.entry.js.map +1 -0
  198. package/dist/esm/justifi-payment-form.entry.js +10 -4
  199. package/dist/esm/justifi-payment-form.entry.js.map +1 -0
  200. package/dist/esm/justifi-payment-method-form.entry.js +15 -7
  201. package/dist/esm/justifi-payment-method-form.entry.js.map +1 -0
  202. package/dist/esm/justifi-payments-list.entry.js +4 -107
  203. package/dist/esm/justifi-payments-list.entry.js.map +1 -0
  204. package/dist/esm/loader.js +6 -3
  205. package/dist/esm/loader.js.map +1 -0
  206. package/dist/esm/polyfills/css-shim.js +1 -1
  207. package/dist/esm/select-input_2.entry.js +5 -3
  208. package/dist/esm/select-input_2.entry.js.map +1 -0
  209. package/dist/esm/state-options-188acc34.js +246 -0
  210. package/dist/esm/state-options-188acc34.js.map +1 -0
  211. package/dist/esm/webcomponents.js +9 -3
  212. package/dist/esm/webcomponents.js.map +1 -0
  213. package/dist/types/api/Api.d.ts +1 -1
  214. package/dist/types/api/Payment.d.ts +1 -1
  215. package/dist/types/components/bank-account-form/bank-account-form.d.ts +4 -0
  216. package/dist/types/components/business-info/business-info-schema.d.ts +42 -0
  217. package/dist/types/components/business-info/business-info.d.ts +20 -0
  218. package/dist/types/components/card-form/card-form.d.ts +4 -0
  219. package/dist/types/components/payment-form/payment-form.d.ts +1 -0
  220. package/dist/types/components/payment-method-form/payment-method-form.d.ts +1 -0
  221. package/dist/types/components/payment-method-form/payment-method-responses.d.ts +1 -1
  222. package/dist/types/components.d.ts +72 -0
  223. package/dist/types/stencil-public-runtime.d.ts +72 -15
  224. package/dist/webcomponents/index.esm.js +2 -0
  225. package/dist/webcomponents/index.esm.js.map +1 -0
  226. package/dist/webcomponents/p-0969db8f.entry.js +2 -0
  227. package/dist/webcomponents/p-0969db8f.entry.js.map +1 -0
  228. package/dist/webcomponents/p-0ea23153.js +2 -0
  229. package/dist/webcomponents/p-0ea23153.js.map +1 -0
  230. package/dist/webcomponents/p-1ca0646b.js +2 -1
  231. package/dist/webcomponents/p-1ca0646b.js.map +1 -0
  232. package/dist/webcomponents/p-1f151d49.js +2 -0
  233. package/dist/webcomponents/p-1f151d49.js.map +1 -0
  234. package/dist/webcomponents/p-255b1284.entry.js +2 -0
  235. package/dist/webcomponents/p-255b1284.entry.js.map +1 -0
  236. package/dist/webcomponents/p-3aa91155.js +3 -0
  237. package/dist/webcomponents/p-3aa91155.js.map +1 -0
  238. package/dist/webcomponents/p-68e82f00.entry.js +2 -0
  239. package/dist/webcomponents/p-68e82f00.entry.js.map +1 -0
  240. package/dist/webcomponents/p-90c0d9e1.entry.js +2 -0
  241. package/dist/webcomponents/p-90c0d9e1.entry.js.map +1 -0
  242. package/dist/webcomponents/p-bd5352d6.entry.js +2 -0
  243. package/dist/webcomponents/p-bd5352d6.entry.js.map +1 -0
  244. package/dist/webcomponents/p-c903cc5a.entry.js +2 -0
  245. package/dist/webcomponents/p-c903cc5a.entry.js.map +1 -0
  246. package/dist/webcomponents/p-d87b0711.entry.js +2 -0
  247. package/dist/webcomponents/p-d87b0711.entry.js.map +1 -0
  248. package/dist/webcomponents/p-dbf7100f.entry.js +2 -0
  249. package/dist/webcomponents/p-dbf7100f.entry.js.map +1 -0
  250. package/dist/webcomponents/p-e0054bc3.js +2 -0
  251. package/dist/webcomponents/p-e0054bc3.js.map +1 -0
  252. package/dist/webcomponents/p-f30d1567.entry.js +2 -0
  253. package/dist/webcomponents/p-f30d1567.entry.js.map +1 -0
  254. package/dist/webcomponents/webcomponents.css +1 -1
  255. package/dist/webcomponents/webcomponents.esm.js +2 -1
  256. package/dist/webcomponents/webcomponents.esm.js.map +1 -0
  257. package/loader/index.d.ts +9 -0
  258. package/package.json +9 -5
  259. package/dist/webcomponents/p-039e3540.entry.js +0 -1
  260. package/dist/webcomponents/p-11e5bef9.entry.js +0 -1
  261. package/dist/webcomponents/p-20732337.js +0 -1
  262. package/dist/webcomponents/p-24409e8e.entry.js +0 -1
  263. package/dist/webcomponents/p-4a406704.js +0 -2
  264. package/dist/webcomponents/p-5774e36e.entry.js +0 -1
  265. package/dist/webcomponents/p-5b5e8351.entry.js +0 -1
  266. package/dist/webcomponents/p-5b68fa52.entry.js +0 -1
  267. package/dist/webcomponents/p-7747c086.entry.js +0 -1
  268. package/dist/webcomponents/p-bc35e124.entry.js +0 -1
@@ -0,0 +1,168 @@
1
+ import { Host, h } from '@stencil/core';
2
+ import { Api } from '../../api';
3
+ import BusinessInfoSchema, { BusinessStructureOptions, BusinessTypeOptions } from './business-info-schema';
4
+ /**
5
+ * @exportedPart label: Label for inputs
6
+ * @exportedPart input: The input fields
7
+ * @exportedPart input-invalid: Invalid state for inputfs
8
+ */
9
+ export class BusinessInfo {
10
+ constructor() {
11
+ this.endpoint = 'entities/business';
12
+ this.authToken = undefined;
13
+ this.businessId = undefined;
14
+ this.businessInfoPrefillData = undefined;
15
+ this.businessInfo = {
16
+ legal_name: '',
17
+ website_url: '',
18
+ email: '',
19
+ phone: '',
20
+ doing_business_as: '',
21
+ business_type: '',
22
+ business_structure: '',
23
+ industry: '',
24
+ metadata: {}
25
+ };
26
+ this.businessInfoFieldsErrors = {};
27
+ }
28
+ componentDidMount() {
29
+ if (this.businessId) {
30
+ this.fetchBusinessInfo();
31
+ }
32
+ }
33
+ async fetchBusinessInfo() {
34
+ // fetch data and pre-fill form
35
+ this.businessInfoPrefillData = await Api(this.authToken).get(`${this.endpoint}/${this.businessId}`);
36
+ }
37
+ ;
38
+ async sendBusinessInfo(data) {
39
+ return Api(this.authToken).post(this.endpoint, data);
40
+ }
41
+ ;
42
+ setFormValue(event) {
43
+ const data = event.detail;
44
+ const businessInfoClone = Object.assign({}, this.businessInfo);
45
+ if (data.name) {
46
+ businessInfoClone[data.name] = data.value;
47
+ this.businessInfo = businessInfoClone;
48
+ }
49
+ }
50
+ async submit(event) {
51
+ event.preventDefault();
52
+ const newErrors = {};
53
+ let isValid = true;
54
+ try {
55
+ await BusinessInfoSchema.validate(this.businessInfo, { abortEarly: false });
56
+ }
57
+ catch (err) {
58
+ isValid = false;
59
+ err.inner.map((item) => {
60
+ newErrors[item.path] = item.message;
61
+ });
62
+ }
63
+ this.businessInfoFieldsErrors = newErrors;
64
+ if (!isValid)
65
+ return;
66
+ const response = await this.sendBusinessInfo(this.businessInfo);
67
+ return response;
68
+ }
69
+ ;
70
+ render() {
71
+ var _a, _b, _c, _d, _e, _f, _g, _h;
72
+ return (h(Host, { exportparts: "label,input,input-invalid" }, h("h1", null, "Business Information"), h("form", { onSubmit: (event) => this.submit(event) }, h("div", { class: "row gy-3" }, h("div", { class: "col-12" }, h("text-input", { name: "legal_name", label: "Legal Name", defaultValue: (_a = this.businessInfoPrefillData) === null || _a === void 0 ? void 0 : _a.legal_name, error: this.businessInfoFieldsErrors.legal_name })), h("div", { class: "col-12" }, h("text-input", { name: "doing_business_as", label: "Doing Business As (DBA)", defaultValue: (_b = this.businessInfoPrefillData) === null || _b === void 0 ? void 0 : _b.doing_business_as, error: this.businessInfoFieldsErrors.doing_business_as })), h("div", { class: "col-12" }, h("select-input", { name: "business_type", label: "Business Type", options: BusinessTypeOptions, defaultValue: (_c = this.businessInfoPrefillData) === null || _c === void 0 ? void 0 : _c.business_type, error: this.businessInfoFieldsErrors.business_type })), h("div", { class: "col-12" }, h("select-input", { name: "business_structure", label: "Business Structure", options: BusinessStructureOptions, defaultValue: (_d = this.businessInfoPrefillData) === null || _d === void 0 ? void 0 : _d.business_structure, error: this.businessInfoFieldsErrors.business_structure })), h("div", { class: "col-12" }, h("text-input", { name: "industry", label: "Industry", defaultValue: (_e = this.businessInfoPrefillData) === null || _e === void 0 ? void 0 : _e.industry, error: this.businessInfoFieldsErrors.industry })), h("div", { class: "col-12" }, h("text-input", { name: "website_url", label: "Website URL", defaultValue: (_f = this.businessInfoPrefillData) === null || _f === void 0 ? void 0 : _f.website_url, error: this.businessInfoFieldsErrors.website_url })), h("div", { class: "col-12" }, h("text-input", { name: "email", label: "Email Address", defaultValue: (_g = this.businessInfoPrefillData) === null || _g === void 0 ? void 0 : _g.email, error: this.businessInfoFieldsErrors.email })), h("div", { class: "col-12" }, h("text-input", { name: "phone", label: "Phone", defaultValue: (_h = this.businessInfoPrefillData) === null || _h === void 0 ? void 0 : _h.phone, error: this.businessInfoFieldsErrors.phone })), h("div", { class: "col-12" }, h("button", { class: "btn btn-primary", type: "submit" }, "Submit"))))));
73
+ }
74
+ static get is() { return "justifi-business-info"; }
75
+ static get encapsulation() { return "shadow"; }
76
+ static get originalStyleUrls() {
77
+ return {
78
+ "$": ["business-info.scss"]
79
+ };
80
+ }
81
+ static get styleUrls() {
82
+ return {
83
+ "$": ["business-info.css"]
84
+ };
85
+ }
86
+ static get properties() {
87
+ return {
88
+ "authToken": {
89
+ "type": "string",
90
+ "mutable": false,
91
+ "complexType": {
92
+ "original": "string",
93
+ "resolved": "string",
94
+ "references": {}
95
+ },
96
+ "required": false,
97
+ "optional": false,
98
+ "docs": {
99
+ "tags": [],
100
+ "text": ""
101
+ },
102
+ "attribute": "auth-token",
103
+ "reflect": false
104
+ },
105
+ "businessId": {
106
+ "type": "string",
107
+ "mutable": false,
108
+ "complexType": {
109
+ "original": "string",
110
+ "resolved": "string",
111
+ "references": {}
112
+ },
113
+ "required": false,
114
+ "optional": true,
115
+ "docs": {
116
+ "tags": [],
117
+ "text": ""
118
+ },
119
+ "attribute": "business-id",
120
+ "reflect": false
121
+ }
122
+ };
123
+ }
124
+ static get states() {
125
+ return {
126
+ "businessInfoPrefillData": {},
127
+ "businessInfo": {},
128
+ "businessInfoFieldsErrors": {}
129
+ };
130
+ }
131
+ static get methods() {
132
+ return {
133
+ "submit": {
134
+ "complexType": {
135
+ "signature": "(event: any) => Promise<void>",
136
+ "parameters": [{
137
+ "tags": [],
138
+ "text": ""
139
+ }],
140
+ "references": {
141
+ "Promise": {
142
+ "location": "global"
143
+ },
144
+ "ValidationError": {
145
+ "location": "import",
146
+ "path": "yup"
147
+ }
148
+ },
149
+ "return": "Promise<void>"
150
+ },
151
+ "docs": {
152
+ "text": "",
153
+ "tags": []
154
+ }
155
+ }
156
+ };
157
+ }
158
+ static get listeners() {
159
+ return [{
160
+ "name": "fieldReceivedInput",
161
+ "method": "setFormValue",
162
+ "target": undefined,
163
+ "capture": false,
164
+ "passive": false
165
+ }];
166
+ }
167
+ }
168
+ //# sourceMappingURL=business-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-info.js","sourceRoot":"","sources":["../../../../src/components/business-info/business-info.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Listen, Method } from '@stencil/core';\nimport { ValidationError } from 'yup';\nimport { Api } from '../../api';\nimport BusinessInfoSchema, { BusinessStructureOptions, BusinessTypeOptions, IBusinessInfo } from './business-info-schema';\n\n\n/**\n * @exportedPart label: Label for inputs\n * @exportedPart input: The input fields\n * @exportedPart input-invalid: Invalid state for inputfs\n */\n@Component({\n tag: 'justifi-business-info',\n styleUrl: 'business-info.scss',\n shadow: true,\n})\nexport class BusinessInfo {\n @Prop() authToken: string;\n @Prop() businessId?: string;\n @State() businessInfoPrefillData: any;\n @State() businessInfo: IBusinessInfo = {\n legal_name: '',\n website_url: '',\n email: '',\n phone: '',\n doing_business_as: '',\n business_type: '',\n business_structure: '',\n industry: '',\n metadata: {}\n };\n @State() businessInfoFieldsErrors: any = {};\n\n private endpoint: string = 'entities/business';\n\n componentDidMount() {\n if (this.businessId) {\n this.fetchBusinessInfo();\n }\n }\n\n async fetchBusinessInfo(): Promise<void> {\n // fetch data and pre-fill form\n this.businessInfoPrefillData = await Api(this.authToken).get(`${this.endpoint}/${this.businessId}`);\n };\n\n async sendBusinessInfo(data): Promise<void> {\n return Api(this.authToken).post(this.endpoint, data);\n };\n\n @Listen('fieldReceivedInput')\n setFormValue(event) {\n const data = event.detail;\n const businessInfoClone = { ...this.businessInfo };\n if (data.name) {\n businessInfoClone[data.name] = data.value;\n this.businessInfo = businessInfoClone;\n }\n }\n\n @Method()\n async submit(event) {\n event.preventDefault();\n\n const newErrors = {};\n let isValid: boolean = true;\n\n try {\n await BusinessInfoSchema.validate(this.businessInfo, { abortEarly: false });\n } catch (err) {\n isValid = false;\n err.inner.map((item: ValidationError) => {\n newErrors[item.path] = item.message;\n });\n }\n\n this.businessInfoFieldsErrors = newErrors;\n\n if (!isValid) return;\n\n const response = await this.sendBusinessInfo(this.businessInfo);\n return response;\n };\n\n render() {\n return (\n <Host exportparts=\"label,input,input-invalid\">\n <h1>Business Information</h1>\n <form onSubmit={(event) => this.submit(event)}>\n <div class=\"row gy-3\">\n <div class=\"col-12\">\n <text-input\n name=\"legal_name\"\n label=\"Legal Name\"\n defaultValue={this.businessInfoPrefillData?.legal_name}\n error={this.businessInfoFieldsErrors.legal_name} />\n </div>\n <div class=\"col-12\">\n <text-input\n name=\"doing_business_as\"\n label=\"Doing Business As (DBA)\"\n defaultValue={this.businessInfoPrefillData?.doing_business_as}\n error={this.businessInfoFieldsErrors.doing_business_as} />\n </div>\n <div class=\"col-12\">\n <select-input\n name=\"business_type\"\n label=\"Business Type\"\n options={BusinessTypeOptions}\n defaultValue={this.businessInfoPrefillData?.business_type}\n error={this.businessInfoFieldsErrors.business_type} />\n </div>\n <div class=\"col-12\">\n <select-input\n name=\"business_structure\"\n label=\"Business Structure\"\n options={BusinessStructureOptions}\n defaultValue={this.businessInfoPrefillData?.business_structure}\n error={this.businessInfoFieldsErrors.business_structure} />\n </div>\n <div class=\"col-12\">\n <text-input\n name=\"industry\"\n label=\"Industry\"\n defaultValue={this.businessInfoPrefillData?.industry}\n error={this.businessInfoFieldsErrors.industry} />\n </div>\n <div class=\"col-12\">\n <text-input\n name=\"website_url\"\n label=\"Website URL\"\n defaultValue={this.businessInfoPrefillData?.website_url}\n error={this.businessInfoFieldsErrors.website_url} />\n </div>\n <div class=\"col-12\">\n <text-input\n name=\"email\"\n label=\"Email Address\"\n defaultValue={this.businessInfoPrefillData?.email}\n error={this.businessInfoFieldsErrors.email} />\n </div>\n <div class=\"col-12\">\n <text-input\n name=\"phone\"\n label=\"Phone\"\n defaultValue={this.businessInfoPrefillData?.phone}\n error={this.businessInfoFieldsErrors.phone} />\n </div>\n <div class=\"col-12\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\">Submit</button>\n </div>\n </div>\n </form>\n </Host>\n );\n }\n\n}\n"]}
@@ -33,6 +33,15 @@ export class CardForm {
33
33
  }
34
34
  return this.childRef.validate();
35
35
  }
36
+ /**
37
+ * Manually resizes the iframe to fit the contents of the iframe
38
+ */
39
+ async resize() {
40
+ if (!this.childRef) {
41
+ throw new Error('Cannot call validate');
42
+ }
43
+ return this.childRef.resize();
44
+ }
36
45
  render() {
37
46
  return (h("justifi-payment-method-form", { ref: el => {
38
47
  if (el) {
@@ -205,6 +214,22 @@ export class CardForm {
205
214
  "text": "Runs a validation on the form and shows errors if any",
206
215
  "tags": []
207
216
  }
217
+ },
218
+ "resize": {
219
+ "complexType": {
220
+ "signature": "() => Promise<void>",
221
+ "parameters": [],
222
+ "references": {
223
+ "Promise": {
224
+ "location": "global"
225
+ }
226
+ },
227
+ "return": "Promise<void>"
228
+ },
229
+ "docs": {
230
+ "text": "Manually resizes the iframe to fit the contents of the iframe",
231
+ "tags": []
232
+ }
208
233
  }
209
234
  };
210
235
  }
@@ -230,3 +255,4 @@ export class CardForm {
230
255
  }];
231
256
  }
232
257
  }
258
+ //# sourceMappingURL=card-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-form.js","sourceRoot":"","sources":["../../../../src/components/card-form/card-form.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAgB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQ/F,MAAM,OAAO,QAAQ;;;;sBAcW,KAAK;;;EAuBnC,YAAY,CAAC,KAAkB;IAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,CAAC;EAGD,eAAe,CAAC,KAAoB;IAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACpC,CAAC;EAGD,eAAe,CAAC,KAAoB;IAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACpC,CAAC;EAID;;KAEG;EAEH,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAiE;IACjF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;MAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;EACzC,CAAC;EAED;;KAEG;EAEH,KAAK,CAAC,QAAQ;IACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;MAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;EAClC,CAAC;EAED;;MAEI;EAEJ,KAAK,CAAC,MAAM;IACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;MAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;EAChC,CAAC;EAED,MAAM;IACJ,OAAO,CACL,mCACE,GAAG,EAAE,EAAE,CAAC,EAAE;QACR,IAAI,EAAE,EAAE;UACN,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;MACH,CAAC,mBACc,IAAI,CAAC,YAAY,8BACP,MAAM,iBAClB,IAAI,CAAC,UAAU,+BACD,IAAI,CAAC,aAAa,kCACf,IAAI,CAAC,gBAAgB,yCACd,IAAI,CAAC,cAAc,IAAI,UAAU,GACtE,CACH,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, Prop, h, EventEmitter, Method, Listen, State } from '@stencil/core';\nimport { CreatePaymentMethodResponse } from '../payment-method-form/payment-method-responses';\nimport { Theme } from '../payment-method-form/theme';\n\n@Component({\n tag: 'justifi-card-form',\n shadow: false,\n})\nexport class CardForm {\n /**\n * When to trigger validation of the form.\n */\n @Prop({ mutable: true }) validationMode: 'onChange' | 'onBlur' | 'onSubmit' | 'onTouched' | 'all';\n\n /**\n * URL for the rendered iFrame. End-users need not use this.\n */\n @Prop({ mutable: true }) iframeOrigin?: string;\n\n /**\n * Boolean indicating if the Card Form should render in a single line\n */\n @Prop() singleLine: boolean = false;\n @State() internalStyleOverrides: Theme;\n\n /**\n * Triggered when iframe has loaded\n * @event justifi-card-form#cardFormReady\n */\n\n @Event() cardFormReady: EventEmitter;\n\n /**\n * Triggered when the tokenize method is called on the component\n * @event justifi-card-form#cardFormTokenize\n */\n @Event() cardFormTokenize: EventEmitter<{ data: any }>;\n\n /**\n * Triggered when the validate method is called on the component\n * @event justifi-card-form#cardFormTokenize\n */\n @Event() cardFormValidate: EventEmitter<{ data: { isValid: boolean } }>;\n\n @Listen('paymentMethodFormReady')\n readyHandler(event: CustomEvent) {\n this.cardFormReady.emit(event);\n }\n\n @Listen('paymentMethodFormTokenize')\n tokenizeHandler(event: { data: any }) {\n this.cardFormTokenize.emit(event);\n }\n\n @Listen('paymentMethodFormValidate')\n validateHandler(event: { data: any }) {\n this.cardFormValidate.emit(event);\n }\n\n private childRef?: HTMLJustifiPaymentMethodFormElement;\n\n /**\n * Makes a tokenization request to the iframe\n */\n @Method()\n async tokenize(...args: Parameters<HTMLJustifiPaymentMethodFormElement['tokenize']>): Promise<CreatePaymentMethodResponse> {\n if (!this.childRef) {\n throw new Error('Cannot call tokenize');\n }\n return this.childRef.tokenize(...args);\n }\n\n /**\n * Runs a validation on the form and shows errors if any\n */\n @Method()\n async validate(): Promise<{ isValid: boolean }> {\n if (!this.childRef) {\n throw new Error('Cannot call validate');\n }\n return this.childRef.validate();\n }\n\n /**\n * Manually resizes the iframe to fit the contents of the iframe\n */\n @Method()\n async resize(): Promise<void> {\n if (!this.childRef) {\n throw new Error('Cannot call validate');\n }\n return this.childRef.resize();\n }\n\n render() {\n return (\n <justifi-payment-method-form\n ref={el => {\n if (el) {\n this.childRef = el;\n }\n }}\n iframe-origin={this.iframeOrigin}\n payment-method-form-type=\"card\"\n single-line={this.singleLine}\n payment-method-form-ready={this.cardFormReady}\n payment-method-form-tokenize={this.cardFormTokenize}\n payment-method-form-validation-mode={this.validationMode || 'onSubmit'}\n />\n );\n }\n}\n"]}
@@ -26,17 +26,24 @@ const handleTokenizeClick = async (cardForm, paymentMethodData) => {
26
26
  const tokenizeResponse = await cardForm.tokenize('CLIENT_ID', paymentMethodData);
27
27
  console.log(tokenizeResponse);
28
28
  };
29
+ const handleResizeClick = async (cardForm) => {
30
+ await cardForm.resize();
31
+ };
29
32
  const handleReady = () => {
30
33
  console.log('card form is ready');
31
34
  const cardForm = document.querySelector('justifi-card-form');
32
35
  const validateBtn = document.querySelector('#validate-btn');
33
36
  const tokenizeBtn = document.querySelector('#tokenize-btn');
37
+ const resizeBtn = document.querySelector('#resize-btn');
34
38
  validateBtn === null || validateBtn === void 0 ? void 0 : validateBtn.addEventListener('click', () => {
35
39
  handleValidateClick(cardForm);
36
40
  });
37
41
  tokenizeBtn === null || tokenizeBtn === void 0 ? void 0 : tokenizeBtn.addEventListener('click', () => {
38
42
  handleTokenizeClick(cardForm, {});
39
43
  });
44
+ resizeBtn === null || resizeBtn === void 0 ? void 0 : resizeBtn.addEventListener('click', () => {
45
+ handleResizeClick(cardForm);
46
+ });
40
47
  };
41
48
  const addEvents = () => {
42
49
  addEventListener('cardFormReady', handleReady);
@@ -57,6 +64,7 @@ const FormButtons = `
57
64
  <div class="button-bar">
58
65
  <button id="validate-btn">Validate</button>
59
66
  <button id="tokenize-btn">Tokenize</button>
67
+ <button id="resize-btn">Resize</button>
60
68
  </div>`;
61
69
  const Template = (args) => {
62
70
  const includeButtons = true;
@@ -87,7 +95,7 @@ SingleLine.args = {
87
95
  'single-line': true,
88
96
  };
89
97
  const styledVariables = `
90
- --jfi-layout-padding: 0;
98
+ --jfi-layout-padding: 4px;
91
99
  --jfi-layout-form-control-spacing-x: .5rem;
92
100
  --jfi-layout-form-control-spacing-y: 1rem;
93
101
  --jfi-form-label-font-weight: 700;
@@ -105,6 +113,7 @@ const styledVariables = `
105
113
  --jfi-form-control-border-right-width: 0;
106
114
  --jfi-form-control-border-radius: 4px 4px 0 0;
107
115
  --jfi-form-control-border-style: solid;
116
+ --jfi-form-control-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
108
117
  --jfi-form-control-box-shadow-focus: none;
109
118
  --jfi-form-control-box-shadow-error-focus: none;
110
119
  --jfi-form-control-border-style: solid;
@@ -122,3 +131,4 @@ export const Styled = Template.bind({});
122
131
  Styled.args = {
123
132
  'css-variables': styledVariables,
124
133
  };
134
+ //# sourceMappingURL=card-form.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-form.stories.js","sourceRoot":"","sources":["../../../../src/components/card-form/card-form.stories.ts"],"names":[],"mappings":"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","sourcesContent":["interface CardFormStoryArgs {\n 'iframe-origin': string;\n 'single-line': boolean;\n 'validation-mode': string;\n 'css-variables': string;\n}\n\nconst isDev = process.env.NODE_ENV === 'development';\n\nexport default {\n title: 'Components/CardForm',\n component: 'justifi-card-form',\n argTypes: {\n 'iframe-origin': {\n control: 'text',\n table: {\n disable: isDev ? false : true,\n category: 'props',\n },\n },\n },\n decorators: [\n story => `\n ${story()}\n <script>${addEvents()}</script>\n `,\n ],\n};\n\nconst handleValidateClick = async (cardForm: HTMLJustifiCardFormElement) => {\n const valid = await cardForm.validate();\n console.log(valid);\n};\nconst handleTokenizeClick = async (cardForm: HTMLJustifiCardFormElement, paymentMethodData) => {\n const tokenizeResponse = await cardForm.tokenize('CLIENT_ID', paymentMethodData);\n console.log(tokenizeResponse);\n};\nconst handleResizeClick = async (cardForm: HTMLJustifiCardFormElement) => {\n await cardForm.resize();\n};\nconst handleReady = () => {\n console.log('card form is ready');\n const cardForm = document.querySelector('justifi-card-form') as HTMLJustifiCardFormElement;\n const validateBtn = document.querySelector('#validate-btn');\n const tokenizeBtn = document.querySelector('#tokenize-btn');\n const resizeBtn = document.querySelector('#resize-btn');\n validateBtn?.addEventListener('click', () => {\n handleValidateClick(cardForm);\n });\n tokenizeBtn?.addEventListener('click', () => {\n handleTokenizeClick(cardForm, {});\n });\n resizeBtn?.addEventListener('click', () => {\n handleResizeClick(cardForm);\n });\n};\n\nconst addEvents = () => {\n addEventListener('cardFormReady', handleReady);\n};\n\nconst FormButtons = `\n <style>\n .button-bar {\n display: flex;\n aligin-items: center;\n padding: 10px;\n }\n .button-bar button {\n margin-right: 10px;\n border-radius: 3px;\n border: 1px solid black;\n }\n </style>\n <div class=\"button-bar\">\n <button id=\"validate-btn\">Validate</button>\n <button id=\"tokenize-btn\">Tokenize</button>\n <button id=\"resize-btn\">Resize</button>\n </div>`;\n\nconst Template = (args: CardFormStoryArgs) => {\n const includeButtons = true;\n\n return `\n <div>\n <style>\n :root {\n ${args['css-variables'] || ''}\n }\n </style>\n <justifi-card-form\n data-testid=\"card-form-iframe\"\n validation-mode='${args['validation-mode'] || 'onSubmit'}'\n iframe-origin='${args['iframe-origin'] || ''}'\n single-line='${args['single-line']}'\n />\n </div>\n ${includeButtons ? FormButtons : ''}\n `;\n};\n\nexport const Basic = Template.bind({});\nBasic.args = {\n 'validation-mode': 'onSubmit',\n 'single-line': false,\n};\n\nexport const SingleLine = Template.bind({});\nSingleLine.args = {\n 'single-line': true,\n};\n\nconst styledVariables = `\n --jfi-layout-padding: 4px;\n --jfi-layout-form-control-spacing-x: .5rem;\n --jfi-layout-form-control-spacing-y: 1rem;\n --jfi-form-label-font-weight: 700;\n --jfi-form-label-font-family: sans-serif;\n --jfi-form-label-margin: 0 0 .5rem 0;\n --jfi-form-control-background-color: #F4F4F6;\n --jfi-form-control-background-color-hover: #EEEEF5;\n --jfi-form-control-border-color: rgba(0, 0, 0, 0.42);\n --jfi-form-control-border-color-hover: rgba(0, 0, 0, 0.62);\n --jfi-form-control-border-color-focus: #fccc32;\n --jfi-form-control-border-color-error: #C12727;\n --jfi-form-control-border-top-width: 0;\n --jfi-form-control-border-left-width: 0;\n --jfi-form-control-border-bottom-width: 1px;\n --jfi-form-control-border-right-width: 0;\n --jfi-form-control-border-radius: 4px 4px 0 0;\n --jfi-form-control-border-style: solid;\n --jfi-form-control-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n --jfi-form-control-box-shadow-focus: none;\n --jfi-form-control-box-shadow-error-focus: none;\n --jfi-form-control-border-style: solid;\n --jfi-form-control-color: #212529;\n --jfi-form-control-font-size: 1rem;\n --jfi-form-control-font-weight: 400;\n --jfi-form-control-line-height: 2;\n --jfi-form-control-margin: 0;\n --jfi-form-control-padding: .5rem .875rem;\n --jfi-error-message-color: #C12727;\n --jfi-error-message-margin: .25rem 0 0 0;\n --jfi-error-message-font-size: .875rem;\n`;\n\nexport const Styled = Template.bind({});\nStyled.args = {\n 'css-variables': styledVariables,\n};\n"]}
@@ -0,0 +1,14 @@
1
+ import { newE2EPage } from '@stencil/core/testing';
2
+ describe('justifi-card-form', () => {
3
+ it('should emit "cardFormReady" event when "paymentMethodFormReady" event is fired', async () => {
4
+ const page = await newE2EPage();
5
+ await page.setContent('<justifi-card-form></justifi-card-form>');
6
+ const cardForm = await page.find('justifi-card-form');
7
+ const readyEventSpy = await cardForm.spyOnEvent('cardFormReady');
8
+ const paymentFormElement = await page.find('justifi-payment-method-form');
9
+ paymentFormElement.triggerEvent('paymentMethodFormReady');
10
+ await page.waitForChanges();
11
+ expect(readyEventSpy).toHaveReceivedEventTimes(1);
12
+ });
13
+ });
14
+ //# sourceMappingURL=card-form.e2e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-form.e2e.js","sourceRoot":"","sources":["../../../../../src/components/card-form/test/card-form.e2e.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;EACjC,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;IAC9F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,MAAM,IAAI,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAEjE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1E,kBAAkB,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAE1D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,MAAM,CAAC,aAAa,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;EACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\n\ndescribe('justifi-card-form', () => {\n it('should emit \"cardFormReady\" event when \"paymentMethodFormReady\" event is fired', async () => {\n const page = await newE2EPage();\n await page.setContent('<justifi-card-form></justifi-card-form>');\n\n const cardForm = await page.find('justifi-card-form');\n\n const readyEventSpy = await cardForm.spyOnEvent('cardFormReady');\n\n const paymentFormElement = await page.find('justifi-payment-method-form');\n paymentFormElement.triggerEvent('paymentMethodFormReady');\n\n await page.waitForChanges();\n\n expect(readyEventSpy).toHaveReceivedEventTimes(1);\n });\n});\n"]}
@@ -0,0 +1,56 @@
1
+ import { newSpecPage } from '@stencil/core/testing';
2
+ import { CardForm } from '../card-form';
3
+ import { PaymentMethodForm } from '../../payment-method-form/payment-method-form';
4
+ describe('justifi-card-form', () => {
5
+ it('should pass validationMode prop to justifi-payment-method-form', async () => {
6
+ const page = await newSpecPage({
7
+ components: [CardForm],
8
+ html: '<justifi-card-form validation-mode="onChange" />',
9
+ });
10
+ const paymentMethodForm = page.root.querySelector('justifi-payment-method-form');
11
+ expect(paymentMethodForm.getAttribute('payment-method-form-validation-mode')).toBe('onChange');
12
+ });
13
+ it('should pass iframeOrigin prop to justifi-payment-method-form', async () => {
14
+ const page = await newSpecPage({
15
+ components: [CardForm],
16
+ html: '<justifi-card-form iframe-origin="https://example.com" />',
17
+ });
18
+ const paymentMethodForm = page.root.querySelector('justifi-payment-method-form');
19
+ expect(paymentMethodForm.getAttribute('iframe-origin')).toBe('https://example.com');
20
+ });
21
+ it('should pass singleLine prop to justifi-payment-method-form', async () => {
22
+ const page = await newSpecPage({
23
+ components: [CardForm],
24
+ html: '<justifi-card-form single-line />',
25
+ });
26
+ const paymentMethodForm = page.root.querySelector('justifi-payment-method-form');
27
+ expect(paymentMethodForm.getAttribute('single-line')).toBe('');
28
+ });
29
+ it('should call the PaymentMethodForm validate method when invoked from the CardForm component', async () => {
30
+ const page = await newSpecPage({
31
+ components: [CardForm, PaymentMethodForm],
32
+ html: '<justifi-card-form></justifi-card-form>',
33
+ });
34
+ const component = page.rootInstance;
35
+ const validateMock = jest.fn();
36
+ component.childRef = { validate: validateMock };
37
+ await component.validate();
38
+ expect(validateMock).toHaveBeenCalled();
39
+ });
40
+ it('should call the PaymentMethodForm tokenize method with the right arguments when invoked from the CardForm component', async () => {
41
+ const page = await newSpecPage({
42
+ components: [CardForm, PaymentMethodForm],
43
+ html: '<justifi-card-form></justifi-card-form>',
44
+ });
45
+ const component = page.rootInstance;
46
+ const tokenizeMock = jest.fn();
47
+ component.childRef = { tokenize: tokenizeMock };
48
+ const clientId = 'clientId';
49
+ const paymentMethodMetadata = { paymentMethodType: 'card' };
50
+ const account = 'account';
51
+ const tokenizeArgs = [clientId, paymentMethodMetadata, account];
52
+ await component.tokenize(...tokenizeArgs);
53
+ expect(tokenizeMock).toHaveBeenCalledWith(...tokenizeArgs);
54
+ });
55
+ });
56
+ //# sourceMappingURL=card-form.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-form.spec.js","sourceRoot":"","sources":["../../../../../src/components/card-form/test/card-form.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { CardForm } from '../card-form';\nimport { PaymentMethodForm } from '../../payment-method-form/payment-method-form';\n\ndescribe('justifi-card-form', () => {\n it('should pass validationMode prop to justifi-payment-method-form', async () => {\n const page = await newSpecPage({\n components: [CardForm],\n html: '<justifi-card-form validation-mode=\"onChange\" />',\n });\n const paymentMethodForm = page.root.querySelector('justifi-payment-method-form');\n expect(paymentMethodForm.getAttribute('payment-method-form-validation-mode')).toBe('onChange');\n });\n\n it('should pass iframeOrigin prop to justifi-payment-method-form', async () => {\n const page = await newSpecPage({\n components: [CardForm],\n html: '<justifi-card-form iframe-origin=\"https://example.com\" />',\n });\n\n const paymentMethodForm = page.root.querySelector('justifi-payment-method-form');\n expect(paymentMethodForm.getAttribute('iframe-origin')).toBe('https://example.com');\n });\n\n it('should pass singleLine prop to justifi-payment-method-form', async () => {\n const page = await newSpecPage({\n components: [CardForm],\n html: '<justifi-card-form single-line />',\n });\n const paymentMethodForm = page.root.querySelector('justifi-payment-method-form');\n expect(paymentMethodForm.getAttribute('single-line')).toBe('');\n });\n\n it('should call the PaymentMethodForm validate method when invoked from the CardForm component', async () => {\n const page = await newSpecPage({\n components: [CardForm, PaymentMethodForm],\n html: '<justifi-card-form></justifi-card-form>',\n });\n\n const component = page.rootInstance;\n\n const validateMock = jest.fn();\n component.childRef = { validate: validateMock } as any;\n\n await component.validate();\n\n expect(validateMock).toHaveBeenCalled();\n });\n\n it('should call the PaymentMethodForm tokenize method with the right arguments when invoked from the CardForm component', async () => {\n const page = await newSpecPage({\n components: [CardForm, PaymentMethodForm],\n html: '<justifi-card-form></justifi-card-form>',\n });\n\n const component = page.rootInstance;\n\n const tokenizeMock = jest.fn();\n component.childRef = { tokenize: tokenizeMock } as any;\n\n const clientId = 'clientId';\n const paymentMethodMetadata = { paymentMethodType: 'card' };\n const account = 'account';\n const tokenizeArgs = [clientId, paymentMethodMetadata, account];\n\n await component.tokenize(...tokenizeArgs);\n\n expect(tokenizeMock).toHaveBeenCalledWith(...tokenizeArgs);\n });\n});\n"]}