@justifi/webcomponents 4.10.0-rc.0 → 4.11.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 (386) hide show
  1. package/dist/cjs/{Business-79361c8a.js → Business-7ae04d4f.js} +58 -2
  2. package/dist/cjs/{SubAccount-b3902202.js → SubAccount-05867651.js} +1 -1
  3. package/dist/cjs/additional-questions-details_5.cjs.entry.js +2 -1
  4. package/dist/cjs/business-additional-questions-schema-18a82d19.js +47 -0
  5. package/dist/cjs/business-details-core.cjs.entry.js +7 -2
  6. package/dist/cjs/{business-form-types-3cdd5447.js → business-form-types-29b2bad9.js} +7 -0
  7. package/dist/cjs/{form-control-datepart_3.cjs.entry.js → form-control-datepart_4.cjs.entry.js} +97 -46
  8. package/dist/cjs/form-control-monetary.cjs.entry.js +19 -17
  9. package/dist/cjs/{form-control-number_3.cjs.entry.js → form-control-select_2.cjs.entry.js} +7 -45
  10. package/dist/cjs/gross-payment-chart-core.cjs.entry.js +9 -2
  11. package/dist/cjs/justifi-additional-questions-form-step_5.cjs.entry.js +29 -24
  12. package/dist/cjs/justifi-additional-questions_4.cjs.entry.js +7 -7
  13. package/dist/cjs/justifi-billing-form_4.cjs.entry.js +3 -3
  14. package/dist/cjs/justifi-business-details.cjs.entry.js +23 -4
  15. package/dist/cjs/justifi-business-form.cjs.entry.js +62 -51
  16. package/dist/cjs/justifi-business-list.cjs.entry.js +3 -2
  17. package/dist/cjs/justifi-checkout-core.cjs.entry.js +5 -4
  18. package/dist/cjs/justifi-checkout.cjs.entry.js +1 -1
  19. package/dist/cjs/justifi-gross-payment-chart.cjs.entry.js +29 -5
  20. package/dist/cjs/justifi-owner-form.cjs.entry.js +22 -12
  21. package/dist/cjs/justifi-payment-balance-transactions.cjs.entry.js +2 -1
  22. package/dist/cjs/justifi-payment-details.cjs.entry.js +25 -4
  23. package/dist/cjs/justifi-payment-form.cjs.entry.js +18 -4
  24. package/dist/cjs/{justifi-business-form-stepped.cjs.entry.js → justifi-payment-provisioning.cjs.entry.js} +20 -20
  25. package/dist/cjs/justifi-payments-list.cjs.entry.js +25 -5
  26. package/dist/cjs/justifi-payout-details.cjs.entry.js +27 -7
  27. package/dist/cjs/justifi-payouts-list.cjs.entry.js +26 -6
  28. package/dist/cjs/justifi-proceeds-list.cjs.entry.js +2 -1
  29. package/dist/cjs/justifi-subaccount-details.cjs.entry.js +3 -2
  30. package/dist/cjs/justifi-subaccounts-list.cjs.entry.js +3 -2
  31. package/dist/cjs/loader.cjs.js +1 -1
  32. package/dist/cjs/payload-parsers-f437272e.js +132 -0
  33. package/dist/cjs/payment-details-core.cjs.entry.js +9 -2
  34. package/dist/cjs/payments-list-core.cjs.entry.js +10 -3
  35. package/dist/cjs/payout-details-core.cjs.entry.js +10 -4
  36. package/dist/cjs/payouts-list-core.cjs.entry.js +10 -3
  37. package/dist/cjs/subaccount-account-details_4.cjs.entry.js +2 -1
  38. package/dist/cjs/{utils-6f62f7a1.js → utils-2b9940e1.js} +7 -0
  39. package/dist/cjs/{utils-df5167a8.js → utils-87435719.js} +7 -0
  40. package/dist/cjs/utils-f8079741.js +41 -0
  41. package/dist/cjs/webcomponents.cjs.js +1 -1
  42. package/dist/collection/api/Business.js +12 -2
  43. package/dist/collection/api/ComponentError.js +14 -0
  44. package/dist/collection/api/services/utils.js +11 -0
  45. package/dist/collection/api/shared.js +11 -1
  46. package/dist/collection/collection-manifest.json +7 -8
  47. package/dist/collection/components/billing-form/billing-form.js +1 -1
  48. package/dist/collection/components/business-details/additional-questions-details/additional-questions-details.js +4 -4
  49. package/dist/collection/components/business-details/additional-questions-details/test/additional-questions.spec.js +1 -1
  50. package/dist/collection/components/business-details/business-details-core.js +30 -2
  51. package/dist/collection/components/business-details/business-details.js +30 -0
  52. package/dist/collection/components/business-details/generic-info-details/test/generic-info-details.spec.js +1 -1
  53. package/dist/collection/components/business-details/get-business.js +15 -3
  54. package/dist/collection/components/business-details/legal-address-details/test/legal-address-details.spec.js +1 -1
  55. package/dist/collection/components/business-details/owner-details/test/owner-details.spec.js +1 -1
  56. package/dist/collection/components/business-details/representative-details/test/representative-details.spec.js +1 -1
  57. package/dist/collection/components/business-details/test/busines-details-core.spec.js +56 -16
  58. package/dist/collection/components/business-details/test/business-details.spec.js +20 -4
  59. package/dist/collection/components/business-details/test/get-business.spec.js +13 -6
  60. package/dist/collection/components/business-forms/business-form/business-form.js +79 -50
  61. package/dist/collection/components/business-forms/business-form/business-representative/business-representative.js +1 -4
  62. package/dist/collection/components/business-forms/business-form/legal-address-form/legal-address-form.js +4 -2
  63. package/dist/collection/components/business-forms/{business-form-stepped/business-address/business-address-form-step.js → owner-form/identity-address/identity-address-form.js} +14 -11
  64. package/dist/collection/components/business-forms/owner-form/identity-address/test/identity-address.e2e.js +9 -0
  65. package/dist/collection/components/business-forms/{business-form/business-address/test/business-address.spec.js → owner-form/identity-address/test/identity-address.spec.js} +21 -14
  66. package/dist/collection/components/business-forms/owner-form/owner-form.js +54 -8
  67. package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/additional-questions/business-additional-questions-form-step.js +23 -4
  68. package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-core-info/business-core-info-form-step.js +19 -1
  69. package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-owners/business-owners-form-step.js +44 -4
  70. package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-representative/business-representative-form-step.js +24 -8
  71. package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/legal-address-form/legal-address-form-step.js +24 -4
  72. package/dist/collection/components/business-forms/{business-form-stepped/business-form-stepped.js → payment-provisioning/payment-provisioning.js} +36 -18
  73. package/dist/collection/components/business-forms/payment-provisioning/test/payment-provisioning.spec.js +61 -0
  74. package/dist/collection/components/business-forms/schemas/business-additional-questions-schema.js +15 -6
  75. package/dist/collection/components/business-forms/schemas/business-address-schema.js +49 -13
  76. package/dist/collection/components/business-forms/schemas/business-core-info-schema.js +24 -12
  77. package/dist/collection/components/business-forms/schemas/business-form-schema.js +4 -4
  78. package/dist/collection/components/business-forms/schemas/business-identity-schema.js +29 -34
  79. package/dist/collection/components/business-forms/utils/business-form-types.js +7 -0
  80. package/dist/collection/components/business-forms/utils/helpers.js +2 -0
  81. package/dist/collection/components/checkout/checkout-core.js +4 -4
  82. package/dist/collection/components/form/form-control-datepart.js +39 -34
  83. package/dist/collection/components/form/form-control-monetary.js +22 -20
  84. package/dist/collection/components/form/form-control-number.js +1 -0
  85. package/dist/collection/components/form/form-control-select.js +3 -1
  86. package/dist/collection/components/form/form-control-text.js +36 -1
  87. package/dist/collection/components/form/test/form-control-datepart.spec.js +88 -0
  88. package/dist/collection/components/form/test/form-control-monetary.spec.js +69 -0
  89. package/dist/collection/components/form/test/form-control-number.spec.js +77 -0
  90. package/dist/collection/components/form/test/form-control-select.spec.js +84 -0
  91. package/dist/collection/components/form/test/form-control-text.spec.js +104 -0
  92. package/dist/collection/components/form/test/form.spec.js +60 -0
  93. package/dist/collection/components/form/utils.js +6 -0
  94. package/dist/collection/components/gross-payment-chart/get-gross-payment-chart-data.js +17 -2
  95. package/dist/collection/components/gross-payment-chart/gross-payment-chart-core.js +30 -1
  96. package/dist/collection/components/gross-payment-chart/gross-payment-chart.js +35 -1
  97. package/dist/collection/components/gross-payment-chart/test/get-gross-payment-chart-data.spec.js +26 -8
  98. package/dist/collection/components/gross-payment-chart/test/gross-payment-chart-core.spec.js +51 -11
  99. package/dist/collection/components/gross-payment-chart/test/gross-payment-chart.spec.js +55 -3
  100. package/dist/collection/components/payment-details/get-payment-details.js +15 -3
  101. package/dist/collection/components/payment-details/payment-details-core.js +30 -1
  102. package/dist/collection/components/payment-details/payment-details.js +35 -1
  103. package/dist/collection/components/payment-details/test/get-payment-details.spec.js +11 -3
  104. package/dist/collection/components/payment-details/test/payment-details-core.spec.js +55 -12
  105. package/dist/collection/components/payment-details/test/payment-details.spec.js +69 -3
  106. package/dist/collection/components/payment-form/payment-form.js +54 -3
  107. package/dist/collection/components/payment-form/test/payment-form.spec.js +60 -1
  108. package/dist/collection/components/payments-list/get-payments.js +15 -4
  109. package/dist/collection/components/payments-list/payments-list-core.js +28 -2
  110. package/dist/collection/components/payments-list/payments-list.js +35 -1
  111. package/dist/collection/components/payments-list/test/get-payments.spec.js +11 -3
  112. package/dist/collection/components/payments-list/test/payments-list-core.spec.js +43 -28
  113. package/dist/collection/components/payments-list/test/payments-list.spec.js +31 -3
  114. package/dist/collection/components/payout-details/get-payout-details.js +17 -6
  115. package/dist/collection/components/payout-details/payout-details-core.js +31 -3
  116. package/dist/collection/components/payout-details/payout-details.js +35 -1
  117. package/dist/collection/components/payout-details/test/get-payout-details.spec.js +15 -5
  118. package/dist/collection/components/payout-details/test/payout-details-core.spec.js +54 -16
  119. package/dist/collection/components/payout-details/test/payout-details.spec.js +50 -1
  120. package/dist/collection/components/payouts-list/get-payouts.js +17 -5
  121. package/dist/collection/components/payouts-list/payouts-list-core.js +28 -2
  122. package/dist/collection/components/payouts-list/payouts-list.js +34 -1
  123. package/dist/collection/components/payouts-list/test/get-payouts.spec.js +11 -3
  124. package/dist/collection/components/payouts-list/test/payouts-list-core.spec.js +42 -29
  125. package/dist/collection/components/payouts-list/test/payouts-list.spec.js +33 -0
  126. package/dist/collection/utils/utils.js +5 -0
  127. package/dist/docs.json +1018 -618
  128. package/dist/esm/{Business-1df362e0.js → Business-91caaccb.js} +56 -3
  129. package/dist/esm/{SubAccount-f4ae9809.js → SubAccount-61ac70eb.js} +1 -1
  130. package/dist/esm/additional-questions-details_5.entry.js +2 -1
  131. package/dist/esm/business-additional-questions-schema-b642a2b7.js +44 -0
  132. package/dist/esm/business-details-core.entry.js +8 -3
  133. package/dist/esm/{business-form-types-de9f38cd.js → business-form-types-0d76133c.js} +8 -1
  134. package/dist/esm/{form-control-datepart_3.entry.js → form-control-datepart_4.entry.js} +97 -47
  135. package/dist/esm/form-control-monetary.entry.js +19 -17
  136. package/dist/esm/{form-control-number_3.entry.js → form-control-select_2.entry.js} +8 -45
  137. package/dist/esm/gross-payment-chart-core.entry.js +10 -3
  138. package/dist/esm/justifi-additional-questions-form-step_5.entry.js +28 -23
  139. package/dist/esm/justifi-additional-questions_4.entry.js +7 -7
  140. package/dist/esm/justifi-billing-form_4.entry.js +3 -3
  141. package/dist/esm/justifi-business-details.entry.js +24 -5
  142. package/dist/esm/justifi-business-form.entry.js +62 -51
  143. package/dist/esm/justifi-business-list.entry.js +3 -2
  144. package/dist/esm/justifi-checkout-core.entry.js +5 -4
  145. package/dist/esm/justifi-checkout.entry.js +1 -1
  146. package/dist/esm/justifi-gross-payment-chart.entry.js +28 -4
  147. package/dist/esm/justifi-owner-form.entry.js +21 -11
  148. package/dist/esm/justifi-payment-balance-transactions.entry.js +2 -1
  149. package/dist/esm/justifi-payment-details.entry.js +26 -5
  150. package/dist/esm/justifi-payment-form.entry.js +18 -4
  151. package/dist/esm/{justifi-business-form-stepped.entry.js → justifi-payment-provisioning.entry.js} +20 -20
  152. package/dist/esm/justifi-payments-list.entry.js +26 -6
  153. package/dist/esm/justifi-payout-details.entry.js +28 -8
  154. package/dist/esm/justifi-payouts-list.entry.js +27 -7
  155. package/dist/esm/justifi-proceeds-list.entry.js +2 -1
  156. package/dist/esm/justifi-subaccount-details.entry.js +3 -2
  157. package/dist/esm/justifi-subaccounts-list.entry.js +3 -2
  158. package/dist/esm/loader.js +1 -1
  159. package/dist/esm/payload-parsers-920f49dd.js +123 -0
  160. package/dist/esm/payment-details-core.entry.js +10 -3
  161. package/dist/esm/payments-list-core.entry.js +10 -3
  162. package/dist/esm/payout-details-core.entry.js +11 -5
  163. package/dist/esm/payouts-list-core.entry.js +10 -3
  164. package/dist/esm/subaccount-account-details_4.entry.js +2 -1
  165. package/dist/esm/utils-4609f32c.js +38 -0
  166. package/dist/esm/{utils-2828201a.js → utils-684d2e47.js} +7 -1
  167. package/dist/esm/{utils-243abdb4.js → utils-d9e90399.js} +7 -1
  168. package/dist/esm/webcomponents.js +1 -1
  169. package/dist/module/Business.js +56 -3
  170. package/dist/module/SubAccount.js +1 -1
  171. package/dist/module/business-additional-questions-form-step.js +7 -4
  172. package/dist/module/business-additional-questions-schema.js +16 -7
  173. package/dist/module/business-address-schema.js +50 -14
  174. package/dist/module/business-core-info-form-step.js +3 -1
  175. package/dist/module/business-core-info-schema.js +24 -12
  176. package/dist/module/business-details-core2.js +8 -3
  177. package/dist/module/business-form-types.js +8 -1
  178. package/dist/module/business-identity-schema.js +30 -35
  179. package/dist/module/business-owners-form-step.js +13 -8
  180. package/dist/module/business-representative-form-step.js +11 -11
  181. package/dist/module/business-representative.js +4 -7
  182. package/dist/module/checkout-core.js +4 -4
  183. package/dist/module/form-control-datepart2.js +37 -33
  184. package/dist/module/form-control-monetary2.js +20 -18
  185. package/dist/module/form-control-number2.js +1 -0
  186. package/dist/module/form-control-select2.js +3 -1
  187. package/dist/module/form-control-text2.js +6 -1
  188. package/dist/module/gross-payment-chart-core2.js +8 -2
  189. package/dist/module/helpers.js +4 -0
  190. package/dist/module/{business-address-form.js → identity-address-form.js} +17 -20
  191. package/dist/module/justifi-business-details.js +21 -4
  192. package/dist/module/justifi-business-form.js +65 -56
  193. package/dist/module/justifi-gross-payment-chart.js +28 -4
  194. package/dist/module/justifi-identity-address-form.d.ts +11 -0
  195. package/dist/module/justifi-identity-address-form.js +6 -0
  196. package/dist/module/justifi-payment-balance-transactions.js +1 -1
  197. package/dist/module/justifi-payment-details.js +26 -5
  198. package/dist/module/justifi-payment-form.js +18 -4
  199. package/dist/module/justifi-payment-provisioning.d.ts +11 -0
  200. package/dist/module/{justifi-business-form-stepped.js → justifi-payment-provisioning.js} +32 -31
  201. package/dist/module/justifi-payments-list.js +26 -6
  202. package/dist/module/justifi-payout-details.js +28 -8
  203. package/dist/module/justifi-payouts-list.js +27 -7
  204. package/dist/module/justifi-subaccount-details.js +1 -1
  205. package/dist/module/justifi-subaccounts-list.js +1 -1
  206. package/dist/module/legal-address-form-step.js +10 -12
  207. package/dist/module/legal-address-form.js +5 -9
  208. package/dist/module/owner-form.js +23 -35
  209. package/dist/module/payment-details-core2.js +9 -3
  210. package/dist/module/payment-method-form.js +1 -1
  211. package/dist/module/payments-list-core2.js +9 -3
  212. package/dist/module/payout-details-core2.js +10 -5
  213. package/dist/module/payouts-list-core2.js +9 -3
  214. package/dist/module/subaccount-merchant-details2.js +1 -1
  215. package/dist/module/utils2.js +7 -1
  216. package/dist/module/utils3.js +31 -1
  217. package/dist/module/utils4.js +7 -1
  218. package/dist/types/api/Business.d.ts +10 -3
  219. package/dist/types/api/ComponentError.d.ts +18 -0
  220. package/dist/types/api/services/utils.d.ts +2 -0
  221. package/dist/types/api/shared.d.ts +9 -0
  222. package/dist/types/components/business-details/additional-questions-details/additional-questions-details.d.ts +2 -2
  223. package/dist/types/components/business-details/business-details-core.d.ts +3 -0
  224. package/dist/types/components/business-details/business-details.d.ts +3 -0
  225. package/dist/types/components/business-forms/business-form/business-form.d.ts +4 -2
  226. package/dist/types/components/business-forms/owner-form/identity-address/identity-address-form.d.ts +10 -0
  227. package/dist/types/components/business-forms/owner-form/owner-form.d.ts +5 -1
  228. package/dist/types/components/business-forms/{business-form-stepped → payment-provisioning}/additional-questions/business-additional-questions-form-step.d.ts +3 -1
  229. package/dist/types/components/business-forms/{business-form-stepped → payment-provisioning}/business-core-info/business-core-info-form-step.d.ts +1 -0
  230. package/dist/types/components/business-forms/{business-form-stepped → payment-provisioning}/business-owners/business-owners-form-step.d.ts +3 -1
  231. package/dist/types/components/business-forms/{business-form-stepped → payment-provisioning}/business-representative/business-representative-form-step.d.ts +3 -1
  232. package/dist/types/components/business-forms/{business-form-stepped → payment-provisioning}/legal-address-form/legal-address-form-step.d.ts +1 -0
  233. package/dist/types/components/business-forms/{business-form-stepped/business-form-stepped.d.ts → payment-provisioning/payment-provisioning.d.ts} +4 -3
  234. package/dist/types/components/business-forms/schemas/business-additional-questions-schema.d.ts +1 -1
  235. package/dist/types/components/business-forms/schemas/business-address-schema.d.ts +1 -12
  236. package/dist/types/components/business-forms/schemas/business-core-info-schema.d.ts +1 -1
  237. package/dist/types/components/business-forms/schemas/business-form-schema.d.ts +7 -3
  238. package/dist/types/components/business-forms/schemas/business-identity-schema.d.ts +5 -31
  239. package/dist/types/components/business-forms/utils/business-form-types.d.ts +10 -0
  240. package/dist/types/components/business-forms/utils/helpers.d.ts +2 -0
  241. package/dist/types/components/form/form-control-datepart.d.ts +2 -1
  242. package/dist/types/components/form/form-control-monetary.d.ts +2 -1
  243. package/dist/types/components/form/form-control-text.d.ts +2 -0
  244. package/dist/types/components/form/utils.d.ts +1 -0
  245. package/dist/types/components/gross-payment-chart/get-gross-payment-chart-data.d.ts +5 -8
  246. package/dist/types/components/gross-payment-chart/gross-payment-chart-core.d.ts +3 -0
  247. package/dist/types/components/gross-payment-chart/gross-payment-chart.d.ts +4 -0
  248. package/dist/types/components/payment-details/payment-details-core.d.ts +3 -0
  249. package/dist/types/components/payment-details/payment-details.d.ts +4 -0
  250. package/dist/types/components/payment-form/payment-form.d.ts +4 -1
  251. package/dist/types/components/payments-list/payments-list-core.d.ts +2 -0
  252. package/dist/types/components/payments-list/payments-list.d.ts +4 -0
  253. package/dist/types/components/payout-details/payout-details-core.d.ts +3 -0
  254. package/dist/types/components/payout-details/payout-details.d.ts +4 -0
  255. package/dist/types/components/payouts-list/payouts-list-core.d.ts +2 -0
  256. package/dist/types/components/payouts-list/payouts-list.d.ts +4 -0
  257. package/dist/types/components.d.ts +278 -104
  258. package/dist/types/utils/utils.d.ts +1 -0
  259. package/dist/webcomponents/p-091f9732.entry.js +1 -0
  260. package/dist/webcomponents/p-0b76c770.entry.js +1 -0
  261. package/dist/webcomponents/p-0d81883d.entry.js +1 -0
  262. package/dist/webcomponents/p-102b593a.entry.js +1 -0
  263. package/dist/webcomponents/p-221b9504.entry.js +1 -0
  264. package/dist/webcomponents/p-28cd23c8.entry.js +1 -0
  265. package/dist/webcomponents/p-2b8368d2.js +1 -0
  266. package/dist/webcomponents/p-2df32b4a.entry.js +1 -0
  267. package/dist/webcomponents/p-3d4aaa4a.entry.js +1 -0
  268. package/dist/webcomponents/p-436d27b9.entry.js +1 -0
  269. package/dist/webcomponents/p-448063ba.entry.js +1 -0
  270. package/dist/webcomponents/p-5341321d.entry.js +1 -0
  271. package/dist/webcomponents/{p-0399f02b.entry.js → p-5b262705.entry.js} +1 -1
  272. package/dist/webcomponents/p-5e503d7d.entry.js +1 -0
  273. package/dist/webcomponents/p-6047b960.entry.js +1 -0
  274. package/dist/webcomponents/p-60b2344a.js +1 -0
  275. package/dist/webcomponents/p-6d39b8bc.entry.js +1 -0
  276. package/dist/webcomponents/p-6f294d5d.js +1 -0
  277. package/dist/webcomponents/p-7294eb89.entry.js +1 -0
  278. package/dist/webcomponents/p-746bfba6.entry.js +1 -0
  279. package/dist/webcomponents/p-7c6a355f.entry.js +1 -0
  280. package/dist/webcomponents/p-817211f2.entry.js +1 -0
  281. package/dist/webcomponents/{p-65510838.js → p-8482c23f.js} +1 -1
  282. package/dist/webcomponents/p-935d6f55.js +1 -0
  283. package/dist/webcomponents/{p-e924f2e1.entry.js → p-959250e3.entry.js} +1 -1
  284. package/dist/webcomponents/p-a130a884.entry.js +1 -0
  285. package/dist/webcomponents/p-a4122c35.entry.js +1 -0
  286. package/dist/webcomponents/p-ac670a3e.js +1 -0
  287. package/dist/webcomponents/p-ae21ed6f.entry.js +19 -0
  288. package/dist/webcomponents/p-c071d8c1.entry.js +1 -0
  289. package/dist/webcomponents/p-c340b60f.js +1 -0
  290. package/dist/webcomponents/p-d5aab6b5.entry.js +1 -0
  291. package/dist/webcomponents/p-d5c80489.entry.js +1 -0
  292. package/dist/webcomponents/p-d776fe10.entry.js +1 -0
  293. package/dist/webcomponents/p-d8679fad.entry.js +1 -0
  294. package/dist/webcomponents/p-e84b3616.entry.js +1 -0
  295. package/dist/webcomponents/p-ea03b424.entry.js +1 -0
  296. package/dist/webcomponents/p-ea2cca2a.js +1 -0
  297. package/dist/webcomponents/p-ec230480.entry.js +1 -0
  298. package/dist/webcomponents/webcomponents.esm.js +1 -1
  299. package/package.json +1 -1
  300. package/dist/cjs/Identity-b6364aee.js +0 -27
  301. package/dist/cjs/business-additional-questions-schema-cbac27f2.js +0 -26
  302. package/dist/cjs/justifi-business-address-form-step.cjs.entry.js +0 -35
  303. package/dist/cjs/payload-parsers-25ed3936.js +0 -98
  304. package/dist/cjs/utils-f5d82f21.js +0 -10
  305. package/dist/collection/api/mockData/MockOnboardingData.js +0 -117
  306. package/dist/collection/api/mockData/MockPayments.js +0 -243
  307. package/dist/collection/api/mockData/MockSubAccount.js +0 -102
  308. package/dist/collection/api/mockData/mockGrossVolumeReport.js +0 -125
  309. package/dist/collection/components/business-forms/business-form/business-address/business-address-form.css +0 -2536
  310. package/dist/collection/components/business-forms/business-form/business-address/business-address-form.js +0 -97
  311. package/dist/collection/components/business-forms/business-form/business-address/test/business-address.e2e.js +0 -9
  312. package/dist/collection/components/business-forms/business-form-stepped/business-address/test/business-address-form-step.spec.js +0 -97
  313. package/dist/collection/components/business-forms/business-form-stepped/test/business-form-stepped.spec.js +0 -61
  314. package/dist/collection/components/business-forms/schemas/business-owners-schema.js +0 -16
  315. package/dist/collection/components/card-form/test/card-form.e2e.js +0 -13
  316. package/dist/esm/Identity-774788c0.js +0 -25
  317. package/dist/esm/business-additional-questions-schema-2cb80f70.js +0 -23
  318. package/dist/esm/justifi-business-address-form-step.entry.js +0 -31
  319. package/dist/esm/payload-parsers-1dd7474f.js +0 -90
  320. package/dist/esm/utils-546ca6aa.js +0 -8
  321. package/dist/module/justifi-business-address-form-step.d.ts +0 -11
  322. package/dist/module/justifi-business-address-form-step.js +0 -75
  323. package/dist/module/justifi-business-address-form.d.ts +0 -11
  324. package/dist/module/justifi-business-address-form.js +0 -6
  325. package/dist/module/justifi-business-form-stepped.d.ts +0 -11
  326. package/dist/types/api/mockData/MockOnboardingData.d.ts +0 -8
  327. package/dist/types/api/mockData/MockPayments.d.ts +0 -3
  328. package/dist/types/api/mockData/MockSubAccount.d.ts +0 -3
  329. package/dist/types/components/business-forms/business-form/business-address/business-address-form.d.ts +0 -9
  330. package/dist/types/components/business-forms/business-form-stepped/business-address/business-address-form-step.d.ts +0 -9
  331. package/dist/types/components/business-forms/schemas/business-owners-schema.d.ts +0 -33
  332. package/dist/webcomponents/p-04a98c63.js +0 -1
  333. package/dist/webcomponents/p-06888c2e.entry.js +0 -1
  334. package/dist/webcomponents/p-0811bc77.entry.js +0 -1
  335. package/dist/webcomponents/p-17d72f4a.js +0 -1
  336. package/dist/webcomponents/p-17f64853.entry.js +0 -1
  337. package/dist/webcomponents/p-22085999.entry.js +0 -1
  338. package/dist/webcomponents/p-252835df.entry.js +0 -1
  339. package/dist/webcomponents/p-28b38699.js +0 -1
  340. package/dist/webcomponents/p-374c44e6.entry.js +0 -1
  341. package/dist/webcomponents/p-4697ccfa.entry.js +0 -1
  342. package/dist/webcomponents/p-4781cd06.js +0 -1
  343. package/dist/webcomponents/p-4d806131.entry.js +0 -1
  344. package/dist/webcomponents/p-4e0b3206.entry.js +0 -1
  345. package/dist/webcomponents/p-583dd5a2.entry.js +0 -1
  346. package/dist/webcomponents/p-5be4e217.entry.js +0 -1
  347. package/dist/webcomponents/p-5da4fbe7.entry.js +0 -1
  348. package/dist/webcomponents/p-6103c20d.entry.js +0 -1
  349. package/dist/webcomponents/p-6ed680e9.js +0 -1
  350. package/dist/webcomponents/p-7654c70d.entry.js +0 -1
  351. package/dist/webcomponents/p-847441ce.entry.js +0 -1
  352. package/dist/webcomponents/p-861ba3fc.entry.js +0 -1
  353. package/dist/webcomponents/p-9207ccb2.entry.js +0 -1
  354. package/dist/webcomponents/p-9ce8d98c.entry.js +0 -1
  355. package/dist/webcomponents/p-9e4b81ad.entry.js +0 -1
  356. package/dist/webcomponents/p-a141c531.js +0 -1
  357. package/dist/webcomponents/p-a2dbe90f.entry.js +0 -1
  358. package/dist/webcomponents/p-a98eea84.entry.js +0 -1
  359. package/dist/webcomponents/p-b1bc23af.entry.js +0 -1
  360. package/dist/webcomponents/p-b27c9b0d.entry.js +0 -1
  361. package/dist/webcomponents/p-b8f22856.js +0 -1
  362. package/dist/webcomponents/p-c8d62072.entry.js +0 -1
  363. package/dist/webcomponents/p-e3748ea4.entry.js +0 -1
  364. package/dist/webcomponents/p-eef5ed19.entry.js +0 -1
  365. package/dist/webcomponents/p-efc7025c.entry.js +0 -1
  366. package/dist/webcomponents/p-f3453ca2.js +0 -1
  367. package/dist/webcomponents/p-f3ca6fda.entry.js +0 -1
  368. package/dist/webcomponents/p-fe2af0cf.entry.js +0 -19
  369. package/dist/webcomponents/p-fe8a94c1.entry.js +0 -1
  370. /package/dist/cjs/{state-options-96d05a98.js → state-options-4fbcb48a.js} +0 -0
  371. /package/dist/collection/components/business-forms/{business-form-stepped/business-address/business-address-form-step.css → owner-form/identity-address/identity-address-form.css} +0 -0
  372. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/additional-questions/test/business-additional-questions-form-step.spec.js +0 -0
  373. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-core-info/business-core-info-form-step.css +0 -0
  374. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-core-info/test/business-core-info-form-step.spec.js +0 -0
  375. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-owners/business-owners-form-step.css +0 -0
  376. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-owners/test/business-owners-form-step.spec.js +0 -0
  377. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-representative/business-representative-form-step.css +0 -0
  378. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/business-representative/test/business-representative-form-step.spec.js +0 -0
  379. /package/dist/collection/components/business-forms/{business-form-stepped → payment-provisioning}/legal-address-form/legal-address-form-step.css +0 -0
  380. /package/dist/collection/components/business-forms/{business-form-stepped/business-form-stepped.css → payment-provisioning/payment-provisioning.css} +0 -0
  381. /package/dist/collection/{components/billing-form → utils}/state-options.js +0 -0
  382. /package/dist/esm/{state-options-fc1daf67.js → state-options-a356fb11.js} +0 -0
  383. /package/dist/types/{api → home/runner/work/web-component-library/web-component-library/packages/webcomponents/.stencil}/mockData/mockGrossVolumeReport.d.ts +0 -0
  384. /package/dist/types/home/runner/work/web-component-library/web-component-library/packages/webcomponents/.stencil/{config.d.ts → packages/webcomponents/config.d.ts} +0 -0
  385. /package/dist/types/{components/billing-form → utils}/state-options.d.ts +0 -0
  386. /package/dist/webcomponents/{p-8e2a88a8.js → p-6078a370.js} +0 -0
