@foxy.io/elements 1.24.0-beta.4 → 1.24.0-beta.6

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 (302) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +2 -2
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-admin-subscription-card.js +1 -1
  5. package/dist/cdn/foxy-api-browser.js +1 -1
  6. package/dist/cdn/foxy-applied-coupon-code-card.js +1 -1
  7. package/dist/cdn/foxy-applied-coupon-code-form.js +1 -1
  8. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  9. package/dist/cdn/foxy-attribute-card.js +1 -1
  10. package/dist/cdn/foxy-attribute-form.js +1 -1
  11. package/dist/cdn/foxy-cancellation-form.js +1 -1
  12. package/dist/cdn/foxy-cart-card.js +1 -1
  13. package/dist/cdn/foxy-cart-form.js +1 -1
  14. package/dist/cdn/foxy-client-card.js +1 -1
  15. package/dist/cdn/foxy-client-form.js +1 -1
  16. package/dist/cdn/foxy-collection-page.js +1 -1
  17. package/dist/cdn/foxy-collection-pages.js +1 -1
  18. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  19. package/dist/cdn/foxy-coupon-card.js +1 -1
  20. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  21. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  22. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  23. package/dist/cdn/foxy-coupon-form.js +1 -1
  24. package/dist/cdn/foxy-custom-field-card.js +1 -1
  25. package/dist/cdn/foxy-custom-field-form.js +1 -1
  26. package/dist/cdn/foxy-customer-api.js +1 -1
  27. package/dist/cdn/foxy-customer-card.js +1 -1
  28. package/dist/cdn/foxy-customer-form.js +1 -1
  29. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  30. package/dist/cdn/foxy-customer-portal.js +13 -31
  31. package/dist/cdn/foxy-customer.js +7 -7
  32. package/dist/cdn/foxy-customers-table.js +1 -1
  33. package/dist/cdn/foxy-discount-builder.js +1 -1
  34. package/dist/cdn/foxy-discount-card.js +1 -1
  35. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  36. package/dist/cdn/foxy-donation.js +1 -1
  37. package/dist/cdn/foxy-downloadable-card.js +1 -1
  38. package/dist/cdn/foxy-downloadable-form.js +1 -1
  39. package/dist/cdn/foxy-email-template-card.js +1 -1
  40. package/dist/cdn/foxy-email-template-form.js +1 -1
  41. package/dist/cdn/foxy-error-entry-card.js +1 -1
  42. package/dist/cdn/foxy-filter-attribute-card.js +1 -1
  43. package/dist/cdn/foxy-filter-attribute-form.js +1 -1
  44. package/dist/cdn/foxy-form-dialog.js +1 -1
  45. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  46. package/dist/cdn/foxy-gift-card-card.js +1 -1
  47. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  48. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  49. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  50. package/dist/cdn/foxy-gift-card-form.js +1 -1
  51. package/dist/cdn/foxy-i18n-editor.js +2 -2
  52. package/dist/cdn/foxy-i18n.js +1 -1
  53. package/dist/cdn/foxy-integration-card.js +1 -1
  54. package/dist/cdn/foxy-integration-form.js +1 -1
  55. package/dist/cdn/foxy-item-card.js +1 -1
  56. package/dist/cdn/foxy-item-category-card.js +1 -1
  57. package/dist/cdn/foxy-item-category-form.js +1 -1
  58. package/dist/cdn/foxy-item-form.js +1 -1
  59. package/dist/cdn/foxy-item-option-card.js +1 -1
  60. package/dist/cdn/foxy-item-option-form.js +1 -1
  61. package/dist/cdn/foxy-items-form.js +1 -1
  62. package/dist/cdn/foxy-nucleon-element.js +1 -1
  63. package/dist/cdn/foxy-pagination.js +1 -1
  64. package/dist/cdn/foxy-passkey-card.js +1 -1
  65. package/dist/cdn/foxy-passkey-form.js +1 -1
  66. package/dist/cdn/foxy-payment-card.js +1 -1
  67. package/dist/cdn/foxy-payment-method-card.js +1 -1
  68. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  69. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  70. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  71. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  72. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  73. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  74. package/dist/cdn/foxy-payments-api.js +1 -1
  75. package/dist/cdn/foxy-query-builder.js +1 -1
  76. package/dist/cdn/foxy-report-form.js +4 -4
  77. package/dist/cdn/foxy-reports-table.js +5 -5
  78. package/dist/cdn/foxy-shipment-card.js +2 -2
  79. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  80. package/dist/cdn/foxy-sign-in-form.js +1 -1
  81. package/dist/cdn/foxy-spinner.js +2 -2
  82. package/dist/cdn/foxy-store-card.js +1 -1
  83. package/dist/cdn/foxy-store-form.js +1 -1
  84. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  85. package/dist/cdn/foxy-subscription-card.js +1 -1
  86. package/dist/cdn/foxy-subscription-form.js +2 -2
  87. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  88. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  89. package/dist/cdn/foxy-table.js +1 -1
  90. package/dist/cdn/foxy-tax-card.js +1 -1
  91. package/dist/cdn/foxy-tax-form.js +1 -1
  92. package/dist/cdn/foxy-template-config-form.js +1 -1
  93. package/dist/cdn/foxy-template-form.js +1 -1
  94. package/dist/cdn/foxy-template-set-card.js +1 -1
  95. package/dist/cdn/foxy-template-set-form.js +1 -1
  96. package/dist/cdn/foxy-transaction-card.js +1 -1
  97. package/dist/cdn/foxy-transaction.js +1 -1
  98. package/dist/cdn/foxy-transactions-table.js +7 -7
  99. package/dist/cdn/foxy-user-card.js +1 -1
  100. package/dist/cdn/foxy-user-form.js +1 -1
  101. package/dist/cdn/foxy-users-table.js +1 -1
  102. package/dist/cdn/foxy-webhook-card.js +1 -1
  103. package/dist/cdn/foxy-webhook-form.js +1 -1
  104. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  105. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  106. package/dist/cdn/{shared-479ad951.js → shared-099c1f57.js} +1 -1
  107. package/dist/cdn/{shared-c4240bc6.js → shared-0c0ee663.js} +1 -1
  108. package/dist/cdn/shared-1196b6a7.js +1 -0
  109. package/dist/cdn/shared-13fbea95.js +122 -0
  110. package/dist/cdn/{shared-8474bc4a.js → shared-27d21f4a.js} +1 -1
  111. package/dist/cdn/shared-2edcd981.js +1 -0
  112. package/dist/cdn/{shared-a92ae606.js → shared-31d8e3b8.js} +1 -1
  113. package/dist/cdn/shared-35728235.js +1 -0
  114. package/dist/cdn/shared-3b709ddc.js +29 -0
  115. package/dist/cdn/shared-3bcc07cd.js +1 -0
  116. package/dist/cdn/shared-3c2414d4.js +9 -0
  117. package/dist/cdn/{shared-31651a9c.js → shared-3f04e4cc.js} +1 -1
  118. package/dist/cdn/{shared-ba658670.js → shared-406ce9ad.js} +1 -1
  119. package/dist/cdn/{shared-6f84ac3e.js → shared-4b20fc75.js} +1 -1
  120. package/dist/cdn/shared-4c2e9064.js +15 -0
  121. package/dist/cdn/{shared-1d28220a.js → shared-5103c1b4.js} +1 -1
  122. package/dist/cdn/{shared-4674063d.js → shared-5784c088.js} +27 -27
  123. package/dist/cdn/shared-584174ff.js +1 -0
  124. package/dist/cdn/{shared-1b060170.js → shared-59fc6288.js} +1 -1
  125. package/dist/cdn/{shared-51d28e6d.js → shared-5a889c45.js} +1 -1
  126. package/dist/cdn/{shared-c7f2f1ab.js → shared-5cf7b194.js} +1 -1
  127. package/dist/cdn/{shared-9c626d58.js → shared-5db85492.js} +1 -1
  128. package/dist/cdn/shared-601f27b1.js +1 -0
  129. package/dist/cdn/{shared-36725fe3.js → shared-621b3283.js} +1 -1
  130. package/dist/cdn/shared-630a0ff2.js +1 -0
  131. package/dist/cdn/{shared-984fcdf5.js → shared-6daeb197.js} +3 -3
  132. package/dist/cdn/{shared-4c956a8e.js → shared-7723f756.js} +1 -1
  133. package/dist/cdn/{shared-4dc58b73.js → shared-773e7177.js} +1 -1
  134. package/dist/cdn/{shared-6dc64a17.js → shared-799dc083.js} +1 -1
  135. package/dist/cdn/{shared-e84fa0ea.js → shared-7a455b15.js} +1 -1
  136. package/dist/cdn/{shared-e6828dbf.js → shared-7abbc95c.js} +5 -5
  137. package/dist/cdn/shared-7f33a83a.js +12 -12
  138. package/dist/cdn/{shared-69a21b9d.js → shared-7fab31ac.js} +1 -1
  139. package/dist/cdn/shared-800ee6c0.js +1 -0
  140. package/dist/cdn/shared-8a9c64b2.js +1 -0
  141. package/dist/cdn/{shared-db21f6db.js → shared-8f922de8.js} +2 -2
  142. package/dist/cdn/{shared-e6997950.js → shared-9048eeb2.js} +1 -1
  143. package/dist/cdn/{shared-e10052d0.js → shared-9954ee26.js} +2 -2
  144. package/dist/cdn/{shared-4bbd600d.js → shared-9aa72495.js} +1 -1
  145. package/dist/cdn/shared-9b12aeac.js +1 -0
  146. package/dist/cdn/{shared-6abdfcf2.js → shared-9b486845.js} +1 -1
  147. package/dist/cdn/{shared-b3ac59eb.js → shared-ad80244a.js} +2 -2
  148. package/dist/cdn/{shared-c6c6ba69.js → shared-b446c140.js} +1 -1
  149. package/dist/cdn/shared-b7556b77.js +1 -0
  150. package/dist/cdn/{shared-30bebd39.js → shared-b87d1af0.js} +3 -3
  151. package/dist/cdn/{shared-0a248c0d.js → shared-ba93be6b.js} +1 -1
  152. package/dist/cdn/{shared-9caffb4d.js → shared-baeef007.js} +1 -1
  153. package/dist/cdn/{shared-64f98a0f.js → shared-bee111d6.js} +7 -2
  154. package/dist/cdn/shared-c76ef8d8.js +804 -0
  155. package/dist/cdn/{shared-65318cc1.js → shared-c839e147.js} +1 -1
  156. package/dist/cdn/{shared-4904bca4.js → shared-d1f5de89.js} +1 -1
  157. package/dist/cdn/{shared-a3c73e91.js → shared-d90dbae7.js} +1 -1
  158. package/dist/cdn/{shared-dccf0420.js → shared-ddac7722.js} +2 -2
  159. package/dist/cdn/{shared-e8e92fe3.js → shared-de3dae6c.js} +2 -2
  160. package/dist/cdn/shared-e006e82c.js +1 -0
  161. package/dist/cdn/shared-e2e2ca6a.js +1 -0
  162. package/dist/cdn/shared-e5239bec.js +212 -0
  163. package/dist/cdn/shared-e8a51c60.js +1 -0
  164. package/dist/cdn/shared-e8a85228.js +1 -0
  165. package/dist/cdn/{shared-17d0db7f.js → shared-eb8a0fdf.js} +3 -3
  166. package/dist/cdn/{shared-88e36564.js → shared-ef7f2d07.js} +26 -27
  167. package/dist/cdn/{shared-665d6cc4.js → shared-efaf8d49.js} +1 -1
  168. package/dist/cdn/{shared-ff992ead.js → shared-f0a9f3c2.js} +1 -1
  169. package/dist/cdn/{shared-379b37e6.js → shared-f21e5761.js} +7 -11
  170. package/dist/cdn/shared-f241722a.js +1 -0
  171. package/dist/cdn/{shared-b48a83b0.js → shared-f29acc38.js} +1 -1
  172. package/dist/cdn/{shared-e7c3b7b6.js → shared-f29d410a.js} +1 -1
  173. package/dist/cdn/{shared-bdb51db9.js → shared-f5bbb1e0.js} +1 -1
  174. package/dist/cdn/{shared-c97e0d6e.js → shared-fcfbfbdb.js} +1 -1
  175. package/dist/cdn/{shared-bafcab47.js → shared-fd40a40c.js} +3 -3
  176. package/dist/cdn/{shared-4b67d699.js → shared-fd96bcd1.js} +1 -1
  177. package/dist/cdn/{shared-dfe2602a.js → shared-ff7fd5fa.js} +1 -1
  178. package/dist/cdn/{shared-d14c2060.js → shared-fff03a45.js} +1 -1
  179. package/dist/cdn/translations/address-form/en.json +577 -0
  180. package/dist/cdn/translations/customer/en.json +653 -15
  181. package/dist/cdn/translations/customer-form/en.json +84 -15
  182. package/dist/cdn/translations/customer-portal/en.json +694 -32
  183. package/dist/cdn/translations/customer-portal-settings/en.json +9 -0
  184. package/dist/cdn/translations/transaction/en.json +79 -15
  185. package/dist/elements/internal/InternalForm/InternalForm.d.ts +10 -0
  186. package/dist/elements/internal/InternalForm/InternalForm.js +48 -1
  187. package/dist/elements/internal/InternalForm/InternalForm.js.map +1 -1
  188. package/dist/elements/internal/InternalForm/index.d.ts +1 -0
  189. package/dist/elements/internal/InternalForm/index.js +1 -0
  190. package/dist/elements/internal/InternalForm/index.js.map +1 -1
  191. package/dist/elements/internal/InternalForm/types.d.ts +4 -0
  192. package/dist/elements/internal/InternalForm/types.js +2 -0
  193. package/dist/elements/internal/InternalForm/types.js.map +1 -0
  194. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.d.ts +5 -1
  195. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.js +36 -1
  196. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.js.map +1 -1
  197. package/dist/elements/internal/InternalPasswordControl/generateRandomPassword.d.ts +1 -0
  198. package/dist/elements/internal/InternalPasswordControl/generateRandomPassword.js +11 -0
  199. package/dist/elements/internal/InternalPasswordControl/generateRandomPassword.js.map +1 -0
  200. package/dist/elements/public/AddressForm/AddressForm.d.ts +2 -1
  201. package/dist/elements/public/AddressForm/AddressForm.js +53 -17
  202. package/dist/elements/public/AddressForm/AddressForm.js.map +1 -1
  203. package/dist/elements/public/AddressForm/countries.d.ts +1 -1
  204. package/dist/elements/public/AddressForm/countries.js +554 -251
  205. package/dist/elements/public/AddressForm/countries.js.map +1 -1
  206. package/dist/elements/public/Customer/Customer.d.ts +5 -2
  207. package/dist/elements/public/Customer/Customer.js +10 -0
  208. package/dist/elements/public/Customer/Customer.js.map +1 -1
  209. package/dist/elements/public/Customer/types.d.ts +1 -0
  210. package/dist/elements/public/Customer/types.js.map +1 -1
  211. package/dist/elements/public/CustomerApi/CustomerApi.d.ts +33 -2
  212. package/dist/elements/public/CustomerApi/CustomerApi.js +62 -11
  213. package/dist/elements/public/CustomerApi/CustomerApi.js.map +1 -1
  214. package/dist/elements/public/CustomerForm/CustomerForm.d.ts +47 -15
  215. package/dist/elements/public/CustomerForm/CustomerForm.js +259 -155
  216. package/dist/elements/public/CustomerForm/CustomerForm.js.map +1 -1
  217. package/dist/elements/public/CustomerForm/index.d.ts +6 -6
  218. package/dist/elements/public/CustomerForm/index.js +6 -6
  219. package/dist/elements/public/CustomerForm/index.js.map +1 -1
  220. package/dist/elements/public/CustomerForm/internal/InternalCustomerFormLegalNoticeControl/InternalCustomerFormLegalNoticeControl.d.ts +5 -0
  221. package/dist/elements/public/CustomerForm/internal/InternalCustomerFormLegalNoticeControl/InternalCustomerFormLegalNoticeControl.js +23 -0
  222. package/dist/elements/public/CustomerForm/internal/InternalCustomerFormLegalNoticeControl/InternalCustomerFormLegalNoticeControl.js.map +1 -0
  223. package/dist/elements/public/CustomerForm/internal/InternalCustomerFormLegalNoticeControl/index.d.ts +4 -0
  224. package/dist/elements/public/CustomerForm/internal/InternalCustomerFormLegalNoticeControl/index.js +6 -0
  225. package/dist/elements/public/CustomerForm/internal/InternalCustomerFormLegalNoticeControl/index.js.map +1 -0
  226. package/dist/elements/public/CustomerForm/types.d.ts +27 -7
  227. package/dist/elements/public/CustomerForm/types.js.map +1 -1
  228. package/dist/elements/public/CustomerPortal/CustomerPortal.js +12 -15
  229. package/dist/elements/public/CustomerPortal/CustomerPortal.js.map +1 -1
  230. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.d.ts +8 -11
  231. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +9 -33
  232. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
  233. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.d.ts +14 -10
  234. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js +152 -16
  235. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js.map +1 -1
  236. package/dist/elements/public/CustomerPortal/index.d.ts +2 -0
  237. package/dist/elements/public/CustomerPortal/index.js +2 -2
  238. package/dist/elements/public/CustomerPortal/index.js.map +1 -1
  239. package/dist/elements/public/CustomerPortalSettings/CustomerPortalSettings.js +14 -0
  240. package/dist/elements/public/CustomerPortalSettings/CustomerPortalSettings.js.map +1 -1
  241. package/dist/elements/public/CustomerPortalSettings/machine.js +10 -0
  242. package/dist/elements/public/CustomerPortalSettings/machine.js.map +1 -1
  243. package/dist/elements/public/CustomerPortalSettings/private/SignUp/SignUp.d.ts +14 -0
  244. package/dist/elements/public/CustomerPortalSettings/private/SignUp/SignUp.js +132 -0
  245. package/dist/elements/public/CustomerPortalSettings/private/SignUp/SignUp.js.map +1 -0
  246. package/dist/elements/public/CustomerPortalSettings/private/SignUp/SignUpChangeEvent.d.ts +4 -0
  247. package/dist/elements/public/CustomerPortalSettings/private/SignUp/SignUpChangeEvent.js +6 -0
  248. package/dist/elements/public/CustomerPortalSettings/private/SignUp/SignUpChangeEvent.js.map +1 -0
  249. package/dist/elements/public/CustomerPortalSettings/types.d.ts +4 -0
  250. package/dist/elements/public/CustomerPortalSettings/types.js.map +1 -1
  251. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js +1 -1
  252. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js.map +1 -1
  253. package/dist/elements/public/FormDialog/FormDialog.d.ts +2 -0
  254. package/dist/elements/public/FormDialog/FormDialog.js +6 -0
  255. package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
  256. package/dist/elements/public/FormDialog/types.d.ts +3 -1
  257. package/dist/elements/public/FormDialog/types.js.map +1 -1
  258. package/dist/elements/public/NucleonElement/NucleonElement.d.ts +1 -1
  259. package/dist/elements/public/NucleonElement/NucleonElement.js +1 -1
  260. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  261. package/dist/elements/public/NucleonElement/types.d.ts +1 -1
  262. package/dist/elements/public/NucleonElement/types.js.map +1 -1
  263. package/dist/mixins/themeable.js +16 -0
  264. package/dist/mixins/themeable.js.map +1 -1
  265. package/dist/types/hapi.d.ts +14 -0
  266. package/dist/types/hapi.js.map +1 -1
  267. package/dist/utils/parse-duration.js +2 -2
  268. package/dist/utils/parse-duration.js.map +1 -1
  269. package/package.json +13 -11
  270. package/dist/cdn/shared-09d4fbb8.js +0 -29
  271. package/dist/cdn/shared-1d08a5ad.js +0 -1
  272. package/dist/cdn/shared-1eac92fa.js +0 -1
  273. package/dist/cdn/shared-25f64060.js +0 -1
  274. package/dist/cdn/shared-307262a1.js +0 -15
  275. package/dist/cdn/shared-332f2997.js +0 -1
  276. package/dist/cdn/shared-39f3b48d.js +0 -1
  277. package/dist/cdn/shared-432c5183.js +0 -9
  278. package/dist/cdn/shared-4dee79d4.js +0 -1
  279. package/dist/cdn/shared-53061389.js +0 -1
  280. package/dist/cdn/shared-59042137.js +0 -201
  281. package/dist/cdn/shared-65ba8b39.js +0 -1
  282. package/dist/cdn/shared-77a4d8e8.js +0 -1
  283. package/dist/cdn/shared-7f5618ba.js +0 -1
  284. package/dist/cdn/shared-92f27a38.js +0 -1
  285. package/dist/cdn/shared-b0f534ef.js +0 -1
  286. package/dist/cdn/shared-be24dd36.js +0 -804
  287. package/dist/cdn/shared-bf62a65b.js +0 -1
  288. package/dist/cdn/shared-c2d3b32b.js +0 -1
  289. package/dist/cdn/shared-cf269a17.js +0 -1
  290. package/dist/cdn/shared-fe54babe.js +0 -1
  291. package/dist/cdn/shared-fef9ecc1.js +0 -122
  292. package/dist/elements/public/AddressForm/regions.d.ts +0 -1
  293. package/dist/elements/public/AddressForm/regions.js +0 -67
  294. package/dist/elements/public/AddressForm/regions.js.map +0 -1
  295. package/dist/elements/public/CustomerPortal/InternalCustomerPortalChangePassword.d.ts +0 -29
  296. package/dist/elements/public/CustomerPortal/InternalCustomerPortalChangePassword.js +0 -169
  297. package/dist/elements/public/CustomerPortal/InternalCustomerPortalChangePassword.js.map +0 -1
  298. /package/dist/cdn/{shared-64657919.js → shared-343d1fd7.js} +0 -0
  299. /package/dist/cdn/{shared-d6276c83.js → shared-3ab0306f.js} +0 -0
  300. /package/dist/cdn/{shared-e6f3e9f0.js → shared-bb05cfed.js} +0 -0
  301. /package/dist/cdn/{shared-99065f2a.js → shared-d7be11de.js} +0 -0
  302. /package/dist/cdn/{shared-0479553e.js → shared-f9180815.js} +0 -0
