@foxy.io/elements 1.27.0-beta.6 → 1.27.0-beta.8

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 (355) 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 -0
  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 +1 -1
  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 +64 -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 +1 -1
  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-205721a3.js → shared-0062cab1.js} +1 -1
  115. package/dist/cdn/{shared-c5f57aa8.js → shared-036b25a3.js} +1 -1
  116. package/dist/cdn/shared-04d8a434.js +1 -0
  117. package/dist/cdn/{shared-065dbdf6.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-f7a5b12a.js → shared-15fe01fe.js} +1 -1
  121. package/dist/cdn/{shared-cc723108.js → shared-1ab8b12e.js} +1 -1
  122. package/dist/cdn/{shared-f2a8fb36.js → shared-1d12db26.js} +1 -1
  123. package/dist/cdn/{shared-0e5ea9cf.js → shared-25fc0ceb.js} +1 -1
  124. package/dist/cdn/shared-272e7269.js +1 -0
  125. package/dist/cdn/{shared-8def6325.js → shared-2808f43a.js} +1 -1
  126. package/dist/cdn/{shared-61f67b16.js → shared-292585a0.js} +1 -1
  127. package/dist/cdn/shared-2e2d45c4.js +1 -0
  128. package/dist/cdn/{shared-48b76c74.js → shared-2f2b5a28.js} +1 -1
  129. package/dist/cdn/{shared-bfa30d93.js → shared-30143820.js} +1 -1
  130. package/dist/cdn/{shared-4329ffa1.js → shared-328e5fdc.js} +1 -1
  131. package/dist/cdn/{shared-80eb1fee.js → shared-337f2fe9.js} +1 -1
  132. package/dist/cdn/{shared-039de1fd.js → shared-34f4330c.js} +1 -1
  133. package/dist/cdn/shared-37391934.js +1 -0
  134. package/dist/cdn/shared-39fc8fed.js +1 -0
  135. package/dist/cdn/{shared-11014aad.js → shared-3c58ddf1.js} +1 -1
  136. package/dist/cdn/{shared-589e5d06.js → shared-40cbbbae.js} +1 -1
  137. package/dist/cdn/{shared-da7a0bfb.js → shared-4128d453.js} +1 -1
  138. package/dist/cdn/{shared-850e2ae1.js → shared-41e9ef02.js} +2 -2
  139. package/dist/cdn/{shared-f03dacf5.js → shared-432d66f4.js} +1 -1
  140. package/dist/cdn/{shared-6e977271.js → shared-4885670b.js} +1 -1
  141. package/dist/cdn/{shared-5c542149.js → shared-550608b8.js} +1 -1
  142. package/dist/cdn/shared-5758adbc.js +1 -0
  143. package/dist/cdn/{shared-bb08b5ce.js → shared-5a18985c.js} +2 -2
  144. package/dist/cdn/{shared-dccfe5e7.js → shared-5e9395ec.js} +1 -1
  145. package/dist/cdn/{shared-845f8bf1.js → shared-62f3fc5a.js} +1 -1
  146. package/dist/cdn/{shared-fd041b18.js → shared-66a515e3.js} +1 -1
  147. package/dist/cdn/shared-66d2a0d7.js +1 -0
  148. package/dist/cdn/{shared-b81aa01c.js → shared-68aebcc4.js} +1 -1
  149. package/dist/cdn/{shared-1d6beb48.js → shared-6dfb57b1.js} +1 -1
  150. package/dist/cdn/{shared-85979316.js → shared-739a8fe4.js} +1 -1
  151. package/dist/cdn/{shared-e966f1ef.js → shared-7535b32d.js} +1 -1
  152. package/dist/cdn/{shared-931db653.js → shared-7c819ebc.js} +1 -1
  153. package/dist/cdn/{shared-9a5da74d.js → shared-84215d13.js} +1 -1
  154. package/dist/cdn/{shared-b30f9b10.js → shared-8452c492.js} +1 -1
  155. package/dist/cdn/{shared-5f09205d.js → shared-8540c2c7.js} +1 -1
  156. package/dist/cdn/shared-8874ec69.js +1 -0
  157. package/dist/cdn/{shared-208e37af.js → shared-8c5b4c81.js} +1 -1
  158. package/dist/cdn/{shared-5dbb9630.js → shared-8d7e2e2c.js} +1 -1
  159. package/dist/cdn/{shared-ca15d510.js → shared-8e59a71e.js} +1 -1
  160. package/dist/cdn/shared-8e75c372.js +1 -0
  161. package/dist/cdn/shared-90ddf541.js +1 -0
  162. package/dist/cdn/{shared-e35297c9.js → shared-91009494.js} +1 -1
  163. package/dist/cdn/shared-9f5c636a.js +1 -0
  164. package/dist/cdn/{shared-fda63db8.js → shared-a30fcaf6.js} +4 -4
  165. package/dist/cdn/shared-a33be18f.js +6 -0
  166. package/dist/cdn/{shared-7e201abd.js → shared-a911ab73.js} +1 -1
  167. package/dist/cdn/{shared-fe7b3ed2.js → shared-b1c7300a.js} +1 -1
  168. package/dist/cdn/{shared-bc95d87e.js → shared-b2ce84fa.js} +1 -1
  169. package/dist/cdn/{shared-1a9e80fa.js → shared-b55f1de3.js} +1 -1
  170. package/dist/cdn/{shared-8cd0f36d.js → shared-b6c1aa47.js} +1 -1
  171. package/dist/cdn/{shared-fb8c09b8.js → shared-b73fd633.js} +1 -1
  172. package/dist/cdn/{shared-a0cbfb2f.js → shared-b99daf13.js} +1 -1
  173. package/dist/cdn/{shared-1d257548.js → shared-bac00622.js} +1 -1
  174. package/dist/cdn/{shared-6af480b8.js → shared-bd99107c.js} +1 -1
  175. package/dist/cdn/{shared-2c70f0b6.js → shared-c0b1a51d.js} +1 -1
  176. package/dist/cdn/shared-c5106605.js +1 -0
  177. package/dist/cdn/{shared-0e8dceb8.js → shared-cb732375.js} +1 -1
  178. package/dist/cdn/shared-cd96ff03.js +1 -0
  179. package/dist/cdn/{shared-93812e51.js → shared-da2a367a.js} +1 -1
  180. package/dist/cdn/{shared-a73e7be4.js → shared-e075ca81.js} +1 -1
  181. package/dist/cdn/{shared-d04c2e0c.js → shared-e10b5dca.js} +1 -1
  182. package/dist/cdn/{shared-cab2aa63.js → shared-e2cbc382.js} +1 -1
  183. package/dist/cdn/{shared-bba8ae80.js → shared-e4403332.js} +1 -1
  184. package/dist/cdn/{shared-befe135a.js → shared-e5f6ca48.js} +1 -1
  185. package/dist/cdn/{shared-56addb06.js → shared-e989e47e.js} +2 -2
  186. package/dist/cdn/{shared-683145e5.js → shared-ecb7a183.js} +1 -1
  187. package/dist/cdn/{shared-e48fbf50.js → shared-f090c63a.js} +1 -1
  188. package/dist/cdn/{shared-4877ed05.js → shared-f14856e0.js} +1 -1
  189. package/dist/cdn/{shared-abf72e2f.js → shared-f2721fae.js} +1 -1
  190. package/dist/cdn/{shared-d4322854.js → shared-f548d023.js} +1 -1
  191. package/dist/cdn/{shared-724e9a20.js → shared-fd95cd52.js} +1 -1
  192. package/dist/cdn/translations/customer/en.json +149 -2
  193. package/dist/cdn/translations/customer-portal/README.md +4 -0
  194. package/dist/cdn/translations/customer-portal/de.json +1063 -113
  195. package/dist/cdn/translations/customer-portal/en.json +151 -5
  196. package/dist/cdn/translations/customer-portal/es.json +1072 -123
  197. package/dist/cdn/translations/customer-portal/fr.json +1084 -134
  198. package/dist/cdn/translations/customer-portal/nl.json +1085 -135
  199. package/dist/cdn/translations/customer-portal/pl.json +1092 -142
  200. package/dist/cdn/translations/customer-portal/sv.json +1173 -0
  201. package/dist/cdn/translations/customer-portal/zh-hk.json +1110 -160
  202. package/dist/cdn/translations/gift-card-code-card/en.json +10 -0
  203. package/dist/cdn/translations/gift-card-code-form/en.json +86 -0
  204. package/dist/cdn/translations/gift-card-form/en.json +638 -397
  205. package/dist/cdn/translations/payment-card-embed/en.json +48 -0
  206. package/dist/cdn/translations/payment-method-card/en.json +149 -2
  207. package/dist/cdn/translations/payments-api-payment-method-form/en.json +2 -2
  208. package/dist/cdn/translations/update-payment-method-form/en.json +140 -0
  209. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +15 -7
  210. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  211. package/dist/elements/internal/InternalBulkAddActionControl/InternalBulkAddActionControl.d.ts +10 -0
  212. package/dist/elements/{public/CouponForm/internal/InternalCouponFormBulkAddControl/InternalCouponFormBulkAddControl.js → internal/InternalBulkAddActionControl/InternalBulkAddActionControl.js} +9 -9
  213. package/dist/elements/internal/InternalBulkAddActionControl/InternalBulkAddActionControl.js.map +1 -0
  214. package/dist/elements/internal/InternalBulkAddActionControl/index.d.ts +6 -0
  215. package/dist/elements/internal/InternalBulkAddActionControl/index.js +8 -0
  216. package/dist/elements/internal/InternalBulkAddActionControl/index.js.map +1 -0
  217. package/dist/elements/internal/InternalForm/InternalForm.js +2 -0
  218. package/dist/elements/internal/InternalForm/InternalForm.js.map +1 -1
  219. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.d.ts +16 -0
  220. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js +167 -0
  221. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js.map +1 -0
  222. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControlForm.d.ts +14 -0
  223. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControlForm.js +40 -0
  224. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControlForm.js.map +1 -0
  225. package/dist/elements/internal/InternalResourcePickerControl/index.d.ts +6 -0
  226. package/dist/elements/internal/InternalResourcePickerControl/index.js +10 -0
  227. package/dist/elements/internal/InternalResourcePickerControl/index.js.map +1 -0
  228. package/dist/elements/public/CouponForm/CouponForm.js +6 -4
  229. package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
  230. package/dist/elements/public/CouponForm/index.d.ts +1 -1
  231. package/dist/elements/public/CouponForm/index.js +1 -1
  232. package/dist/elements/public/CouponForm/index.js.map +1 -1
  233. package/dist/elements/public/CouponForm/types.d.ts +1 -10
  234. package/dist/elements/public/CouponForm/types.js.map +1 -1
  235. package/dist/elements/public/Customer/Customer.d.ts +5 -0
  236. package/dist/elements/public/Customer/Customer.js +13 -6
  237. package/dist/elements/public/Customer/Customer.js.map +1 -1
  238. package/dist/elements/public/Customer/index.d.ts +1 -0
  239. package/dist/elements/public/Customer/index.js +1 -0
  240. package/dist/elements/public/Customer/index.js.map +1 -1
  241. package/dist/elements/public/CustomerPortal/CustomerPortal.d.ts +14 -0
  242. package/dist/elements/public/CustomerPortal/CustomerPortal.js +23 -6
  243. package/dist/elements/public/CustomerPortal/CustomerPortal.js.map +1 -1
  244. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.d.ts +1 -0
  245. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +7 -2
  246. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
  247. package/dist/elements/public/CustomerPortalSettingsForm/CustomerPortalSettingsForm.js +0 -6
  248. package/dist/elements/public/CustomerPortalSettingsForm/CustomerPortalSettingsForm.js.map +1 -1
  249. package/dist/elements/public/DownloadableForm/DownloadableForm.js.map +1 -1
  250. package/dist/elements/public/FormDialog/FormDialog.d.ts +2 -0
  251. package/dist/elements/public/FormDialog/FormDialog.js +8 -4
  252. package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
  253. package/dist/elements/public/GiftCardCodeCard/GiftCardCodeCard.d.ts +21 -0
  254. package/dist/elements/public/GiftCardCodeCard/GiftCardCodeCard.js +78 -0
  255. package/dist/elements/public/GiftCardCodeCard/GiftCardCodeCard.js.map +1 -0
  256. package/dist/elements/public/GiftCardCodeCard/index.d.ts +5 -0
  257. package/dist/elements/public/GiftCardCodeCard/index.js +7 -0
  258. package/dist/elements/public/GiftCardCodeCard/index.js.map +1 -0
  259. package/dist/elements/public/GiftCardCodeCard/types.d.ts +3 -0
  260. package/dist/elements/public/GiftCardCodeCard/types.js +2 -0
  261. package/dist/elements/public/GiftCardCodeCard/types.js.map +1 -0
  262. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.d.ts +12 -0
  263. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +69 -4
  264. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -1
  265. package/dist/elements/public/GiftCardCodeForm/index.d.ts +2 -0
  266. package/dist/elements/public/GiftCardCodeForm/index.js +2 -0
  267. package/dist/elements/public/GiftCardCodeForm/index.js.map +1 -1
  268. package/dist/elements/public/GiftCardCodeForm/types.d.ts +5 -1
  269. package/dist/elements/public/GiftCardCodeForm/types.js.map +1 -1
  270. package/dist/elements/public/GiftCardForm/GiftCardForm.d.ts +22 -28
  271. package/dist/elements/public/GiftCardForm/GiftCardForm.js +183 -633
  272. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  273. package/dist/elements/public/GiftCardForm/index.d.ts +13 -12
  274. package/dist/elements/public/GiftCardForm/index.js +13 -12
  275. package/dist/elements/public/GiftCardForm/index.js.map +1 -1
  276. package/dist/elements/public/GiftCardForm/types.d.ts +2 -27
  277. package/dist/elements/public/GiftCardForm/types.js.map +1 -1
  278. package/dist/elements/public/NucleonElement/NucleonElement.js +7 -1
  279. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  280. package/dist/elements/public/NucleonElement/UpdateEvent.d.ts +3 -1
  281. package/dist/elements/public/NucleonElement/UpdateEvent.js +2 -0
  282. package/dist/elements/public/NucleonElement/UpdateEvent.js.map +1 -1
  283. package/dist/elements/public/PaymentCardEmbedElement/PaymentCardEmbedElement.d.ts +47 -0
  284. package/dist/elements/public/PaymentCardEmbedElement/PaymentCardEmbedElement.js +198 -0
  285. package/dist/elements/public/PaymentCardEmbedElement/PaymentCardEmbedElement.js.map +1 -0
  286. package/dist/elements/public/PaymentCardEmbedElement/index.d.ts +4 -0
  287. package/dist/elements/public/PaymentCardEmbedElement/index.js +6 -0
  288. package/dist/elements/public/PaymentCardEmbedElement/index.js.map +1 -0
  289. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.d.ts +14 -4
  290. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.js +79 -10
  291. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.js.map +1 -1
  292. package/dist/elements/public/PaymentMethodCard/index.d.ts +2 -0
  293. package/dist/elements/public/PaymentMethodCard/index.js +2 -0
  294. package/dist/elements/public/PaymentMethodCard/index.js.map +1 -1
  295. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js +66 -56
  296. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js.map +1 -1
  297. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js +1 -0
  298. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js.map +1 -1
  299. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
  300. package/dist/elements/public/UpdatePaymentMethodForm/UpdatePaymentMethodForm.d.ts +37 -0
  301. package/dist/elements/public/UpdatePaymentMethodForm/UpdatePaymentMethodForm.js +142 -0
  302. package/dist/elements/public/UpdatePaymentMethodForm/UpdatePaymentMethodForm.js.map +1 -0
  303. package/dist/elements/public/UpdatePaymentMethodForm/index.d.ts +8 -0
  304. package/dist/elements/public/UpdatePaymentMethodForm/index.js +10 -0
  305. package/dist/elements/public/UpdatePaymentMethodForm/index.js.map +1 -0
  306. package/dist/elements/public/{CouponForm/internal/InternalCouponFormBulkAddControl/InternalCouponFormBulkAddControl.d.ts → UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/InternalUpdatePaymentMethodFormCcTokenControl.d.ts} +3 -3
  307. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/InternalUpdatePaymentMethodFormCcTokenControl.js +46 -0
  308. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/InternalUpdatePaymentMethodFormCcTokenControl.js.map +1 -0
  309. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/index.d.ts +6 -0
  310. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/index.js +8 -0
  311. package/dist/elements/public/UpdatePaymentMethodForm/internal/InternalUpdatePaymentMethodFormCcTokenControl/index.js.map +1 -0
  312. package/dist/elements/public/UpdatePaymentMethodForm/types.d.ts +13 -0
  313. package/dist/elements/public/UpdatePaymentMethodForm/types.js +2 -0
  314. package/dist/elements/public/UpdatePaymentMethodForm/types.js.map +1 -0
  315. package/dist/elements/public/index.d.ts +3 -0
  316. package/dist/elements/public/index.defined.d.ts +3 -0
  317. package/dist/elements/public/index.defined.js +3 -0
  318. package/dist/elements/public/index.defined.js.map +1 -1
  319. package/dist/elements/public/index.js +3 -0
  320. package/dist/elements/public/index.js.map +1 -1
  321. package/dist/mixins/themeable.js +45 -0
  322. package/dist/mixins/themeable.js.map +1 -1
  323. package/dist/mixins/translatable.js +89 -79
  324. package/dist/mixins/translatable.js.map +1 -1
  325. package/package.json +2 -2
  326. package/dist/cdn/shared-03ccfd62.js +0 -1
  327. package/dist/cdn/shared-07d5e225.js +0 -1
  328. package/dist/cdn/shared-250e652f.js +0 -1
  329. package/dist/cdn/shared-29f2468c.js +0 -6
  330. package/dist/cdn/shared-3ab0306f.js +0 -1
  331. package/dist/cdn/shared-400240f8.js +0 -1
  332. package/dist/cdn/shared-5e35c5a5.js +0 -1
  333. package/dist/cdn/shared-6c4affb9.js +0 -1
  334. package/dist/cdn/shared-77fd8dae.js +0 -1
  335. package/dist/cdn/shared-8a04bea3.js +0 -1
  336. package/dist/cdn/shared-bfeff3bb.js +0 -1
  337. package/dist/cdn/shared-e07b24ca.js +0 -1
  338. package/dist/cdn/shared-e84be1c2.js +0 -64
  339. package/dist/cdn/translations/customer-portal/se.json +0 -223
  340. package/dist/elements/private/EditableList/EditableList.d.ts +0 -23
  341. package/dist/elements/private/EditableList/EditableList.js +0 -127
  342. package/dist/elements/private/EditableList/EditableList.js.map +0 -1
  343. package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/InternalCouponFormBulkAddControl.js.map +0 -1
  344. package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/index.d.ts +0 -6
  345. package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/index.js +0 -8
  346. package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/index.js.map +0 -1
  347. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.d.ts +0 -20
  348. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js +0 -99
  349. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js.map +0 -1
  350. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.d.ts +0 -18
  351. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js +0 -50
  352. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js.map +0 -1
  353. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.d.ts +0 -18
  354. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js +0 -53
  355. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js.map +0 -1