@@ -5,6 +5,8 @@ export class TextInput {
5
5
  this.name = undefined;
6
6
  this.error = undefined;
7
7
  this.defaultValue = undefined;
8
+ this.keyDownHandler = undefined;
9
+ this.maxLength = undefined;
8
10
  this.disabled = undefined;
9
11
  this.inputHandler = undefined;
10
12
  this.input = undefined;
@@ -22,12 +24,13 @@ export class TextInput {
22
24
  const target = event.target;
23
25
  const name = target.getAttribute('name');
24
26
  this.inputHandler(name, target.value);
27
+ this.formControlInput.emit(target.value);
25
28
  }
26
29
  componentDidLoad() {
27
30
  this.updateInput(this.defaultValue);
28
31
  }
29
32
  render() {
30
- return (h(Host, { exportparts: "label,input,input-invalid" }, h("label", { part: "label", class: "form-label", htmlFor: this.name }, this.label), h("input", { id: this.name, name: this.name, onInput: (event) => this.handleFormControlInput(event), onBlur: () => this.formControlBlur.emit(), part: `input ${this.error && 'input-invalid'} ${this.disabled && 'input-disabled'}`, class: this.error ? 'form-control is-invalid' : 'form-control', type: "text", disabled: this.disabled }), this.error && h("div", { class: "invalid-feedback" }, this.error)));
33
+ return (h(Host, { exportparts: "label,input,input-invalid" }, h("label", { part: "label", class: "form-label", htmlFor: this.name }, this.label), h("input", { id: this.name, name: this.name, onInput: (event) => this.handleFormControlInput(event), onBlur: () => this.formControlBlur.emit(), onKeyDown: (event) => this.keyDownHandler && this.keyDownHandler(event), maxLength: this.maxLength, part: `input ${this.error ? 'input-invalid ' : ''}${this.disabled ? ' input-disabled' : ''}`, class: this.error ? 'form-control is-invalid' : 'form-control', type: "text", disabled: this.disabled }), this.error && h("div", { class: "invalid-feedback" }, this.error)));
31
34
  }
32
35
  static get is() { return "form-control-text"; }
33
36
  static get encapsulation() { return "shadow"; }
@@ -111,6 +114,38 @@ export class TextInput {
111
114
  "attribute": "default-value",
112
115
  "reflect": false
113
116
  },
117
+ "keyDownHandler": {
118
+ "type": "unknown",
119
+ "mutable": false,
120
+ "complexType": {
121
+ "original": "(event: any) => void",
122
+ "resolved": "(event: any) => void",
123
+ "references": {}
124
+ },
125
+ "required": false,
126
+ "optional": true,
127
+ "docs": {
128
+ "tags": [],
129
+ "text": ""
130
+ }
131
+ },
132
+ "maxLength": {
133
+ "type": "number",
134
+ "mutable": false,
135
+ "complexType": {
136
+ "original": "number",
137
+ "resolved": "number",
138
+ "references": {}
139
+ },
140
+ "required": false,
141
+ "optional": true,
142
+ "docs": {
143
+ "tags": [],
144
+ "text": ""
145
+ },
146
+ "attribute": "max-length",
147
+ "reflect": false
148
+ },
114
149
  "disabled": {
115
150
  "type": "boolean",
116
151
  "mutable": false,
@@ -0,0 +1,88 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { DatePartInput } from "../form-control-datepart";
3
+ import * as IMaskPackage from "imask";
4
+ jest.mock('imask', () => ({
5
+ default: jest.fn().mockImplementation(() => ({
6
+ on: jest.fn(),
7
+ destroy: jest.fn(),
8
+ value: '',
9
+ unmaskedValue: '',
10
+ })),
11
+ }));
12
+ const IMaskSpy = jest.spyOn(IMaskPackage, 'default');
13
+ afterEach(() => {
14
+ jest.clearAllMocks();
15
+ });
16
+ describe('form-control-datepart', () => {
17
+ it('renders correctly with default props', async () => {
18
+ const page = await newSpecPage({
19
+ components: [DatePartInput],
20
+ html: `<form-control-datepart label="Date Part" name="datepart"></form-control-datepart>`,
21
+ });
22
+ expect(page.root).toMatchSnapshot();
23
+ });
24
+ it('should initialize IMask with correct options for "day" type', async () => {
25
+ await newSpecPage({
26
+ components: [DatePartInput],
27
+ html: '<form-control-datepart type="day"></form-control-datepart>',
28
+ });
29
+ expect(IMaskSpy).toHaveBeenCalled();
30
+ expect(IMaskSpy.mock.calls[0][1]).toEqual({ mask: Number, min: 1, max: 31 });
31
+ });
32
+ it('should initialize IMask with correct options for "month" type', async () => {
33
+ // Clear mocks to reset the calls count
34
+ jest.clearAllMocks();
35
+ await newSpecPage({
36
+ components: [DatePartInput],
37
+ html: '<form-control-datepart type="month"></form-control-datepart>',
38
+ });
39
+ expect(IMaskSpy).toHaveBeenCalled();
40
+ expect(IMaskSpy.mock.calls[0][1]).toEqual({ mask: Number, min: 1, max: 12 });
41
+ });
42
+ it('should initialize IMask with correct options for "year" type', async () => {
43
+ // Clear mocks to reset the calls count
44
+ jest.clearAllMocks();
45
+ await newSpecPage({
46
+ components: [DatePartInput],
47
+ html: '<form-control-datepart type="year"></form-control-datepart>',
48
+ });
49
+ expect(IMaskSpy).toHaveBeenCalled();
50
+ expect(IMaskSpy.mock.calls[0][1]).toEqual({ mask: Number, min: 1900, max: new Date().getFullYear() });
51
+ });
52
+ it('emits formControlBlur on input blur', async () => {
53
+ const page = await newSpecPage({
54
+ components: [DatePartInput],
55
+ html: `<form-control-datepart></form-control-datepart>`,
56
+ });
57
+ const blurSpy = jest.fn();
58
+ page.win.addEventListener('formControlBlur', blurSpy);
59
+ const input = page.root.shadowRoot.querySelector('input');
60
+ input.dispatchEvent(new Event('blur', { bubbles: true }));
61
+ await page.waitForChanges();
62
+ expect(blurSpy).toHaveBeenCalled();
63
+ });
64
+ it('calls inputHandler and emits formControlInput on user input', async () => {
65
+ const inputHandlerMock = jest.fn();
66
+ const page = await newSpecPage({
67
+ components: [DatePartInput],
68
+ html: `<form-control-datepart type="day" name="day"></form-control-datepart>`,
69
+ });
70
+ page.rootInstance.inputHandler = inputHandlerMock;
71
+ await page.waitForChanges();
72
+ const inputSpy = jest.fn();
73
+ page.win.addEventListener('formControlInput', inputSpy);
74
+ const input = page.root.shadowRoot.querySelector('input');
75
+ input.value = '15'; // Assuming 'day' type for simplicity
76
+ input.dispatchEvent(new Event('input', { bubbles: true }));
77
+ await page.waitForChanges();
78
+ expect(inputHandlerMock).toHaveBeenCalledWith('day', '15');
79
+ expect(inputSpy).toHaveBeenCalled();
80
+ });
81
+ it('displays error message correctly', async () => {
82
+ const page = await newSpecPage({
83
+ components: [DatePartInput],
84
+ html: `<form-control-datepart error="Error message"></form-control-datepart>`,
85
+ });
86
+ expect(page.root).toMatchSnapshot();
87
+ });
88
+ });
@@ -0,0 +1,69 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { MonetaryInput } from "../form-control-monetary";
3
+ describe('form-control-monetary', () => {
4
+ it('renders correctly with default props', async () => {
5
+ const page = await newSpecPage({
6
+ components: [MonetaryInput],
7
+ html: `<form-control-monetary></form-control-monetary>`,
8
+ });
9
+ expect(page.root).toMatchSnapshot();
10
+ });
11
+ it('handles props correctly', async () => {
12
+ const page = await newSpecPage({
13
+ components: [MonetaryInput],
14
+ html: `
15
+ <form-control-monetary
16
+ label="Amount"
17
+ name="amount"
18
+ error="Invalid amount"
19
+ defaultValue="1000"
20
+ ></form-control-monetary>
21
+ `,
22
+ });
23
+ await page.waitForChanges();
24
+ const label = page.root.shadowRoot.querySelector('label');
25
+ const input = page.root.shadowRoot.querySelector('input');
26
+ const errorDiv = page.root.shadowRoot.querySelector('.invalid-feedback');
27
+ expect(label.textContent).toBe('Amount');
28
+ expect(input.getAttribute('name')).toBe('amount');
29
+ expect(errorDiv.textContent).toBe('Invalid amount');
30
+ });
31
+ it('calls inputHandler and emits formControlInput on user input', async () => {
32
+ const inputHandlerMock = jest.fn();
33
+ const page = await newSpecPage({
34
+ components: [MonetaryInput],
35
+ html: `<form-control-monetary></form-control-monetary>`,
36
+ });
37
+ page.rootInstance.inputHandler = inputHandlerMock;
38
+ await page.waitForChanges();
39
+ const inputSpy = jest.fn();
40
+ page.win.addEventListener('formControlInput', inputSpy);
41
+ const input = page.root.shadowRoot.querySelector('input');
42
+ input.value = '1234.56';
43
+ input.dispatchEvent(new Event('input', { bubbles: true }));
44
+ await page.waitForChanges();
45
+ expect(inputHandlerMock).toHaveBeenCalled();
46
+ expect(inputSpy).toHaveBeenCalled();
47
+ });
48
+ it('emits formControlBlur on input blur', async () => {
49
+ const page = await newSpecPage({
50
+ components: [MonetaryInput],
51
+ html: `<form-control-monetary></form-control-monetary>`,
52
+ });
53
+ const blurSpy = jest.fn();
54
+ page.win.addEventListener('formControlBlur', blurSpy);
55
+ const input = page.root.shadowRoot.querySelector('input');
56
+ input.dispatchEvent(new Event('blur', { bubbles: true }));
57
+ await page.waitForChanges();
58
+ expect(blurSpy).toHaveBeenCalled();
59
+ });
60
+ it('displays error message when error prop is set', async () => {
61
+ const page = await newSpecPage({
62
+ components: [MonetaryInput],
63
+ html: `<form-control-monetary error="Invalid amount"></form-control-monetary>`,
64
+ });
65
+ const errorDiv = page.root.shadowRoot.querySelector('.invalid-feedback');
66
+ expect(errorDiv.textContent).toBe('Invalid amount');
67
+ expect(page.root).toMatchSnapshot();
68
+ });
69
+ });
@@ -0,0 +1,77 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { NumberInput } from "../form-control-number";
3
+ describe('form-control-number', () => {
4
+ it('renders with default props', async () => {
5
+ const page = await newSpecPage({
6
+ components: [NumberInput],
7
+ html: `<form-control-number label="Age"></form-control-number>`,
8
+ });
9
+ expect(page.root).toMatchSnapshot();
10
+ });
11
+ it('renders with an error message', async () => {
12
+ const page = await newSpecPage({
13
+ components: [NumberInput],
14
+ html: `<form-control-number label="Age" error="Invalid input"></form-control-number>`,
15
+ });
16
+ expect(page.root).toMatchSnapshot();
17
+ });
18
+ it('handles the disabled state', async () => {
19
+ const page = await newSpecPage({
20
+ components: [NumberInput],
21
+ html: `<form-control-number label="Age" disabled></form-control-number>`,
22
+ });
23
+ expect(page.root).toMatchSnapshot();
24
+ });
25
+ it('updates the input value when defaultValue changes', async () => {
26
+ const page = await newSpecPage({
27
+ components: [NumberInput],
28
+ html: `<form-control-number label="Age"></form-control-number>`,
29
+ });
30
+ let input = page.root.shadowRoot.querySelector('input');
31
+ expect(input.value).toBe(''); // Default should be empty
32
+ page.root.defaultValue = '30';
33
+ await page.waitForChanges();
34
+ input = page.root.shadowRoot.querySelector('input');
35
+ expect(input.value).toBe('30');
36
+ });
37
+ it('calls inputHandler on user input', async () => {
38
+ const inputHandlerMock = jest.fn();
39
+ const page = await newSpecPage({
40
+ components: [NumberInput],
41
+ html: `<form-control-number name="age"></form-control-number>`,
42
+ });
43
+ page.rootInstance.inputHandler = inputHandlerMock;
44
+ await page.waitForChanges();
45
+ const input = page.root.shadowRoot.querySelector('input');
46
+ input.value = '25';
47
+ await input.dispatchEvent(new Event('input', { bubbles: true }));
48
+ expect(inputHandlerMock).toHaveBeenCalledWith('age', '25');
49
+ });
50
+ it('emits formControlBlur on input blur', async () => {
51
+ const page = await newSpecPage({
52
+ components: [NumberInput],
53
+ html: `<form-control-number></form-control-number>`,
54
+ });
55
+ const blurSpy = jest.fn();
56
+ page.win.addEventListener('formControlBlur', blurSpy);
57
+ const input = page.root.shadowRoot.querySelector('input');
58
+ await input.dispatchEvent(new CustomEvent('blur'));
59
+ expect(blurSpy).toHaveBeenCalled();
60
+ });
61
+ it('emits formControlInput on input', async () => {
62
+ const page = await newSpecPage({
63
+ components: [NumberInput],
64
+ html: `<form-control-number name="age"></form-control-number>`,
65
+ });
66
+ page.rootInstance.inputHandler = jest.fn();
67
+ await page.waitForChanges();
68
+ const inputSpy = jest.fn();
69
+ page.win.addEventListener('formControlInput', inputSpy);
70
+ const input = page.root.shadowRoot.querySelector('input');
71
+ input.value = '25';
72
+ const mockEvent = new Event('input', { bubbles: true });
73
+ Object.defineProperty(mockEvent, 'target', { value: input, enumerable: true });
74
+ await input.dispatchEvent(mockEvent);
75
+ expect(inputSpy).toHaveBeenCalled();
76
+ });
77
+ });
@@ -0,0 +1,84 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { SelectInput } from "../form-control-select";
3
+ describe('form-control-select', () => {
4
+ it('renders with default props', async () => {
5
+ const page = await newSpecPage({
6
+ components: [SelectInput],
7
+ html: `<form-control-select label="Test Select" name="test"></form-control-select>`,
8
+ });
9
+ expect(page.root).toMatchSnapshot();
10
+ expect(page.rootInstance.label).toBe('Test Select');
11
+ expect(page.rootInstance.name).toBe('test');
12
+ });
13
+ it('populates options correctly and handles selection', async () => {
14
+ const options = [
15
+ { label: 'Option 1', value: '1' },
16
+ { label: 'Option 2', value: '2' }
17
+ ];
18
+ const page = await newSpecPage({
19
+ components: [SelectInput],
20
+ html: `<form-control-select></form-control-select>`,
21
+ });
22
+ page.rootInstance.options = options;
23
+ await page.waitForChanges();
24
+ const selectElement = page.root.shadowRoot.querySelector('select');
25
+ expect(selectElement.children.length).toBe(options.length);
26
+ expect(selectElement.children[0].textContent).toBe(options[0].label);
27
+ selectElement.value = options[1].value;
28
+ expect(selectElement.value).toBe('2');
29
+ });
30
+ it('shows error and applies error styling when error prop is provided', async () => {
31
+ const page = await newSpecPage({
32
+ components: [SelectInput],
33
+ html: `<form-control-select error="This field is required."></form-control-select>`,
34
+ });
35
+ const shadowRoot = page.root.shadowRoot;
36
+ expect(shadowRoot.querySelector('.invalid-feedback').textContent).toBe('This field is required.');
37
+ expect(shadowRoot.querySelector('.form-select').classList.contains('is-invalid')).toBeTruthy();
38
+ });
39
+ it('emits formControlInput event on input', async () => {
40
+ const page = await newSpecPage({
41
+ components: [SelectInput],
42
+ html: `<form-control-select></form-control-select>`,
43
+ });
44
+ page.rootInstance.inputHandler = jest.fn();
45
+ const inputEventSpy = jest.fn();
46
+ page.root.addEventListener('formControlInput', inputEventSpy);
47
+ const selectElement = page.root.shadowRoot.querySelector('select');
48
+ selectElement.value = '1';
49
+ selectElement.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
50
+ await page.waitForChanges();
51
+ expect(inputEventSpy).toHaveBeenCalled();
52
+ });
53
+ it('emits formControlBlur event on blur', async () => {
54
+ const page = await newSpecPage({
55
+ components: [SelectInput],
56
+ html: `<form-control-select></form-control-select>`,
57
+ });
58
+ const blurEventSpy = jest.fn();
59
+ page.root.addEventListener('formControlBlur', blurEventSpy);
60
+ const selectElement = page.root.shadowRoot.querySelector('select');
61
+ selectElement.dispatchEvent(new Event('blur'));
62
+ expect(blurEventSpy).toHaveBeenCalled();
63
+ });
64
+ it('disables select when disabled prop is true', async () => {
65
+ const page = await newSpecPage({
66
+ components: [SelectInput],
67
+ html: `<form-control-select disabled="true"></form-control-select>`,
68
+ });
69
+ const selectElement = page.root.shadowRoot.querySelector('select');
70
+ // This is weird, but the value of the disabled
71
+ // attribute is an empty string on Stencil mock DOM
72
+ expect(selectElement.attributes.getNamedItem('disabled').value).toBe('');
73
+ });
74
+ it('handles empty options array', async () => {
75
+ const page = await newSpecPage({
76
+ components: [SelectInput],
77
+ html: `<form-control-select></form-control-select>`,
78
+ });
79
+ page.rootInstance.options = [];
80
+ await page.waitForChanges();
81
+ const selectElement = page.root.shadowRoot.querySelector('select');
82
+ expect(selectElement.children.length).toBe(0);
83
+ });
84
+ });
@@ -0,0 +1,104 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { TextInput } from "../form-control-text";
3
+ describe('form-control-text', () => {
4
+ // Test 1: Initial Rendering and Props
5
+ it('renders with default props', async () => {
6
+ const page = await newSpecPage({
7
+ components: [TextInput],
8
+ html: `<form-control-text label="Username" name="username"></form-control-text>`,
9
+ });
10
+ expect(page.root).toMatchSnapshot();
11
+ expect(page.rootInstance.label).toBe('Username');
12
+ expect(page.rootInstance.name).toBe('username');
13
+ });
14
+ // Test 2: Rendering with all props
15
+ it('renders with all props provided', async () => {
16
+ const page = await newSpecPage({
17
+ components: [TextInput],
18
+ html: `
19
+ <form-control-text
20
+ label="Email"
21
+ name="email"
22
+ default-value="user@example.com"
23
+ error="Invalid email"
24
+ disabled
25
+ ></form-control-text>
26
+ `,
27
+ });
28
+ const inputElement = page.root.shadowRoot.querySelector('input');
29
+ expect(page.rootInstance.label).toBe('Email');
30
+ expect(inputElement.value).toBe('user@example.com');
31
+ expect(inputElement.disabled).toBeTruthy();
32
+ });
33
+ // Test 3: Handle Default Value Changes
34
+ it('updates input value on defaultValue prop change', async () => {
35
+ const page = await newSpecPage({
36
+ components: [TextInput],
37
+ html: `<form-control-text default-value="initial"></form-control-text>`,
38
+ });
39
+ page.rootInstance.defaultValue = 'updated';
40
+ await page.waitForChanges();
41
+ const inputElement = page.root.shadowRoot.querySelector('input');
42
+ expect(inputElement.value).toBe('updated');
43
+ });
44
+ // Test 4: User Interaction - Input
45
+ it('handles user input correctly', async () => {
46
+ const page = await newSpecPage({
47
+ components: [TextInput],
48
+ html: `<form-control-text></form-control-text>`,
49
+ });
50
+ const inputElement = page.root.shadowRoot.querySelector('input');
51
+ const testValue = 'Hello, World!';
52
+ inputElement.value = testValue;
53
+ await inputElement.dispatchEvent(new Event('input'));
54
+ expect(inputElement.value).toBe(testValue);
55
+ });
56
+ // Test 5: Event Emission on Input
57
+ it('emits formControlInput event on input', async () => {
58
+ const page = await newSpecPage({
59
+ components: [TextInput],
60
+ html: `<form-control-text></form-control-text>`,
61
+ });
62
+ // Set a mock inputHandler to prevent it from being undefined
63
+ page.rootInstance.inputHandler = jest.fn();
64
+ const inputEventSpy = jest.fn();
65
+ page.root.addEventListener('formControlInput', inputEventSpy);
66
+ await page.waitForChanges();
67
+ const inputElement = page.root.shadowRoot.querySelector('input');
68
+ inputElement.value = 'Hello, World!';
69
+ inputElement.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
70
+ await page.waitForChanges();
71
+ expect(inputEventSpy).toHaveBeenCalled();
72
+ });
73
+ // Test 6: Event Emission on Blur
74
+ it('emits formControlBlur event on blur', async () => {
75
+ const page = await newSpecPage({
76
+ components: [TextInput],
77
+ html: `<form-control-text></form-control-text>`,
78
+ });
79
+ const blurEventSpy = jest.fn();
80
+ page.win.addEventListener('formControlBlur', blurEventSpy);
81
+ const inputElement = page.root.shadowRoot.querySelector('input');
82
+ inputElement.dispatchEvent(new Event('blur'));
83
+ expect(blurEventSpy).toHaveBeenCalled();
84
+ });
85
+ // Test 7: Disabled Prop
86
+ it('disables input when disabled prop is true', async () => {
87
+ const page = await newSpecPage({
88
+ components: [TextInput],
89
+ html: `<form-control-text disabled></form-control-text>`,
90
+ });
91
+ const inputElement = page.root.shadowRoot.querySelector('input');
92
+ expect(inputElement.disabled).toBeTruthy();
93
+ });
94
+ // Test 8: Error Prop
95
+ it('shows error and applies error styling when error prop is provided', async () => {
96
+ const page = await newSpecPage({
97
+ components: [TextInput],
98
+ html: `<form-control-text error="This field is required."></form-control-text>`,
99
+ });
100
+ const shadowRoot = page.root.shadowRoot;
101
+ expect(shadowRoot.querySelector('.invalid-feedback').textContent).toBe('This field is required.');
102
+ expect(shadowRoot.querySelector('.form-control').classList.contains('is-invalid')).toBeTruthy();
103
+ });
104
+ });
@@ -0,0 +1,60 @@
1
+ import * as yup from "yup";
2
+ import { FormController } from "../form";
3
+ describe('FormController', () => {
4
+ let formController;
5
+ const mockSchema = yup.object().shape({
6
+ name: yup.string().required(),
7
+ email: yup.string().email().required(),
8
+ });
9
+ beforeEach(() => {
10
+ formController = new FormController(mockSchema);
11
+ });
12
+ it('should initialize with default empty values and errors', () => {
13
+ expect(formController.values.getValue()).toEqual({});
14
+ expect(formController.errors.getValue()).toEqual({});
15
+ });
16
+ it('should set initial values correctly', () => {
17
+ const initialValues = { name: 'John', email: 'john@example.com' };
18
+ formController.setInitialValues(initialValues);
19
+ expect(formController.values.getValue()).toEqual(initialValues);
20
+ });
21
+ it('should update values correctly', async () => {
22
+ const updateValues = { name: 'Jane' };
23
+ formController.setInitialValues({
24
+ name: 'John',
25
+ email: 'john@example.com',
26
+ });
27
+ formController.setValues(updateValues);
28
+ expect(formController.values.getValue()).toEqual({
29
+ name: 'Jane',
30
+ email: 'john@example.com',
31
+ });
32
+ });
33
+ it('should reset values to initial values', () => {
34
+ const initialValues = { name: 'John', email: 'john@example.com' };
35
+ formController.setInitialValues(initialValues);
36
+ formController.setValues({ name: 'Jane' }); // Update values
37
+ formController.resetValues(); // Reset to initial values
38
+ expect(formController.values.getValue()).toEqual(initialValues);
39
+ });
40
+ it('should validate and set errors correctly for invalid data', async () => {
41
+ formController.setValues({ email: 'invalid-email' }); // Set invalid email
42
+ await formController.validateAndSubmit(() => null);
43
+ expect(formController.errors.getValue()).toHaveProperty('email');
44
+ });
45
+ it('should call submit handler on valid data', async () => {
46
+ const submitHandlerMock = jest.fn();
47
+ formController.setInitialValues({
48
+ name: 'John',
49
+ email: 'john@example.com',
50
+ });
51
+ await formController.validateAndSubmit(submitHandlerMock);
52
+ expect(submitHandlerMock).toHaveBeenCalled();
53
+ });
54
+ it('should not call submit handler on invalid data', async () => {
55
+ const submitHandlerMock = jest.fn();
56
+ formController.setValues({ email: 'invalid-email' }); // Set invalid email
57
+ await formController.validateAndSubmit(submitHandlerMock);
58
+ expect(submitHandlerMock).not.toHaveBeenCalled();
59
+ });
60
+ });
@@ -1,3 +1,9 @@
1
1
  import { h } from "@stencil/core";
2
2
  export const FormAlert = (message) => (h("div", { class: 'alert alert-danger d-flex align-items-center', role: 'alert' }, h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "currentColor", class: "bi bi-exclamation-triangle-fill flex-shrink-0 me-2", viewBox: "0 0 16 16", role: "img", "aria-label": "Warning:" }, h("path", { d: "M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" })), h("div", null, message)));