@@ -9,6 +9,7 @@ import { InferrableMixin } from "../../../mixins/inferrable.js";
9
9
  *
10
10
  * @fires CustomerApi#signout - Instance of `CustomerApi.SignOutEvent`. Dispatched on an element when session expires or code 401 is returned.
11
11
  * @fires CustomerApi#signin - Instance of `CustomerApi.SignInEvent`. Dispatched on an element once authenticated.
12
+ * @fires CustomerApi#signup - Instance of `CustomerApi.SignUpEvent`. Dispatched on an element once a customer is created (since v1.24.0).
12
13
  *
13
14
  * @element foxy-customer-api
14
15
  * @since 1.4.0
@@ -145,11 +146,10 @@ export class CustomerApi extends ConfigurableMixin(InferrableMixin(LitElement))
145
146
  }
146
147
  return new Response(JSON.stringify(body), { status });
147
148
  }
148
- async __handleVirtualAuthSessionGet(request) {
149
+ async __handleVirtualAuthSessionAny(request) {
149
150
  return new Response(JSON.stringify({
150
151
  _links: { self: { href: request.url } },
151
- type: 'password',
152
- credential: { email: '', password: '' },
152
+ message: 'POST to this endpoint to sign in',
153
153
  }));
154
154
  }
155
155
  async __handleVirtualAuthRecoverPost(request) {
@@ -165,26 +165,75 @@ export class CustomerApi extends ConfigurableMixin(InferrableMixin(LitElement))
165
165
  throw new Error(`Unknown payload type ${payload.type}`);
166
166
  }
167
167
  }