@@ -137,8 +137,7 @@ export class PaymentsApiPaymentMethodForm extends Base {
137
137
  for (const field of block.fields) {
138
138
  if ('optional' in field) {
139
139
  if (!field.optional) {
140
- const path = [block.parent_id, block.id, field.id].filter(v => !!v);
141
- if (!has(additionalFields, path)) {
140
+ if (!has(additionalFields, field.id)) {
142
141
  if (field.type !== 'checkbox') {
143
142
  return 'additional-fields:v8n_invalid';
144
143
  }
@@ -161,6 +160,8 @@ export class PaymentsApiPaymentMethodForm extends Base {
161
160
  return Object.entries((_a = this.__availablePaymentMethods) !== null && _a !== void 0 ? _a : {})
162
161
  .sort((a, b) => a[0].localeCompare(b[0], 'en'))
163
162
  .reduce((groups, [type, helper]) => {
163
+ if (helper.is_deprecated)
164
+ return groups;
164
165
  const firstChar = type.charAt(0).toUpperCase();
165
166
  const isSpecialCharacter = !/\w/.test(firstChar);
166
167
  const name = isSpecialCharacter ? '#' : firstChar;
@@ -203,6 +204,29 @@ export class PaymentsApiPaymentMethodForm extends Base {
203
204
  }
204
205
  __renderPaymentMethodSelector() {
205
206
  return html `
207
+ <figure data-testid="logo" class="relative flex flex-col gap-m p-m items-center">
208
+ <img
209
+ class="relative h-xl w-xl object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
210
+ src=${PaymentsApiPaymentMethodForm.defaultImageSrc}
211
+ alt=""
212
+ />
213
+
214
+ <figcaption class="relative min-w-0 font-medium text-xl text-center">
215
+ <foxy-i18n infer="" key="select_method_title"></foxy-i18n>
216
+ </figcaption>
217
+ </figure>
218
+
219
+ <section data-testid="select-method-list" class="-mt-m">
220
+ ${this.__groupedAvailablePaymentMethods.map(({ name, items }) => {
221
+ return html `
222
+ <p class="font-medium text-tertiary py-m">${name}</p>
223
+ <ul class="grid grid-cols-2 gap-m">
224
+ ${items.map(item => html `<li>${this.__renderPaymentMethodButton(item)}</li>`)}
225
+ </ul>
226
+ `;
227
+ })}
228
+ </section>
229
+
206
230
  <foxy-nucleon
207
231
  class="hidden"
208
232
  infer=""
@@ -211,26 +235,6 @@ export class PaymentsApiPaymentMethodForm extends Base {
211
235
  @update=${() => this.requestUpdate()}
212
236
  >
213
237
  </foxy-nucleon>
214
-
215
- <foxy-i18n
216
- class="block text-xxl font-medium border-b border-contrast-10 pb-m"
217
- infer=""
218
- key="select_method_title"
219
- >
220
- </foxy-i18n>
221
-
222
- <section data-testid="select-method-list">
223
- <div class="-my-s">
224
- ${this.__groupedAvailablePaymentMethods.map(({ name, items }) => {
225
- return html `
226
- <p class="w-m text-center font-medium text-tertiary py-s">${name}</p>
227
- <ul class="grid grid-cols-1">
228
- ${items.map(item => html `<li>${this.__renderPaymentMethodButton(item)}</li>`)}
229
- </ul>
230
- `;
231
- })}
232
- </div>
233
- </section>
234
238
  `;
235
239
  }
236
240
  __renderPaymentMethodConfig(type) {
@@ -246,7 +250,18 @@ export class PaymentsApiPaymentMethodForm extends Base {
246
250
  />
247
251
 
248
252
  <figcaption class="relative min-w-0 font-medium text-xl text-center">
249
- ${(_d = (_c = this.form.helper) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : this.form.type}&ZeroWidthSpace;
253
+ <div>${(_d = (_c = this.form.helper) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : this.form.type}&ZeroWidthSpace;</div>
254
+ ${((_e = this.data) === null || _e === void 0 ? void 0 : _e.type) ? ''
255
+ : html `
256
+ <vaadin-button
257
+ data-testid="select-another-button"
258
+ theme="tertiary-inline"
259
+ class="text-m"
260
+ @click=${() => this.undo()}
261
+ >
262
+ <foxy-i18n infer="" key="select_another_button_label"></foxy-i18n>
263
+ </vaadin-button>
264
+ `}
250
265
  </figcaption>
251
266
  </figure>
252
267
 
@@ -326,7 +341,7 @@ export class PaymentsApiPaymentMethodForm extends Base {
326
341
 
327
342
  <foxy-internal-text-control infer="description"></foxy-internal-text-control>
328
343
 
329
- ${((_e = this.form.helper) === null || _e === void 0 ? void 0 : _e.supports_3d_secure) ? html `
344
+ ${((_f = this.form.helper) === null || _f === void 0 ? void 0 : _f.supports_3d_secure) ? html `
330
345
  <foxy-internal-radio-group-control
331
346
  infer="three-d-secure-toggle"
332
347
  class="-mb-s"
@@ -350,58 +365,54 @@ export class PaymentsApiPaymentMethodForm extends Base {
350
365
  : ''}
351
366
  `
352
367
  : ''}
353
- ${((_f = this.data) === null || _f === void 0 ? void 0 : _f.type) ? ''
354
- : html `
355
- <vaadin-button
356
- data-testid="select-another-button"
357
- theme="contrast"
358
- @click=${() => this.undo()}
359
- >
360
- <foxy-i18n infer="" key="select_another_button_label"></foxy-i18n>
361
- </vaadin-button>
362
- `}
363
368
  ${super.renderBody()}
364
369
  `;
365
370
  }
366
371
  __renderPaymentMethodButton({ type, helper }) {
367
372
  var _a, _b;
368
373
  const defaultSrc = PaymentsApiPaymentMethodForm.defaultImageSrc;
374
+ const src = (_b = (_a = this.getImageSrc) === null || _a === void 0 ? void 0 : _a.call(this, type)) !== null && _b !== void 0 ? _b : defaultSrc;
375
+ const onError = (evt) => (evt.currentTarget.src = defaultSrc);
369
376
  return html `
370
377
  <button
371
378
  class=${classMap({
372
- 'w-full block text-left p-s rounded -mx-s': true,
373
- 'transition-colors hover-bg-contrast-5': !helper.conflict,
379
+ 'relative w-full block text-left p-s rounded bg-contrast-5 overflow-hidden': true,
380
+ 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,
381
+ 'transition-colors hover-bg-contrast-10': !helper.conflict,
374
382
  'cursor-default': !!helper.conflict,
375
383
  })}
376
384
  ?disabled=${!!helper.conflict}
385
+ title=${helper.conflict ? this.t('conflict_message', helper.conflict) : ''}
377
386
  @click=${() => this.edit({ type, helper })}
378
387
  >
379
- <figure class="flex items-center gap-m h-m">
388
+ <img
389
+ class="absolute top-0 left-0 w-1-2 h-full object-cover bg-center filter saturate-200 blur-3xl"
390
+ style="transform: translate3d(0, 0, 0)"
391
+ src=${src}
392
+ alt=""
393
+ ?hidden=${!!helper.conflict}
394
+ @error=${onError}
395
+ />
396
+
397
+ <figure class="relative flex flex-col gap-m">
380
398
  <img
381
- class="relative h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
382
- src=${(_b = (_a = this.getImageSrc) === null || _a === void 0 ? void 0 : _a.call(this, type)) !== null && _b !== void 0 ? _b : defaultSrc}
399
+ class=${classMap({
400
+ 'h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs': true,
401
+ 'filter grayscale': !!helper.conflict,
402
+ })}
403
+ src=${src}
383
404
  alt=""
384
- @error=${(evt) => (evt.currentTarget.src = defaultSrc)}
405
+ @error=${onError}
385
406
  />
386
407
 
387
408
  <figcaption
388
409
  class=${classMap({
389
410
  'min-w-0 flex-1 truncate leading-s': true,
390
- 'text-tertiary': !!helper.conflict,
411
+ 'text-disabled': !!helper.conflict,
391
412
  })}
392
413
  >
393
414
  <div class="font-medium">${helper.name}&ZeroWidthSpace;</div>
394
- ${helper.conflict
395
- ? html `
396
- <foxy-i18n
397
- class="block text-tertiary text-xs"
398
- infer=""
399
- key="conflict_message"
400
- .options=${helper.conflict}
401
- >
402
- </foxy-i18n>
403
- `
404
- : ''}
415
+ <div class="text-xs ${helper.conflict ? '' : 'text-secondary'}">${type}</div>
405
416
  </figcaption>
406
417
  </figure>
407
418
  </button>
@@ -410,13 +421,12 @@ export class PaymentsApiPaymentMethodForm extends Base {
410
421
  __renderBlock(block) {
411
422
  return html `${block.fields.map(field => {
412
423
  var _a, _b, _c;
413
- const path = [block.parent_id, block.id, field.id].filter(v => !!v);
414
- const scope = ['additional-fields', ...path].join('-').replace(/_/g, '-');
424
+ const scope = ['additional-fields', field.id].join('-').replace(/_/g, '-');
415
425
  const getValue = () => {
416
426
  var _a, _b;
417
427
  try {
418
428
  const config = JSON.parse((_a = this.form.additional_fields) !== null && _a !== void 0 ? _a : '{}');
419
- return (_b = get(config, path)) !== null && _b !== void 0 ? _b : config.default_value;
429
+ return (_b = get(config, field.id)) !== null && _b !== void 0 ? _b : config.default_value;
420
430
  }
421
431
  catch (_c) {
422
432
  return field.default_value;
@@ -426,7 +436,7 @@ export class PaymentsApiPaymentMethodForm extends Base {
426
436
  var _a;
427
437
  try {
428
438
  const config = JSON.parse((_a = this.form.additional_fields) !== null && _a !== void 0 ? _a : '{}');
429
- this.edit({ additional_fields: JSON.stringify(set(config, path, newValue)) });
439
+ this.edit({ additional_fields: JSON.stringify(set(config, field.id, newValue)) });
430
440
  }
431
441
  catch (_b) {
432
442
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentsApiPaymentMethodForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AvailablePaymentMethods } from '../PaymentsApi/api/types';\nimport type { Templates, Block, Data } from './types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { TabsElement } from '@vaadin/vaadin-tabs';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nimport has from 'lodash-es/has';\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\n\ntype PaymentMethod = {\n helper: AvailablePaymentMethods['values'][string];\n type: string;\n};\n\nconst NS = 'payments-api-payment-method-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for the `fx:payment_method` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @slot description:before\n * @slot description:after\n *\n * @slot account-id:before\n * @slot account-id:after\n *\n * @slot account-key:before\n * @slot account-key:after\n *\n * @slot third-party-key:before\n * @slot third-party-key:after\n *\n * @slot test-account-id:before\n * @slot test-account-id:after\n *\n * @slot test-account-key:before\n * @slot test-account-key:after\n *\n * @slot test-third-party-key:before\n * @slot test-third-party-key:after\n *\n * @slot additional-fields-[field-name-in-kebab-case]:before\n * @slot additional-fields-[field-name-in-kebab-case]:after\n *\n * @slot three-d-secure-toggle:before\n * @slot three-d-secure-toggle:after\n *\n * @slot three-d-secure-response:before\n * @slot three-d-secure-response:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-payments-api-payment-method-form\n * @since 1.21.0\n */\nexport class PaymentsApiPaymentMethodForm extends Base<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='m29.3 14 14-14H32.1l-14 14h11.2Zm2.7 9.9 12-12V.7L30.62 14.1A2 2 0 0 1 32 16v7.9ZM13.31 44h11.18L44 24.5V13.3l-12 12V28a2 2 0 0 1-2 2h-2.69l-14 14Zm-1.41 0H.7l14-14h11.2l-14 14Zm14 0h11.2l6.9-6.9V25.9L25.9 44Zm12.6 0H44v-5.5L38.5 44Z'/%3E%3Cpath fill='%23fff' d='M30 28H14v-6h16v6Zm0-10v-2H14v2h16ZM0 43.3l13.4-13.4A2 2 0 0 1 12 28v-7.9L0 32.12V43.3Z'/%3E%3Cpath fill='%23fff' d='M16.7 14H14c-1.11 0-1.99.89-1.99 2v2.7L0 30.7V19.52L19.52 0H30.7l-14 14Zm1.4-14H6.92L0 6.92V18.1L18.1 0ZM5.5 0H0v5.5L5.5 0Z'/%3E%3C/svg%3E\";\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __tab: { attribute: false },\n getImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !v || v.length <= 100 || 'description:v8n_too_long',\n ({ type: v }) => !!v || 'type:v8n_required',\n\n form => {\n const blocks = form.helper?.additional_fields?.blocks ?? [];\n let additionalFields: Record<string, unknown>;\n\n try {\n additionalFields = JSON.parse(form.additional_fields ?? '{}');\n } catch {\n additionalFields = {};\n }\n\n for (const block of blocks) {\n for (const field of block.fields) {\n if ('optional' in (field as Record<string, unknown>)) {\n if (!(field as Record<string, unknown>).optional) {\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n\n if (!has(additionalFields, path)) {\n if (field.type !== 'checkbox') {\n return 'additional-fields:v8n_invalid';\n }\n }\n }\n }\n }\n }\n\n return true;\n },\n ];\n }\n\n /** A function that returns a URL of a payment method icon based on the given type. */\n getImageSrc: ((type: string) => string) | null = null;\n\n /** Template render functions mapped to their name. */\n templates: Templates = {};\n\n private readonly __availablePaymentMethodsLoaderId = 'availablePaymentMethodsLoader';\n\n private readonly __threeDSecureResponseGetValue = () => {\n return this.form.config_3d_secure?.endsWith('require_valid_response') ? ['valid_only'] : [];\n };\n\n private readonly __threeDSecureResponseSetValue = (newValue: string[]) => {\n const postfix = newValue.includes('valid_only') ? '_require_valid_response' : '';\n\n const config = this.form.config_3d_secure;\n const type = config?.startsWith('all_cards') ? 'all_cards' : 'maestro_only';\n\n this.edit({\n config_3d_secure: `${type}${postfix}` as Data['config_3d_secure'],\n });\n };\n\n private readonly __threeDSecureResponseOptions = [\n { value: 'valid_only', label: 'option_valid_only' },\n ];\n\n private readonly __threeDSecureToggleGetValue = () => {\n const config = this.form.config_3d_secure;\n\n if (config?.startsWith('all_cards')) return 'all_cards';\n if (config?.startsWith('maestro_only')) return 'maestro_only';\n\n return 'off';\n };\n\n private readonly __threeDSecureToggleSetValue = (\n newValue: 'off' | 'all_cards' | 'maestro_only'\n ) => {\n let newFormValue = '';\n\n if (newValue === 'all_cards' || newValue === 'maestro_only') {\n if (this.form.config_3d_secure?.endsWith('require_valid_response')) {\n newFormValue = `${newValue}_require_valid_response`;\n } else {\n newFormValue = newValue;\n }\n }\n\n this.edit({ config_3d_secure: newFormValue as Data['config_3d_secure'] });\n };\n\n private readonly __threeDSecureToggleOptions = [\n { value: 'off', label: 'option_off' },\n { value: 'all_cards', label: 'option_all_cards' },\n { value: 'maestro_only', label: 'option_maestro_only' },\n ];\n\n private __tab = 0;\n\n renderBody(): TemplateResult {\n return this.form.type\n ? this.__renderPaymentMethodConfig(this.form.type)\n : this.__renderPaymentMethodSelector();\n }\n\n private get __groupedAvailablePaymentMethods() {\n return Object.entries(this.__availablePaymentMethods ?? {})\n .sort((a, b) => a[0].localeCompare(b[0], 'en'))\n .reduce((groups, [type, helper]) => {\n const firstChar = type.charAt(0).toUpperCase();\n const isSpecialCharacter = !/\\w/.test(firstChar);\n const name = isSpecialCharacter ? '#' : firstChar;\n const group = groups.find(group => group.name === name);\n\n if (group) {\n group.items.push({ type, helper });\n } else {\n groups.push({ name, items: [{ type, helper }] });\n }\n\n return groups;\n }, [] as { name: string; items: PaymentMethod[] }[]);\n }\n\n private get __availablePaymentMethodsLoader() {\n type Loader = NucleonElement<AvailablePaymentMethods>;\n return this.renderRoot.querySelector<Loader>(`#${this.__availablePaymentMethodsLoaderId}`);\n }\n\n private get __availablePaymentMethodsHref() {\n try {\n const presetIdRegex = /\\/payment_presets\\/(?<presetId>.+)\\//;\n const pathname = new URL(this.href || this.parent).pathname;\n const presetId = presetIdRegex.exec(pathname)!.groups!.presetId;\n const url = new URL(\n `/payment_presets/${presetId}/available_payment_methods`,\n this.href || this.parent\n );\n\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __availablePaymentMethods() {\n return this.__availablePaymentMethodsLoader?.data?.values;\n }\n\n private get __liveBlocks() {\n return this.form.helper?.additional_fields?.blocks.filter(block => block.is_live) ?? [];\n }\n\n private get __testBlocks() {\n return this.form.helper?.additional_fields?.blocks.filter(block => !block.is_live) ?? [];\n }\n\n private __renderPaymentMethodSelector() {\n return html`\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__availablePaymentMethodsHref)}\n id=${this.__availablePaymentMethodsLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-i18n\n class=\"block text-xxl font-medium border-b border-contrast-10 pb-m\"\n infer=\"\"\n key=\"select_method_title\"\n >\n </foxy-i18n>\n\n <section data-testid=\"select-method-list\">\n <div class=\"-my-s\">\n ${this.__groupedAvailablePaymentMethods.map(({ name, items }) => {\n return html`\n <p class=\"w-m text-center font-medium text-tertiary py-s\">${name}</p>\n <ul class=\"grid grid-cols-1\">\n ${items.map(item => html`<li>${this.__renderPaymentMethodButton(item)}</li>`)}\n </ul>\n `;\n })}\n </div>\n </section>\n `;\n }\n\n private __renderPaymentMethodConfig(type: string) {\n const defaultSrc = PaymentsApiPaymentMethodForm.defaultImageSrc;\n\n return html`\n <figure data-testid=\"logo\" class=\"relative flex flex-col gap-m p-m items-center\">\n <img\n class=\"relative h-xl w-xl object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${this.getImageSrc?.(type) ?? defaultSrc}\n alt=\"\"\n @error=${(evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption class=\"relative min-w-0 font-medium text-xl text-center\">\n ${this.form.helper?.name ?? this.form.type}&ZeroWidthSpace;\n </figcaption>\n </figure>\n\n <div class=\"rounded border border-contrast-10\">\n <vaadin-tabs\n selected=${this.__tab}\n theme=\"centered\"\n @selected-changed=${(evt: CustomEvent) => {\n const tabs = evt.currentTarget as TabsElement;\n this.__tab = tabs.selected ?? 0;\n }}\n >\n <vaadin-tab><foxy-i18n infer=\"\" key=\"tab_live\"></foxy-i18n></vaadin-tab>\n <vaadin-tab><foxy-i18n infer=\"\" key=\"tab_test\"></foxy-i18n></vaadin-tab>\n </vaadin-tabs>\n\n <div class=\"overflow-hidden\" style=\"--lumo-border-radius: var(--lumo-border-radius-s)\">\n <div\n data-testid=\"tab-content\"\n class=\"grid grid-cols-2 gap-m transition-transform transform duration-300\"\n style=${classMap({\n 'width: calc(200% + var(--lumo-space-m));': true,\n '--tw-translate-x: 0;': this.__tab === 0,\n '--tw-translate-x: calc(-50% - (var(--lumo-space-m) / 2));': this.__tab !== 0,\n })}\n >\n ${['live', 'test'].map((type, index) => {\n const prefix = index === 0 ? '' : `${type}-`;\n const blocks = index === 0 ? this.__liveBlocks : this.__testBlocks;\n\n return html`\n <div\n class=${classMap({\n 'grid grid-cols-1 gap-m p-m transition-opacity duration-300': true,\n 'opacity-100': this.__tab === index,\n 'opacity-0': this.__tab !== index,\n })}\n >\n ${this.form.helper?.id_description\n ? html`\n <foxy-internal-text-control\n placeholder=${this.t('default_additional_field_placeholder')}\n helper-text=\"\"\n label=${this.form.helper.id_description}\n infer=\"${prefix}account-id\"\n >\n </foxy-internal-text-control>\n `\n : ''}\n ${this.form.helper?.third_party_key_description\n ? html`\n <foxy-internal-text-control\n placeholder=${this.t('default_additional_field_placeholder')}\n helper-text=\"\"\n label=${this.form.helper.third_party_key_description}\n infer=\"${prefix}third-party-key\"\n >\n </foxy-internal-text-control>\n `\n : ''}\n ${this.form.helper?.key_description\n ? html`\n <foxy-internal-text-control\n placeholder=${this.t('default_additional_field_placeholder')}\n helper-text=\"\"\n label=${this.form.helper.key_description}\n infer=\"${prefix}account-key\"\n >\n </foxy-internal-text-control>\n `\n : ''}\n ${blocks.map(block => this.__renderBlock(block))}\n </div>\n `;\n })}\n </div>\n </div>\n </div>\n\n <foxy-internal-text-control infer=\"description\"></foxy-internal-text-control>\n\n ${this.form.helper?.supports_3d_secure\n ? html`\n <foxy-internal-radio-group-control\n infer=\"three-d-secure-toggle\"\n class=\"-mb-s\"\n .getValue=${this.__threeDSecureToggleGetValue}\n .setValue=${this.__threeDSecureToggleSetValue}\n .options=${this.__threeDSecureToggleOptions}\n >\n </foxy-internal-radio-group-control>\n\n ${this.form.config_3d_secure\n ? html`\n <foxy-internal-checkbox-group-control\n infer=\"three-d-secure-response\"\n class=\"-mb-s\"\n .getValue=${this.__threeDSecureResponseGetValue}\n .setValue=${this.__threeDSecureResponseSetValue}\n .options=${this.__threeDSecureResponseOptions}\n >\n </foxy-internal-checkbox-group-control>\n `\n : ''}\n `\n : ''}\n ${this.data?.type\n ? ''\n : html`\n <vaadin-button\n data-testid=\"select-another-button\"\n theme=\"contrast\"\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"select_another_button_label\"></foxy-i18n>\n </vaadin-button>\n `}\n ${super.renderBody()}\n `;\n }\n\n private __renderPaymentMethodButton({ type, helper }: PaymentMethod) {\n const defaultSrc = PaymentsApiPaymentMethodForm.defaultImageSrc;\n\n return html`\n <button\n class=${classMap({\n 'w-full block text-left p-s rounded -mx-s': true,\n 'transition-colors hover-bg-contrast-5': !helper.conflict,\n 'cursor-default': !!helper.conflict,\n })}\n ?disabled=${!!helper.conflict}\n @click=${() => this.edit({ type, helper })}\n >\n <figure class=\"flex items-center gap-m h-m\">\n <img\n class=\"relative h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${this.getImageSrc?.(type) ?? defaultSrc}\n alt=\"\"\n @error=${(evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption\n class=${classMap({\n 'min-w-0 flex-1 truncate leading-s': true,\n 'text-tertiary': !!helper.conflict,\n })}\n >\n <div class=\"font-medium\">${helper.name}&ZeroWidthSpace;</div>\n ${helper.conflict\n ? html`\n <foxy-i18n\n class=\"block text-tertiary text-xs\"\n infer=\"\"\n key=\"conflict_message\"\n .options=${helper.conflict}\n >\n </foxy-i18n>\n `\n : ''}\n </figcaption>\n </figure>\n </button>\n `;\n }\n\n private __renderBlock(block: Block) {\n return html`${block.fields.map(field => {\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n const scope = ['additional-fields', ...path].join('-').replace(/_/g, '-');\n\n const getValue = () => {\n try {\n const config = JSON.parse(this.form.additional_fields ?? '{}');\n return get(config, path) ?? config.default_value;\n } catch {\n return field.default_value;\n }\n };\n\n const setValue = (newValue: unknown) => {\n try {\n const config = JSON.parse(this.form.additional_fields ?? '{}');\n this.edit({ additional_fields: JSON.stringify(set(config, path, newValue)) });\n } catch {\n return '';\n }\n };\n\n type Option = { name: string; value: string };\n const options = (field as { options?: Option[] }).options;\n\n return html`\n ${field.type === 'checkbox'\n ? html`\n <foxy-internal-checkbox-group-control\n helper-text=${field.description ?? ''}\n label=\"\"\n class=\"-mb-s\"\n infer=${scope}\n .options=${[{ label: field.name, value: 'checked' }]}\n .getValue=${() => (getValue() ? ['checked'] : [])}\n .setValue=${(newValue: string[]) => {\n setValue(newValue.includes('checked'));\n }}\n >\n </foxy-internal-checkbox-group-control>\n `\n : field.type === 'select'\n ? html`\n <foxy-internal-select-control\n helper-text=${field.description ?? ''}\n label=${field.name}\n infer=${scope}\n .options=${options!.map(({ name, value }) => ({ label: name, value }))}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-select-control>\n `\n : html`\n <foxy-internal-text-control\n helper-text=${field.description ?? ''}\n placeholder=${field.default_value || this.t('default_additional_field_placeholder')}\n label=${field.name}\n infer=${scope}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-text-control>\n `}\n `;\n })}`;\n }\n}\n"]}
1
+ {"version":3,"file":"PaymentsApiPaymentMethodForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AvailablePaymentMethods } from '../PaymentsApi/api/types';\nimport type { Templates, Block, Data } from './types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { TabsElement } from '@vaadin/vaadin-tabs';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nimport has from 'lodash-es/has';\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\n\ntype PaymentMethod = {\n helper: AvailablePaymentMethods['values'][string];\n type: string;\n};\n\nconst NS = 'payments-api-payment-method-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for the `fx:payment_method` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @slot description:before\n * @slot description:after\n *\n * @slot account-id:before\n * @slot account-id:after\n *\n * @slot account-key:before\n * @slot account-key:after\n *\n * @slot third-party-key:before\n * @slot third-party-key:after\n *\n * @slot test-account-id:before\n * @slot test-account-id:after\n *\n * @slot test-account-key:before\n * @slot test-account-key:after\n *\n * @slot test-third-party-key:before\n * @slot test-third-party-key:after\n *\n * @slot additional-fields-[field-name-in-kebab-case]:before\n * @slot additional-fields-[field-name-in-kebab-case]:after\n *\n * @slot three-d-secure-toggle:before\n * @slot three-d-secure-toggle:after\n *\n * @slot three-d-secure-response:before\n * @slot three-d-secure-response:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-payments-api-payment-method-form\n * @since 1.21.0\n */\nexport class PaymentsApiPaymentMethodForm extends Base<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='m29.3 14 14-14H32.1l-14 14h11.2Zm2.7 9.9 12-12V.7L30.62 14.1A2 2 0 0 1 32 16v7.9ZM13.31 44h11.18L44 24.5V13.3l-12 12V28a2 2 0 0 1-2 2h-2.69l-14 14Zm-1.41 0H.7l14-14h11.2l-14 14Zm14 0h11.2l6.9-6.9V25.9L25.9 44Zm12.6 0H44v-5.5L38.5 44Z'/%3E%3Cpath fill='%23fff' d='M30 28H14v-6h16v6Zm0-10v-2H14v2h16ZM0 43.3l13.4-13.4A2 2 0 0 1 12 28v-7.9L0 32.12V43.3Z'/%3E%3Cpath fill='%23fff' d='M16.7 14H14c-1.11 0-1.99.89-1.99 2v2.7L0 30.7V19.52L19.52 0H30.7l-14 14Zm1.4-14H6.92L0 6.92V18.1L18.1 0ZM5.5 0H0v5.5L5.5 0Z'/%3E%3C/svg%3E\";\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __tab: { attribute: false },\n getImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !v || v.length <= 100 || 'description:v8n_too_long',\n ({ type: v }) => !!v || 'type:v8n_required',\n\n form => {\n const blocks = form.helper?.additional_fields?.blocks ?? [];\n let additionalFields: Record<string, unknown>;\n\n try {\n additionalFields = JSON.parse(form.additional_fields ?? '{}');\n } catch {\n additionalFields = {};\n }\n\n for (const block of blocks) {\n for (const field of block.fields) {\n if ('optional' in (field as Record<string, unknown>)) {\n if (!(field as Record<string, unknown>).optional) {\n if (!has(additionalFields, field.id)) {\n if (field.type !== 'checkbox') {\n return 'additional-fields:v8n_invalid';\n }\n }\n }\n }\n }\n }\n\n return true;\n },\n ];\n }\n\n /** A function that returns a URL of a payment method icon based on the given type. */\n getImageSrc: ((type: string) => string) | null = null;\n\n /** Template render functions mapped to their name. */\n templates: Templates = {};\n\n private readonly __availablePaymentMethodsLoaderId = 'availablePaymentMethodsLoader';\n\n private readonly __threeDSecureResponseGetValue = () => {\n return this.form.config_3d_secure?.endsWith('require_valid_response') ? ['valid_only'] : [];\n };\n\n private readonly __threeDSecureResponseSetValue = (newValue: string[]) => {\n const postfix = newValue.includes('valid_only') ? '_require_valid_response' : '';\n\n const config = this.form.config_3d_secure;\n const type = config?.startsWith('all_cards') ? 'all_cards' : 'maestro_only';\n\n this.edit({\n config_3d_secure: `${type}${postfix}` as Data['config_3d_secure'],\n });\n };\n\n private readonly __threeDSecureResponseOptions = [\n { value: 'valid_only', label: 'option_valid_only' },\n ];\n\n private readonly __threeDSecureToggleGetValue = () => {\n const config = this.form.config_3d_secure;\n\n if (config?.startsWith('all_cards')) return 'all_cards';\n if (config?.startsWith('maestro_only')) return 'maestro_only';\n\n return 'off';\n };\n\n private readonly __threeDSecureToggleSetValue = (\n newValue: 'off' | 'all_cards' | 'maestro_only'\n ) => {\n let newFormValue = '';\n\n if (newValue === 'all_cards' || newValue === 'maestro_only') {\n if (this.form.config_3d_secure?.endsWith('require_valid_response')) {\n newFormValue = `${newValue}_require_valid_response`;\n } else {\n newFormValue = newValue;\n }\n }\n\n this.edit({ config_3d_secure: newFormValue as Data['config_3d_secure'] });\n };\n\n private readonly __threeDSecureToggleOptions = [\n { value: 'off', label: 'option_off' },\n { value: 'all_cards', label: 'option_all_cards' },\n { value: 'maestro_only', label: 'option_maestro_only' },\n ];\n\n private __tab = 0;\n\n renderBody(): TemplateResult {\n return this.form.type\n ? this.__renderPaymentMethodConfig(this.form.type)\n : this.__renderPaymentMethodSelector();\n }\n\n private get __groupedAvailablePaymentMethods() {\n return Object.entries(this.__availablePaymentMethods ?? {})\n .sort((a, b) => a[0].localeCompare(b[0], 'en'))\n .reduce((groups, [type, helper]) => {\n if (helper.is_deprecated) return groups;\n\n const firstChar = type.charAt(0).toUpperCase();\n const isSpecialCharacter = !/\\w/.test(firstChar);\n const name = isSpecialCharacter ? '#' : firstChar;\n const group = groups.find(group => group.name === name);\n\n if (group) {\n group.items.push({ type, helper });\n } else {\n groups.push({ name, items: [{ type, helper }] });\n }\n\n return groups;\n }, [] as { name: string; items: PaymentMethod[] }[]);\n }\n\n private get __availablePaymentMethodsLoader() {\n type Loader = NucleonElement<AvailablePaymentMethods>;\n return this.renderRoot.querySelector<Loader>(`#${this.__availablePaymentMethodsLoaderId}`);\n }\n\n private get __availablePaymentMethodsHref() {\n try {\n const presetIdRegex = /\\/payment_presets\\/(?<presetId>.+)\\//;\n const pathname = new URL(this.href || this.parent).pathname;\n const presetId = presetIdRegex.exec(pathname)!.groups!.presetId;\n const url = new URL(\n `/payment_presets/${presetId}/available_payment_methods`,\n this.href || this.parent\n );\n\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __availablePaymentMethods() {\n return this.__availablePaymentMethodsLoader?.data?.values;\n }\n\n private get __liveBlocks() {\n return this.form.helper?.additional_fields?.blocks.filter(block => block.is_live) ?? [];\n }\n\n private get __testBlocks() {\n return this.form.helper?.additional_fields?.blocks.filter(block => !block.is_live) ?? [];\n }\n\n private __renderPaymentMethodSelector() {\n return html`\n <figure data-testid=\"logo\" class=\"relative flex flex-col gap-m p-m items-center\">\n <img\n class=\"relative h-xl w-xl object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${PaymentsApiPaymentMethodForm.defaultImageSrc}\n alt=\"\"\n />\n\n <figcaption class=\"relative min-w-0 font-medium text-xl text-center\">\n <foxy-i18n infer=\"\" key=\"select_method_title\"></foxy-i18n>\n </figcaption>\n </figure>\n\n <section data-testid=\"select-method-list\" class=\"-mt-m\">\n ${this.__groupedAvailablePaymentMethods.map(({ name, items }) => {\n return html`\n <p class=\"font-medium text-tertiary py-m\">${name}</p>\n <ul class=\"grid grid-cols-2 gap-m\">\n ${items.map(item => html`<li>${this.__renderPaymentMethodButton(item)}</li>`)}\n </ul>\n `;\n })}\n </section>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__availablePaymentMethodsHref)}\n id=${this.__availablePaymentMethodsLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private __renderPaymentMethodConfig(type: string) {\n const defaultSrc = PaymentsApiPaymentMethodForm.defaultImageSrc;\n\n return html`\n <figure data-testid=\"logo\" class=\"relative flex flex-col gap-m p-m items-center\">\n <img\n class=\"relative h-xl w-xl object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${this.getImageSrc?.(type) ?? defaultSrc}\n alt=\"\"\n @error=${(evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption class=\"relative min-w-0 font-medium text-xl text-center\">\n <div>${this.form.helper?.name ?? this.form.type}&ZeroWidthSpace;</div>\n ${this.data?.type\n ? ''\n : html`\n <vaadin-button\n data-testid=\"select-another-button\"\n theme=\"tertiary-inline\"\n class=\"text-m\"\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"select_another_button_label\"></foxy-i18n>\n </vaadin-button>\n `}\n </figcaption>\n </figure>\n\n <div class=\"rounded border border-contrast-10\">\n <vaadin-tabs\n selected=${this.__tab}\n theme=\"centered\"\n @selected-changed=${(evt: CustomEvent) => {\n const tabs = evt.currentTarget as TabsElement;\n this.__tab = tabs.selected ?? 0;\n }}\n >\n <vaadin-tab><foxy-i18n infer=\"\" key=\"tab_live\"></foxy-i18n></vaadin-tab>\n <vaadin-tab><foxy-i18n infer=\"\" key=\"tab_test\"></foxy-i18n></vaadin-tab>\n </vaadin-tabs>\n\n <div class=\"overflow-hidden\" style=\"--lumo-border-radius: var(--lumo-border-radius-s)\">\n <div\n data-testid=\"tab-content\"\n class=\"grid grid-cols-2 gap-m transition-transform transform duration-300\"\n style=${classMap({\n 'width: calc(200% + var(--lumo-space-m));': true,\n '--tw-translate-x: 0;': this.__tab === 0,\n '--tw-translate-x: calc(-50% - (var(--lumo-space-m) / 2));': this.__tab !== 0,\n })}\n >\n ${['live', 'test'].map((type, index) => {\n const prefix = index === 0 ? '' : `${type}-`;\n const blocks = index === 0 ? this.__liveBlocks : this.__testBlocks;\n\n return html`\n <div\n class=${classMap({\n 'grid grid-cols-1 gap-m p-m transition-opacity duration-300': true,\n 'opacity-100': this.__tab === index,\n 'opacity-0': this.__tab !== index,\n })}\n >\n ${this.form.helper?.id_description\n ? html`\n <foxy-internal-text-control\n placeholder=${this.t('default_additional_field_placeholder')}\n helper-text=\"\"\n label=${this.form.helper.id_description}\n infer=\"${prefix}account-id\"\n >\n </foxy-internal-text-control>\n `\n : ''}\n ${this.form.helper?.third_party_key_description\n ? html`\n <foxy-internal-text-control\n placeholder=${this.t('default_additional_field_placeholder')}\n helper-text=\"\"\n label=${this.form.helper.third_party_key_description}\n infer=\"${prefix}third-party-key\"\n >\n </foxy-internal-text-control>\n `\n : ''}\n ${this.form.helper?.key_description\n ? html`\n <foxy-internal-text-control\n placeholder=${this.t('default_additional_field_placeholder')}\n helper-text=\"\"\n label=${this.form.helper.key_description}\n infer=\"${prefix}account-key\"\n >\n </foxy-internal-text-control>\n `\n : ''}\n ${blocks.map(block => this.__renderBlock(block))}\n </div>\n `;\n })}\n </div>\n </div>\n </div>\n\n <foxy-internal-text-control infer=\"description\"></foxy-internal-text-control>\n\n ${this.form.helper?.supports_3d_secure\n ? html`\n <foxy-internal-radio-group-control\n infer=\"three-d-secure-toggle\"\n class=\"-mb-s\"\n .getValue=${this.__threeDSecureToggleGetValue}\n .setValue=${this.__threeDSecureToggleSetValue}\n .options=${this.__threeDSecureToggleOptions}\n >\n </foxy-internal-radio-group-control>\n\n ${this.form.config_3d_secure\n ? html`\n <foxy-internal-checkbox-group-control\n infer=\"three-d-secure-response\"\n class=\"-mb-s\"\n .getValue=${this.__threeDSecureResponseGetValue}\n .setValue=${this.__threeDSecureResponseSetValue}\n .options=${this.__threeDSecureResponseOptions}\n >\n </foxy-internal-checkbox-group-control>\n `\n : ''}\n `\n : ''}\n ${super.renderBody()}\n `;\n }\n\n private __renderPaymentMethodButton({ type, helper }: PaymentMethod) {\n const defaultSrc = PaymentsApiPaymentMethodForm.defaultImageSrc;\n const src = this.getImageSrc?.(type) ?? defaultSrc;\n const onError = (evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc);\n\n return html`\n <button\n class=${classMap({\n 'relative w-full block text-left p-s rounded bg-contrast-5 overflow-hidden': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'transition-colors hover-bg-contrast-10': !helper.conflict,\n 'cursor-default': !!helper.conflict,\n })}\n ?disabled=${!!helper.conflict}\n title=${helper.conflict ? this.t('conflict_message', helper.conflict) : ''}\n @click=${() => this.edit({ type, helper })}\n >\n <img\n class=\"absolute top-0 left-0 w-1-2 h-full object-cover bg-center filter saturate-200 blur-3xl\"\n style=\"transform: translate3d(0, 0, 0)\"\n src=${src}\n alt=\"\"\n ?hidden=${!!helper.conflict}\n @error=${onError}\n />\n\n <figure class=\"relative flex flex-col gap-m\">\n <img\n class=${classMap({\n 'h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs': true,\n 'filter grayscale': !!helper.conflict,\n })}\n src=${src}\n alt=\"\"\n @error=${onError}\n />\n\n <figcaption\n class=${classMap({\n 'min-w-0 flex-1 truncate leading-s': true,\n 'text-disabled': !!helper.conflict,\n })}\n >\n <div class=\"font-medium\">${helper.name}&ZeroWidthSpace;</div>\n <div class=\"text-xs ${helper.conflict ? '' : 'text-secondary'}\">${type}</div>\n </figcaption>\n </figure>\n </button>\n `;\n }\n\n private __renderBlock(block: Block) {\n return html`${block.fields.map(field => {\n const scope = ['additional-fields', field.id].join('-').replace(/_/g, '-');\n\n const getValue = () => {\n try {\n const config = JSON.parse(this.form.additional_fields ?? '{}');\n return get(config, field.id) ?? config.default_value;\n } catch {\n return field.default_value;\n }\n };\n\n const setValue = (newValue: unknown) => {\n try {\n const config = JSON.parse(this.form.additional_fields ?? '{}');\n this.edit({ additional_fields: JSON.stringify(set(config, field.id, newValue)) });\n } catch {\n return '';\n }\n };\n\n type Option = { name: string; value: string };\n const options = (field as { options?: Option[] }).options;\n\n return html`\n ${field.type === 'checkbox'\n ? html`\n <foxy-internal-checkbox-group-control\n helper-text=${field.description ?? ''}\n label=\"\"\n class=\"-mb-s\"\n infer=${scope}\n .options=${[{ label: field.name, value: 'checked' }]}\n .getValue=${() => (getValue() ? ['checked'] : [])}\n .setValue=${(newValue: string[]) => {\n setValue(newValue.includes('checked'));\n }}\n >\n </foxy-internal-checkbox-group-control>\n `\n : field.type === 'select'\n ? html`\n <foxy-internal-select-control\n helper-text=${field.description ?? ''}\n label=${field.name}\n infer=${scope}\n .options=${options!.map(({ name, value }) => ({ label: name, value }))}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-select-control>\n `\n : html`\n <foxy-internal-text-control\n helper-text=${field.description ?? ''}\n placeholder=${field.default_value || this.t('default_additional_field_placeholder')}\n label=${field.name}\n infer=${scope}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-text-control>\n `}\n `;\n })}`;\n }\n}\n"]}
@@ -102,6 +102,7 @@ export class PaymentsApiPaymentPresetForm extends Base {
102
102
  infer="payment-methods"
103
103
  first=${this.data._links['fx:payment_methods'].href}
104
104
  limit="5"
105
+ alert
105
106
  .item=${(ctx) => html `
106
107
  <foxy-payments-api-payment-method-card
107
108
  parent=${ctx.parent}
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentsApiPaymentPresetForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InternalCheckboxGroupControl } from '../../internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { FormRendererContext } from '../FormDialog/types';\nimport type { ItemRendererContext } from '../CollectionPage/types';\nimport type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'payments-api-payment-preset-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for the `fx:payment_preset` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @slot description:before\n * @slot description:after\n *\n * @slot is-live:before\n * @slot is-live:after\n *\n * @slot is-purchase-order-enabled:before\n * @slot is-purchase-order-enabled:after\n *\n * @slot payment-methods:before\n * @slot payment-methods:after\n *\n * @slot fraud-protections:before\n * @slot fraud-protections:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-payments-api-payment-preset-form\n * @since 1.21.0\n */\nexport class PaymentsApiPaymentPresetForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getFraudProtectionImageSrc: { attribute: false },\n getPaymentMethodImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !!v || 'description:v8n_required',\n ({ description: v }) => (v && v.length <= 100) || 'description:v8n_too_long',\n ];\n }\n\n /** A function that returns image URL for given fraud protection `type`. */\n getFraudProtectionImageSrc: ((type: string) => string) | null = null;\n\n /** A function that returns image URL for given payment method `type`. */\n getPaymentMethodImageSrc: ((type: string) => string) | null = null;\n\n /** Template render functions mapped to their name. */\n templates: Templates = {};\n\n private static readonly __isPOEnabledOptions = [{ label: 'option_true', value: 'true' }];\n\n private static readonly __isLiveOptions = [{ label: 'option_live', value: 'live' }];\n\n private __getIsPOEnabledValue: InternalCheckboxGroupControl['getValue'] = () => {\n return this.form.is_purchase_order_enabled ? ['true'] : [];\n };\n\n private __setIsPOEnabledValue: InternalCheckboxGroupControl['setValue'] = newValue => {\n this.edit({ is_purchase_order_enabled: (newValue as string[]).includes('true') });\n };\n\n private __getIsLiveValue: InternalCheckboxGroupControl['getValue'] = () => {\n return this.form.is_live ? ['live'] : ['test'];\n };\n\n private __setIsLiveValue: InternalCheckboxGroupControl['setValue'] = newValue => {\n this.edit({ is_live: (newValue as string[]).includes('live') });\n };\n\n renderBody(): TemplateResult {\n const constructor = this.constructor as typeof PaymentsApiPaymentPresetForm;\n\n return html`\n <foxy-internal-text-control infer=\"description\"></foxy-internal-text-control>\n\n <div class=\"-mb-s\">\n <foxy-internal-checkbox-group-control\n infer=\"is-live\"\n .getValue=${this.__getIsLiveValue}\n .setValue=${this.__setIsLiveValue}\n .options=${constructor.__isLiveOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"is-purchase-order-enabled\"\n .getValue=${this.__getIsPOEnabledValue}\n .setValue=${this.__setIsPOEnabledValue}\n .options=${constructor.__isPOEnabledOptions}\n >\n </foxy-internal-checkbox-group-control>\n </div>\n\n ${this.data\n ? html`\n <foxy-internal-async-list-control\n infer=\"payment-methods\"\n first=${this.data._links['fx:payment_methods'].href}\n limit=\"5\"\n .item=${(ctx: ItemRendererContext) => html`\n <foxy-payments-api-payment-method-card\n parent=${ctx.parent}\n infer=\"payments-api-payment-method-card\"\n href=${ctx.href}\n .getImageSrc=${this.getPaymentMethodImageSrc}\n >\n </foxy-payments-api-payment-method-card>\n `}\n .form=${(ctx: FormRendererContext) => html`\n <foxy-payments-api-payment-method-form\n parent=${ctx.dialog.parent}\n infer=\"payments-api-payment-method-form\"\n href=${ctx.dialog.href}\n id=\"form\"\n .getImageSrc=${this.getPaymentMethodImageSrc}\n @fetch=${ctx.handleFetch}\n @update=${ctx.handleUpdate}\n >\n </foxy-payments-api-payment-method-form>\n `}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-async-list-control\n infer=\"fraud-protections\"\n first=${this.data._links['fx:fraud_protections'].href}\n limit=\"5\"\n .item=${(ctx: ItemRendererContext) => html`\n <foxy-payments-api-fraud-protection-card\n parent=${ctx.parent}\n infer=\"payments-api-fraud-protection-card\"\n href=${ctx.href}\n .getImageSrc=${this.getFraudProtectionImageSrc}\n >\n </foxy-payments-api-fraud-protection-card>\n `}\n .form=${(ctx: FormRendererContext) => html`\n <foxy-payments-api-fraud-protection-form\n parent=${ctx.dialog.parent}\n infer=\"payments-api-fraud-protection-form\"\n href=${ctx.dialog.href}\n id=\"form\"\n .getImageSrc=${this.getFraudProtectionImageSrc}\n @fetch=${ctx.handleFetch}\n @update=${ctx.handleUpdate}\n >\n </foxy-payments-api-fraud-protection-form>\n `}\n >\n </foxy-internal-async-list-control>\n `\n : ''}\n ${super.renderBody()}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"PaymentsApiPaymentPresetForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InternalCheckboxGroupControl } from '../../internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { FormRendererContext } from '../FormDialog/types';\nimport type { ItemRendererContext } from '../CollectionPage/types';\nimport type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'payments-api-payment-preset-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for the `fx:payment_preset` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @slot description:before\n * @slot description:after\n *\n * @slot is-live:before\n * @slot is-live:after\n *\n * @slot is-purchase-order-enabled:before\n * @slot is-purchase-order-enabled:after\n *\n * @slot payment-methods:before\n * @slot payment-methods:after\n *\n * @slot fraud-protections:before\n * @slot fraud-protections:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-payments-api-payment-preset-form\n * @since 1.21.0\n */\nexport class PaymentsApiPaymentPresetForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getFraudProtectionImageSrc: { attribute: false },\n getPaymentMethodImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !!v || 'description:v8n_required',\n ({ description: v }) => (v && v.length <= 100) || 'description:v8n_too_long',\n ];\n }\n\n /** A function that returns image URL for given fraud protection `type`. */\n getFraudProtectionImageSrc: ((type: string) => string) | null = null;\n\n /** A function that returns image URL for given payment method `type`. */\n getPaymentMethodImageSrc: ((type: string) => string) | null = null;\n\n /** Template render functions mapped to their name. */\n templates: Templates = {};\n\n private static readonly __isPOEnabledOptions = [{ label: 'option_true', value: 'true' }];\n\n private static readonly __isLiveOptions = [{ label: 'option_live', value: 'live' }];\n\n private __getIsPOEnabledValue: InternalCheckboxGroupControl['getValue'] = () => {\n return this.form.is_purchase_order_enabled ? ['true'] : [];\n };\n\n private __setIsPOEnabledValue: InternalCheckboxGroupControl['setValue'] = newValue => {\n this.edit({ is_purchase_order_enabled: (newValue as string[]).includes('true') });\n };\n\n private __getIsLiveValue: InternalCheckboxGroupControl['getValue'] = () => {\n return this.form.is_live ? ['live'] : ['test'];\n };\n\n private __setIsLiveValue: InternalCheckboxGroupControl['setValue'] = newValue => {\n this.edit({ is_live: (newValue as string[]).includes('live') });\n };\n\n renderBody(): TemplateResult {\n const constructor = this.constructor as typeof PaymentsApiPaymentPresetForm;\n\n return html`\n <foxy-internal-text-control infer=\"description\"></foxy-internal-text-control>\n\n <div class=\"-mb-s\">\n <foxy-internal-checkbox-group-control\n infer=\"is-live\"\n .getValue=${this.__getIsLiveValue}\n .setValue=${this.__setIsLiveValue}\n .options=${constructor.__isLiveOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"is-purchase-order-enabled\"\n .getValue=${this.__getIsPOEnabledValue}\n .setValue=${this.__setIsPOEnabledValue}\n .options=${constructor.__isPOEnabledOptions}\n >\n </foxy-internal-checkbox-group-control>\n </div>\n\n ${this.data\n ? html`\n <foxy-internal-async-list-control\n infer=\"payment-methods\"\n first=${this.data._links['fx:payment_methods'].href}\n limit=\"5\"\n alert\n .item=${(ctx: ItemRendererContext) => html`\n <foxy-payments-api-payment-method-card\n parent=${ctx.parent}\n infer=\"payments-api-payment-method-card\"\n href=${ctx.href}\n .getImageSrc=${this.getPaymentMethodImageSrc}\n >\n </foxy-payments-api-payment-method-card>\n `}\n .form=${(ctx: FormRendererContext) => html`\n <foxy-payments-api-payment-method-form\n parent=${ctx.dialog.parent}\n infer=\"payments-api-payment-method-form\"\n href=${ctx.dialog.href}\n id=\"form\"\n .getImageSrc=${this.getPaymentMethodImageSrc}\n @fetch=${ctx.handleFetch}\n @update=${ctx.handleUpdate}\n >\n </foxy-payments-api-payment-method-form>\n `}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-async-list-control\n infer=\"fraud-protections\"\n first=${this.data._links['fx:fraud_protections'].href}\n limit=\"5\"\n .item=${(ctx: ItemRendererContext) => html`\n <foxy-payments-api-fraud-protection-card\n parent=${ctx.parent}\n infer=\"payments-api-fraud-protection-card\"\n href=${ctx.href}\n .getImageSrc=${this.getFraudProtectionImageSrc}\n >\n </foxy-payments-api-fraud-protection-card>\n `}\n .form=${(ctx: FormRendererContext) => html`\n <foxy-payments-api-fraud-protection-form\n parent=${ctx.dialog.parent}\n infer=\"payments-api-fraud-protection-form\"\n href=${ctx.dialog.href}\n id=\"form\"\n .getImageSrc=${this.getFraudProtectionImageSrc}\n @fetch=${ctx.handleFetch}\n @update=${ctx.handleUpdate}\n >\n </foxy-payments-api-fraud-protection-form>\n `}\n >\n </foxy-internal-async-list-control>\n `\n : ''}\n ${super.renderBody()}\n `;\n }\n}\n"]}