3
3
  export const LoadingSpinner = () => (h("div", { class: "spinner-border spinner-border-sm", role: "status" }, h("span", { class: "visually-hidden" }, "Loading...")));
4
+ export const filterPostalInput = (e) => {
5
+ const specialKeys = ['Backspace', 'Tab', 'Enter'];
6
+ if (!/^\d$/.test(e.key) && !specialKeys.includes(e.key)) {
7
+ e.preventDefault();
8
+ }
9
+ };
@@ -1,14 +1,29 @@
1
+ import { ComponentErrorSeverity } from "../../api/ComponentError";
2
+ import { getErrorCode, getErrorMessage } from "../../api/services/utils";
1
3
  export const makeGetGrossPaymentChartData = ({ id, authToken, service }) => async ({ onSuccess, onError }) => {
4
+ var _a;
2
5
  try {
3
6
  const response = await service.fetchGrossVolumeChartData(id, authToken);
4
7
  if (!response.error) {
5
8
  onSuccess(response.data);
6
9
  }
7
10
  else {
8
- onError(`Error trying to fetch data : ${response.error}`);
11
+ const errorMessage = getErrorMessage(response.error);
12
+ const code = getErrorCode((_a = response.error) === null || _a === void 0 ? void 0 : _a.code);
13
+ onError({
14
+ error: errorMessage,
15
+ code,
16
+ severity: ComponentErrorSeverity.ERROR,
17
+ });
9
18
  }
10
19
  }
11
20
  catch (error) {
12
- onError(`Error trying to fetch data : ${error}`);
21
+ const code = getErrorCode(error === null || error === void 0 ? void 0 : error.code);
22
+ const errorMessage = getErrorMessage(error);
23
+ onError({
24
+ error: errorMessage,
25
+ code,
26
+ severity: ComponentErrorSeverity.ERROR,
27
+ });
13
28
  }
14
29
  };
