@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
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerPortalSettingsForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettingsForm/CustomerPortalSettingsForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Item } from '../../internal/InternalEditableListControl/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { isOrigin } from './isOrigin';\nimport { html } from 'lit-html';\nimport { toOrigin } from './toOrigin';\n\nconst NS = 'customer-portal-settings-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for editing `fx:customer_portal_settings` resources.\n *\n * @element foxy-customer-portal-settings-form\n * @since 1.27.0\n */\nexport class CustomerPortalSettingsForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ sessionLifespanInMinutes: v }) => {\n return typeof v !== 'number' || v <= 40320 || 'session-lifespan-in-minutes:v8n_too_long';\n },\n ({ allowedOrigins: v = [] }) => {\n return v.length <= 10 || 'allowed-origins:v8n_too_many';\n },\n ({ allowedOrigins: v = [] }) => {\n return v.every(isOrigin) || 'allowed-origins:v8n_invalid';\n },\n // TODO remove this once SDK types are fixed\n // @ts-expect-error SDK types are incorrect\n ({ jwtSharedSecret: v }) => {\n return !v || /^[a-z0-9-]+$/.test(v) || 'jwt-shared-secret:v8n_invalid';\n },\n // TODO remove this once SDK types are fixed\n // @ts-expect-error SDK types are incorrect\n ({ jwtSharedSecret: v }) => {\n return !v || v.length >= 40 || 'jwt-shared-secret:v8n_too_short';\n },\n // TODO remove this once SDK types are fixed\n // @ts-expect-error SDK types are incorrect\n ({ jwtSharedSecret: v }) => {\n return !v || v.length <= 100 || 'jwt-shared-secret:v8n_too_long';\n },\n ({ signUp }) => {\n const v = signUp?.verification.siteKey;\n return !v || v.length <= 100 || 'sign-up-verification-hcaptcha-site-key:v8n_too_long';\n },\n ({ signUp }) => {\n const v = signUp?.verification.secretKey;\n return !v || v.length <= 100 || 'sign-up-verification-hcaptcha-secret-key:v8n_too_long';\n },\n ];\n }\n\n private readonly __sessionLifespanInMinutesOptions = [\n { value: 'm', label: 'option_minute' },\n { value: 'h', label: 'option_hour' },\n { value: 'd', label: 'option_day' },\n { value: 'w', label: 'option_week' },\n ];\n\n private readonly __sessionLifespanInMinutesGetValue = () => {\n const minutes = this.form.sessionLifespanInMinutes ?? 0;\n if (minutes % 10080 === 0) return `${minutes / 10080}w`;\n if (minutes % 1440 === 0) return `${minutes / 1440}d`;\n if (minutes % 60 === 0) return `${minutes / 60}h`;\n return `${minutes}m`;\n };\n\n private readonly __sessionLifespanInMinutesSetValue = (newValue: string) => {\n const numericValue = parseInt(newValue);\n\n if (newValue.endsWith('w')) {\n this.edit({ sessionLifespanInMinutes: numericValue * 10080 });\n } else if (newValue.endsWith('d')) {\n this.edit({ sessionLifespanInMinutes: numericValue * 1440 });\n } else if (newValue.endsWith('h')) {\n this.edit({ sessionLifespanInMinutes: numericValue * 60 });\n } else {\n this.edit({ sessionLifespanInMinutes: numericValue });\n }\n };\n\n private readonly __allowedOriginsGetValue = () => {\n return this.form.allowedOrigins?.map(value => ({\n label: isOrigin(value) ? value : `⚠️ ${value}`,\n value,\n }));\n };\n\n private readonly __allowedOriginsSetValue = (newValue: Item[]) => {\n this.edit({\n allowedOrigins: newValue\n .map(({ value }) => toOrigin(value))\n .filter((v, i, a) => a.indexOf(v) === i),\n });\n };\n\n private readonly __featuresOptions = [\n { value: 'sso', label: 'option_sso' },\n { value: 'sign-up', label: 'option_sign_up' },\n { value: 'frequency-modification', label: 'option_frequency_modification' },\n { value: 'next-date-modification', label: 'option_next_date_modification' },\n ];\n\n private readonly __featuresGetValue = () => {\n const features: string[] = [];\n\n if (this.form.sso) features.push('sso');\n if (this.form.signUp?.enabled) features.push('sign-up');\n if (this.form.subscriptions?.allowNextDateModification) features.push('next-date-modification');\n if (this.form.subscriptions?.allowFrequencyModification.length) {\n features.push('frequency-modification');\n }\n\n return features;\n };\n\n private readonly __featuresSetValue = (features: string[]) => {\n const fmod = this.form.subscriptions?.allowFrequencyModification ?? [];\n\n this.edit({\n sso: features.includes('sso'),\n signUp: {\n enabled: features.includes('sign-up'),\n verification: this.form.signUp?.verification ?? {\n type: 'hcaptcha',\n siteKey: '',\n secretKey: '',\n },\n },\n subscriptions: {\n allowFrequencyModification: features.includes('frequency-modification')\n ? fmod.length === 0\n ? [{ jsonataQuery: '*', values: [] }]\n : fmod\n : [],\n allowNextDateModification: features.includes('next-date-modification')\n ? this.form.subscriptions?.allowNextDateModification || []\n : false,\n },\n });\n };\n\n private readonly __signUpVerificationHcaptchaSiteKeyGetValue = () => {\n return this.form.signUp?.verification?.siteKey ?? '';\n };\n\n private readonly __signUpVerificationHcaptchaSiteKeySetValue = (newValue: string) => {\n this.edit({\n signUp: {\n enabled: !!this.form.signUp?.enabled,\n verification: {\n secretKey: this.form.signUp?.verification?.secretKey ?? '',\n siteKey: newValue,\n type: 'hcaptcha',\n },\n },\n });\n };\n\n private readonly __signUpVerificationHcaptchaSecretKeyGetValue = () => {\n return this.form.signUp?.verification?.secretKey ?? '';\n };\n\n private readonly __signUpVerificationHcaptchaSecretKeySetValue = (newValue: string) => {\n this.edit({\n signUp: {\n enabled: !!this.form.signUp?.enabled,\n verification: {\n secretKey: newValue,\n siteKey: this.form.signUp?.verification?.siteKey ?? '',\n type: 'hcaptcha',\n },\n },\n });\n };\n\n private readonly __jwtSecretGeneratorOptions = {\n charset: 'abcdefghijklmnopqrstuvwxyz0123456789',\n length: 64,\n };\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n\n if (!this.form.signUp?.enabled) {\n alwaysMatch.push(\n 'sign-up-verification-hcaptcha-site-key',\n 'sign-up-verification-hcaptcha-secret-key'\n );\n }\n\n if (!this.form.subscriptions?.allowFrequencyModification.length) {\n alwaysMatch.push('subscriptions-allow-frequency-modification');\n }\n\n if (!this.form.subscriptions?.allowNextDateModification) {\n alwaysMatch.push('subscriptions-allow-next-date-modification');\n }\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-editable-list-control\n infer=\"allowed-origins\"\n .getValue=${this.__allowedOriginsGetValue}\n .setValue=${this.__allowedOriginsSetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"features\"\n theme=\"vertical\"\n .getValue=${this.__featuresGetValue}\n .setValue=${this.__featuresSetValue}\n .options=${this.__featuresOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n <foxy-internal-password-control\n infer=\"sign-up-verification-hcaptcha-site-key\"\n .getValue=${this.__signUpVerificationHcaptchaSiteKeyGetValue}\n .setValue=${this.__signUpVerificationHcaptchaSiteKeySetValue}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-password-control\n infer=\"sign-up-verification-hcaptcha-secret-key\"\n .getValue=${this.__signUpVerificationHcaptchaSecretKeyGetValue}\n .setValue=${this.__signUpVerificationHcaptchaSecretKeySetValue}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-async-list-control\n first=\"foxy://${this.virtualHost}/form/subscriptions/allowFrequencyModification\"\n infer=\"subscriptions-allow-frequency-modification\"\n limit=\"20\"\n form=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-frequency-modification-rule-form\"\n item=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-frequency-modification-rule-card\"\n alert\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-async-list-control\n first=\"foxy://${this.virtualHost}/form/subscriptions/allowNextDateModification\"\n infer=\"subscriptions-allow-next-date-modification\"\n limit=\"20\"\n form=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-next-date-modification-rule-form\"\n item=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-next-date-modification-rule-card\"\n alert\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-frequency-control\n infer=\"session-lifespan-in-minutes\"\n max=\"\"\n .getValue=${this.__sessionLifespanInMinutesGetValue}\n .setValue=${this.__sessionLifespanInMinutesSetValue}\n .options=${this.__sessionLifespanInMinutesOptions}\n >\n </foxy-internal-frequency-control>\n\n <foxy-internal-password-control\n property=\"jwtSharedSecret\"\n infer=\"jwt-shared-secret\"\n show-generator\n .generatorOptions=${this.__jwtSecretGeneratorOptions}\n >\n </foxy-internal-password-control>\n\n ${super.renderBody()}\n `;\n }\n\n protected async _sendPost(edits: Partial<Data>): Promise<Data> {\n this.__removeNullProperties(edits);\n return super._sendPost(edits);\n }\n\n protected async _sendPatch(edits: Partial<Data>): Promise<Data> {\n this.__removeNullProperties(edits);\n return super._sendPatch(edits);\n }\n\n private __removeNullProperties(edits: Partial<Data>): void {\n if (typeof edits.subscriptions?.allowNextDateModification === 'object') {\n edits.subscriptions?.allowNextDateModification.forEach(rule => {\n for (const key in rule) {\n const typedKey = key as keyof typeof rule;\n if (rule[typedKey] === null) delete rule[typedKey];\n }\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"CustomerPortalSettingsForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettingsForm/CustomerPortalSettingsForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Item } from '../../internal/InternalEditableListControl/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { isOrigin } from './isOrigin';\nimport { html } from 'lit-html';\nimport { toOrigin } from './toOrigin';\n\nconst NS = 'customer-portal-settings-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for editing `fx:customer_portal_settings` resources.\n *\n * @element foxy-customer-portal-settings-form\n * @since 1.27.0\n */\nexport class CustomerPortalSettingsForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ sessionLifespanInMinutes: v }) => {\n return typeof v !== 'number' || v <= 40320 || 'session-lifespan-in-minutes:v8n_too_long';\n },\n ({ allowedOrigins: v = [] }) => {\n return v.length <= 10 || 'allowed-origins:v8n_too_many';\n },\n ({ allowedOrigins: v = [] }) => {\n return v.every(isOrigin) || 'allowed-origins:v8n_invalid';\n },\n ({ jwtSharedSecret: v }) => {\n return !v || /^[a-z0-9-]+$/.test(v) || 'jwt-shared-secret:v8n_invalid';\n },\n ({ jwtSharedSecret: v }) => {\n return !v || v.length >= 40 || 'jwt-shared-secret:v8n_too_short';\n },\n ({ jwtSharedSecret: v }) => {\n return !v || v.length <= 100 || 'jwt-shared-secret:v8n_too_long';\n },\n ({ signUp }) => {\n const v = signUp?.verification.siteKey;\n return !v || v.length <= 100 || 'sign-up-verification-hcaptcha-site-key:v8n_too_long';\n },\n ({ signUp }) => {\n const v = signUp?.verification.secretKey;\n return !v || v.length <= 100 || 'sign-up-verification-hcaptcha-secret-key:v8n_too_long';\n },\n ];\n }\n\n private readonly __sessionLifespanInMinutesOptions = [\n { value: 'm', label: 'option_minute' },\n { value: 'h', label: 'option_hour' },\n { value: 'd', label: 'option_day' },\n { value: 'w', label: 'option_week' },\n ];\n\n private readonly __sessionLifespanInMinutesGetValue = () => {\n const minutes = this.form.sessionLifespanInMinutes ?? 0;\n if (minutes % 10080 === 0) return `${minutes / 10080}w`;\n if (minutes % 1440 === 0) return `${minutes / 1440}d`;\n if (minutes % 60 === 0) return `${minutes / 60}h`;\n return `${minutes}m`;\n };\n\n private readonly __sessionLifespanInMinutesSetValue = (newValue: string) => {\n const numericValue = parseInt(newValue);\n\n if (newValue.endsWith('w')) {\n this.edit({ sessionLifespanInMinutes: numericValue * 10080 });\n } else if (newValue.endsWith('d')) {\n this.edit({ sessionLifespanInMinutes: numericValue * 1440 });\n } else if (newValue.endsWith('h')) {\n this.edit({ sessionLifespanInMinutes: numericValue * 60 });\n } else {\n this.edit({ sessionLifespanInMinutes: numericValue });\n }\n };\n\n private readonly __allowedOriginsGetValue = () => {\n return this.form.allowedOrigins?.map(value => ({\n label: isOrigin(value) ? value : `⚠️ ${value}`,\n value,\n }));\n };\n\n private readonly __allowedOriginsSetValue = (newValue: Item[]) => {\n this.edit({\n allowedOrigins: newValue\n .map(({ value }) => toOrigin(value))\n .filter((v, i, a) => a.indexOf(v) === i),\n });\n };\n\n private readonly __featuresOptions = [\n { value: 'sso', label: 'option_sso' },\n { value: 'sign-up', label: 'option_sign_up' },\n { value: 'frequency-modification', label: 'option_frequency_modification' },\n { value: 'next-date-modification', label: 'option_next_date_modification' },\n ];\n\n private readonly __featuresGetValue = () => {\n const features: string[] = [];\n\n if (this.form.sso) features.push('sso');\n if (this.form.signUp?.enabled) features.push('sign-up');\n if (this.form.subscriptions?.allowNextDateModification) features.push('next-date-modification');\n if (this.form.subscriptions?.allowFrequencyModification.length) {\n features.push('frequency-modification');\n }\n\n return features;\n };\n\n private readonly __featuresSetValue = (features: string[]) => {\n const fmod = this.form.subscriptions?.allowFrequencyModification ?? [];\n\n this.edit({\n sso: features.includes('sso'),\n signUp: {\n enabled: features.includes('sign-up'),\n verification: this.form.signUp?.verification ?? {\n type: 'hcaptcha',\n siteKey: '',\n secretKey: '',\n },\n },\n subscriptions: {\n allowFrequencyModification: features.includes('frequency-modification')\n ? fmod.length === 0\n ? [{ jsonataQuery: '*', values: [] }]\n : fmod\n : [],\n allowNextDateModification: features.includes('next-date-modification')\n ? this.form.subscriptions?.allowNextDateModification || []\n : false,\n },\n });\n };\n\n private readonly __signUpVerificationHcaptchaSiteKeyGetValue = () => {\n return this.form.signUp?.verification?.siteKey ?? '';\n };\n\n private readonly __signUpVerificationHcaptchaSiteKeySetValue = (newValue: string) => {\n this.edit({\n signUp: {\n enabled: !!this.form.signUp?.enabled,\n verification: {\n secretKey: this.form.signUp?.verification?.secretKey ?? '',\n siteKey: newValue,\n type: 'hcaptcha',\n },\n },\n });\n };\n\n private readonly __signUpVerificationHcaptchaSecretKeyGetValue = () => {\n return this.form.signUp?.verification?.secretKey ?? '';\n };\n\n private readonly __signUpVerificationHcaptchaSecretKeySetValue = (newValue: string) => {\n this.edit({\n signUp: {\n enabled: !!this.form.signUp?.enabled,\n verification: {\n secretKey: newValue,\n siteKey: this.form.signUp?.verification?.siteKey ?? '',\n type: 'hcaptcha',\n },\n },\n });\n };\n\n private readonly __jwtSecretGeneratorOptions = {\n charset: 'abcdefghijklmnopqrstuvwxyz0123456789',\n length: 64,\n };\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n\n if (!this.form.signUp?.enabled) {\n alwaysMatch.push(\n 'sign-up-verification-hcaptcha-site-key',\n 'sign-up-verification-hcaptcha-secret-key'\n );\n }\n\n if (!this.form.subscriptions?.allowFrequencyModification.length) {\n alwaysMatch.push('subscriptions-allow-frequency-modification');\n }\n\n if (!this.form.subscriptions?.allowNextDateModification) {\n alwaysMatch.push('subscriptions-allow-next-date-modification');\n }\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-editable-list-control\n infer=\"allowed-origins\"\n .getValue=${this.__allowedOriginsGetValue}\n .setValue=${this.__allowedOriginsSetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"features\"\n theme=\"vertical\"\n .getValue=${this.__featuresGetValue}\n .setValue=${this.__featuresSetValue}\n .options=${this.__featuresOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n <foxy-internal-password-control\n infer=\"sign-up-verification-hcaptcha-site-key\"\n .getValue=${this.__signUpVerificationHcaptchaSiteKeyGetValue}\n .setValue=${this.__signUpVerificationHcaptchaSiteKeySetValue}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-password-control\n infer=\"sign-up-verification-hcaptcha-secret-key\"\n .getValue=${this.__signUpVerificationHcaptchaSecretKeyGetValue}\n .setValue=${this.__signUpVerificationHcaptchaSecretKeySetValue}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-async-list-control\n first=\"foxy://${this.virtualHost}/form/subscriptions/allowFrequencyModification\"\n infer=\"subscriptions-allow-frequency-modification\"\n limit=\"20\"\n form=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-frequency-modification-rule-form\"\n item=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-frequency-modification-rule-card\"\n alert\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-async-list-control\n first=\"foxy://${this.virtualHost}/form/subscriptions/allowNextDateModification\"\n infer=\"subscriptions-allow-next-date-modification\"\n limit=\"20\"\n form=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-next-date-modification-rule-form\"\n item=\"foxy-internal-customer-portal-settings-form-subscriptions-allow-next-date-modification-rule-card\"\n alert\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-frequency-control\n infer=\"session-lifespan-in-minutes\"\n max=\"\"\n .getValue=${this.__sessionLifespanInMinutesGetValue}\n .setValue=${this.__sessionLifespanInMinutesSetValue}\n .options=${this.__sessionLifespanInMinutesOptions}\n >\n </foxy-internal-frequency-control>\n\n <foxy-internal-password-control\n property=\"jwtSharedSecret\"\n infer=\"jwt-shared-secret\"\n show-generator\n .generatorOptions=${this.__jwtSecretGeneratorOptions}\n >\n </foxy-internal-password-control>\n\n ${super.renderBody()}\n `;\n }\n\n protected async _sendPost(edits: Partial<Data>): Promise<Data> {\n this.__removeNullProperties(edits);\n return super._sendPost(edits);\n }\n\n protected async _sendPatch(edits: Partial<Data>): Promise<Data> {\n this.__removeNullProperties(edits);\n return super._sendPatch(edits);\n }\n\n private __removeNullProperties(edits: Partial<Data>): void {\n if (typeof edits.subscriptions?.allowNextDateModification === 'object') {\n edits.subscriptions?.allowNextDateModification.forEach(rule => {\n for (const key in rule) {\n const typedKey = key as keyof typeof rule;\n if (rule[typedKey] === null) delete rule[typedKey];\n }\n });\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadableForm.js","sourceRoot":"","sources":["../../../../src/elements/public/DownloadableForm/DownloadableForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InternalDownloadableFormUploadControl } from './internal/InternalDownloadableFormUploadControl';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonElement } from '../NucleonElement';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\nconst NS = 'downloadable-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Basic form for managing `fx:downloadable` resources.\n * This element requires an augmented version of hAPI currently limited\n * only to the new Foxy Admin.\n *\n * @slot item-category-uri:before\n * @slot item-category-uri:after\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot code:before\n * @slot code:after\n *\n * @slot price:before\n * @slot price:after\n *\n * @slot upload:before\n * @slot upload: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-downloadable-form\n * @since 1.22.0\n */\nexport class DownloadableForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n downloadableItemCategories: { attribute: 'downloadable-item-categories' },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ item_category_uri: v }) => !!v || 'item-category-uri:v8n_required',\n ({ file_name: v }) => !!v || 'upload:v8n_required',\n ({ price: v }) => typeof v === 'number' || 'price:v8n_required',\n ({ price: v }) => !v || v >= 0 || 'price:v8n_negative',\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 100 || 'name:v8n_too_long',\n ({ code: v }) => !!v || 'code:v8n_required',\n ({ code: v }) => !v || v.length <= 50 || 'code:v8n_too_long',\n ];\n }\n\n /** URL of the `fx:downloadable_item_categories` collection for the store. */\n downloadableItemCategories: string | null = null;\n\n private readonly __downloadableItemCategoryLoaderId = 'downloadableItemCategoryLoader';\n\n get disabledSelector(): BooleanSelector {\n const alwaysDisabled: string[] = [];\n const loader = this.__downloadableItemCategoryLoader;\n if (!loader?.in('idle')) alwaysDisabled.push('item-category-uri');\n return new BooleanSelector(`${alwaysDisabled.join(' ')}${super.disabledSelector}`);\n }\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-async-combo-box-control\n item-label-path=\"name\"\n item-value-path=\"_links.self.href\"\n item-id-path=\"_links.self.href\"\n infer=\"item-category-uri\"\n first=${ifDefined(this.downloadableItemCategories ?? void 0)}\n .selectedItem=${this.__downloadableItemCategoryLoader?.data}\n .setValue=${(newValue: string) => {\n this.edit({ item_category_uri: newValue });\n const newID = parseInt(newValue.split('/').pop() ?? '');\n if (!isNaN(newID)) this.edit({ item_category_id: newID });\n }}\n >\n </foxy-internal-async-combo-box-control>\n\n <foxy-internal-text-control infer=\"name\"></foxy-internal-text-control>\n <foxy-internal-text-control infer=\"code\"></foxy-internal-text-control>\n <foxy-internal-number-control infer=\"price\" min=\"0\"></foxy-internal-number-control>\n\n <foxy-internal-downloadable-form-upload-control infer=\"upload\">\n </foxy-internal-downloadable-form-upload-control>\n\n ${super.renderBody()}\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.form.item_category_uri || void 0)}\n id=${this.__downloadableItemCategoryLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n protected async _sendPatch(edits: Partial<Data>): Promise<Data> {\n type UploadUrl = { upload_url: string };\n\n const data = await super._sendPatch(edits);\n const createUploadUrl = data._links['fx:create_upload_url'].href;\n const root = this.renderRoot;\n const control = root.querySelector<InternalDownloadableFormUploadControl>('[infer=\"upload\"]');\n const upload = control?.uploadElement;\n\n if (upload && upload.files.length === 1) {\n const file = upload.files[0];\n const url = await this._fetch<UploadUrl>(createUploadUrl, {\n method: 'POST',\n body: JSON.stringify({ type: file.type }),\n });\n\n upload.files[0].uploadTarget = url.upload_url;\n upload.uploadFiles();\n }\n\n return data;\n }\n\n protected async _sendPost(edits: Partial<Data>): Promise<Data> {\n type UploadUrl = { upload_url: string };\n\n const data = await super._sendPost(edits);\n const createUploadUrl = data._links['fx:create_upload_url'].href;\n const root = this.renderRoot;\n const control = root.querySelector<InternalDownloadableFormUploadControl>('[infer=\"upload\"]');\n const upload = control?.uploadElement;\n\n if (upload && upload.files.length === 1) {\n const file = upload.files[0];\n const url = await this._fetch<UploadUrl>(createUploadUrl, {\n method: 'POST',\n body: JSON.stringify({ type: file.type }),\n });\n\n upload.files[0].uploadTarget = url.upload_url;\n upload.uploadFiles();\n }\n\n return data;\n }\n\n private get __downloadableItemCategoryLoader() {\n type Loader = NucleonElement<Resource<Rels.ItemCategory>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__downloadableItemCategoryLoaderId}`);\n }\n}\n"]}
1
+ {"version":3,"file":"DownloadableForm.js","sourceRoot":"","sources":["../../../../src/elements/public/DownloadableForm/DownloadableForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InternalDownloadableFormUploadControl } from './internal/InternalDownloadableFormUploadControl/InternalDownloadableFormUploadControl';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonElement } from '../NucleonElement';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\nconst NS = 'downloadable-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Basic form for managing `fx:downloadable` resources.\n * This element requires an augmented version of hAPI currently limited\n * only to the new Foxy Admin.\n *\n * @slot item-category-uri:before\n * @slot item-category-uri:after\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot code:before\n * @slot code:after\n *\n * @slot price:before\n * @slot price:after\n *\n * @slot upload:before\n * @slot upload: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-downloadable-form\n * @since 1.22.0\n */\nexport class DownloadableForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n downloadableItemCategories: { attribute: 'downloadable-item-categories' },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ item_category_uri: v }) => !!v || 'item-category-uri:v8n_required',\n ({ file_name: v }) => !!v || 'upload:v8n_required',\n ({ price: v }) => typeof v === 'number' || 'price:v8n_required',\n ({ price: v }) => !v || v >= 0 || 'price:v8n_negative',\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 100 || 'name:v8n_too_long',\n ({ code: v }) => !!v || 'code:v8n_required',\n ({ code: v }) => !v || v.length <= 50 || 'code:v8n_too_long',\n ];\n }\n\n /** URL of the `fx:downloadable_item_categories` collection for the store. */\n downloadableItemCategories: string | null = null;\n\n private readonly __downloadableItemCategoryLoaderId = 'downloadableItemCategoryLoader';\n\n get disabledSelector(): BooleanSelector {\n const alwaysDisabled: string[] = [];\n const loader = this.__downloadableItemCategoryLoader;\n if (!loader?.in('idle')) alwaysDisabled.push('item-category-uri');\n return new BooleanSelector(`${alwaysDisabled.join(' ')}${super.disabledSelector}`);\n }\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-async-combo-box-control\n item-label-path=\"name\"\n item-value-path=\"_links.self.href\"\n item-id-path=\"_links.self.href\"\n infer=\"item-category-uri\"\n first=${ifDefined(this.downloadableItemCategories ?? void 0)}\n .selectedItem=${this.__downloadableItemCategoryLoader?.data}\n .setValue=${(newValue: string) => {\n this.edit({ item_category_uri: newValue });\n const newID = parseInt(newValue.split('/').pop() ?? '');\n if (!isNaN(newID)) this.edit({ item_category_id: newID });\n }}\n >\n </foxy-internal-async-combo-box-control>\n\n <foxy-internal-text-control infer=\"name\"></foxy-internal-text-control>\n <foxy-internal-text-control infer=\"code\"></foxy-internal-text-control>\n <foxy-internal-number-control infer=\"price\" min=\"0\"></foxy-internal-number-control>\n\n <foxy-internal-downloadable-form-upload-control infer=\"upload\">\n </foxy-internal-downloadable-form-upload-control>\n\n ${super.renderBody()}\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.form.item_category_uri || void 0)}\n id=${this.__downloadableItemCategoryLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n protected async _sendPatch(edits: Partial<Data>): Promise<Data> {\n type UploadUrl = { upload_url: string };\n\n const data = await super._sendPatch(edits);\n const createUploadUrl = data._links['fx:create_upload_url'].href;\n const root = this.renderRoot;\n const control = root.querySelector<InternalDownloadableFormUploadControl>('[infer=\"upload\"]');\n const upload = control?.uploadElement;\n\n if (upload && upload.files.length === 1) {\n const file = upload.files[0];\n const url = await this._fetch<UploadUrl>(createUploadUrl, {\n method: 'POST',\n body: JSON.stringify({ type: file.type }),\n });\n\n upload.files[0].uploadTarget = url.upload_url;\n upload.uploadFiles();\n }\n\n return data;\n }\n\n protected async _sendPost(edits: Partial<Data>): Promise<Data> {\n type UploadUrl = { upload_url: string };\n\n const data = await super._sendPost(edits);\n const createUploadUrl = data._links['fx:create_upload_url'].href;\n const root = this.renderRoot;\n const control = root.querySelector<InternalDownloadableFormUploadControl>('[infer=\"upload\"]');\n const upload = control?.uploadElement;\n\n if (upload && upload.files.length === 1) {\n const file = upload.files[0];\n const url = await this._fetch<UploadUrl>(createUploadUrl, {\n method: 'POST',\n body: JSON.stringify({ type: file.type }),\n });\n\n upload.files[0].uploadTarget = url.upload_url;\n upload.uploadFiles();\n }\n\n return data;\n }\n\n private get __downloadableItemCategoryLoader() {\n type Loader = NucleonElement<Resource<Rels.ItemCategory>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__downloadableItemCategoryLoaderId}`);\n }\n}\n"]}
@@ -13,6 +13,8 @@ import { FormRenderer } from './types';
13
13
  export declare class FormDialog extends Dialog {
14
14
  /** @readonly */
15
15
  static get properties(): PropertyDeclarations;
16
+ /** If true, FormDialog will automatically close after the associated form updates the resource. */
17
+ closeOnPatch: boolean;
16
18
  /** If true, FormDialog won't automatically close after the associated form deletes the resource. */
17
19
  keepOpenOnDelete: boolean;
18
20
  /** If true, FormDialog won't automatically close after the associated form creates a resource. */
@@ -16,6 +16,8 @@ import { spread } from '@open-wc/lit-helpers';
16
16
  export class FormDialog extends Dialog {
17
17
  constructor() {
18
18
  super(...arguments);
19
+ /** If true, FormDialog will automatically close after the associated form updates the resource. */
20
+ this.closeOnPatch = false;
19
21
  /** If true, FormDialog won't automatically close after the associated form deletes the resource. */
20
22
  this.keepOpenOnDelete = false;
21
23
  /** If true, FormDialog won't automatically close after the associated form creates a resource. */
@@ -44,11 +46,12 @@ export class FormDialog extends Dialog {
44
46
  return;
45
47
  const result = (_a = evt.detail) === null || _a === void 0 ? void 0 : _a.result;
46
48
  const Result = UpdateEvent.UpdateResult;
47
- if (!this.keepOpenOnPost && result === Result.ResourceCreated)
48
- this.open = false;
49
- if (!this.keepOpenOnDelete && result === Result.ResourceDeleted)
50
- this.open = false;
51
49
  const target = evt.currentTarget;
50
+ if ((!this.keepOpenOnDelete && result === Result.ResourceDeleted) ||
51
+ (!this.keepOpenOnPost && result === Result.ResourceCreated) ||
52
+ (this.closeOnPatch && result === Result.ResourceUpdated && target.errors.length === 0)) {
53
+ this.open = false;
54
+ }
52
55
  if (this.parent !== target.parent)
53
56
  this.parent = target.parent;
54
57
  if (this.href !== target.href)
@@ -70,6 +73,7 @@ export class FormDialog extends Dialog {
70
73
  props: { type: Object },
71
74
  parent: { type: String },
72
75
  related: { type: Array },
76
+ closeOnPatch: { type: Boolean, attribute: 'close-on-patch' },
73
77
  keepOpenOnPost: { type: Boolean, attribute: 'keep-open-on-post' },
74
78
  keepOpenOnDelete: { type: Boolean, attribute: 'keep-open-on-delete' },
75
79
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FormDialog.js","sourceRoot":"","sources":["../../../../src/elements/public/FormDialog/FormDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { API } from '../NucleonElement/API';\nimport { Dialog } from '../../private/Dialog/Dialog';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { FetchEvent } from '../NucleonElement/FetchEvent';\nimport { FormRenderer } from './types';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { UpdateEvent } from '../NucleonElement/UpdateEvent';\nimport { spread } from '@open-wc/lit-helpers';\n\n/**\n * Dialog wrapper for the forms made with NucleonElement.\n *\n * @fires FormDialog#show - Instance of `FormDialog.ShowEvent`. Dispatched after dialog finishes entry transition.\n * @fires FormDialog#hide - Instance of `FormDialog.HideEvent`. Dispatched after dialog finishes exit transition.\n *\n * @element foxy-form-dialog\n * @since 1.1.0\n */\nexport class FormDialog extends Dialog {\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n href: { type: String },\n form: { type: String, noAccessor: true },\n group: { type: String },\n props: { type: Object },\n parent: { type: String },\n related: { type: Array },\n keepOpenOnPost: { type: Boolean, attribute: 'keep-open-on-post' },\n keepOpenOnDelete: { type: Boolean, attribute: 'keep-open-on-delete' },\n };\n }\n\n /** If true, FormDialog won't automatically close after the associated form deletes the resource. */\n keepOpenOnDelete = false;\n\n /** If true, FormDialog won't automatically close after the associated form creates a resource. */\n keepOpenOnPost = false;\n\n /** Optional URI list of the related resources (passed to form). */\n related: string[] = [];\n\n /** Optional URL of the collection this resource belongs to (passed to form). */\n parent = '';\n\n /** Properties to set on the form element using the `spread()` helper. */\n props: Record<string, unknown> = {};\n\n group = '';\n\n /** Optional URL of the resource to load (passed to form). */\n href = '';\n\n private __form: string | null | FormRenderer = null;\n\n private __renderForm: FormRenderer | null = null;\n\n private __handleFetch = (evt: Event) => {\n if (!(evt instanceof FetchEvent)) return;\n\n evt.stopImmediatePropagation();\n evt.preventDefault();\n evt.respondWith(new API(this).fetch(evt.request));\n };\n\n private __handleUpdate = (evt: Event) => {\n if (!(evt instanceof UpdateEvent)) return;\n\n const result = evt.detail?.result;\n const Result = UpdateEvent.UpdateResult;\n\n if (!this.keepOpenOnPost && result === Result.ResourceCreated) this.open = false;\n if (!this.keepOpenOnDelete && result === Result.ResourceDeleted) this.open = false;\n\n const target = evt.currentTarget as NucleonElement<never>;\n\n if (this.parent !== target.parent) this.parent = target.parent;\n if (this.href !== target.href) this.href = target.href;\n\n this.closable = !target.in('busy');\n this.editable =\n target.in({ idle: { template: { clean: 'valid' } } }) ||\n target.in({ idle: { template: { dirty: 'valid' } } }) ||\n target.in({ idle: { snapshot: { dirty: 'valid' } } });\n };\n\n /**\n * Form's custom element tag. Generated custom element will have the following attributes:\n *\n * - `parent` – same as `foxy-form-dialog[parent]`;\n * - `href` – same as `foxy-form-dialog[href]`;\n * - `lang` – same as `foxy-form-dialog[lang]`;\n */\n get form(): string | null | FormRenderer {\n return this.__form;\n }\n\n set form(value: string | null | FormRenderer) {\n this.__form = value;\n\n if (typeof value === 'string') {\n this.__renderForm = new Function(\n 'options',\n `return options.html\\`\n <${value}\n id=\"form\"\n ns=\"$\\{options.dialog.ns} $\\{customElements.get('${value}')?.defaultNS ?? ''}\"\n href=\\${options.dialog.href}\n lang=\\${options.dialog.lang}\n group=\\${options.dialog.group}\n parent=\\${options.dialog.parent}\n disabledcontrols=\\${options.dialog.disabledControls.toString()}\n readonlycontrols=\\${options.dialog.readonlyControls.toString()}\n hiddencontrols=\\${options.dialog.hiddenControls.toString()}\n ?disabled=\\${options.dialog.disabled}\n ?readonly=\\${options.dialog.readonly}\n ?hidden=\\${options.dialog.hidden}\n .templates=\\${options.dialog.templates}\n .related=\\${options.dialog.related}\n ...=$\\{options.spread(options.dialog.props)}\n @fetch=\\${options.handleFetch}\n @update=\\${options.handleUpdate}\n >\n </${value}>\\``\n ) as FormRenderer;\n } else {\n this.__renderForm = value;\n }\n\n this.requestUpdate();\n }\n\n /** @readonly */\n render(): TemplateResult {\n return html`\n <foxy-internal-confirm-dialog\n message=\"undo_message\"\n confirm=\"undo_confirm\"\n cancel=\"undo_cancel\"\n header=\"undo_header\"\n theme=\"error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && super.hide(true)}\n >\n </foxy-internal-confirm-dialog>\n\n ${super.render(() => {\n return html`${this.__renderForm?.({\n handleUpdate: this.__handleUpdate,\n handleFetch: this.__handleFetch,\n spread: spread,\n dialog: this,\n html,\n })}`;\n })}\n `;\n }\n\n async hide(cancelled = false): Promise<void> {\n if (cancelled) {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show();\n } else {\n return super.hide(cancelled);\n }\n }\n\n /** Submits the form. */\n async save(): Promise<void> {\n (this.renderRoot.querySelector('#form') as NucleonElement<never>).submit();\n }\n}\n"]}
1
+ {"version":3,"file":"FormDialog.js","sourceRoot":"","sources":["../../../../src/elements/public/FormDialog/FormDialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,IAAI,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAE,iCAA8B;AAC5C,OAAO,EAAE,MAAM,EAAE,uCAAoC;AAErD,OAAO,EAAE,UAAU,EAAE,wCAAqC;AAI1D,OAAO,EAAE,WAAW,EAAE,yCAAsC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAW,SAAQ,MAAM;IAAtC;;QAiBE,mGAAmG;QACnG,iBAAY,GAAG,KAAK,CAAC;QAErB,oGAAoG;QACpG,qBAAgB,GAAG,KAAK,CAAC;QAEzB,kGAAkG;QAClG,mBAAc,GAAG,KAAK,CAAC;QAEvB,mEAAmE;QACnE,YAAO,GAAa,EAAE,CAAC;QAEvB,gFAAgF;QAChF,WAAM,GAAG,EAAE,CAAC;QAEZ,yEAAyE;QACzE,UAAK,GAA4B,EAAE,CAAC;QAEpC,UAAK,GAAG,EAAE,CAAC;QAEX,6DAA6D;QAC7D,SAAI,GAAG,EAAE,CAAC;QAEF,WAAM,GAAiC,IAAI,CAAC;QAE5C,iBAAY,GAAwB,IAAI,CAAC;QAEzC,kBAAa,GAAG,CAAC,GAAU,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,GAAG,YAAY,UAAU,CAAC;gBAAE,OAAO;YAEzC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YAC/B,GAAG,CAAC,cAAc,EAAE,CAAC;YACrB,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,GAAU,EAAE,EAAE;;YACtC,IAAI,CAAC,CAAC,GAAG,YAAY,WAAW,CAAC;gBAAE,OAAO;YAE1C,MAAM,MAAM,SAAG,GAAG,CAAC,MAAM,0CAAE,MAAM,CAAC;YAClC,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC;YACxC,MAAM,MAAM,GAAG,GAAG,CAAC,aAAsC,CAAC;YAE1D,IACE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,MAAM,KAAK,MAAM,CAAC,eAAe,CAAC;gBAC7D,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,MAAM,KAAK,MAAM,CAAC,eAAe,CAAC;gBAC3D,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,KAAK,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EACtF;gBACA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACnB;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAEvD,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ;gBACX,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oBACrD,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oBACrD,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC;IAyFJ,CAAC;IAnKC,gBAAgB;IAChB,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;YACxC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACxB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE;YAC5D,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE;YACjE,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE;SACtE,CAAC;IACJ,CAAC;IA8DD;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,KAAmC;QAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAC9B,SAAS,EACT;aACK,KAAK;;+DAE6C,KAAK;;;;;;;;;;;;;;;;;cAiBtD,KAAK,KAAK,CACD,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gBAAgB;IAChB,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;eAOA,IAAI,CAAC,IAAI;aACX,IAAI,CAAC,EAAE;;gBAEJ,CAAC,GAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;QAI3E,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;;YAClB,OAAO,IAAI,CAAA,GAAG,MAAA,IAAI,CAAC,YAAY,+CAAjB,IAAI,EAAgB;gBAChC,YAAY,EAAE,IAAI,CAAC,cAAc;gBACjC,WAAW,EAAE,IAAI,CAAC,aAAa;gBAC/B,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,IAAI;gBACZ,IAAI;aACL,CAAC,EAAE,CAAC;QACP,CAAC,CAAC;KACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK;QAC1B,IAAI,SAAS,EAAE;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAA0B,CAAC;YACnF,OAAO,CAAC,IAAI,EAAE,CAAC;SAChB;aAAM;YACL,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9B;IACH,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,IAAI;QACP,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAA2B,CAAC,MAAM,EAAE,CAAC;IAC7E,CAAC;CACF","sourcesContent":["import { PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { API } from '../NucleonElement/API';\nimport { Dialog } from '../../private/Dialog/Dialog';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { FetchEvent } from '../NucleonElement/FetchEvent';\nimport { FormRenderer } from './types';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { UpdateEvent } from '../NucleonElement/UpdateEvent';\nimport { spread } from '@open-wc/lit-helpers';\n\n/**\n * Dialog wrapper for the forms made with NucleonElement.\n *\n * @fires FormDialog#show - Instance of `FormDialog.ShowEvent`. Dispatched after dialog finishes entry transition.\n * @fires FormDialog#hide - Instance of `FormDialog.HideEvent`. Dispatched after dialog finishes exit transition.\n *\n * @element foxy-form-dialog\n * @since 1.1.0\n */\nexport class FormDialog extends Dialog {\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n href: { type: String },\n form: { type: String, noAccessor: true },\n group: { type: String },\n props: { type: Object },\n parent: { type: String },\n related: { type: Array },\n closeOnPatch: { type: Boolean, attribute: 'close-on-patch' },\n keepOpenOnPost: { type: Boolean, attribute: 'keep-open-on-post' },\n keepOpenOnDelete: { type: Boolean, attribute: 'keep-open-on-delete' },\n };\n }\n\n /** If true, FormDialog will automatically close after the associated form updates the resource. */\n closeOnPatch = false;\n\n /** If true, FormDialog won't automatically close after the associated form deletes the resource. */\n keepOpenOnDelete = false;\n\n /** If true, FormDialog won't automatically close after the associated form creates a resource. */\n keepOpenOnPost = false;\n\n /** Optional URI list of the related resources (passed to form). */\n related: string[] = [];\n\n /** Optional URL of the collection this resource belongs to (passed to form). */\n parent = '';\n\n /** Properties to set on the form element using the `spread()` helper. */\n props: Record<string, unknown> = {};\n\n group = '';\n\n /** Optional URL of the resource to load (passed to form). */\n href = '';\n\n private __form: string | null | FormRenderer = null;\n\n private __renderForm: FormRenderer | null = null;\n\n private __handleFetch = (evt: Event) => {\n if (!(evt instanceof FetchEvent)) return;\n\n evt.stopImmediatePropagation();\n evt.preventDefault();\n evt.respondWith(new API(this).fetch(evt.request));\n };\n\n private __handleUpdate = (evt: Event) => {\n if (!(evt instanceof UpdateEvent)) return;\n\n const result = evt.detail?.result;\n const Result = UpdateEvent.UpdateResult;\n const target = evt.currentTarget as NucleonElement<never>;\n\n if (\n (!this.keepOpenOnDelete && result === Result.ResourceDeleted) ||\n (!this.keepOpenOnPost && result === Result.ResourceCreated) ||\n (this.closeOnPatch && result === Result.ResourceUpdated && target.errors.length === 0)\n ) {\n this.open = false;\n }\n\n if (this.parent !== target.parent) this.parent = target.parent;\n if (this.href !== target.href) this.href = target.href;\n\n this.closable = !target.in('busy');\n this.editable =\n target.in({ idle: { template: { clean: 'valid' } } }) ||\n target.in({ idle: { template: { dirty: 'valid' } } }) ||\n target.in({ idle: { snapshot: { dirty: 'valid' } } });\n };\n\n /**\n * Form's custom element tag. Generated custom element will have the following attributes:\n *\n * - `parent` – same as `foxy-form-dialog[parent]`;\n * - `href` – same as `foxy-form-dialog[href]`;\n * - `lang` – same as `foxy-form-dialog[lang]`;\n */\n get form(): string | null | FormRenderer {\n return this.__form;\n }\n\n set form(value: string | null | FormRenderer) {\n this.__form = value;\n\n if (typeof value === 'string') {\n this.__renderForm = new Function(\n 'options',\n `return options.html\\`\n <${value}\n id=\"form\"\n ns=\"$\\{options.dialog.ns} $\\{customElements.get('${value}')?.defaultNS ?? ''}\"\n href=\\${options.dialog.href}\n lang=\\${options.dialog.lang}\n group=\\${options.dialog.group}\n parent=\\${options.dialog.parent}\n disabledcontrols=\\${options.dialog.disabledControls.toString()}\n readonlycontrols=\\${options.dialog.readonlyControls.toString()}\n hiddencontrols=\\${options.dialog.hiddenControls.toString()}\n ?disabled=\\${options.dialog.disabled}\n ?readonly=\\${options.dialog.readonly}\n ?hidden=\\${options.dialog.hidden}\n .templates=\\${options.dialog.templates}\n .related=\\${options.dialog.related}\n ...=$\\{options.spread(options.dialog.props)}\n @fetch=\\${options.handleFetch}\n @update=\\${options.handleUpdate}\n >\n </${value}>\\``\n ) as FormRenderer;\n } else {\n this.__renderForm = value;\n }\n\n this.requestUpdate();\n }\n\n /** @readonly */\n render(): TemplateResult {\n return html`\n <foxy-internal-confirm-dialog\n message=\"undo_message\"\n confirm=\"undo_confirm\"\n cancel=\"undo_cancel\"\n header=\"undo_header\"\n theme=\"error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && super.hide(true)}\n >\n </foxy-internal-confirm-dialog>\n\n ${super.render(() => {\n return html`${this.__renderForm?.({\n handleUpdate: this.__handleUpdate,\n handleFetch: this.__handleFetch,\n spread: spread,\n dialog: this,\n html,\n })}`;\n })}\n `;\n }\n\n async hide(cancelled = false): Promise<void> {\n if (cancelled) {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show();\n } else {\n return super.hide(cancelled);\n }\n }\n\n /** Submits the form. */\n async save(): Promise<void> {\n (this.renderRoot.querySelector('#form') as NucleonElement<never>).submit();\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import type { Data } from './types';
3
+ import { InternalCard } from '../../internal/InternalCard/InternalCard';
4
+ declare const Base: typeof InternalCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
5
+ defaultNS: string;
6
+ };
7
+ /**
8
+ * Card element that displays a gift card code (`fx:gift_card_code`).
9
+ *
10
+ * @element foxy-gift-card-code-card
11
+ * @since 1.27.0
12
+ */
13
+ export declare class GiftCardCodeCard extends Base<Data> {
14
+ private readonly __giftCardLoaderId;
15
+ private readonly __storeLoaderId;
16
+ get isBodyReady(): boolean;
17
+ renderBody(): TemplateResult;
18
+ private get __giftCardLoader();
19
+ private get __storeLoader();
20
+ }
21
+ export {};
@@ -0,0 +1,78 @@
1
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
+ import { InternalCard } from "../../internal/InternalCard/InternalCard.js";
3
+ import { ifDefined } from 'lit-html/directives/if-defined';
4
+ import { html } from 'lit-html';
5
+ const NS = 'gift-card-code-card';
6
+ const Base = TranslatableMixin(InternalCard, NS);
7
+ /**
8
+ * Card element that displays a gift card code (`fx:gift_card_code`).
9
+ *
10
+ * @element foxy-gift-card-code-card
11
+ * @since 1.27.0
12
+ */
13
+ export class GiftCardCodeCard extends Base {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.__giftCardLoaderId = 'giftCardLoader';
17
+ this.__storeLoaderId = 'storeLoader';
18
+ }
19
+ get isBodyReady() {
20
+ var _a, _b;
21
+ return super.isBodyReady && !!((_a = this.__giftCardLoader) === null || _a === void 0 ? void 0 : _a.data) && !!((_b = this.__storeLoader) === null || _b === void 0 ? void 0 : _b.data);
22
+ }
23
+ renderBody() {
24
+ var _a, _b, _c, _d, _e;
25
+ const giftCard = (_a = this.__giftCardLoader) === null || _a === void 0 ? void 0 : _a.data;
26
+ const store = (_b = this.__storeLoader) === null || _b === void 0 ? void 0 : _b.data;
27
+ return html `
28
+ <section class="h-s flex flex-col justify-center leading-xs">
29
+ <p class="flex items-center justify-between min-w-0">
30
+ <foxy-i18n
31
+ infer=""
32
+ class="block truncate text-m font-medium"
33
+ key="line_1"
34
+ .options=${this.data}
35
+ >
36
+ </foxy-i18n>
37
+ <foxy-i18n
38
+ infer=""
39
+ class="text-s text-tertiary"
40
+ key="current_balance"
41
+ .options=${{
42
+ currencyDisplay: (store === null || store === void 0 ? void 0 : store.use_international_currency_symbol) ? 'code' : 'symbol',
43
+ value: `${(_c = this.data) === null || _c === void 0 ? void 0 : _c.current_balance} ${giftCard === null || giftCard === void 0 ? void 0 : giftCard.currency_code}`,
44
+ }}
45
+ >
46
+ </foxy-i18n>
47
+ </p>
48
+ <p class="text-s text-secondary min-w-0">
49
+ <foxy-i18n infer="" class="block truncate" key="line_2" .options=${this.data}>
50
+ </foxy-i18n>
51
+ </p>
52
+ </section>
53
+
54
+ <foxy-nucleon
55
+ infer=""
56
+ href=${ifDefined((_d = this.data) === null || _d === void 0 ? void 0 : _d._links['fx:store'].href)}
57
+ id=${this.__storeLoaderId}
58
+ @update=${() => this.requestUpdate()}
59
+ >
60
+ </foxy-nucleon>
61
+
62
+ <foxy-nucleon
63
+ infer=""
64
+ href=${ifDefined((_e = this.data) === null || _e === void 0 ? void 0 : _e._links['fx:gift_card'].href)}
65
+ id=${this.__giftCardLoaderId}
66
+ @update=${() => this.requestUpdate()}
67
+ >
68
+ </foxy-nucleon>
69
+ `;
70
+ }
71
+ get __giftCardLoader() {
72
+ return this.renderRoot.querySelector(`#${this.__giftCardLoaderId}`);
73
+ }
74
+ get __storeLoader() {
75
+ return this.renderRoot.querySelector(`#${this.__storeLoaderId}`);
76
+ }
77
+ }
78
+ //# sourceMappingURL=GiftCardCodeCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GiftCardCodeCard.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeCard/GiftCardCodeCard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,qBAAqB,CAAC;AACjC,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,IAAU;IAAhD;;QACmB,uBAAkB,GAAG,gBAAgB,CAAC;QAEtC,oBAAe,GAAG,aAAa,CAAC;IAgEnD,CAAC;IA9DC,IAAI,WAAW;;QACb,OAAO,KAAK,CAAC,WAAW,IAAI,CAAC,QAAC,IAAI,CAAC,gBAAgB,0CAAE,IAAI,CAAA,IAAI,CAAC,QAAC,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAA,CAAC;IAC1F,CAAC;IAED,UAAU;;QACR,MAAM,QAAQ,SAAG,IAAI,CAAC,gBAAgB,0CAAE,IAAI,CAAC;QAC7C,MAAM,KAAK,SAAG,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAC;QAEvC,OAAO,IAAI,CAAA;;;;;;;uBAOQ,IAAI,CAAC,IAAI;;;;;;;uBAOT;YACT,eAAe,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,iCAAiC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YAC7E,KAAK,EAAE,GAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,eAAe,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,EAAE;SAClE;;;;;6EAKgE,IAAI,CAAC,IAAI;;;;;;;eAOvE,SAAS,OAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC;aAC/C,IAAI,CAAC,eAAe;kBACf,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;eAM7B,SAAS,OAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC;aACnD,IAAI,CAAC,kBAAkB;kBAClB,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;KAGvC,CAAC;IACJ,CAAC;IAED,IAAY,gBAAgB;QAE1B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAY,aAAa;QAEvB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'gift-card-code-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\n/**\n * Card element that displays a gift card code (`fx:gift_card_code`).\n *\n * @element foxy-gift-card-code-card\n * @since 1.27.0\n */\nexport class GiftCardCodeCard extends Base<Data> {\n private readonly __giftCardLoaderId = 'giftCardLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n get isBodyReady(): boolean {\n return super.isBodyReady && !!this.__giftCardLoader?.data && !!this.__storeLoader?.data;\n }\n\n renderBody(): TemplateResult {\n const giftCard = this.__giftCardLoader?.data;\n const store = this.__storeLoader?.data;\n\n return html`\n <section class=\"h-s flex flex-col justify-center leading-xs\">\n <p class=\"flex items-center justify-between min-w-0\">\n <foxy-i18n\n infer=\"\"\n class=\"block truncate text-m font-medium\"\n key=\"line_1\"\n .options=${this.data}\n >\n </foxy-i18n>\n <foxy-i18n\n infer=\"\"\n class=\"text-s text-tertiary\"\n key=\"current_balance\"\n .options=${{\n currencyDisplay: store?.use_international_currency_symbol ? 'code' : 'symbol',\n value: `${this.data?.current_balance} ${giftCard?.currency_code}`,\n }}\n >\n </foxy-i18n>\n </p>\n <p class=\"text-s text-secondary min-w-0\">\n <foxy-i18n infer=\"\" class=\"block truncate\" key=\"line_2\" .options=${this.data}>\n </foxy-i18n>\n </p>\n </section>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.data?._links['fx:gift_card'].href)}\n id=${this.__giftCardLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __giftCardLoader() {\n type Loader = NucleonElement<Resource<Rels.GiftCard>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__giftCardLoaderId}`);\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import '../../internal/InternalCard/index';
2
+ import '../NucleonElement/index';
3
+ import '../I18n/index';
4
+ import { GiftCardCodeCard } from './GiftCardCodeCard';
5
+ export { GiftCardCodeCard };
@@ -0,0 +1,7 @@
1
+ import "../../internal/InternalCard/index.js";
2
+ import "../NucleonElement/index.js";
3
+ import "../I18n/index.js";
4
+ import { GiftCardCodeCard } from "./GiftCardCodeCard.js";
5
+ customElements.define('foxy-gift-card-code-card', GiftCardCodeCard);
6
+ export { GiftCardCodeCard };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAE3C,oCAAiC;AACjC,0BAAuB;AAEvB,OAAO,EAAE,gBAAgB,EAAE,8BAA2B;AAEtD,cAAc,CAAC,MAAM,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\n\nimport '../NucleonElement/index';\nimport '../I18n/index';\n\nimport { GiftCardCodeCard } from './GiftCardCodeCard';\n\ncustomElements.define('foxy-gift-card-code-card', GiftCardCodeCard);\n\nexport { GiftCardCodeCard };\n"]}
@@ -0,0 +1,3 @@
1
+ import type { Resource } from '@foxy.io/sdk/core';
2
+ import type { Rels } from '@foxy.io/sdk/backend';
3
+ export declare type Data = Resource<Rels.GiftCardCode>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nexport type Data = Resource<Rels.GiftCardCode>;\n"]}
@@ -1,3 +1,4 @@
1
+ import type { PropertyDeclarations } from 'lit-element';
1
2
  import type { Data, Templates } from './types';
2
3
  import type { TemplateResult } from 'lit-html';
3
4
  import type { NucleonV8N } from '../NucleonElement/types';
@@ -18,6 +19,9 @@ declare const Base: typeof InternalForm & import("lit-element").Constructor<impo
18
19
  * @slot end-date:before
19
20
  * @slot end-date:after
20
21
  *
22
+ * @slot customer:before – **new in v1.27.0**
23
+ * @slot customer:after – **new in v1.27.0**
24
+ *
21
25
  * @slot logs:before
22
26
  * @slot logs:after
23
27
  *
@@ -34,9 +38,17 @@ declare const Base: typeof InternalForm & import("lit-element").Constructor<impo
34
38
  * @since 1.15.0
35
39
  */
36
40
  export declare class GiftCardCodeForm extends Base<Data> {
41
+ static get properties(): PropertyDeclarations;
37
42
  static get v8n(): NucleonV8N<Data>;
43
+ /** Returns a `fx:customer` Resource URL for a Customer ID. */
44
+ getCustomerHref: (id: number | string) => string;
38
45
  templates: Templates;
46
+ private readonly __customerGetValue;
47
+ private readonly __customerSetValue;
48
+ private readonly __customerFilters;
49
+ private readonly __storeLoaderId;
39
50
  get hiddenSelector(): BooleanSelector;
40
51
  renderBody(): TemplateResult;
52
+ private get __storeLoader();
41
53
  }
42
54
  export {};
@@ -1,6 +1,7 @@
1
+ import { BooleanSelector, getResourceId } from '@foxy.io/sdk/core';
1
2
  import { TranslatableMixin } from "../../../mixins/translatable.js";
2
- import { BooleanSelector } from '@foxy.io/sdk/core';
3
3
  import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
4
+ import { Type } from "../QueryBuilder/types.js";
4
5
  import { ifDefined } from 'lit-html/directives/if-defined';
5
6
  import { html } from 'lit-html';
6
7
  const NS = 'gift-card-code-form';
@@ -17,6 +18,9 @@ const Base = TranslatableMixin(InternalForm, NS);
17
18
  * @slot end-date:before
18
19
  * @slot end-date:after
19
20
  *
21
+ * @slot customer:before – **new in v1.27.0**
22
+ * @slot customer:after – **new in v1.27.0**
23
+ *
20
24
  * @slot logs:before
21
25
  * @slot logs:after
22
26
  *
@@ -35,7 +39,47 @@ const Base = TranslatableMixin(InternalForm, NS);
35
39
  export class GiftCardCodeForm extends Base {
36
40
  constructor() {
37
41
  super(...arguments);
42
+ /** Returns a `fx:customer` Resource URL for a Customer ID. */
43
+ this.getCustomerHref = id => {
44
+ return `https://api.foxycart.com/customers/${id}`;
45
+ };
38
46
  this.templates = {};
47
+ this.__customerGetValue = () => {
48
+ var _a, _b, _c;
49
+ const link = (_c = (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) === null || _b === void 0 ? void 0 : _b['fx:customer']) === null || _c === void 0 ? void 0 : _c.href;
50
+ const id = this.form.customer_id;
51
+ return id === undefined ? link : this.getCustomerHref(id);
52
+ };
53
+ this.__customerSetValue = (v) => {
54
+ const id = getResourceId(v);
55
+ this.edit({ customer_id: typeof id === 'number' ? id : '' });
56
+ };
57
+ this.__customerFilters = [
58
+ { type: Type.String, path: 'id', label: 'filters.id' },
59
+ { type: Type.String, path: 'tax_id', label: 'filters.tax_id' },
60
+ { type: Type.String, path: 'email', label: 'filters.email' },
61
+ { type: Type.String, path: 'first_name', label: 'filters.first_name' },
62
+ { type: Type.String, path: 'last_name', label: 'filters.last_name' },
63
+ {
64
+ type: Type.Boolean,
65
+ path: 'is_anonymous',
66
+ label: 'filters.is_anonymous',
67
+ list: [
68
+ { label: 'filters.is_anonymous_true', value: 'true' },
69
+ { label: 'filters.is_anonymous_false', value: 'false' },
70
+ ],
71
+ },
72
+ { type: Type.Date, path: 'last_login_date', label: 'filters.last_login_date' },
73
+ { type: Type.Date, path: 'date_created', label: 'filters.date_created' },
74
+ { type: Type.Date, path: 'date_modified', label: 'filters.date_modified' },
75
+ ];
76
+ this.__storeLoaderId = 'storeLoader';
77
+ }
78
+ static get properties() {
79
+ return {
80
+ ...super.properties,
81
+ getCustomerHref: { attribute: false },
82
+ };
39
83
  }
40
84
  static get v8n() {
41
85
  return [
@@ -48,29 +92,50 @@ export class GiftCardCodeForm extends Base {
48
92
  get hiddenSelector() {
49
93
  const alwaysMatch = [super.hiddenSelector.toString()];
50
94
  if (!this.href)
51
- alwaysMatch.push('cart-item', 'logs');
95
+ alwaysMatch.push('customer', 'cart-item', 'logs');
52
96
  return new BooleanSelector(alwaysMatch.join(' ').trim());
53
97
  }
54
98
  renderBody() {
55
- var _a, _b;
99
+ var _a, _b, _c, _d, _e;
56
100
  return html `
57
101
  <foxy-internal-text-control infer="code"></foxy-internal-text-control>
58
102
  <foxy-internal-number-control infer="current-balance"></foxy-internal-number-control>
59
103
  <foxy-internal-date-control infer="end-date"></foxy-internal-date-control>
60
104
 
105
+ <foxy-internal-resource-picker-control
106
+ infer="customer"
107
+ first=${ifDefined((_b = (_a = this.__storeLoader) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b._links['fx:customers'].href)}
108
+ item="foxy-customer-card"
109
+ .getValue=${this.__customerGetValue}
110
+ .setValue=${this.__customerSetValue}
111
+ .filters=${this.__customerFilters}
112
+ >
113
+ </foxy-internal-resource-picker-control>
114
+
61
115
  <foxy-internal-gift-card-code-form-item-control infer="cart-item">
62
116
  </foxy-internal-gift-card-code-form-item-control>
63
117
 
64
118
  <foxy-internal-async-list-control
65
119
  infer="logs"
66
- first=${ifDefined((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) === null || _b === void 0 ? void 0 : _b['fx:gift_card_code_logs'].href)}
120
+ first=${ifDefined((_d = (_c = this.data) === null || _c === void 0 ? void 0 : _c._links) === null || _d === void 0 ? void 0 : _d['fx:gift_card_code_logs'].href)}
67
121
  limit="5"
68
122
  item="foxy-gift-card-code-log-card"
69
123
  >
70
124
  </foxy-internal-async-list-control>
71
125
 
72
126
  ${super.renderBody()}
127
+
128
+ <foxy-nucleon
129
+ infer=""
130
+ href=${ifDefined((_e = this.data) === null || _e === void 0 ? void 0 : _e._links['fx:store'].href)}
131
+ id=${this.__storeLoaderId}
132
+ @update=${() => this.requestUpdate()}
133
+ >
134
+ </foxy-nucleon>
73
135
  `;
74
136
  }
137
+ get __storeLoader() {
138
+ return this.renderRoot.querySelector(`#${this.__storeLoaderId}`);
139
+ }
75
140
  }
76
141
  //# sourceMappingURL=GiftCardCodeForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GiftCardCodeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/GiftCardCodeForm.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,qBAAqB,CAAC;AACjC,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,gBAAiB,SAAQ,IAAU;IAAhD;;QAUE,cAAS,GAAc,EAAE,CAAC;IA4B5B,CAAC;IArCC,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB;YAC3C,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,mBAAmB;YAC5D,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,CAAC,GAAG,EAAC,IAAI,qBAAqB;YAC3D,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,8BAA8B;SACpF,CAAC;IACJ,CAAC;IAID,IAAI,cAAc;QAChB,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU;;QACR,OAAO,IAAI,CAAA;;;;;;;;;;gBAUC,SAAS,aAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,0CAAG,wBAAwB,EAAE,IAAI,CAAC;;;;;;QAMrE,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'gift-card-code-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating or editing gift card codes (`fx:gift_card_code`).\n *\n * @slot code:before\n * @slot code:after\n *\n * @slot current-balance:before\n * @slot current-balance:after\n *\n * @slot end-date:before\n * @slot end-date:after\n *\n * @slot logs:before\n * @slot logs:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-gift-card-code-form\n * @since 1.15.0\n */\nexport class GiftCardCodeForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ code: v }) => !!v || 'code:v8n_required',\n ({ code: v }) => !v || v.length <= 50 || 'code:v8n_too_long',\n ({ code: v }) => !v?.includes(' ') || 'code:v8n_has_spaces',\n ({ current_balance: v }) => typeof v === 'number' || 'current-balance:v8n_required',\n ];\n }\n\n templates: Templates = {};\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n if (!this.href) alwaysMatch.push('cart-item', 'logs');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-text-control infer=\"code\"></foxy-internal-text-control>\n <foxy-internal-number-control infer=\"current-balance\"></foxy-internal-number-control>\n <foxy-internal-date-control infer=\"end-date\"></foxy-internal-date-control>\n\n <foxy-internal-gift-card-code-form-item-control infer=\"cart-item\">\n </foxy-internal-gift-card-code-form-item-control>\n\n <foxy-internal-async-list-control\n infer=\"logs\"\n first=${ifDefined(this.data?._links?.['fx:gift_card_code_logs'].href)}\n limit=\"5\"\n item=\"foxy-gift-card-code-log-card\"\n >\n </foxy-internal-async-list-control>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"GiftCardCodeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/GiftCardCodeForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { BooleanSelector, getResourceId } from '@foxy.io/sdk/core';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { Option, Type } from '../QueryBuilder/types';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'gift-card-code-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating or editing gift card codes (`fx:gift_card_code`).\n *\n * @slot code:before\n * @slot code:after\n *\n * @slot current-balance:before\n * @slot current-balance:after\n *\n * @slot end-date:before\n * @slot end-date:after\n *\n * @slot customer:before – **new in v1.27.0**\n * @slot customer:after – **new in v1.27.0**\n *\n * @slot logs:before\n * @slot logs:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-gift-card-code-form\n * @since 1.15.0\n */\nexport class GiftCardCodeForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getCustomerHref: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ code: v }) => !!v || 'code:v8n_required',\n ({ code: v }) => !v || v.length <= 50 || 'code:v8n_too_long',\n ({ code: v }) => !v?.includes(' ') || 'code:v8n_has_spaces',\n ({ current_balance: v }) => typeof v === 'number' || 'current-balance:v8n_required',\n ];\n }\n\n /** Returns a `fx:customer` Resource URL for a Customer ID. */\n getCustomerHref: (id: number | string) => string = id => {\n return `https://api.foxycart.com/customers/${id}`;\n };\n\n templates: Templates = {};\n\n private readonly __customerGetValue = () => {\n const link = this.data?._links?.['fx:customer']?.href;\n const id = this.form.customer_id;\n return id === undefined ? link : this.getCustomerHref(id);\n };\n\n private readonly __customerSetValue = (v: string) => {\n const id = getResourceId(v);\n this.edit({ customer_id: typeof id === 'number' ? id : '' });\n };\n\n private readonly __customerFilters: Option[] = [\n { type: Type.String, path: 'id', label: 'filters.id' },\n { type: Type.String, path: 'tax_id', label: 'filters.tax_id' },\n { type: Type.String, path: 'email', label: 'filters.email' },\n { type: Type.String, path: 'first_name', label: 'filters.first_name' },\n { type: Type.String, path: 'last_name', label: 'filters.last_name' },\n {\n type: Type.Boolean,\n path: 'is_anonymous',\n label: 'filters.is_anonymous',\n list: [\n { label: 'filters.is_anonymous_true', value: 'true' },\n { label: 'filters.is_anonymous_false', value: 'false' },\n ],\n },\n { type: Type.Date, path: 'last_login_date', label: 'filters.last_login_date' },\n { type: Type.Date, path: 'date_created', label: 'filters.date_created' },\n { type: Type.Date, path: 'date_modified', label: 'filters.date_modified' },\n ];\n\n private readonly __storeLoaderId = 'storeLoader';\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n if (!this.href) alwaysMatch.push('customer', 'cart-item', 'logs');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-text-control infer=\"code\"></foxy-internal-text-control>\n <foxy-internal-number-control infer=\"current-balance\"></foxy-internal-number-control>\n <foxy-internal-date-control infer=\"end-date\"></foxy-internal-date-control>\n\n <foxy-internal-resource-picker-control\n infer=\"customer\"\n first=${ifDefined(this.__storeLoader?.data?._links['fx:customers'].href)}\n item=\"foxy-customer-card\"\n .getValue=${this.__customerGetValue}\n .setValue=${this.__customerSetValue}\n .filters=${this.__customerFilters}\n >\n </foxy-internal-resource-picker-control>\n\n <foxy-internal-gift-card-code-form-item-control infer=\"cart-item\">\n </foxy-internal-gift-card-code-form-item-control>\n\n <foxy-internal-async-list-control\n infer=\"logs\"\n first=${ifDefined(this.data?._links?.['fx:gift_card_code_logs'].href)}\n limit=\"5\"\n item=\"foxy-gift-card-code-log-card\"\n >\n </foxy-internal-async-list-control>\n\n ${super.renderBody()}\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n}\n"]}
@@ -1,9 +1,11 @@
1
+ import '../../internal/InternalResourcePickerControl/index';
1
2
  import '../../internal/InternalAsyncListControl/index';
2
3
  import '../../internal/InternalNumberControl/index';
3
4
  import '../../internal/InternalDateControl/index';
4
5
  import '../../internal/InternalTextControl/index';
5
6
  import '../../internal/InternalForm/index';
6
7
  import '../GiftCardCodeLogCard/index';
8
+ import '../CustomerCard/index';
7
9
  import './internal/InternalGiftCardCodeFormItemControl/index';
8
10
  import { GiftCardCodeForm } from './GiftCardCodeForm';
9
11
  export { GiftCardCodeForm };
@@ -1,9 +1,11 @@
1
+ import "../../internal/InternalResourcePickerControl/index.js";
1
2
  import "../../internal/InternalAsyncListControl/index.js";
2
3
  import "../../internal/InternalNumberControl/index.js";
3
4
  import "../../internal/InternalDateControl/index.js";
4
5
  import "../../internal/InternalTextControl/index.js";
5
6
  import "../../internal/InternalForm/index.js";
6
7
  import "../GiftCardCodeLogCard/index.js";
8
+ import "../CustomerCard/index.js";
7
9
  import "./internal/InternalGiftCardCodeFormItemControl/index.js";
8
10
  import { GiftCardCodeForm } from "./GiftCardCodeForm.js";
9
11
  customElements.define('foxy-gift-card-code-form', GiftCardCodeForm);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/index.ts"],"names":[],"mappings":"AAAA,0DAAuD;AACvD,uDAAoD;AACpD,qDAAkD;AAClD,qDAAkD;AAClD,8CAA2C;AAC3C,yCAAsC;AACtC,iEAA8D;AAE9D,OAAO,EAAE,gBAAgB,EAAE,8BAA2B;AAEtD,cAAc,CAAC,MAAM,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import '../../internal/InternalAsyncListControl/index';\nimport '../../internal/InternalNumberControl/index';\nimport '../../internal/InternalDateControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\nimport '../GiftCardCodeLogCard/index';\nimport './internal/InternalGiftCardCodeFormItemControl/index';\n\nimport { GiftCardCodeForm } from './GiftCardCodeForm';\n\ncustomElements.define('foxy-gift-card-code-form', GiftCardCodeForm);\n\nexport { GiftCardCodeForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/index.ts"],"names":[],"mappings":"AAAA,+DAA4D;AAC5D,0DAAuD;AACvD,uDAAoD;AACpD,qDAAkD;AAClD,qDAAkD;AAClD,8CAA2C;AAE3C,yCAAsC;AACtC,kCAA+B;AAE/B,iEAA8D;AAE9D,OAAO,EAAE,gBAAgB,EAAE,8BAA2B;AAEtD,cAAc,CAAC,MAAM,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import '../../internal/InternalResourcePickerControl/index';\nimport '../../internal/InternalAsyncListControl/index';\nimport '../../internal/InternalNumberControl/index';\nimport '../../internal/InternalDateControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport '../GiftCardCodeLogCard/index';\nimport '../CustomerCard/index';\n\nimport './internal/InternalGiftCardCodeFormItemControl/index';\n\nimport { GiftCardCodeForm } from './GiftCardCodeForm';\n\ncustomElements.define('foxy-gift-card-code-form', GiftCardCodeForm);\n\nexport { GiftCardCodeForm };\n"]}