@foxy.io/elements 1.27.0-beta.7 → 1.27.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 (279) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +5 -5
  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 +2 -2
  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-billing-address-card.js +1 -1
  12. package/dist/cdn/foxy-cancellation-form.js +1 -1
  13. package/dist/cdn/foxy-cart-card.js +1 -1
  14. package/dist/cdn/foxy-cart-form.js +1 -1
  15. package/dist/cdn/foxy-client-card.js +1 -1
  16. package/dist/cdn/foxy-client-form.js +1 -1
  17. package/dist/cdn/foxy-collection-page.js +1 -1
  18. package/dist/cdn/foxy-collection-pages.js +1 -1
  19. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  20. package/dist/cdn/foxy-coupon-card.js +1 -1
  21. package/dist/cdn/foxy-coupon-code-card.js +1 -1
  22. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  23. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  24. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  25. package/dist/cdn/foxy-coupon-form.js +1 -1
  26. package/dist/cdn/foxy-custom-field-card.js +1 -1
  27. package/dist/cdn/foxy-custom-field-form.js +1 -1
  28. package/dist/cdn/foxy-customer-api.js +1 -1
  29. package/dist/cdn/foxy-customer-card.js +1 -1
  30. package/dist/cdn/foxy-customer-form.js +1 -1
  31. package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
  32. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  33. package/dist/cdn/foxy-customer-portal.js +13 -13
  34. package/dist/cdn/foxy-customer.js +6 -6
  35. package/dist/cdn/foxy-customers-table.js +1 -1
  36. package/dist/cdn/foxy-discount-builder.js +1 -1
  37. package/dist/cdn/foxy-discount-card.js +1 -1
  38. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  39. package/dist/cdn/foxy-donation.js +1 -1
  40. package/dist/cdn/foxy-downloadable-card.js +1 -1
  41. package/dist/cdn/foxy-downloadable-form.js +7 -7
  42. package/dist/cdn/foxy-email-template-card.js +1 -1
  43. package/dist/cdn/foxy-email-template-form.js +1 -1
  44. package/dist/cdn/foxy-error-entry-card.js +1 -1
  45. package/dist/cdn/foxy-filter-attribute-card.js +1 -1
  46. package/dist/cdn/foxy-filter-attribute-form.js +1 -1
  47. package/dist/cdn/foxy-form-dialog.js +1 -1
  48. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  49. package/dist/cdn/foxy-gift-card-card.js +1 -1
  50. package/dist/cdn/foxy-gift-card-code-card.js +1 -1
  51. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  52. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  53. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  54. package/dist/cdn/foxy-gift-card-form.js +1 -1
  55. package/dist/cdn/foxy-i18n-editor.js +2 -2
  56. package/dist/cdn/foxy-i18n.js +1 -1
  57. package/dist/cdn/foxy-integration-card.js +1 -1
  58. package/dist/cdn/foxy-integration-form.js +1 -1
  59. package/dist/cdn/foxy-item-card.js +1 -1
  60. package/dist/cdn/foxy-item-category-card.js +1 -1
  61. package/dist/cdn/foxy-item-category-form.js +1 -1
  62. package/dist/cdn/foxy-item-form.js +3 -3
  63. package/dist/cdn/foxy-item-option-card.js +1 -1
  64. package/dist/cdn/foxy-item-option-form.js +1 -1
  65. package/dist/cdn/foxy-items-form.js +1 -1
  66. package/dist/cdn/foxy-native-integration-card.js +1 -1
  67. package/dist/cdn/foxy-native-integration-form.js +1 -1
  68. package/dist/cdn/foxy-nucleon-element.js +1 -1
  69. package/dist/cdn/foxy-pagination.js +1 -1
  70. package/dist/cdn/foxy-passkey-card.js +1 -1
  71. package/dist/cdn/foxy-passkey-form.js +1 -1
  72. package/dist/cdn/foxy-payment-card-embed-element.js +1 -0
  73. package/dist/cdn/foxy-payment-card.js +1 -1
  74. package/dist/cdn/foxy-payment-method-card.js +1 -1
  75. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  76. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  77. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  78. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  79. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  80. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  81. package/dist/cdn/foxy-payments-api.js +1 -1
  82. package/dist/cdn/foxy-query-builder.js +1 -1
  83. package/dist/cdn/foxy-report-form.js +2 -2
  84. package/dist/cdn/foxy-reports-table.js +3 -3
  85. package/dist/cdn/foxy-shipment-card.js +1 -1
  86. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  87. package/dist/cdn/foxy-sign-in-form.js +1 -1
  88. package/dist/cdn/foxy-spinner.js +2 -2
  89. package/dist/cdn/foxy-store-card.js +1 -1
  90. package/dist/cdn/foxy-store-form.js +1 -1
  91. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  92. package/dist/cdn/foxy-subscription-card.js +1 -1
  93. package/dist/cdn/foxy-subscription-form.js +1 -1
  94. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  95. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  96. package/dist/cdn/foxy-table.js +1 -1
  97. package/dist/cdn/foxy-tax-card.js +1 -1
  98. package/dist/cdn/foxy-tax-form.js +1 -1
  99. package/dist/cdn/foxy-template-config-form.js +1 -1
  100. package/dist/cdn/foxy-template-form.js +1 -1
  101. package/dist/cdn/foxy-template-set-card.js +1 -1
  102. package/dist/cdn/foxy-template-set-form.js +1 -1
  103. package/dist/cdn/foxy-transaction-card.js +1 -1
  104. package/dist/cdn/foxy-transaction.js +1 -1
  105. package/dist/cdn/foxy-transactions-table.js +1 -1
  106. package/dist/cdn/foxy-update-payment-method-form.js +1 -0
  107. package/dist/cdn/foxy-user-card.js +1 -1
  108. package/dist/cdn/foxy-user-form.js +1 -1
  109. package/dist/cdn/foxy-users-table.js +1 -1
  110. package/dist/cdn/foxy-webhook-card.js +1 -1
  111. package/dist/cdn/foxy-webhook-form.js +1 -1
  112. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  113. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  114. package/dist/cdn/{shared-684cd55a.js → shared-0062cab1.js} +1 -1
  115. package/dist/cdn/{shared-8a247f48.js → shared-036b25a3.js} +1 -1
  116. package/dist/cdn/{shared-18bfe97c.js → shared-04d8a434.js} +1 -1
  117. package/dist/cdn/{shared-07e7d118.js → shared-0aa511d0.js} +1 -1
  118. package/dist/cdn/shared-102dfbe0.js +1 -0
  119. package/dist/cdn/shared-12e531b8.js +1 -0
  120. package/dist/cdn/{shared-b2fd98e6.js → shared-15fe01fe.js} +1 -1
  121. package/dist/cdn/{shared-2314add3.js → shared-1ab8b12e.js} +1 -1
  122. package/dist/cdn/{shared-4c7a8fcc.js → shared-1d12db26.js} +1 -1
  123. package/dist/cdn/{shared-99e354b1.js → shared-25fc0ceb.js} +1 -1
  124. package/dist/cdn/shared-272e7269.js +1 -0
  125. package/dist/cdn/{shared-3cabd589.js → shared-2808f43a.js} +1 -1
  126. package/dist/cdn/{shared-be0fca15.js → shared-292585a0.js} +1 -1
  127. package/dist/cdn/shared-2e2d45c4.js +1 -0
  128. package/dist/cdn/{shared-0a9d860d.js → shared-2f2b5a28.js} +1 -1
  129. package/dist/cdn/{shared-412c19c2.js → shared-30143820.js} +1 -1
  130. package/dist/cdn/{shared-739f24fe.js → shared-328e5fdc.js} +1 -1
  131. package/dist/cdn/{shared-03673673.js → shared-337f2fe9.js} +1 -1
  132. package/dist/cdn/{shared-91c88f14.js → shared-34f4330c.js} +1 -1
  133. package/dist/cdn/{shared-482b2b86.js → shared-37391934.js} +1 -1
  134. package/dist/cdn/shared-39fc8fed.js +1 -0
  135. package/dist/cdn/{shared-b3db7611.js → shared-3c58ddf1.js} +1 -1
  136. package/dist/cdn/{shared-58951f74.js → shared-40cbbbae.js} +4 -4
  137. package/dist/cdn/{shared-018d5724.js → shared-4128d453.js} +1 -1
  138. package/dist/cdn/{shared-28be347b.js → shared-41e9ef02.js} +2 -2
  139. package/dist/cdn/{shared-0f59fd6a.js → shared-432d66f4.js} +1 -1
  140. package/dist/cdn/{shared-612ea9ed.js → shared-4885670b.js} +1 -1
  141. package/dist/cdn/{shared-fc5ace3b.js → shared-550608b8.js} +1 -1
  142. package/dist/cdn/{shared-467e5b06.js → shared-5758adbc.js} +1 -1
  143. package/dist/cdn/{shared-90cbed56.js → shared-5a18985c.js} +2 -2
  144. package/dist/cdn/{shared-8258443c.js → shared-5e9395ec.js} +1 -1
  145. package/dist/cdn/{shared-a24b2aa7.js → shared-62f3fc5a.js} +1 -1
  146. package/dist/cdn/{shared-5debeb1b.js → shared-66a515e3.js} +1 -1
  147. package/dist/cdn/shared-66d2a0d7.js +1 -0
  148. package/dist/cdn/{shared-584df8a8.js → shared-68aebcc4.js} +1 -1
  149. package/dist/cdn/{shared-1e7639e6.js → shared-6dfb57b1.js} +1 -1
  150. package/dist/cdn/{shared-b900e1b5.js → shared-739a8fe4.js} +1 -1
  151. package/dist/cdn/{shared-cdf873d4.js → shared-7535b32d.js} +1 -1
  152. package/dist/cdn/{shared-25198d9a.js → shared-7c819ebc.js} +1 -1
  153. package/dist/cdn/{shared-285f8cee.js → shared-84215d13.js} +1 -1
  154. package/dist/cdn/{shared-4affec66.js → shared-8452c492.js} +1 -1
  155. package/dist/cdn/{shared-b9ea6d85.js → shared-8540c2c7.js} +1 -1
  156. package/dist/cdn/{shared-540063aa.js → shared-8c5b4c81.js} +1 -1
  157. package/dist/cdn/{shared-6cd4e618.js → shared-8d7e2e2c.js} +1 -1
  158. package/dist/cdn/{shared-f7c60ee0.js → shared-8e59a71e.js} +1 -1
  159. package/dist/cdn/shared-8e75c372.js +1 -0
  160. package/dist/cdn/shared-90ddf541.js +1 -0
  161. package/dist/cdn/{shared-f0fcd613.js → shared-91009494.js} +1 -1
  162. package/dist/cdn/shared-9f5c636a.js +1 -0
  163. package/dist/cdn/{shared-d56a3799.js → shared-a30fcaf6.js} +1 -1
  164. package/dist/cdn/{shared-d222bd1e.js → shared-a33be18f.js} +1 -1
  165. package/dist/cdn/{shared-6b68b3b6.js → shared-a911ab73.js} +1 -1
  166. package/dist/cdn/{shared-9cfef94a.js → shared-b1c7300a.js} +1 -1
  167. package/dist/cdn/{shared-ea5fa631.js → shared-b2ce84fa.js} +1 -1
  168. package/dist/cdn/{shared-bd919e3b.js → shared-b55f1de3.js} +1 -1
  169. package/dist/cdn/{shared-d72e87ee.js → shared-b6c1aa47.js} +1 -1
  170. package/dist/cdn/{shared-bb1d162b.js → shared-b73fd633.js} +1 -1
  171. package/dist/cdn/{shared-ad11b006.js → shared-b99daf13.js} +1 -1
  172. package/dist/cdn/{shared-da2e66a4.js → shared-bac00622.js} +1 -1
  173. package/dist/cdn/{shared-2b5a3c80.js → shared-bd99107c.js} +1 -1
  174. package/dist/cdn/{shared-f4bb452b.js → shared-c0b1a51d.js} +1 -1
  175. package/dist/cdn/shared-c5106605.js +1 -0
  176. package/dist/cdn/{shared-d10d6cba.js → shared-cb732375.js} +1 -1
  177. package/dist/cdn/shared-cd96ff03.js +1 -0
  178. package/dist/cdn/{shared-55630cac.js → shared-da2a367a.js} +1 -1
  179. package/dist/cdn/{shared-122cccac.js → shared-e075ca81.js} +1 -1
  180. package/dist/cdn/{shared-7f60c1c1.js → shared-e10b5dca.js} +1 -1
  181. package/dist/cdn/{shared-0a8161e5.js → shared-e2cbc382.js} +1 -1
  182. package/dist/cdn/{shared-77258081.js → shared-e4403332.js} +1 -1
  183. package/dist/cdn/{shared-75d13e1b.js → shared-e5f6ca48.js} +1 -1
  184. package/dist/cdn/{shared-7ff78b4a.js → shared-e989e47e.js} +2 -2
  185. package/dist/cdn/{shared-6586ffd5.js → shared-ecb7a183.js} +1 -1
  186. package/dist/cdn/{shared-8b521111.js → shared-f090c63a.js} +1 -1
  187. package/dist/cdn/{shared-4c611015.js → shared-f14856e0.js} +2 -2
  188. package/dist/cdn/{shared-ee13d85c.js → shared-f2721fae.js} +3 -3
  189. package/dist/cdn/{shared-62e9c883.js → shared-f548d023.js} +1 -1
  190. package/dist/cdn/{shared-7b2bd917.js → shared-fd95cd52.js} +1 -1
  191. package/dist/cdn/translations/customer/en.json +149 -2
  192. package/dist/cdn/translations/customer-portal/README.md +4 -0
  193. package/dist/cdn/translations/customer-portal/de.json +1063 -113
  194. package/dist/cdn/translations/customer-portal/en.json +151 -5
  195. package/dist/cdn/translations/customer-portal/es.json +1072 -123
  196. package/dist/cdn/translations/customer-portal/fr.json +1084 -134
  197. package/dist/cdn/translations/customer-portal/nl.json +1085 -135
  198. package/dist/cdn/translations/customer-portal/pl.json +1092 -142
  199. package/dist/cdn/translations/customer-portal/sv.json +1173 -0
  200. package/dist/cdn/translations/customer-portal/zh-hk.json +1110 -160
  201. package/dist/cdn/translations/payment-card-embed/en.json +48 -0
  202. package/dist/cdn/translations/payment-method-card/en.json +149 -2
  203. package/dist/cdn/translations/payments-api-payment-method-form/en.json +2 -2
  204. package/dist/cdn/translations/update-payment-method-form/en.json +140 -0
  205. package/dist/elements/internal/InternalForm/InternalForm.js +2 -0
  206. package/dist/elements/internal/InternalForm/InternalForm.js.map +1 -1
  207. package/dist/elements/public/Customer/Customer.d.ts +5 -0
  208. package/dist/elements/public/Customer/Customer.js +13 -6
  209. package/dist/elements/public/Customer/Customer.js.map +1 -1
  210. package/dist/elements/public/Customer/index.d.ts +1 -0
  211. package/dist/elements/public/Customer/index.js +1 -0
  212. package/dist/elements/public/Customer/index.js.map +1 -1
  213. package/dist/elements/public/CustomerPortal/CustomerPortal.d.ts +14 -0
  214. package/dist/elements/public/CustomerPortal/CustomerPortal.js +23 -6
  215. package/dist/elements/public/CustomerPortal/CustomerPortal.js.map +1 -1
  216. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.d.ts +1 -0
  217. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +7 -2
  218. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
  219. package/dist/elements/public/DownloadableForm/DownloadableForm.js.map +1 -1
  220. package/dist/elements/public/FormDialog/FormDialog.d.ts +2 -0
  221. package/dist/elements/public/FormDialog/FormDialog.js +8 -4
  222. package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
  223. package/dist/elements/public/NucleonElement/NucleonElement.js +7 -1
  224. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  225. package/dist/elements/public/NucleonElement/UpdateEvent.d.ts +3 -1
  226. package/dist/elements/public/NucleonElement/UpdateEvent.js +2 -0
  227. package/dist/elements/public/NucleonElement/UpdateEvent.js.map +1 -1
  228. package/dist/elements/public/PaymentCardEmbedElement/PaymentCardEmbedElement.d.ts +47 -0
  229. package/dist/elements/public/PaymentCardEmbedElement/PaymentCardEmbedElement.js +198 -0
  230. package/dist/elements/public/PaymentCardEmbedElement/PaymentCardEmbedElement.js.map +1 -0
  231. package/dist/elements/public/PaymentCardEmbedElement/index.d.ts +4 -0
  232. package/dist/elements/public/PaymentCardEmbedElement/index.js +6 -0
  233. package/dist/elements/public/PaymentCardEmbedElement/index.js.map +1 -0
  234. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.d.ts +14 -4
  235. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.js +79 -10
  236. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.js.map +1 -1
  237. package/dist/elements/public/PaymentMethodCard/index.d.ts +2 -0
  238. package/dist/elements/public/PaymentMethodCard/index.js +2 -0
  239. package/dist/elements/public/PaymentMethodCard/index.js.map +1 -1
  240. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js +66 -56
  241. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js.map +1 -1
  242. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js +1 -0
  243. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js.map +1 -1
  244. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
  245. package/dist/elements/public/UpdatePaymentMethodForm/UpdatePaymentMethodForm.d.ts +37 -0
  246. package/dist/elements/public/UpdatePaymentMethodForm/UpdatePaymentMethodForm.js +142 -0
  247. package/dist/elements/public/UpdatePaymentMethodForm/UpdatePaymentMethodForm.js.map +1 -0
  248. package/dist/elements/public/UpdatePaymentMethodForm/index.d.ts +8 -0
  249. package/dist/elements/public/UpdatePaymentMethodForm/index.js +10 -0
  250. package/dist/elements/public/UpdatePaymentMethodForm/index.js.map +1 -0
  251. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/InternalUpdatePaymentMethodFormCcTokenControl.d.ts +9 -0
  252. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/InternalUpdatePaymentMethodFormCcTokenControl.js +46 -0
  253. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/InternalUpdatePaymentMethodFormCcTokenControl.js.map +1 -0
  254. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/index.d.ts +6 -0
  255. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/index.js +8 -0
  256. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/index.js.map +1 -0
  257. package/dist/elements/public/UpdatePaymentMethodForm/types.d.ts +13 -0
  258. package/dist/elements/public/UpdatePaymentMethodForm/types.js +2 -0
  259. package/dist/elements/public/UpdatePaymentMethodForm/types.js.map +1 -0
  260. package/dist/elements/public/index.d.ts +2 -0
  261. package/dist/elements/public/index.defined.d.ts +2 -0
  262. package/dist/elements/public/index.defined.js +2 -0
  263. package/dist/elements/public/index.defined.js.map +1 -1
  264. package/dist/elements/public/index.js +2 -0
  265. package/dist/elements/public/index.js.map +1 -1
  266. package/dist/mixins/themeable.js +45 -0
  267. package/dist/mixins/themeable.js.map +1 -1
  268. package/dist/mixins/translatable.js +89 -79
  269. package/dist/mixins/translatable.js.map +1 -1
  270. package/package.json +2 -2
  271. package/dist/cdn/shared-186e41cf.js +0 -1
  272. package/dist/cdn/shared-18918efe.js +0 -1
  273. package/dist/cdn/shared-3ab0306f.js +0 -1
  274. package/dist/cdn/shared-5875cb66.js +0 -1
  275. package/dist/cdn/shared-79d35787.js +0 -1
  276. package/dist/cdn/shared-851a7db5.js +0 -1
  277. package/dist/cdn/shared-90877857.js +0 -1
  278. package/dist/cdn/shared-fe45779e.js +0 -1
  279. package/dist/cdn/translations/customer-portal/se.json +0 -223