@@ -37,9 +37,14 @@ export class GrossPaymentChartCore {
37
37
  this.loading = false;
38
38
  this.grossVolumeReport = data;
39
39
  },
40
- onError: (error) => {
40
+ onError: ({ error, code, severity }) => {
41
41
  this.loading = false;
42
42
  this.errorMessage = error;
43
+ this.errorEvent.emit({
44
+ errorCode: code,
45
+ message: error,
46
+ severity,
47
+ });
43
48
  }
44
49
  });
45
50
  }
@@ -107,6 +112,30 @@ export class GrossPaymentChartCore {
107
112
  "errorMessage": {}
108
113
  };
109
114
  }
115
+ static get events() {
116
+ return [{
117
+ "method": "errorEvent",
118
+ "name": "error-event",
119
+ "bubbles": true,
120
+ "cancelable": true,
121
+ "composed": true,
122
+ "docs": {
123
+ "tags": [],
124
+ "text": ""
125
+ },
126
+ "complexType": {
127
+ "original": "ComponentError",
128
+ "resolved": "ComponentError",
129
+ "references": {
130
+ "ComponentError": {
131
+ "location": "import",
132
+ "path": "../../api/ComponentError",
133
+ "id": "src/api/ComponentError.ts::ComponentError"
134
+ }
135
+ }
136
+ }
137
+ }];
138
+ }
110
139
  static get watchers() {
111
140
  return [{
112
141
  "propName": "getGrossPayment",