168
- async __handleVirtualAuthRecoverGet(request) {
169
- return new Response(JSON.stringify({ _links: { self: { href: request.url } }, email: '' }));
168
+ async __handleVirtualAuthRecoverAny(request) {
169
+ return new Response(JSON.stringify({
170
+ _links: { self: { href: request.url } },
171
+ message: 'POST to this endpoint to request a password reset',
172
+ }));
173
+ }
174
+ async __handleVirtualAuthSignUpPost(request) {
175
+ const data = (await request.clone().json());
176
+ try {
177
+ await this.api.signUp(data);
178
+ }
179
+ catch (err) {
180
+ if (!(err instanceof API.AuthError))
181
+ throw err;
182
+ let message;
183
+ let status;
184
+ if (err.code === 'UNAUTHORIZED') {
185
+ message = 'Customer registration is disabled for this store.';
186
+ status = 401;
187
+ }
188
+ else if (err.code === 'UNAVAILABLE') {
189
+ message = 'This email address is already in use by an existing customer of this store.';
190
+ status = 403;
191
+ }
192
+ else if (err.code === 'INVALID_FORM') {
193
+ message = 'Client verification failed.';
194
+ status = 400;
195
+ }
196
+ else {
197
+ throw err;
198
+ }
199
+ const body = JSON.stringify({ total: 1, _embedded: { 'fx:errors': [{ message }] } });
200
+ return new Response(body, { status });
201
+ }
202
+ if (data.password)
203
+ await this.api.signIn(data);
204
+ this.requestUpdate();
205
+ this.dispatchEvent(new CustomerApi.SignUpEvent('signup'));
206
+ return new Response(JSON.stringify({
207
+ _links: { self: { href: request.url } },
208
+ message: 'Account created',
209
+ }));
210
+ }
211
+ async __handleVirtualAuthSignUpAny(request) {
212
+ return new Response(JSON.stringify({
213
+ _links: { self: { href: request.url } },
214
+ message: 'POST to this endpoint to create an account',
215
+ }));
170
216
  }
171
217
  async __handleRequest(request) {
172
218
  const url = request.url;
173
219
  const method = request.method;
174
220
  try {
175
- if (url === 'foxy://customer-api/session') {
221
+ if (url.startsWith('foxy://customer-api/session')) {
176
222
  if (method === 'DELETE')
177
223
  return this.__handleVirtualAuthSessionDelete();
178
224
  if (method === 'POST')
179
225
  return this.__handleVirtualAuthSessionPost(request);
180
- if (method === 'GET')
181
- return this.__handleVirtualAuthSessionGet(request);
226
+ return this.__handleVirtualAuthSessionAny(request);
182
227
  }
183
- if (url === 'foxy://customer-api/recover') {
228
+ if (url.startsWith('foxy://customer-api/recover')) {
184
229
  if (method === 'POST')
185
230
  return this.__handleVirtualAuthRecoverPost(request);
186
- if (method === 'GET')
187
- return this.__handleVirtualAuthRecoverGet(request);
231
+ return this.__handleVirtualAuthRecoverAny(request);
232
+ }
233
+ if (url.startsWith('foxy://customer-api/signup')) {
234
+ if (method === 'POST')
235
+ return this.__handleVirtualAuthSignUpPost(request);
236
+ return this.__handleVirtualAuthSignUpAny(request);
188
237
  }
189
238
  const response = await this.api.fetch(request);
190
239
  if (response.status === 401) {
@@ -203,4 +252,6 @@ CustomerApi.SignOutEvent = class extends CustomEvent {
203
252
  };
204
253
  CustomerApi.SignInEvent = class extends CustomEvent {
205
254
  };
255
+ CustomerApi.SignUpEvent = class extends CustomEvent {
256
+ };
206
257
  //# sourceMappingURL=CustomerApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerApi.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerApi/CustomerApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { API } from '@foxy.io/sdk/customer';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { FetchEvent } from '../NucleonElement/FetchEvent';\nimport { cookieStorage } from './cookieStorage';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\n/**\n * Element connector for Customer API.\n *\n * @fires CustomerApi#signout - Instance of `CustomerApi.SignOutEvent`. Dispatched on an element when session expires or code 401 is returned.\n * @fires CustomerApi#signin - Instance of `CustomerApi.SignInEvent`. Dispatched on an element once authenticated.\n *\n * @element foxy-customer-api\n * @since 1.4.0\n */\nexport class CustomerApi extends ConfigurableMixin(InferrableMixin(LitElement)) {\n static readonly SignOutEvent = class extends CustomEvent<void> {};\n\n static readonly SignInEvent = class extends CustomEvent<void> {};\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n storage: { type: String, noAccessor: true },\n level: { type: Number, noAccessor: true },\n base: { type: String, noAccessor: true },\n };\n }\n\n private __storage: 'session' | 'cookie' | 'local' = 'local';\n\n private __level = 0;\n\n private __base = location.origin;\n\n private __api: API = this.__createAPIInstance();\n\n private __handleFetch = async (originalEvent: Event) => {\n if (!(originalEvent instanceof FetchEvent)) return;\n if (originalEvent.defaultPrevented) return;\n if (originalEvent.composedPath()[0] === this) return;\n\n originalEvent.preventDefault();\n\n const apiEvent = new FetchEvent('fetch', {\n cancelable: true,\n composed: true,\n request: originalEvent.request,\n bubbles: true,\n reject: (reason: unknown) => originalEvent.respondWith(Promise.reject(reason)),\n resolve: (response: Response) => {\n if (apiEvent.request.url === 'foxy://customer-api/session') this.requestUpdate();\n if (response.status === 401) this.requestUpdate();\n originalEvent.respondWith(Promise.resolve(response));\n },\n });\n\n if (this.dispatchEvent(apiEvent)) apiEvent.respondWith(this.__handleRequest(apiEvent.request));\n };\n\n get isLoggedIn(): boolean {\n return !!this.api.storage.getItem(API.SESSION);\n }\n\n /** `FoxySDK.Customer.API` instance used by this element to communicate with the backend. */\n get api(): API {\n return this.__api;\n }\n\n /** Bookmark URL for this API. This is where the tree traversal begins. We also use this URL as a base for relative paths. */\n get base(): string {\n return this.__base;\n }\n\n set base(value: string) {\n this.__base = value;\n this.__api = this.__createAPIInstance();\n }\n\n /** Numeric Consola log level. If omitted, Consola defaults will be used. */\n get level(): number {\n return this.__level;\n }\n\n set level(value: number) {\n this.__level = value;\n this.__api = this.__createAPIInstance();\n }\n\n /** Credentials storage implementing Web Storage API. Access tokens and other related info will be stored here. Defaults to in-memory storage. */\n get storage(): 'session' | 'cookie' | 'local' {\n return this.__storage;\n }\n\n set storage(value: 'session' | 'cookie' | 'local') {\n this.__storage = value;\n this.__api = this.__createAPIInstance();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('fetch', this.__handleFetch);\n }\n\n render(): TemplateResult {\n return html`\n ${this.renderTemplateOrSlot(this.isLoggedIn ? 'logged-in' : 'logged-out')}\n <slot></slot>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('fetch', this.__handleFetch);\n }\n\n private __createAPIInstance() {\n const storageOptions = {\n session: sessionStorage,\n cookie: cookieStorage,\n local: localStorage,\n };\n\n return new API({\n storage: storageOptions[this.storage],\n level: this.level,\n base: new URL(this.base),\n });\n }\n\n private async __handleVirtualAuthSessionDelete() {\n await this.api.signOut();\n\n this.dispatchEvent(new CustomerApi.SignOutEvent('signout'));\n this.requestUpdate();\n\n return new Response();\n }\n\n private async __handleVirtualAuthSessionPost(request: Request) {\n const payload = await request.clone().json();\n if (payload.type !== 'password') throw new Error(`Unknown payload type ${payload.type}`);\n\n let status: number;\n let body: unknown;\n\n try {\n await this.api.signIn(payload.credential);\n\n this.dispatchEvent(new CustomerApi.SignInEvent('signin'));\n this.requestUpdate();\n\n status = 200;\n body = { _links: { self: { href: request.url } }, ...payload };\n } catch (err) {\n if (!(err instanceof API.AuthError)) throw err;\n if (!(err.code === 'UNAUTHORIZED')) throw err;\n\n const virtualAuthError = {\n message: err.message,\n logref: 'unavailable',\n code: 'invalid_credential_error',\n };\n\n status = 401;\n body = { total: 1, _embedded: { 'fx:errors': [virtualAuthError] } };\n }\n\n return new Response(JSON.stringify(body), { status });\n }\n\n private async __handleVirtualAuthSessionGet(request: Request) {\n return new Response(\n JSON.stringify({\n _links: { self: { href: request.url } },\n type: 'password',\n credential: { email: '', password: '' },\n })\n );\n }\n\n private async __handleVirtualAuthRecoverPost(request: Request) {\n const payload = await request.clone().json();\n\n if (payload.type === 'email') {\n await this.api.sendPasswordResetEmail(payload.detail);\n return new Response(\n JSON.stringify({\n _links: { self: { href: request.url } },\n email: payload.email,\n })\n );\n } else {\n throw new Error(`Unknown payload type ${payload.type}`);\n }\n }\n\n private async __handleVirtualAuthRecoverGet(request: Request) {\n return new Response(JSON.stringify({ _links: { self: { href: request.url } }, email: '' }));\n }\n\n private async __handleRequest(request: Request) {\n const url = request.url;\n const method = request.method;\n\n try {\n if (url === 'foxy://customer-api/session') {\n if (method === 'DELETE') return this.__handleVirtualAuthSessionDelete();\n if (method === 'POST') return this.__handleVirtualAuthSessionPost(request);\n if (method === 'GET') return this.__handleVirtualAuthSessionGet(request);\n }\n\n if (url === 'foxy://customer-api/recover') {\n if (method === 'POST') return this.__handleVirtualAuthRecoverPost(request);\n if (method === 'GET') return this.__handleVirtualAuthRecoverGet(request);\n }\n\n const response = await this.api.fetch(request);\n\n if (response.status === 401) {\n this.api.storage.clear();\n this.dispatchEvent(new CustomerApi.SignOutEvent('signout'));\n this.requestUpdate();\n }\n\n return response;\n } catch (err) {\n return new Response(null, { status: 500 });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"CustomerApi.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerApi/CustomerApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { API } from '@foxy.io/sdk/customer';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { FetchEvent } from '../NucleonElement/FetchEvent';\nimport { cookieStorage } from './cookieStorage';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\n/**\n * Element connector for Customer API.\n *\n * @fires CustomerApi#signout - Instance of `CustomerApi.SignOutEvent`. Dispatched on an element when session expires or code 401 is returned.\n * @fires CustomerApi#signin - Instance of `CustomerApi.SignInEvent`. Dispatched on an element once authenticated.\n * @fires CustomerApi#signup - Instance of `CustomerApi.SignUpEvent`. Dispatched on an element once a customer is created (since v1.24.0).\n *\n * @element foxy-customer-api\n * @since 1.4.0\n */\nexport class CustomerApi extends ConfigurableMixin(InferrableMixin(LitElement)) {\n static readonly SignOutEvent = class extends CustomEvent<void> {};\n\n static readonly SignInEvent = class extends CustomEvent<void> {};\n\n static readonly SignUpEvent = class extends CustomEvent<void> {};\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n storage: { type: String, noAccessor: true },\n level: { type: Number, noAccessor: true },\n base: { type: String, noAccessor: true },\n };\n }\n\n private __storage: 'session' | 'cookie' | 'local' = 'local';\n\n private __level = 0;\n\n private __base = location.origin;\n\n private __api: API = this.__createAPIInstance();\n\n private __handleFetch = async (originalEvent: Event) => {\n if (!(originalEvent instanceof FetchEvent)) return;\n if (originalEvent.defaultPrevented) return;\n if (originalEvent.composedPath()[0] === this) return;\n\n originalEvent.preventDefault();\n\n const apiEvent = new FetchEvent('fetch', {\n cancelable: true,\n composed: true,\n request: originalEvent.request,\n bubbles: true,\n reject: (reason: unknown) => originalEvent.respondWith(Promise.reject(reason)),\n resolve: (response: Response) => {\n if (apiEvent.request.url === 'foxy://customer-api/session') this.requestUpdate();\n if (response.status === 401) this.requestUpdate();\n originalEvent.respondWith(Promise.resolve(response));\n },\n });\n\n if (this.dispatchEvent(apiEvent)) apiEvent.respondWith(this.__handleRequest(apiEvent.request));\n };\n\n get isLoggedIn(): boolean {\n return !!this.api.storage.getItem(API.SESSION);\n }\n\n /** `FoxySDK.Customer.API` instance used by this element to communicate with the backend. */\n get api(): API {\n return this.__api;\n }\n\n /** Bookmark URL for this API. This is where the tree traversal begins. We also use this URL as a base for relative paths. */\n get base(): string {\n return this.__base;\n }\n\n set base(value: string) {\n this.__base = value;\n this.__api = this.__createAPIInstance();\n }\n\n /** Numeric Consola log level. If omitted, Consola defaults will be used. */\n get level(): number {\n return this.__level;\n }\n\n set level(value: number) {\n this.__level = value;\n this.__api = this.__createAPIInstance();\n }\n\n /** Credentials storage implementing Web Storage API. Access tokens and other related info will be stored here. Defaults to in-memory storage. */\n get storage(): 'session' | 'cookie' | 'local' {\n return this.__storage;\n }\n\n set storage(value: 'session' | 'cookie' | 'local') {\n this.__storage = value;\n this.__api = this.__createAPIInstance();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('fetch', this.__handleFetch);\n }\n\n render(): TemplateResult {\n return html`\n ${this.renderTemplateOrSlot(this.isLoggedIn ? 'logged-in' : 'logged-out')}\n <slot></slot>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('fetch', this.__handleFetch);\n }\n\n private __createAPIInstance() {\n const storageOptions = {\n session: sessionStorage,\n cookie: cookieStorage,\n local: localStorage,\n };\n\n return new API({\n storage: storageOptions[this.storage],\n level: this.level,\n base: new URL(this.base),\n });\n }\n\n private async __handleVirtualAuthSessionDelete() {\n await this.api.signOut();\n\n this.dispatchEvent(new CustomerApi.SignOutEvent('signout'));\n this.requestUpdate();\n\n return new Response();\n }\n\n private async __handleVirtualAuthSessionPost(request: Request) {\n const payload = await request.clone().json();\n if (payload.type !== 'password') throw new Error(`Unknown payload type ${payload.type}`);\n\n let status: number;\n let body: unknown;\n\n try {\n await this.api.signIn(payload.credential);\n\n this.dispatchEvent(new CustomerApi.SignInEvent('signin'));\n this.requestUpdate();\n\n status = 200;\n body = { _links: { self: { href: request.url } }, ...payload };\n } catch (err) {\n if (!(err instanceof API.AuthError)) throw err;\n if (!(err.code === 'UNAUTHORIZED')) throw err;\n\n const virtualAuthError = {\n message: err.message,\n logref: 'unavailable',\n code: 'invalid_credential_error',\n };\n\n status = 401;\n body = { total: 1, _embedded: { 'fx:errors': [virtualAuthError] } };\n }\n\n return new Response(JSON.stringify(body), { status });\n }\n\n private async __handleVirtualAuthSessionAny(request: Request) {\n return new Response(\n JSON.stringify({\n _links: { self: { href: request.url } },\n message: 'POST to this endpoint to sign in',\n })\n );\n }\n\n private async __handleVirtualAuthRecoverPost(request: Request) {\n const payload = await request.clone().json();\n\n if (payload.type === 'email') {\n await this.api.sendPasswordResetEmail(payload.detail);\n return new Response(\n JSON.stringify({\n _links: { self: { href: request.url } },\n email: payload.email,\n })\n );\n } else {\n throw new Error(`Unknown payload type ${payload.type}`);\n }\n }\n\n private async __handleVirtualAuthRecoverAny(request: Request) {\n return new Response(\n JSON.stringify({\n _links: { self: { href: request.url } },\n message: 'POST to this endpoint to request a password reset',\n })\n );\n }\n\n private async __handleVirtualAuthSignUpPost(request: Request) {\n const data = (await request.clone().json()) as {\n verification: { type: 'hcaptcha'; token: string };\n first_name?: string;\n last_name?: string;\n password?: string;\n email: string;\n };\n\n try {\n await this.api.signUp(data);\n } catch (err) {\n if (!(err instanceof API.AuthError)) throw err;\n\n let message: string;\n let status: number;\n\n if (err.code === 'UNAUTHORIZED') {\n message = 'Customer registration is disabled for this store.';\n status = 401;\n } else if (err.code === 'UNAVAILABLE') {\n message = 'This email address is already in use by an existing customer of this store.';\n status = 403;\n } else if (err.code === 'INVALID_FORM') {\n message = 'Client verification failed.';\n status = 400;\n } else {\n throw err;\n }\n\n const body = JSON.stringify({ total: 1, _embedded: { 'fx:errors': [{ message }] } });\n return new Response(body, { status });\n }\n\n if (data.password) await this.api.signIn(data as Required<typeof data>);\n this.requestUpdate();\n this.dispatchEvent(new CustomerApi.SignUpEvent('signup'));\n\n return new Response(\n JSON.stringify({\n _links: { self: { href: request.url } },\n message: 'Account created',\n })\n );\n }\n\n private async __handleVirtualAuthSignUpAny(request: Request) {\n return new Response(\n JSON.stringify({\n _links: { self: { href: request.url } },\n message: 'POST to this endpoint to create an account',\n })\n );\n }\n\n private async __handleRequest(request: Request) {\n const url = request.url;\n const method = request.method;\n\n try {\n if (url.startsWith('foxy://customer-api/session')) {\n if (method === 'DELETE') return this.__handleVirtualAuthSessionDelete();\n if (method === 'POST') return this.__handleVirtualAuthSessionPost(request);\n return this.__handleVirtualAuthSessionAny(request);\n }\n\n if (url.startsWith('foxy://customer-api/recover')) {\n if (method === 'POST') return this.__handleVirtualAuthRecoverPost(request);\n return this.__handleVirtualAuthRecoverAny(request);\n }\n\n if (url.startsWith('foxy://customer-api/signup')) {\n if (method === 'POST') return this.__handleVirtualAuthSignUpPost(request);\n return this.__handleVirtualAuthSignUpAny(request);\n }\n\n const response = await this.api.fetch(request);\n\n if (response.status === 401) {\n this.api.storage.clear();\n this.dispatchEvent(new CustomerApi.SignOutEvent('signout'));\n this.requestUpdate();\n }\n\n return response;\n } catch (err) {\n return new Response(null, { status: 500 });\n }\n }\n}\n"]}
@@ -1,13 +1,13 @@
1
- import { Data, Templates } from './types';
2
- import { ScopedElementsMap } from '@open-wc/scoped-elements';
3
- import { TemplateResult } from 'lit-html';
4
- import { NucleonElement } from '../NucleonElement/index';
5
- import { NucleonV8N } from '../NucleonElement/types';
6
- declare const Base: typeof NucleonElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
1
+ import type { Data, Templates, Settings } from './types';
2
+ import type { PropertyDeclarations } from 'lit-element';
3
+ import type { ScopedElementsMap } from '@open-wc/scoped-elements';
4
+ import type { TemplateResult } from 'lit-html';
5
+ import type { NucleonV8N } from '../NucleonElement/types';
6
+ import { BooleanSelector } from '@foxy.io/sdk/core';
7
+ import { InternalForm } from '../../internal/InternalForm/InternalForm';
8
+ declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
7
9
  defaultNS: string;
8
- } & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost> & {
9
- styles: import("lit-element").CSSResultArray;
10
- } & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost>;
10
+ } & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost>;
11
11
  /**
12
12
  * Form element for creating or editing customers.
13
13
  *
@@ -23,6 +23,21 @@ declare const Base: typeof NucleonElement & import("lit-element").Constructor<im
23
23
  * @slot tax-id:before - **new in v1.4.0**
24
24
  * @slot tax-id:after - **new in v1.4.0**
25
25
  *
26
+ * @slot is-anonymous:before - **new in v1.24.0**
27
+ * @slot is-anonymous:after - **new in v1.24.0**
28
+ *
29
+ * @slot password:before - **new in v1.24.0**
30
+ * @slot password:after - **new in v1.24.0**
31
+ *
32
+ * @slot password-old:before - **new in v1.24.0**
33
+ * @slot password-old:after - **new in v1.24.0**
34
+ *
35
+ * @slot forgot-password:before - **new in v1.24.0**
36
+ * @slot forgot-password:after - **new in v1.24.0**
37
+ *
38
+ * @slot legal-notice:before - **new in v1.24.0**
39
+ * @slot legal-notice:after - **new in v1.24.0**
40
+ *
26
41
  * @slot timestamps:before - **new in v1.4.0**
27
42
  * @slot timestamps:after - **new in v1.4.0**
28
43
  *
@@ -37,13 +52,30 @@ declare const Base: typeof NucleonElement & import("lit-element").Constructor<im
37
52
  */
38
53
  export declare class CustomerForm extends Base<Data> {
39
54
  static get scopedElements(): ScopedElementsMap;
40
- static get v8n(): NucleonV8N<Data>;
55
+ static get properties(): PropertyDeclarations;
56
+ static get v8n(): NucleonV8N<Data, CustomerForm>;
57
+ /** If true, won't require password when creating a customer. */
58
+ passwordless: boolean;
41
59
  templates: Templates;
42
- private __getValidator;
43
- private __maybeRenderTextField;
44
- private __renderTimestamps;
45
- private __renderAction;
46
- render(): TemplateResult;
60
+ /** Full `fx:customer_portal_settings` resource from Customer API. If present, switches this element into the Customer API mode, enabling client verification. */
61
+ settings: Settings | null;
62
+ private readonly __isAnonymousGetValue;
63
+ private readonly __isAnonymousSetValue;
64
+ private readonly __isAnonymousOptions;
65
+ private __refreshInterval;
66
+ get readonlySelector(): BooleanSelector;
67
+ get hiddenSelector(): BooleanSelector;
47
68
  disconnectedCallback(): void;
69
+ connectedCallback(): void;
70
+ renderBody(): TemplateResult;
71
+ submit(): void;
72
+ protected _sendPatch(edits: Partial<Data>): Promise<Data>;
73
+ protected _sendGet(): Promise<Data>;
74
+ protected _fetch<TResult = Data>(...args: Parameters<Window['fetch']>): Promise<TResult>;
75
+ private get __forgotPasswordHelperText();
76
+ private get __passwordPlaceholder();
77
+ private get __passwordHelperText();
78
+ private get __emailHelperText();
79
+ private get __hcaptcha();
48
80
  }
49
81
  export {};