@@ -0,0 +1,48 @@
1
+ {
2
+ "stripe": {
3
+ "label": "Card details",
4
+ "status": {
5
+ "idle": "Your card details are securely processed by Stripe. Visit https://stripe.com to learn more.",
6
+ "busy": "Encrypting your card details...",
7
+ "fail": "This service is currently unavailable. Please try again later.",
8
+ "unsupported": "We don't support this card type. Please try another card."
9
+ }
10
+ },
11
+ "square": {
12
+ "label": "Card details",
13
+ "status": {
14
+ "idle": "Your card details are securely processed by Square. Visit https://squareup.com to learn more.",
15
+ "busy": "Encrypting your card details...",
16
+ "fail": "This service is currently unavailable. Please try again later.",
17
+ "unsupported": "We don't support this card type. Please try another card."
18
+ }
19
+ },
20
+ "default": {
21
+ "cc-number": {
22
+ "label": "Card number",
23
+ "placeholder": "1234 1234 1234 1234",
24
+ "v8n_required": "Enter a card number.",
25
+ "v8n_invalid": "Check your card number – it doesn't seem to be valid.",
26
+ "v8n_unsupported": "We don't support this card type."
27
+ },
28
+ "cc-exp": {
29
+ "label": "Expires on",
30
+ "placeholder": "MM/YYYY",
31
+ "v8n_required": "Enter an expiry date.",
32
+ "v8n_invalid": "Enter a date as MM/YYYY.",
33
+ "v8n_expired": "Your card has expired."
34
+ },
35
+ "cc-csc": {
36
+ "label": "CSC",
37
+ "placeholder": "XXX",
38
+ "v8n_required": "Enter a security code.",
39
+ "v8n_invalid": "Enter a 3-4 digits code."
40
+ },
41
+ "status": {
42
+ "idle": "Your card details are securely processed by Foxy.io. Visit https://foxy.io to learn more.",
43
+ "busy": "Encrypting your card details...",
44
+ "fail": "This service is currently unavailable. Please try again later.",
45
+ "misconfigured": "This form is not configured correctly. If you are seeing this message as a customer, please report this issue to the store support team."
46
+ }
47
+ }
48
+ }
@@ -1,13 +1,160 @@
1
1
  {
2
2
  "cancel": "Cancel",
3
3
  "delete": "Delete",
4
- "delete_prompt": "This resource will be permanently removed. Are you sure?",
4
+ "add": "Add payment method",
5
+ "update": "Update payment method",
6
+ "delete_prompt": "This payment method will be permanently deleted from your account. Would you like to continue?",
5
7
  "expires": "Expires",
6
8
  "last_4_digits": "Last 4 digits",
7
9
  "unknown": "Unknown",
10
+ "dialog": {
11
+ "close": "Close",
12
+ "dialog_header_add": "Add payment method",
13
+ "dialog_header_update": "Update payment method",
14
+ "update-payment-method-form": {
15
+ "status": {
16
+ "cc_token_success": "Card details saved successfully.",
17
+ "close": "Close"
18
+ },
19
+ "error": {
20
+ "cc_token_invalid": "Unfortunately, we couldn't save your card details. Please try again later or use a different card."
21
+ },
22
+ "template-set": {
23
+ "label": "Template set",
24
+ "dialog": {
25
+ "cancel": "Cancel",
26
+ "close": "Close",
27
+ "header": "Choose a template set",
28
+ "selection": {
29
+ "label": "",
30
+ "helper_text": "",
31
+ "search": "Search",
32
+ "clear": "Clear",
33
+ "pagination": {
34
+ "search_button_text": "Search",
35
+ "first": "First",
36
+ "last": "Last",
37
+ "next": "Next",
38
+ "pagination": "{{from}}-{{to}} out of {{total}}",
39
+ "previous": "Previous",
40
+ "card": {
41
+ "spinner": {
42
+ "loading_busy": "Loading",
43
+ "loading_empty": "No template sets found",
44
+ "loading_error": "Unknown error"
45
+ }
46
+ }
47
+ },
48
+ "query-builder": {
49
+ "filters": {},
50
+ "add_or_clause": "Add OR clause",
51
+ "add_value": "Add value",
52
+ "code": "Code",
53
+ "date": "{{value, date}}",
54
+ "date_created": "Created on",
55
+ "date_modified": "Last updated on",
56
+ "delete": "Delete",
57
+ "field": "Field",
58
+ "hidden": "Hidden",
59
+ "is_defined_false": "Not defined",
60
+ "is_defined_true": "Defined",
61
+ "name": "Name",
62
+ "operator_equal": "Equal",
63
+ "operator_greaterthan": "Greater than",
64
+ "operator_greaterthanorequal": "Greater than or equal",
65
+ "operator_in": "One of",
66
+ "operator_isdefined": "Is defined",
67
+ "operator_lessthan": "Less than",
68
+ "operator_lessthanorequal": "Less than or equal",
69
+ "operator_not": "Not equal",
70
+ "or": "Or",
71
+ "query_builder_group": "Group of filters",
72
+ "query_builder_rule": "Filter",
73
+ "range_from": "From",
74
+ "range_to": "To",
75
+ "type": "Type",
76
+ "type_any": "Field of unknown type",
77
+ "type_attribute": "Key-value resource",
78
+ "type_date": "Date field",
79
+ "type_here": "Type here...",
80
+ "type_number": "Numeric field",
81
+ "type_string": "Text field",
82
+ "used_codes": "Codes used",
83
+ "value": "Value"
84
+ }
85
+ }
86
+ },
87
+ "card": {
88
+ "spinner": {
89
+ "loading_busy": "Loading",
90
+ "loading_empty": "Click to select",
91
+ "loading_error": "Unknown error"
92
+ }
93
+ },
94
+ "helper_text": "Template set determines which payment gateway and tokenization service will be used to capture card details."
95
+ },
96
+ "cc-token": {
97
+ "tokenize": "Save card",
98
+ "payment-card-embed": {
99
+ "stripe": {
100
+ "label": "Card details",
101
+ "status": {
102
+ "idle": "Your card details are securely processed by Stripe. Visit https://stripe.com to learn more.",
103
+ "busy": "Encrypting your card details...",
104
+ "fail": "This service is currently unavailable. Please try again later.",
105
+ "unsupported": "We don't support this card type. Please try another card."
106
+ }
107
+ },
108
+ "square": {
109
+ "label": "Card details",
110
+ "status": {
111
+ "idle": "Your card details are securely processed by Square. Visit https://squareup.com to learn more.",
112
+ "busy": "Encrypting your card details...",
113
+ "fail": "This service is currently unavailable. Please try again later.",
114
+ "unsupported": "We don't support this card type. Please try another card."
115
+ }
116
+ },
117
+ "default": {
118
+ "cc-number": {
119
+ "label": "Card number",
120
+ "placeholder": "1234 1234 1234 1234",
121
+ "v8n_required": "Enter a card number.",
122
+ "v8n_invalid": "Check your card number – it doesn't seem to be valid.",
123
+ "v8n_unsupported": "We don't support this card type."
124
+ },
125
+ "cc-exp": {
126
+ "label": "Expires on",
127
+ "placeholder": "MM/YYYY",
128
+ "v8n_required": "Enter an expiry date.",
129
+ "v8n_invalid": "Enter a date as MM/YYYY.",
130
+ "v8n_expired": "Your card has expired."
131
+ },
132
+ "cc-csc": {
133
+ "label": "CSC",
134
+ "placeholder": "XXX",
135
+ "v8n_required": "Enter a security code.",
136
+ "v8n_invalid": "Enter a 3-4 digits code."
137
+ },
138
+ "status": {
139
+ "idle": "Your card details are securely processed by Foxy.io. Visit https://foxy.io to learn more.",
140
+ "busy": "Encrypting your card details...",
141
+ "fail": "This service is currently unavailable. Please try again later.",
142
+ "misconfigured": "This form is not configured correctly. If you are seeing this message as a customer, please report this issue to the store support team."
143
+ }
144
+ }
145
+ }
146
+ },
147
+ "spinner": {
148
+ "refresh": "Refresh",
149
+ "loading_busy": "Loading",
150
+ "loading_error": "Unknown error",
151
+ "loading_empty": "This form works only with existing payment methods"
152
+ }
153
+ }
154
+ },
8
155
  "spinner": {
9
156
  "loading_busy": "Loading",
10
- "loading_empty": "No data",
157
+ "loading_empty": "No payment method",
11
158
  "loading_error": "Unknown error"
12
159
  }
13
160
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "select_method_title": "Select a payment method to get started",
3
- "select_another_button_label": "Back to payment methods",
2
+ "select_method_title": "Select a payment method",
3
+ "select_another_button_label": "Select another",
4
4
  "default_additional_field_placeholder": "None",
5
5
  "conflict_message": "Remove {{ name }} to use this method",
6
6
  "tab_live": "Live setup",
@@ -0,0 +1,140 @@
1
+ {
2
+ "status": {
3
+ "cc_token_success": "Card details saved successfully.",
4
+ "close": "Close"
5
+ },
6
+ "error": {
7
+ "cc_token_invalid": "Unfortunately, we couldn't save your card details. Please try again later or use a different card."
8
+ },
9
+ "template-set": {
10
+ "label": "Template set",
11
+ "dialog": {
12
+ "cancel": "Cancel",
13
+ "close": "Close",
14
+ "header": "Choose a template set",
15
+ "selection": {
16
+ "label": "",
17
+ "helper_text": "",
18
+ "search": "Search",
19
+ "clear": "Clear",
20
+ "pagination": {
21
+ "search_button_text": "Search",
22
+ "first": "First",
23
+ "last": "Last",
24
+ "next": "Next",
25
+ "pagination": "{{from}}-{{to}} out of {{total}}",
26
+ "previous": "Previous",
27
+ "card": {
28
+ "spinner": {
29
+ "loading_busy": "Loading",
30
+ "loading_empty": "No template sets found",
31
+ "loading_error": "Unknown error"
32
+ }
33
+ }
34
+ },
35
+ "query-builder": {
36
+ "filters": {},
37
+ "add_or_clause": "Add OR clause",
38
+ "add_value": "Add value",
39
+ "code": "Code",
40
+ "date": "{{value, date}}",
41
+ "date_created": "Created on",
42
+ "date_modified": "Last updated on",
43
+ "delete": "Delete",
44
+ "field": "Field",
45
+ "hidden": "Hidden",
46
+ "is_defined_false": "Not defined",
47
+ "is_defined_true": "Defined",
48
+ "name": "Name",
49
+ "operator_equal": "Equal",
50
+ "operator_greaterthan": "Greater than",
51
+ "operator_greaterthanorequal": "Greater than or equal",
52
+ "operator_in": "One of",
53
+ "operator_isdefined": "Is defined",
54
+ "operator_lessthan": "Less than",
55
+ "operator_lessthanorequal": "Less than or equal",
56
+ "operator_not": "Not equal",
57
+ "or": "Or",
58
+ "query_builder_group": "Group of filters",
59
+ "query_builder_rule": "Filter",
60
+ "range_from": "From",
61
+ "range_to": "To",
62
+ "type": "Type",
63
+ "type_any": "Field of unknown type",
64
+ "type_attribute": "Key-value resource",
65
+ "type_date": "Date field",
66
+ "type_here": "Type here...",
67
+ "type_number": "Numeric field",
68
+ "type_string": "Text field",
69
+ "used_codes": "Codes used",
70
+ "value": "Value"
71
+ }
72
+ }
73
+ },
74
+ "card": {
75
+ "spinner": {
76
+ "loading_busy": "Loading",
77
+ "loading_empty": "Click to select",
78
+ "loading_error": "Unknown error"
79
+ }
80
+ },
81
+ "helper_text": "Template set determines which payment gateway and tokenization service will be used to capture card details."
82
+ },
83
+ "cc-token": {
84
+ "tokenize": "Save card",
85
+ "payment-card-embed": {
86
+ "stripe": {
87
+ "label": "Card details",
88
+ "status": {
89
+ "idle": "Your card details are securely processed by Stripe. Visit https://stripe.com to learn more.",
90
+ "busy": "Encrypting your card details...",
91
+ "fail": "This service is currently unavailable. Please try again later.",
92
+ "unsupported": "We don't support this card type. Please try a different card."
93
+ }
94
+ },
95
+ "square": {
96
+ "label": "Card details",
97
+ "status": {
98
+ "idle": "Your card details are securely processed by Square. Visit https://squareup.com to learn more.",
99
+ "busy": "Encrypting your card details...",
100
+ "fail": "This service is currently unavailable. Please try again later.",
101
+ "unsupported": "We don't support this card type. Please try a different card."
102
+ }
103
+ },
104
+ "default": {
105
+ "cc-number": {
106
+ "label": "Card number",
107
+ "placeholder": "1234 1234 1234 1234",
108
+ "v8n_required": "Enter a card number.",
109
+ "v8n_invalid": "Check your card number – it doesn't seem to be valid.",
110
+ "v8n_unsupported": "We don't support this card type."
111
+ },
112
+ "cc-exp": {
113
+ "label": "Expires on",
114
+ "placeholder": "MM/YYYY",
115
+ "v8n_required": "Enter an expiry date.",
116
+ "v8n_invalid": "Enter a date as MM/YYYY.",
117
+ "v8n_expired": "Your card has expired."
118
+ },
119
+ "cc-csc": {
120
+ "label": "CSC",
121
+ "placeholder": "XXX",
122
+ "v8n_required": "Enter a security code.",
123
+ "v8n_invalid": "Enter a 3-4 digits code."
124
+ },
125
+ "status": {
126
+ "idle": "Your card details are securely processed by Foxy.io. Visit https://foxy.io to learn more.",
127
+ "busy": "Encrypting your card details...",
128
+ "fail": "This service is currently unavailable. Please try again later.",
129
+ "misconfigured": "This form is not configured correctly. If you are seeing this message as a customer, please report this issue to the store support team."
130
+ }
131
+ }
132
+ }
133
+ },
134
+ "spinner": {
135
+ "refresh": "Refresh",
136
+ "loading_busy": "Loading",
137
+ "loading_error": "Unknown error",
138
+ "loading_empty": "This form works only with existing payment methods"
139
+ }
140
+ }
@@ -140,6 +140,8 @@ export class InternalForm extends Base {
140
140
  `;
141
141
  }
142
142
  __renderStatus({ key, options }) {
143
+ if (this.hiddenSelector.matches('status', true))
144
+ return;
143
145
  return html `
144
146
  <p
145
147
  data-testid="status"
@@ -1 +1 @@
1
- {"version":3,"file":"InternalForm.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/InternalForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { TemplateResult } from 'lit-html';\nimport type { Status } from './types';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { getResourceId } from '@foxy.io/sdk/core';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nconst Base = ConfigurableMixin(ThemeableMixin(NucleonElement));\n\n/**\n * An internal base class for any nucleon-powered form. Renders create/delete\n * buttons and timestamps by default, displays a spinner in non-idle states.\n *\n * @element foxy-internal-form\n * @since 1.17.0\n */\nexport class InternalForm<TData extends HALJSONResource> extends Base<TData> {\n /** Validation errors with this prefix will show up at the top of the form. */\n static generalErrorPrefix = 'error:';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n status: { type: Object },\n };\n }\n\n /** Status message to render at the top of the form. If `null`, the message is hidden. */\n status: null | Status = null;\n\n /**\n * Renders header actions when the optional header is rendered.\n * Empty by default.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n renderHeaderActions(data: TData): TemplateResult | null {\n return null;\n }\n\n /**\n * Renders optional form header with ID, last update timestamp and actions list (snapshot-only).\n * Customize which actions are rendered with `.renderHeaderActions()` method.\n */\n renderHeader(): TemplateResult {\n const data = this.data;\n const actions = data ? this.renderHeaderActions(data) : null;\n const id = data ? getResourceId(data._links.self.href) : '';\n\n return html`\n <h2>\n <span class=\"flex items-center gap-s leading-xs text-xxl font-medium break-all\">\n <foxy-i18n infer=\"header\" key=${data ? 'title_existing' : 'title_new'} .options=${{ id }}>\n </foxy-i18n>\n ${data\n ? html`\n <foxy-copy-to-clipboard infer=\"header\" class=\"text-m\" text=${id}>\n </foxy-copy-to-clipboard>\n `\n : ''}\n </span>\n ${data\n ? html`\n <foxy-i18n\n infer=\"header\"\n class=\"text-l text-secondary\"\n key=\"subtitle\"\n .options=${data}\n >\n </foxy-i18n>\n ${actions ? html`<div class=\"mt-xs flex gap-m\">${actions}</div>` : ''}\n `\n : ''}\n </h2>\n `;\n }\n\n /**\n * Renders form body. This is the method you should implement in your forms\n * instead of `.render()`. If you'd like to keep the submit button and the timestamps,\n * don't forget to add `super.renderBody()` to your template.\n */\n renderBody(): TemplateResult {\n return this.data\n ? html`\n <foxy-internal-timestamps-control infer=\"timestamps\"></foxy-internal-timestamps-control>\n <foxy-internal-delete-control infer=\"delete\"></foxy-internal-delete-control>\n `\n : html`<foxy-internal-create-control infer=\"create\"></foxy-internal-create-control>`;\n }\n\n /**\n * Renders the entire form. You should probably implement `.renderBody()`\n * instead of this method in your form to keep the spinner and the common layout features.\n */\n render(): TemplateResult {\n const isSpinnerVisible = !this.in('idle') && (!this.in({ busy: 'fetching' }) || !this.data);\n\n return html`\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'space-y-m': true,\n 'transition-opacity': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n ${this.__generalErrors.map(err => this.__renderGeneralError(err))}\n ${this.status ? this.__renderStatus(this.status) : ''} ${this.renderBody()}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'flex flex-col items-center justify-center gap-m': true,\n 'transition-opacity absolute inset-0': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('fail') ? 'vertical' : 'no-label'}\n state=${this.in('fail') ? 'error' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n ${this.href && this.in('fail')\n ? html`\n <vaadin-button theme=\"small contrast\" @click=${() => this.refresh()}>\n <foxy-i18n infer=\"spinner\" key=\"refresh\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private get __generalErrors() {\n const prefix = (this.constructor as typeof InternalForm).generalErrorPrefix;\n return this.errors.filter(v => v.startsWith(prefix));\n }\n\n private __renderGeneralError(err: string) {\n return html`\n <foxy-i18n\n class=\"leading-xs text-body rounded bg-error-10 block\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n infer=\"error\"\n key=${err.replace('error:', '')}\n >\n </foxy-i18n>\n `;\n }\n\n private __renderStatus({ key, options }: Status) {\n return html`\n <p\n data-testid=\"status\"\n class=\"leading-xs text-body rounded bg-success-10 flex items-start gap-m\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=${key} .options=${options}></foxy-i18n>\n <vaadin-button\n class=\"flex-shrink-0\"\n theme=\"success tertiary-inline\"\n @click=${() => (this.status = null)}\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=\"close\"></foxy-i18n>\n </vaadin-button>\n </p>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalForm.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/InternalForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { TemplateResult } from 'lit-html';\nimport type { Status } from './types';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { getResourceId } from '@foxy.io/sdk/core';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nconst Base = ConfigurableMixin(ThemeableMixin(NucleonElement));\n\n/**\n * An internal base class for any nucleon-powered form. Renders create/delete\n * buttons and timestamps by default, displays a spinner in non-idle states.\n *\n * @element foxy-internal-form\n * @since 1.17.0\n */\nexport class InternalForm<TData extends HALJSONResource> extends Base<TData> {\n /** Validation errors with this prefix will show up at the top of the form. */\n static generalErrorPrefix = 'error:';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n status: { type: Object },\n };\n }\n\n /** Status message to render at the top of the form. If `null`, the message is hidden. */\n status: null | Status = null;\n\n /**\n * Renders header actions when the optional header is rendered.\n * Empty by default.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n renderHeaderActions(data: TData): TemplateResult | null {\n return null;\n }\n\n /**\n * Renders optional form header with ID, last update timestamp and actions list (snapshot-only).\n * Customize which actions are rendered with `.renderHeaderActions()` method.\n */\n renderHeader(): TemplateResult {\n const data = this.data;\n const actions = data ? this.renderHeaderActions(data) : null;\n const id = data ? getResourceId(data._links.self.href) : '';\n\n return html`\n <h2>\n <span class=\"flex items-center gap-s leading-xs text-xxl font-medium break-all\">\n <foxy-i18n infer=\"header\" key=${data ? 'title_existing' : 'title_new'} .options=${{ id }}>\n </foxy-i18n>\n ${data\n ? html`\n <foxy-copy-to-clipboard infer=\"header\" class=\"text-m\" text=${id}>\n </foxy-copy-to-clipboard>\n `\n : ''}\n </span>\n ${data\n ? html`\n <foxy-i18n\n infer=\"header\"\n class=\"text-l text-secondary\"\n key=\"subtitle\"\n .options=${data}\n >\n </foxy-i18n>\n ${actions ? html`<div class=\"mt-xs flex gap-m\">${actions}</div>` : ''}\n `\n : ''}\n </h2>\n `;\n }\n\n /**\n * Renders form body. This is the method you should implement in your forms\n * instead of `.render()`. If you'd like to keep the submit button and the timestamps,\n * don't forget to add `super.renderBody()` to your template.\n */\n renderBody(): TemplateResult {\n return this.data\n ? html`\n <foxy-internal-timestamps-control infer=\"timestamps\"></foxy-internal-timestamps-control>\n <foxy-internal-delete-control infer=\"delete\"></foxy-internal-delete-control>\n `\n : html`<foxy-internal-create-control infer=\"create\"></foxy-internal-create-control>`;\n }\n\n /**\n * Renders the entire form. You should probably implement `.renderBody()`\n * instead of this method in your form to keep the spinner and the common layout features.\n */\n render(): TemplateResult {\n const isSpinnerVisible = !this.in('idle') && (!this.in({ busy: 'fetching' }) || !this.data);\n\n return html`\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'space-y-m': true,\n 'transition-opacity': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n ${this.__generalErrors.map(err => this.__renderGeneralError(err))}\n ${this.status ? this.__renderStatus(this.status) : ''} ${this.renderBody()}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'flex flex-col items-center justify-center gap-m': true,\n 'transition-opacity absolute inset-0': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('fail') ? 'vertical' : 'no-label'}\n state=${this.in('fail') ? 'error' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n ${this.href && this.in('fail')\n ? html`\n <vaadin-button theme=\"small contrast\" @click=${() => this.refresh()}>\n <foxy-i18n infer=\"spinner\" key=\"refresh\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private get __generalErrors() {\n const prefix = (this.constructor as typeof InternalForm).generalErrorPrefix;\n return this.errors.filter(v => v.startsWith(prefix));\n }\n\n private __renderGeneralError(err: string) {\n return html`\n <foxy-i18n\n class=\"leading-xs text-body rounded bg-error-10 block\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n infer=\"error\"\n key=${err.replace('error:', '')}\n >\n </foxy-i18n>\n `;\n }\n\n private __renderStatus({ key, options }: Status) {\n if (this.hiddenSelector.matches('status', true)) return;\n return html`\n <p\n data-testid=\"status\"\n class=\"leading-xs text-body rounded bg-success-10 flex items-start gap-m\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=${key} .options=${options}></foxy-i18n>\n <vaadin-button\n class=\"flex-shrink-0\"\n theme=\"success tertiary-inline\"\n @click=${() => (this.status = null)}\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=\"close\"></foxy-i18n>\n </vaadin-button>\n </p>\n `;\n }\n}\n"]}
@@ -54,6 +54,11 @@ export declare class Customer extends Base<Data> {
54
54
  static get properties(): PropertyDeclarations;
55
55
  static get styles(): CSSResultArray;
56
56
  templates: Templates;
57
+ /**
58
+ * Configuration URL for the Payment Card Embed. If provided, this element will allow
59
+ * the customer to update their default payment method using the Payment Card Embed.
60
+ */
61
+ embedUrl: string | null;
57
62
  /** Customer Portal settings for use in Customer mode. */
58
63
  settings: Settings | null;
59
64
  private readonly __renderHeaderActionsEdit;
@@ -59,6 +59,11 @@ export class Customer extends Base {
59
59
  constructor() {
60
60
  super(...arguments);
61
61
  this.templates = {};
62
+ /**
63
+ * Configuration URL for the Payment Card Embed. If provided, this element will allow
64
+ * the customer to update their default payment method using the Payment Card Embed.
65
+ */
66
+ this.embedUrl = null;
62
67
  /** Customer Portal settings for use in Customer mode. */
63
68
  this.settings = null;
64
69
  // #region header
@@ -314,22 +319,23 @@ export class Customer extends Base {
314
319
  // #endregion
315
320
  // #region payment-methods
316
321
  this.__renderPaymentMethodsList = () => {
317
- var _a, _b, _c, _d;
322
+ var _a, _b;
318
323
  const cardId = 'payment-methods:list:card';
319
324
  return html `
320
325
  <div data-testid="payment-methods:list">
321
326
  ${this.renderTemplateOrSlot('payment-methods:list:before')}
322
327
 
323
328
  <foxy-payment-method-card
324
- readonlycontrols=${this.readonlySelector.zoom(cardId).toString()}
325
- disabledcontrols=${this.disabledSelector.zoom(cardId).toString()}
326
- hiddencontrols=${this.hiddenSelector.zoom(cardId).toString()}
329
+ readonlycontrols=${this.readonlySelector.zoom(cardId)}
330
+ disabledcontrols=${this.disabledSelector.zoom(cardId)}
331
+ hiddencontrols=${this.hiddenSelector.zoom(cardId)}
327
332
  data-testid=${cardId}
333
+ embed-url=${ifDefined((_a = this.embedUrl) !== null && _a !== void 0 ? _a : void 0)}
328
334
  group=${this.group}
329
335
  class="w-payment-method-card border-radius-overflow-fix rounded-t-l rounded-b-l overflow-hidden"
330
- href=${(_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links['fx:default_payment_method'].href) !== null && _b !== void 0 ? _b : ''}
336
+ href=${ifDefined((_b = this.data) === null || _b === void 0 ? void 0 : _b._links['fx:default_payment_method'].href)}
331
337
  lang=${this.lang}
332
- ns="${this.ns} ${(_d = (_c = customElements.get('foxy-payment-method-card')) === null || _c === void 0 ? void 0 : _c.defaultNS) !== null && _d !== void 0 ? _d : ''}"
338
+ ns="${this.ns} payment-method-card"
333
339
  .templates=${this.getNestedTemplates(cardId)}
334
340
  >
335
341
  </foxy-payment-method-card>
@@ -692,6 +698,7 @@ export class Customer extends Base {
692
698
  return {
693
699
  ...super.properties,
694
700
  settings: { type: Object },
701
+ embedUrl: { attribute: 'embed-url' },
695
702
  };
696
703
  }
697
704
  static get styles() {