@foxy.io/elements 1.18.0-beta.18 → 1.18.0-beta.19

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 (315) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-admin-subscription-card.js +1 -0
  5. package/dist/cdn/foxy-api-browser.js +1 -1
  6. package/dist/cdn/foxy-applied-coupon-code-card.js +1 -0
  7. package/dist/cdn/foxy-applied-coupon-code-form.js +1 -0
  8. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  9. package/dist/cdn/foxy-attribute-card.js +1 -1
  10. package/dist/cdn/foxy-attribute-form.js +1 -1
  11. package/dist/cdn/foxy-cancellation-form.js +1 -1
  12. package/dist/cdn/foxy-cart-card.js +1 -0
  13. package/dist/cdn/foxy-cart-form.js +1 -0
  14. package/dist/cdn/foxy-collection-page.js +1 -1
  15. package/dist/cdn/foxy-collection-pages.js +1 -1
  16. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  17. package/dist/cdn/foxy-coupon-card.js +1 -1
  18. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  19. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  20. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  21. package/dist/cdn/foxy-coupon-form.js +1 -1
  22. package/dist/cdn/foxy-custom-field-card.js +1 -1
  23. package/dist/cdn/foxy-custom-field-form.js +1 -1
  24. package/dist/cdn/foxy-customer-api.js +1 -1
  25. package/dist/cdn/foxy-customer-card.js +1 -1
  26. package/dist/cdn/foxy-customer-form.js +1 -1
  27. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  28. package/dist/cdn/foxy-customer-portal.js +3 -2
  29. package/dist/cdn/foxy-customer.js +1 -1
  30. package/dist/cdn/foxy-customers-table.js +1 -1
  31. package/dist/cdn/foxy-discount-builder.js +1 -1
  32. package/dist/cdn/foxy-discount-card.js +1 -1
  33. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  34. package/dist/cdn/foxy-donation.js +1 -1
  35. package/dist/cdn/foxy-email-template-card.js +1 -1
  36. package/dist/cdn/foxy-email-template-form.js +1 -1
  37. package/dist/cdn/foxy-error-entry-card.js +1 -1
  38. package/dist/cdn/foxy-form-dialog.js +1 -1
  39. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  40. package/dist/cdn/foxy-gift-card-card.js +1 -1
  41. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  42. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  43. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  44. package/dist/cdn/foxy-gift-card-form.js +1 -1
  45. package/dist/cdn/foxy-i18n-editor.js +2 -2
  46. package/dist/cdn/foxy-i18n.js +1 -1
  47. package/dist/cdn/foxy-integration-card.js +1 -1
  48. package/dist/cdn/foxy-integration-form.js +1 -1
  49. package/dist/cdn/foxy-item-card.js +1 -1
  50. package/dist/cdn/foxy-item-category-card.js +1 -1
  51. package/dist/cdn/foxy-item-category-form.js +1 -1
  52. package/dist/cdn/foxy-item-form.js +1 -1
  53. package/dist/cdn/foxy-item-option-card.js +1 -1
  54. package/dist/cdn/foxy-item-option-form.js +1 -1
  55. package/dist/cdn/foxy-items-form.js +1 -1
  56. package/dist/cdn/foxy-nucleon-element.js +1 -1
  57. package/dist/cdn/foxy-pagination.js +1 -1
  58. package/dist/cdn/foxy-payment-card.js +1 -1
  59. package/dist/cdn/foxy-payment-method-card.js +1 -1
  60. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  61. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  62. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  63. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  64. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  65. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  66. package/dist/cdn/foxy-payments-api.js +1 -1
  67. package/dist/cdn/foxy-query-builder.js +1 -1
  68. package/dist/cdn/foxy-report-form.js +1 -1
  69. package/dist/cdn/foxy-reports-table.js +1 -1
  70. package/dist/cdn/foxy-shipment-card.js +1 -1
  71. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  72. package/dist/cdn/foxy-sign-in-form.js +1 -1
  73. package/dist/cdn/foxy-spinner.js +2 -2
  74. package/dist/cdn/foxy-store-form.js +1 -1
  75. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  76. package/dist/cdn/foxy-subscription-card.js +1 -1
  77. package/dist/cdn/foxy-subscription-form.js +4 -16
  78. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  79. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  80. package/dist/cdn/foxy-table.js +1 -1
  81. package/dist/cdn/foxy-tax-card.js +1 -1
  82. package/dist/cdn/foxy-tax-form.js +1 -1
  83. package/dist/cdn/foxy-template-card.js +1 -1
  84. package/dist/cdn/foxy-template-config-form.js +1 -1
  85. package/dist/cdn/foxy-template-form.js +1 -1
  86. package/dist/cdn/foxy-template-set-card.js +1 -1
  87. package/dist/cdn/foxy-template-set-form.js +1 -1
  88. package/dist/cdn/foxy-transaction-card.js +1 -1
  89. package/dist/cdn/foxy-transaction.js +1 -1
  90. package/dist/cdn/foxy-transactions-table.js +60 -1
  91. package/dist/cdn/foxy-user-form.js +1 -1
  92. package/dist/cdn/foxy-users-table.js +1 -1
  93. package/dist/cdn/foxy-webhook-card.js +1 -1
  94. package/dist/cdn/foxy-webhook-form.js +1 -1
  95. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  96. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  97. package/dist/cdn/{shared-29e21467.js → shared-00752056.js} +1 -1
  98. package/dist/cdn/{shared-56d26968.js → shared-01d2cae6.js} +1 -1
  99. package/dist/cdn/{shared-d5f242df.js → shared-09c75a01.js} +1 -1
  100. package/dist/cdn/shared-09eb558f.js +1 -0
  101. package/dist/cdn/{shared-236d9b7e.js → shared-0a52b08c.js} +1 -1
  102. package/dist/cdn/{shared-55e20d5b.js → shared-0b17e9a6.js} +1 -1
  103. package/dist/cdn/{shared-f022673a.js → shared-124a17c1.js} +1 -1
  104. package/dist/cdn/{shared-344485cf.js → shared-15effede.js} +5 -5
  105. package/dist/cdn/{shared-196fa627.js → shared-17cb43f3.js} +2 -2
  106. package/dist/cdn/shared-181f51bd.js +1 -0
  107. package/dist/cdn/{shared-262caea4.js → shared-1936d1d5.js} +1 -1
  108. package/dist/cdn/{shared-f2d19582.js → shared-1e9fd9f1.js} +1 -1
  109. package/dist/cdn/{shared-c52d3772.js → shared-2470973b.js} +1 -1
  110. package/dist/cdn/{shared-923da875.js → shared-254ef6a4.js} +1 -1
  111. package/dist/cdn/shared-2afc2d3b.js +1 -0
  112. package/dist/cdn/{shared-0672e78b.js → shared-2bce9f91.js} +1 -1
  113. package/dist/cdn/{shared-b5cbbdd8.js → shared-2c067e88.js} +1 -1
  114. package/dist/cdn/{shared-dcbf57e0.js → shared-2f7dcefa.js} +1 -1
  115. package/dist/cdn/{shared-4975f86f.js → shared-37d6c723.js} +1 -1
  116. package/dist/cdn/{shared-3a3878c9.js → shared-39549b4e.js} +1 -1
  117. package/dist/cdn/{shared-f23d122e.js → shared-3aecf4e3.js} +1 -1
  118. package/dist/cdn/{shared-17d24760.js → shared-3ba49bac.js} +1 -1
  119. package/dist/cdn/shared-436f4187.js +1 -0
  120. package/dist/cdn/{shared-5ad8c9a0.js → shared-43bcce74.js} +1 -1
  121. package/dist/cdn/{shared-34b11d34.js → shared-4c32f1ad.js} +1 -1
  122. package/dist/cdn/{shared-ea316e64.js → shared-4cf568d8.js} +1 -1
  123. package/dist/cdn/{shared-2215e6c8.js → shared-50f97405.js} +1 -1
  124. package/dist/cdn/{shared-4308cdab.js → shared-54c5d16b.js} +1 -1
  125. package/dist/cdn/{shared-ff2f84c7.js → shared-63139d9e.js} +1 -1
  126. package/dist/cdn/{shared-ef0fc329.js → shared-6a53f85f.js} +1 -1
  127. package/dist/cdn/{shared-002b788f.js → shared-76b3d76a.js} +1 -1
  128. package/dist/cdn/shared-7a1de87a.js +1 -0
  129. package/dist/cdn/shared-7b6f4a11.js +1 -0
  130. package/dist/cdn/{shared-8a5bdad3.js → shared-7cc9cc71.js} +1 -1
  131. package/dist/cdn/{shared-162fc285.js → shared-7df6ee40.js} +1 -1
  132. package/dist/cdn/shared-7e2ea44c.js +1 -0
  133. package/dist/cdn/{shared-bb522838.js → shared-7ed14dc8.js} +1 -1
  134. package/dist/cdn/shared-839dd3a8.js +1 -0
  135. package/dist/cdn/{shared-da6cc488.js → shared-862b436d.js} +1 -1
  136. package/dist/cdn/{shared-b0a6d48f.js → shared-873b14d1.js} +1 -1
  137. package/dist/cdn/{shared-5b55627c.js → shared-875748d8.js} +1 -1
  138. package/dist/cdn/{shared-2d3027f4.js → shared-8b6addec.js} +1 -1
  139. package/dist/cdn/{shared-07fb5be2.js → shared-90b8ef49.js} +1 -1
  140. package/dist/cdn/{shared-b7f7f15f.js → shared-9923f00e.js} +1 -1
  141. package/dist/cdn/{shared-b28dbc68.js → shared-9c3934c8.js} +1 -1
  142. package/dist/cdn/{shared-6b8874a7.js → shared-9cba1b0e.js} +1 -1
  143. package/dist/cdn/{shared-aebbceea.js → shared-a2e9009b.js} +1 -1
  144. package/dist/cdn/{shared-d43fc5cc.js → shared-a696c602.js} +1 -1
  145. package/dist/cdn/shared-a85afa33.js +1 -0
  146. package/dist/cdn/{shared-e396ec04.js → shared-ab687b1e.js} +1 -1
  147. package/dist/cdn/{shared-c484320b.js → shared-aef0c294.js} +1 -1
  148. package/dist/cdn/shared-b51997d1.js +1 -0
  149. package/dist/cdn/{shared-8a5e01ae.js → shared-b90ddfc1.js} +1 -1
  150. package/dist/cdn/shared-bcc6e13b.js +1 -0
  151. package/dist/cdn/{shared-b8e9b536.js → shared-bfc37e75.js} +1 -1
  152. package/dist/cdn/{shared-6d2064e9.js → shared-c434e6d6.js} +3 -3
  153. package/dist/cdn/{shared-ce1ae7e1.js → shared-cce2fc5a.js} +1 -1
  154. package/dist/cdn/{shared-1f0841ec.js → shared-cd6381a5.js} +1 -1
  155. package/dist/cdn/{shared-a86761d3.js → shared-cef7c63d.js} +2 -2
  156. package/dist/cdn/{shared-7b167fe9.js → shared-cfae0154.js} +1 -1
  157. package/dist/cdn/{shared-98652709.js → shared-d34586cb.js} +1 -1
  158. package/dist/cdn/shared-d4f80692.js +1 -0
  159. package/dist/cdn/{shared-2c842660.js → shared-d7e653ae.js} +1 -1
  160. package/dist/cdn/shared-d8b07f4f.js +1 -0
  161. package/dist/cdn/{shared-85f9051e.js → shared-db61a5e8.js} +1 -1
  162. package/dist/cdn/{shared-b0ff4590.js → shared-ddf10c04.js} +1 -1
  163. package/dist/cdn/{shared-d302ad2c.js → shared-ea67b3f3.js} +1 -1
  164. package/dist/cdn/translations/admin-subscription-card/en.json +27 -0
  165. package/dist/cdn/translations/applied-coupon-code-card/en.json +7 -0
  166. package/dist/cdn/translations/applied-coupon-code-form/en.json +26 -0
  167. package/dist/cdn/translations/cart-card/en.json +15 -0
  168. package/dist/cdn/translations/cart-form/en.json +762 -0
  169. package/dist/cdn/translations/coupon-card/en.json +2 -2
  170. package/dist/cdn/translations/customer-portal/en.json +9 -9
  171. package/dist/cdn/translations/subscription-form/en.json +116 -21
  172. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.d.ts +2 -0
  173. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js +4 -0
  174. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js.map +1 -1
  175. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +3 -3
  176. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +12 -10
  177. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  178. package/dist/elements/internal/InternalAsyncListControl/index.d.ts +1 -1
  179. package/dist/elements/internal/InternalAsyncListControl/index.js +1 -1
  180. package/dist/elements/internal/InternalAsyncListControl/index.js.map +1 -1
  181. package/dist/elements/internal/InternalCard/InternalCard.d.ts +1 -0
  182. package/dist/elements/internal/InternalCard/InternalCard.js +12 -4
  183. package/dist/elements/internal/InternalCard/InternalCard.js.map +1 -1
  184. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js +2 -1
  185. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js.map +1 -1
  186. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.d.ts +6 -1
  187. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +21 -0
  188. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -1
  189. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.d.ts +1 -0
  190. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js +6 -0
  191. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js.map +1 -1
  192. package/dist/elements/private/Dialog/Dialog.js +1 -0
  193. package/dist/elements/private/Dialog/Dialog.js.map +1 -1
  194. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.d.ts +40 -0
  195. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js +304 -0
  196. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js.map +1 -0
  197. package/dist/elements/public/AdminSubscriptionCard/index.d.ts +4 -0
  198. package/dist/elements/public/AdminSubscriptionCard/index.js +6 -0
  199. package/dist/elements/public/AdminSubscriptionCard/index.js.map +1 -0
  200. package/dist/elements/public/AdminSubscriptionCard/types.d.ts +9 -0
  201. package/dist/elements/public/AdminSubscriptionCard/types.js +2 -0
  202. package/dist/elements/public/AdminSubscriptionCard/types.js.map +1 -0
  203. package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.d.ts +11 -0
  204. package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js +33 -0
  205. package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js.map +1 -0
  206. package/dist/elements/public/AppliedCouponCodeCard/index.d.ts +4 -0
  207. package/dist/elements/public/AppliedCouponCodeCard/index.js +6 -0
  208. package/dist/elements/public/AppliedCouponCodeCard/index.js.map +1 -0
  209. package/dist/elements/public/AppliedCouponCodeCard/types.d.ts +3 -0
  210. package/dist/elements/public/AppliedCouponCodeCard/types.js +2 -0
  211. package/dist/elements/public/AppliedCouponCodeCard/types.js.map +1 -0
  212. package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.d.ts +18 -0
  213. package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js +54 -0
  214. package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js.map +1 -0
  215. package/dist/elements/public/AppliedCouponCodeForm/index.d.ts +5 -0
  216. package/dist/elements/public/AppliedCouponCodeForm/index.js +7 -0
  217. package/dist/elements/public/AppliedCouponCodeForm/index.js.map +1 -0
  218. package/dist/elements/public/AppliedCouponCodeForm/types.d.ts +5 -0
  219. package/dist/elements/public/AppliedCouponCodeForm/types.js +2 -0
  220. package/dist/elements/public/AppliedCouponCodeForm/types.js.map +1 -0
  221. package/dist/elements/public/AttributeCard/AttributeCard.js +5 -4
  222. package/dist/elements/public/AttributeCard/AttributeCard.js.map +1 -1
  223. package/dist/elements/public/CartCard/CartCard.d.ts +42 -0
  224. package/dist/elements/public/CartCard/CartCard.js +264 -0
  225. package/dist/elements/public/CartCard/CartCard.js.map +1 -0
  226. package/dist/elements/public/CartCard/index.d.ts +5 -0
  227. package/dist/elements/public/CartCard/index.js +7 -0
  228. package/dist/elements/public/CartCard/index.js.map +1 -0
  229. package/dist/elements/public/CartCard/types.d.ts +5 -0
  230. package/dist/elements/public/CartCard/types.js +2 -0
  231. package/dist/elements/public/CartCard/types.js.map +1 -0
  232. package/dist/elements/public/CartForm/CartForm.d.ts +59 -0
  233. package/dist/elements/public/CartForm/CartForm.js +603 -0
  234. package/dist/elements/public/CartForm/CartForm.js.map +1 -0
  235. package/dist/elements/public/CartForm/index.d.ts +19 -0
  236. package/dist/elements/public/CartForm/index.js +21 -0
  237. package/dist/elements/public/CartForm/index.js.map +1 -0
  238. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.d.ts +10 -0
  239. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js +83 -0
  240. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js.map +1 -0
  241. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.d.ts +4 -0
  242. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js +6 -0
  243. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js.map +1 -0
  244. package/dist/elements/public/CartForm/types.d.ts +3 -0
  245. package/dist/elements/public/CartForm/types.js +2 -0
  246. package/dist/elements/public/CartForm/types.js.map +1 -0
  247. package/dist/elements/public/CollectionPage/CollectionPage.js +11 -8
  248. package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
  249. package/dist/elements/public/CustomFieldCard/TwoLineCard.js +5 -4
  250. package/dist/elements/public/CustomFieldCard/TwoLineCard.js.map +1 -1
  251. package/dist/elements/public/CustomerCard/CustomerCard.js +1 -1
  252. package/dist/elements/public/CustomerCard/CustomerCard.js.map +1 -1
  253. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +3 -1
  254. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
  255. package/dist/elements/public/DiscountCard/DiscountCard.js +2 -1
  256. package/dist/elements/public/DiscountCard/DiscountCard.js.map +1 -1
  257. package/dist/elements/public/GiftCardCard/GiftCardCard.js +2 -2
  258. package/dist/elements/public/GiftCardCard/GiftCardCard.js.map +1 -1
  259. package/dist/elements/public/IntegrationCard/IntegrationCard.js +2 -2
  260. package/dist/elements/public/IntegrationCard/IntegrationCard.js.map +1 -1
  261. package/dist/elements/public/ItemCard/ItemCard.d.ts +26 -4
  262. package/dist/elements/public/ItemCard/ItemCard.js +216 -27
  263. package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
  264. package/dist/elements/public/ItemCard/index.d.ts +1 -0
  265. package/dist/elements/public/ItemCard/index.js +1 -0
  266. package/dist/elements/public/ItemCard/index.js.map +1 -1
  267. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.d.ts +3 -1
  268. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js +4 -3
  269. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js.map +1 -1
  270. package/dist/elements/public/ItemForm/ItemForm.d.ts +3 -0
  271. package/dist/elements/public/ItemForm/ItemForm.js +58 -8
  272. package/dist/elements/public/ItemForm/ItemForm.js.map +1 -1
  273. package/dist/elements/public/ItemOptionCard/ItemOptionCard.d.ts +25 -5
  274. package/dist/elements/public/ItemOptionCard/ItemOptionCard.js +200 -17
  275. package/dist/elements/public/ItemOptionCard/ItemOptionCard.js.map +1 -1
  276. package/dist/elements/public/ItemOptionCard/index.d.ts +1 -0
  277. package/dist/elements/public/ItemOptionCard/index.js +1 -0
  278. package/dist/elements/public/ItemOptionCard/index.js.map +1 -1
  279. package/dist/elements/public/NucleonElement/NucleonElement.js +25 -14
  280. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  281. package/dist/elements/public/Pagination/Pagination.js +2 -2
  282. package/dist/elements/public/Pagination/Pagination.js.map +1 -1
  283. package/dist/elements/public/StoreForm/StoreForm.js +1 -1
  284. package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
  285. package/dist/elements/public/SubscriptionForm/SubscriptionForm.d.ts +46 -14
  286. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +300 -156
  287. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
  288. package/dist/elements/public/SubscriptionForm/index.d.ts +9 -4
  289. package/dist/elements/public/SubscriptionForm/index.js +9 -4
  290. package/dist/elements/public/SubscriptionForm/index.js.map +1 -1
  291. package/dist/elements/public/SubscriptionForm/types.d.ts +2 -5
  292. package/dist/elements/public/SubscriptionForm/types.js.map +1 -1
  293. package/dist/elements/public/TransactionCard/TransactionCard.js +1 -1
  294. package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
  295. package/dist/elements/public/index.d.ts +5 -0
  296. package/dist/elements/public/index.defined.d.ts +5 -0
  297. package/dist/elements/public/index.defined.js +5 -0
  298. package/dist/elements/public/index.defined.js.map +1 -1
  299. package/dist/elements/public/index.js +5 -0
  300. package/dist/elements/public/index.js.map +1 -1
  301. package/dist/mixins/themeable.js +29 -8
  302. package/dist/mixins/themeable.js.map +1 -1
  303. package/package.json +1 -1
  304. package/dist/cdn/shared-1b3e1a0d.js +0 -1
  305. package/dist/cdn/shared-210387cb.js +0 -1
  306. package/dist/cdn/shared-222fe491.js +0 -1
  307. package/dist/cdn/shared-515f00b1.js +0 -1
  308. package/dist/cdn/shared-5643d0ed.js +0 -1
  309. package/dist/cdn/shared-62c8cfa2.js +0 -60
  310. package/dist/cdn/shared-6b622399.js +0 -1
  311. package/dist/cdn/shared-92926b1d.js +0 -1
  312. package/dist/cdn/shared-b7219771.js +0 -1
  313. package/dist/cdn/shared-dc798bf4.js +0 -1
  314. package/dist/cdn/shared-e08bcb6c.js +0 -1
  315. package/dist/cdn/shared-fdac2851.js +0 -1
@@ -52,10 +52,13 @@ export declare class ItemForm extends ItemForm_base<Data> {
52
52
  customerAddresses: string | null;
53
53
  /** Link to the collection of item categories that can be used with this item. */
54
54
  itemCategories: string | null;
55
+ /** Link to the `fx:locale_codes` property helper for currency formatting. */
56
+ localeCodes: string | null;
55
57
  /** Link to the collection of coupons that can be used with this item. */
56
58
  coupons: string | null;
57
59
  private __itemsLink;
58
60
  renderBody(): TemplateResult;
59
61
  protected _sendGet(): Promise<Data>;
62
+ private get __itemOptionRelatedUrls();
60
63
  }
61
64
  export {};
@@ -1,5 +1,6 @@
1
1
  import { TranslatableMixin } from "../../../mixins/translatable.js";
2
2
  import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
3
+ import { ifDefined } from 'lit-html/directives/if-defined';
3
4
  import { html } from 'lit-html';
4
5
  /**
5
6
  * Form element for creating or editing items (`fx:item`).
@@ -47,6 +48,8 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
47
48
  this.customerAddresses = null;
48
49
  /** Link to the collection of item categories that can be used with this item. */
49
50
  this.itemCategories = null;
51
+ /** Link to the `fx:locale_codes` property helper for currency formatting. */
52
+ this.localeCodes = null;
50
53
  /** Link to the collection of coupons that can be used with this item. */
51
54
  this.coupons = null;
52
55
  this.__itemsLink = '';
@@ -56,6 +59,7 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
56
59
  ...super.properties,
57
60
  customerAddresses: { type: String, attribute: 'customer-addresses' },
58
61
  itemCategories: { type: String, attribute: 'item-categories' },
62
+ localeCodes: { attribute: 'locale-codes' },
59
63
  coupons: { type: String },
60
64
  };
61
65
  }
@@ -69,6 +73,20 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
69
73
  ];
70
74
  }
71
75
  renderBody() {
76
+ const renderItemOptionCard = ctx => {
77
+ var _a;
78
+ return html `
79
+ <foxy-item-option-card
80
+ locale-codes=${ifDefined((_a = this.localeCodes) !== null && _a !== void 0 ? _a : void 0)}
81
+ parent=${ctx.parent}
82
+ class="p-m"
83
+ infer=""
84
+ href=${ctx.href}
85
+ .related=${ctx.related}
86
+ >
87
+ </foxy-item-option-card>
88
+ `;
89
+ };
72
90
  return html `
73
91
  <foxy-internal-text-control infer="name"></foxy-internal-text-control>
74
92
 
@@ -114,13 +132,9 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
114
132
  infer="item-options"
115
133
  first=${this.data._links['fx:item_options'].href}
116
134
  limit="5"
117
- item="foxy-item-option-card"
118
135
  form="foxy-item-option-form"
119
- .related=${[
120
- this.data._links['fx:transaction'].href,
121
- this.data._links['fx:shipment'].href,
122
- this.__itemsLink,
123
- ]}
136
+ .item=${renderItemOptionCard}
137
+ .related=${this.__itemOptionRelatedUrls}
124
138
  >
125
139
  </foxy-internal-async-details-control>
126
140
  `
@@ -130,9 +144,45 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
130
144
  }
131
145
  async _sendGet() {
132
146
  const item = await super._sendGet();
133
- const transaction = await super._fetch(item._links['fx:transaction'].href);
134
- this.__itemsLink = transaction._links['fx:items'].href;
147
+ if ('fx:subscription' in item._links) {
148
+ // TODO: remove the directive below once SDK is updated
149
+ // @ts-expect-error SDK types are incomplete
150
+ const subscriptionHref = item._links['fx:subscription'].href;
151
+ const subscription = await super._fetch(subscriptionHref);
152
+ const transactionTemplateHref = subscription._links['fx:transaction_template'].href;
153
+ const transactionTemplate = await super._fetch(transactionTemplateHref);
154
+ this.__itemsLink = transactionTemplate._links['fx:items'].href;
155
+ return item;
156
+ }
157
+ if ('fx:transaction' in item._links) {
158
+ const transaction = await super._fetch(item._links['fx:transaction'].href);
159
+ this.__itemsLink = transaction._links['fx:items'].href;
160
+ return item;
161
+ }
162
+ if ('fx:cart' in item._links) {
163
+ // TODO: remove the directive below once SDK is updated
164
+ // @ts-expect-error SDK types are incomplete
165
+ const cart = await super._fetch(item._links['fx:cart'].href);
166
+ this.__itemsLink = cart._links['fx:items'].href;
167
+ return item;
168
+ }
135
169
  return item;
136
170
  }
171
+ get __itemOptionRelatedUrls() {
172
+ var _a, _b;
173
+ const links = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
174
+ const urls = [];
175
+ if (links['fx:subscription'])
176
+ urls.push(links['fx:subscription'].href);
177
+ if (links['fx:transaction'])
178
+ urls.push(links['fx:transaction'].href);
179
+ if (links['fx:shipment'])
180
+ urls.push(links['fx:shipment'].href);
181
+ if (links['fx:cart'])
182
+ urls.push(links['fx:cart'].href);
183
+ if (this.__itemsLink)
184
+ urls.push(this.__itemsLink);
185
+ return urls;
186
+ }
137
187
  }
138
188
  //# sourceMappingURL=ItemForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ItemForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemForm/ItemForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAIhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,OAAO,QAAS,SAAQ,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAO;IAAhF;;QAoBE,oFAAoF;QACpF,sBAAiB,GAAkB,IAAI,CAAC;QAExC,iFAAiF;QACjF,mBAAc,GAAkB,IAAI,CAAC;QAErC,yEAAyE;QACzE,YAAO,GAAkB,IAAI,CAAC;QAEtB,gBAAW,GAAG,EAAE,CAAC;IAyE3B,CAAC;IArGC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE;YACpE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE;YAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC1B,CAAC;IACJ,CAAC;IAED,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,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,mBAAmB;YAChE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB;YAC9E,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,oBAAoB;YAC3E,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,4BAA4B;SACvF,CAAC;IACJ,CAAC;IAaD,UAAU;QACR,OAAO,IAAI,CAAA;;;;;;;;;;;;;;QAcP,IAAI,CAAC,IAAI;YACT,CAAC,CAAC,IAAI,CAAA;;;sBAGQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI;;;;;;;;sBAQ5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI;;;;;;;;sBAQ1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI;;;;;;;;;sBAStC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI;;;;yBAIrC;gBACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI;gBACpC,IAAI,CAAC,WAAW;aACjB;;;WAGJ;YACH,CAAC,CAAC,EAAE;QACJ,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,QAAQ;QAGtB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;QAExF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { Rels } from '@foxy.io/sdk/backend';\n\n/**\n * Form element for creating or editing items (`fx:item`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot price:before\n * @slot price:after\n *\n * @slot quantity:before\n * @slot quantity:after\n *\n * @slot subscription:before\n * @slot subscription:after\n *\n * @slot line-item-discount:before\n * @slot line-item-discount:after\n *\n * @slot cart:before\n * @slot cart:after\n *\n * @slot shipping:before\n * @slot shipping:after\n *\n * @slot inventory:before\n * @slot inventory: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-item-form\n * @since 1.17.0\n */\nexport class ItemForm extends TranslatableMixin(InternalForm, 'item-form')<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n customerAddresses: { type: String, attribute: 'customer-addresses' },\n itemCategories: { type: String, attribute: 'item-categories' },\n coupons: { type: String },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => (!!v && v.length <= 255) || 'name:v8n_too_long',\n ({ price: v }) => (typeof v === 'number' && !isNaN(v)) || 'price:v8n_required',\n ({ price: v }) => (typeof v === 'number' && v >= 0) || 'price:v8n_negative',\n ({ quantity: v }) => (typeof v === 'number' && v >= 1) || 'quantity:v8n_less_than_one',\n ];\n }\n\n /** Link to the collection of customer addresses that can be used with this item. */\n customerAddresses: string | null = null;\n\n /** Link to the collection of item categories that can be used with this item. */\n itemCategories: string | null = null;\n\n /** Link to the collection of coupons that can be used with this item. */\n coupons: string | null = null;\n\n private __itemsLink = '';\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-text-control infer=\"name\"></foxy-internal-text-control>\n\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-number-control infer=\"price\"></foxy-internal-number-control>\n <foxy-internal-integer-control infer=\"quantity\"></foxy-internal-integer-control>\n </div>\n\n <foxy-internal-item-form-subscription-control></foxy-internal-item-form-subscription-control>\n <foxy-internal-item-form-line-item-discount-control></foxy-internal-item-form-line-item-discount-control>\n <foxy-internal-item-form-cart-control></foxy-internal-item-form-cart-control>\n <foxy-internal-item-form-shipping-control></foxy-internal-item-form-shipping-control>\n <foxy-internal-item-form-inventory-control></foxy-internal-item-form-inventory-control>\n\n ${this.data\n ? html`\n <foxy-internal-async-details-control\n infer=\"discount-details\"\n first=${this.data._links['fx:discount_details'].href}\n limit=\"5\"\n item=\"foxy-discount-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"coupon-details\"\n first=${this.data._links['fx:coupon_details'].href}\n limit=\"5\"\n item=\"foxy-coupon-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"attributes\"\n first=${this.data._links['fx:attributes'].href}\n limit=\"5\"\n item=\"foxy-attribute-card\"\n form=\"foxy-attribute-form\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"item-options\"\n first=${this.data._links['fx:item_options'].href}\n limit=\"5\"\n item=\"foxy-item-option-card\"\n form=\"foxy-item-option-form\"\n .related=${[\n this.data._links['fx:transaction'].href,\n this.data._links['fx:shipment'].href,\n this.__itemsLink,\n ]}\n >\n </foxy-internal-async-details-control>\n `\n : ''}\n ${super.renderBody()}\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Transaction = Resource<Rels.Transaction>;\n\n const item = await super._sendGet();\n const transaction = await super._fetch<Transaction>(item._links['fx:transaction'].href);\n\n this.__itemsLink = transaction._links['fx:items'].href;\n\n return item;\n }\n}\n"]}
1
+ {"version":3,"file":"ItemForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemForm/ItemForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { ItemRenderer } from '../CollectionPage/types';\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 { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\n/**\n * Form element for creating or editing items (`fx:item`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot price:before\n * @slot price:after\n *\n * @slot quantity:before\n * @slot quantity:after\n *\n * @slot subscription:before\n * @slot subscription:after\n *\n * @slot line-item-discount:before\n * @slot line-item-discount:after\n *\n * @slot cart:before\n * @slot cart:after\n *\n * @slot shipping:before\n * @slot shipping:after\n *\n * @slot inventory:before\n * @slot inventory: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-item-form\n * @since 1.17.0\n */\nexport class ItemForm extends TranslatableMixin(InternalForm, 'item-form')<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n customerAddresses: { type: String, attribute: 'customer-addresses' },\n itemCategories: { type: String, attribute: 'item-categories' },\n localeCodes: { attribute: 'locale-codes' },\n coupons: { type: String },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => (!!v && v.length <= 255) || 'name:v8n_too_long',\n ({ price: v }) => (typeof v === 'number' && !isNaN(v)) || 'price:v8n_required',\n ({ price: v }) => (typeof v === 'number' && v >= 0) || 'price:v8n_negative',\n ({ quantity: v }) => (typeof v === 'number' && v >= 1) || 'quantity:v8n_less_than_one',\n ];\n }\n\n /** Link to the collection of customer addresses that can be used with this item. */\n customerAddresses: string | null = null;\n\n /** Link to the collection of item categories that can be used with this item. */\n itemCategories: string | null = null;\n\n /** Link to the `fx:locale_codes` property helper for currency formatting. */\n localeCodes: string | null = null;\n\n /** Link to the collection of coupons that can be used with this item. */\n coupons: string | null = null;\n\n private __itemsLink = '';\n\n renderBody(): TemplateResult {\n const renderItemOptionCard: ItemRenderer = ctx => html`\n <foxy-item-option-card\n locale-codes=${ifDefined(this.localeCodes ?? void 0)}\n parent=${ctx.parent}\n class=\"p-m\"\n infer=\"\"\n href=${ctx.href}\n .related=${ctx.related}\n >\n </foxy-item-option-card>\n `;\n\n return html`\n <foxy-internal-text-control infer=\"name\"></foxy-internal-text-control>\n\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-number-control infer=\"price\"></foxy-internal-number-control>\n <foxy-internal-integer-control infer=\"quantity\"></foxy-internal-integer-control>\n </div>\n\n <foxy-internal-item-form-subscription-control></foxy-internal-item-form-subscription-control>\n <foxy-internal-item-form-line-item-discount-control></foxy-internal-item-form-line-item-discount-control>\n <foxy-internal-item-form-cart-control></foxy-internal-item-form-cart-control>\n <foxy-internal-item-form-shipping-control></foxy-internal-item-form-shipping-control>\n <foxy-internal-item-form-inventory-control></foxy-internal-item-form-inventory-control>\n\n ${this.data\n ? html`\n <foxy-internal-async-details-control\n infer=\"discount-details\"\n first=${this.data._links['fx:discount_details'].href}\n limit=\"5\"\n item=\"foxy-discount-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"coupon-details\"\n first=${this.data._links['fx:coupon_details'].href}\n limit=\"5\"\n item=\"foxy-coupon-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"attributes\"\n first=${this.data._links['fx:attributes'].href}\n limit=\"5\"\n item=\"foxy-attribute-card\"\n form=\"foxy-attribute-form\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"item-options\"\n first=${this.data._links['fx:item_options'].href}\n limit=\"5\"\n form=\"foxy-item-option-form\"\n .item=${renderItemOptionCard}\n .related=${this.__itemOptionRelatedUrls}\n >\n </foxy-internal-async-details-control>\n `\n : ''}\n ${super.renderBody()}\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type TransactionTemplate = Resource<Rels.TransactionTemplate>;\n type Subscription = Resource<Rels.Subscription>;\n type Transaction = Resource<Rels.Transaction>;\n type Cart = Resource<Rels.Cart>;\n\n const item = await super._sendGet();\n\n if ('fx:subscription' in item._links) {\n // TODO: remove the directive below once SDK is updated\n // @ts-expect-error SDK types are incomplete\n const subscriptionHref = item._links['fx:subscription'].href;\n const subscription = await super._fetch<Subscription>(subscriptionHref);\n\n const transactionTemplateHref = subscription._links['fx:transaction_template'].href;\n const transactionTemplate = await super._fetch<TransactionTemplate>(transactionTemplateHref);\n\n this.__itemsLink = transactionTemplate._links['fx:items'].href;\n return item;\n }\n\n if ('fx:transaction' in item._links) {\n const transaction = await super._fetch<Transaction>(item._links['fx:transaction'].href);\n this.__itemsLink = transaction._links['fx:items'].href;\n return item;\n }\n\n if ('fx:cart' in item._links) {\n // TODO: remove the directive below once SDK is updated\n // @ts-expect-error SDK types are incomplete\n const cart = await super._fetch<Cart>(item._links['fx:cart'].href);\n this.__itemsLink = cart._links['fx:items'].href;\n return item;\n }\n\n return item;\n }\n\n private get __itemOptionRelatedUrls() {\n const links = (this.data?._links ?? {}) as Record<string, { href: string }>;\n const urls: string[] = [];\n\n if (links['fx:subscription']) urls.push(links['fx:subscription'].href);\n if (links['fx:transaction']) urls.push(links['fx:transaction'].href);\n if (links['fx:shipment']) urls.push(links['fx:shipment'].href);\n if (links['fx:cart']) urls.push(links['fx:cart'].href);\n if (this.__itemsLink) urls.push(this.__itemsLink);\n\n return urls;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { TemplateResult } from 'lit-html';
2
- import { Data } from './types';
1
+ import type { PropertyDeclarations, TemplateResult } from 'lit-element';
2
+ import type { Data } from './types';
3
3
  import { TwoLineCard } from '../CustomFieldCard/TwoLineCard';
4
4
  declare const Base: typeof TwoLineCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
5
5
  defaultNS: string;
@@ -17,9 +17,29 @@ declare const Base: typeof TwoLineCard & import("lit-element").Constructor<impor
17
17
  * @since 1.17.0
18
18
  */
19
19
  export declare class ItemOptionCard extends Base<Data> {
20
- private __currencyDisplay;
21
- private __currency;
20
+ static get properties(): PropertyDeclarations;
21
+ localeCodes: string | null;
22
+ private readonly __transactionTemplateLoaderId;
23
+ private readonly __defaultTemplateSetLoaderId;
24
+ private readonly __localeCodesHelperLoaderId;
25
+ private readonly __transactionLoaderId;
26
+ private readonly __templateSetLoaderId;
27
+ private readonly __storeLoaderId;
28
+ private readonly __cartLoaderId;
22
29
  render(): TemplateResult;
23
- protected _sendGet(): Promise<Data>;
30
+ private get __transactionTemplateHref();
31
+ private get __defaultTemplateSetHref();
32
+ private get __localeCodesHelperHref();
33
+ private get __transactionHref();
34
+ private get __templateSetHref();
35
+ private get __storeHref();
36
+ private get __cartHref();
37
+ private get __transactionTemplate();
38
+ private get __defaultTemplateSet();
39
+ private get __localeCodesHelper();
40
+ private get __transaction();
41
+ private get __templateSet();
42
+ private get __store();
43
+ private get __cart();
24
44
  }
25
45
  export {};
@@ -1,6 +1,7 @@
1
- import { html } from 'lit-html';
2
1
  import { TranslatableMixin } from "../../../mixins/translatable.js";
3
2
  import { TwoLineCard } from "../CustomFieldCard/TwoLineCard.js";
3
+ import { ifDefined } from 'lit-html/directives/if-defined';
4
+ import { html } from 'lit-html';
4
5
  const NS = 'item-option-card';
5
6
  const Base = TranslatableMixin(TwoLineCard, NS);
6
7
  /**
@@ -18,19 +19,119 @@ const Base = TranslatableMixin(TwoLineCard, NS);
18
19
  export class ItemOptionCard extends Base {
19
20
  constructor() {
20
21
  super(...arguments);
21
- this.__currencyDisplay = '';
22
- this.__currency = '';
22
+ this.localeCodes = null;
23
+ this.__transactionTemplateLoaderId = 'transactionTemplateLoader';
24
+ this.__defaultTemplateSetLoaderId = 'defaultTemplateSetLoader';
25
+ this.__localeCodesHelperLoaderId = 'localeCodesLoader';
26
+ this.__transactionLoaderId = 'transactionLoader';
27
+ this.__templateSetLoaderId = 'templateSetLoader';
28
+ this.__storeLoaderId = 'storeLoader';
29
+ this.__cartLoaderId = 'cartLoader';
30
+ }
31
+ static get properties() {
32
+ return {
33
+ ...super.properties,
34
+ localeCodes: { type: String, attribute: 'locale-codes' },
35
+ };
23
36
  }
24
37
  render() {
25
- return super.render({
38
+ var _a, _b, _c, _d, _e, _f;
39
+ const currencyDisplay = ((_a = this.__store) === null || _a === void 0 ? void 0 : _a.use_international_currency_symbol) ? 'code' : 'symbol';
40
+ const transaction = this.__transaction;
41
+ let currencyCode = null;
42
+ if (transaction) {
43
+ currencyCode = transaction.currency_code;
44
+ }
45
+ else {
46
+ const cart = (_b = this.__cart) !== null && _b !== void 0 ? _b : this.__transactionTemplate;
47
+ if (cart && 'currency_code' in cart) {
48
+ // TODO: remove the directive below once the SDK is updated
49
+ // @ts-expect-error SDK types are incomplete
50
+ currencyCode = cart.currency_code;
51
+ }
52
+ else {
53
+ const allLocaleCodes = this.__localeCodesHelper;
54
+ const localeCode = (_d = ((_c = this.__templateSet) !== null && _c !== void 0 ? _c : this.__defaultTemplateSet)) === null || _d === void 0 ? void 0 : _d.locale_code;
55
+ const localeInfo = localeCode ? allLocaleCodes === null || allLocaleCodes === void 0 ? void 0 : allLocaleCodes.values[localeCode] : void 0;
56
+ if (localeInfo)
57
+ currencyCode = (_f = (_e = /Currency: ([A-Z]{3})/g.exec(localeInfo)) === null || _e === void 0 ? void 0 : _e[1]) !== null && _f !== void 0 ? _f : null;
58
+ }
59
+ }
60
+ return html `
61
+ <foxy-nucleon
62
+ class="hidden"
63
+ infer=""
64
+ href=${ifDefined(this.__transactionTemplateHref)}
65
+ id=${this.__transactionTemplateLoaderId}
66
+ @update=${() => this.requestUpdate()}
67
+ >
68
+ </foxy-nucleon>
69
+
70
+ <foxy-nucleon
71
+ class="hidden"
72
+ infer=""
73
+ href=${ifDefined(this.__defaultTemplateSetHref)}
74
+ id=${this.__defaultTemplateSetLoaderId}
75
+ @update=${() => this.requestUpdate()}
76
+ >
77
+ </foxy-nucleon>
78
+
79
+ <foxy-nucleon
80
+ class="hidden"
81
+ infer=""
82
+ href=${ifDefined(this.__localeCodesHelperHref)}
83
+ id=${this.__localeCodesHelperLoaderId}
84
+ @update=${() => this.requestUpdate()}
85
+ >
86
+ </foxy-nucleon>
87
+
88
+ <foxy-nucleon
89
+ class="hidden"
90
+ infer=""
91
+ href=${ifDefined(this.__transactionHref)}
92
+ id=${this.__transactionLoaderId}
93
+ @update=${() => this.requestUpdate()}
94
+ >
95
+ </foxy-nucleon>
96
+
97
+ <foxy-nucleon
98
+ class="hidden"
99
+ infer=""
100
+ href=${ifDefined(this.__templateSetHref)}
101
+ id=${this.__templateSetLoaderId}
102
+ @update=${() => this.requestUpdate()}
103
+ >
104
+ </foxy-nucleon>
105
+
106
+ <foxy-nucleon
107
+ class="hidden"
108
+ infer=""
109
+ href=${ifDefined(this.__storeHref)}
110
+ id=${this.__storeLoaderId}
111
+ @update=${() => this.requestUpdate()}
112
+ >
113
+ </foxy-nucleon>
114
+
115
+ <foxy-nucleon
116
+ class="hidden"
117
+ infer=""
118
+ href=${ifDefined(this.__cartHref)}
119
+ id=${this.__cartLoaderId}
120
+ @update=${() => this.requestUpdate()}
121
+ >
122
+ </foxy-nucleon>
123
+
124
+ ${super.render({
26
125
  title: data => {
126
+ if (!currencyCode || !currencyDisplay)
127
+ return html `&ZeroWidthSpace;`;
27
128
  let priceMod;
28
129
  try {
29
130
  priceMod = Math.abs(data.price_mod).toLocaleString(this.lang || 'en', {
30
131
  maximumFractionDigits: 2,
31
132
  minimumFractionDigits: 2,
32
- currencyDisplay: this.__currencyDisplay,
33
- currency: this.__currency,
133
+ currencyDisplay: currencyDisplay,
134
+ currency: currencyCode,
34
135
  style: 'currency',
35
136
  });
36
137
  }
@@ -40,17 +141,99 @@ export class ItemOptionCard extends Base {
40
141
  return html `${data.name} &bull; ${priceMod} &bull; ${data.weight_mod}`;
41
142
  },
42
143
  subtitle: data => html `${data.value}`,
43
- });
44
- }
45
- async _sendGet() {
46
- const discount = await super._sendGet();
47
- const [transaction, store] = await Promise.all([
48
- super._fetch(discount._links['fx:transaction'].href),
49
- super._fetch(discount._links['fx:store'].href),
50
- ]);
51
- this.__currency = transaction.currency_code;
52
- this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';
53
- return discount;
144
+ })}
145
+ `;
146
+ }
147
+ get __transactionTemplateHref() {
148
+ var _a, _b, _c;
149
+ try {
150
+ const links = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links;
151
+ const url = new URL((_c = (_b = links === null || links === void 0 ? void 0 : links['fx:subscription']) === null || _b === void 0 ? void 0 : _b.href) !== null && _c !== void 0 ? _c : '');
152
+ url.searchParams.set('zoom', 'transaction_template');
153
+ return url.toString();
154
+ }
155
+ catch (_d) {
156
+ //
157
+ }
158
+ }
159
+ get __defaultTemplateSetHref() {
160
+ var _a, _b, _c, _d;
161
+ const templateSetUri = (_b = ((_a = this.__cart) !== null && _a !== void 0 ? _a : this.__transactionTemplate)) === null || _b === void 0 ? void 0 : _b.template_set_uri;
162
+ if (templateSetUri === '') {
163
+ try {
164
+ const url = new URL((_d = (_c = this.__store) === null || _c === void 0 ? void 0 : _c._links['fx:template_sets'].href) !== null && _d !== void 0 ? _d : '');
165
+ url.searchParams.set('code', 'DEFAULT');
166
+ return url.toString();
167
+ }
168
+ catch (_e) {
169
+ //
170
+ }
171
+ }
172
+ }
173
+ get __localeCodesHelperHref() {
174
+ var _a;
175
+ if (this.__defaultTemplateSetHref || this.__templateSetHref) {
176
+ return (_a = this.localeCodes) !== null && _a !== void 0 ? _a : void 0;
177
+ }
178
+ }
179
+ get __transactionHref() {
180
+ var _a, _b;
181
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links['fx:transaction']) === null || _b === void 0 ? void 0 : _b.href;
182
+ }
183
+ get __templateSetHref() {
184
+ var _a;
185
+ const cart = (_a = this.__cart) !== null && _a !== void 0 ? _a : this.__transactionTemplate;
186
+ // TODO: remove the directive below once SDK is updated
187
+ // @ts-expect-error SDK types are incomplete
188
+ const currencyCode = cart === null || cart === void 0 ? void 0 : cart.currency_code;
189
+ if (!currencyCode)
190
+ return (cart === null || cart === void 0 ? void 0 : cart.template_set_uri) || void 0;
191
+ }
192
+ get __storeHref() {
193
+ var _a, _b;
194
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links['fx:store']) === null || _b === void 0 ? void 0 : _b.href;
195
+ }
196
+ get __cartHref() {
197
+ var _a, _b;
198
+ const links = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links;
199
+ return (_b = links === null || links === void 0 ? void 0 : links['fx:cart']) === null || _b === void 0 ? void 0 : _b.href;
200
+ }
201
+ get __transactionTemplate() {
202
+ var _a, _b;
203
+ const selector = `#${this.__transactionTemplateLoaderId}`;
204
+ const loader = this.renderRoot.querySelector(selector);
205
+ return (_b = (_a = loader === null || loader === void 0 ? void 0 : loader.data) === null || _a === void 0 ? void 0 : _a._embedded['fx:transaction_template']) !== null && _b !== void 0 ? _b : null;
206
+ }
207
+ get __defaultTemplateSet() {
208
+ var _a, _b;
209
+ const selector = `#${this.__defaultTemplateSetLoaderId}`;
210
+ const loader = this.renderRoot.querySelector(selector);
211
+ return (_b = (_a = loader === null || loader === void 0 ? void 0 : loader.data) === null || _a === void 0 ? void 0 : _a._embedded['fx:template_sets'][0]) !== null && _b !== void 0 ? _b : null;
212
+ }
213
+ get __localeCodesHelper() {
214
+ var _a, _b;
215
+ const selector = `#${this.__localeCodesHelperLoaderId}`;
216
+ return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
217
+ }
218
+ get __transaction() {
219
+ var _a, _b;
220
+ const selector = `#${this.__transactionLoaderId}`;
221
+ return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
222
+ }
223
+ get __templateSet() {
224
+ var _a, _b;
225
+ const selector = `#${this.__templateSetLoaderId}`;
226
+ return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
227
+ }
228
+ get __store() {
229
+ var _a, _b;
230
+ const selector = `#${this.__storeLoaderId}`;
231
+ return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
232
+ }
233
+ get __cart() {
234
+ var _a, _b;
235
+ const selector = `#${this.__cartLoaderId}`;
236
+ return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
54
237
  }
55
238
  }
56
239
  //# sourceMappingURL=ItemOptionCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ItemOptionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/ItemOptionCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAKhD,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAE7D,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAe,SAAQ,IAAU;IAA9C;;QACU,sBAAiB,GAAG,EAAE,CAAC;QAEvB,eAAU,GAAG,EAAE,CAAC;IAwC1B,CAAC;IAtCC,MAAM;QACJ,OAAO,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,EAAE,IAAI,CAAC,EAAE;gBACZ,IAAI,QAAgB,CAAC;gBAErB,IAAI;oBACF,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;wBACpE,qBAAqB,EAAE,CAAC;wBACxB,qBAAqB,EAAE,CAAC;wBACxB,eAAe,EAAE,IAAI,CAAC,iBAAiB;wBACvC,QAAQ,EAAE,IAAI,CAAC,UAAU;wBACzB,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;iBACJ;gBAAC,WAAM;oBACN,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBAED,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,WAAW,QAAQ,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;YACzE,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,KAAK,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,QAAQ;QAItB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAc,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;YACjE,KAAK,CAAC,MAAM,CAAQ,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAErF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","sourcesContent":["import { TemplateResult, html } from 'lit-html';\n\nimport { Data } from './types';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { TwoLineCard } from '../CustomFieldCard/TwoLineCard';\n\nconst NS = 'item-option-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Basic card displaying an item option.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-item-option-card\n * @since 1.17.0\n */\nexport class ItemOptionCard extends Base<Data> {\n private __currencyDisplay = '';\n\n private __currency = '';\n\n render(): TemplateResult {\n return super.render({\n title: data => {\n let priceMod: string;\n\n try {\n priceMod = Math.abs(data.price_mod).toLocaleString(this.lang || 'en', {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n currencyDisplay: this.__currencyDisplay,\n currency: this.__currency,\n style: 'currency',\n });\n } catch {\n priceMod = '--';\n }\n\n return html`${data.name} &bull; ${priceMod} &bull; ${data.weight_mod}`;\n },\n subtitle: data => html`${data.value}`,\n });\n }\n\n protected async _sendGet(): Promise<Data> {\n type Transaction = Resource<Rels.Transaction>;\n type Store = Resource<Rels.Store>;\n\n const discount = await super._sendGet();\n const [transaction, store] = await Promise.all([\n super._fetch<Transaction>(discount._links['fx:transaction'].href),\n super._fetch<Store>(discount._links['fx:store'].href),\n ]);\n\n this.__currency = transaction.currency_code;\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n\n return discount;\n }\n}\n"]}
1
+ {"version":3,"file":"ItemOptionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/ItemOptionCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\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 { TwoLineCard } from '../CustomFieldCard/TwoLineCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'item-option-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Basic card displaying an item option.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-item-option-card\n * @since 1.17.0\n */\nexport class ItemOptionCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n localeCodes: { type: String, attribute: 'locale-codes' },\n };\n }\n\n localeCodes: string | null = null;\n\n private readonly __transactionTemplateLoaderId = 'transactionTemplateLoader';\n\n private readonly __defaultTemplateSetLoaderId = 'defaultTemplateSetLoader';\n\n private readonly __localeCodesHelperLoaderId = 'localeCodesLoader';\n\n private readonly __transactionLoaderId = 'transactionLoader';\n\n private readonly __templateSetLoaderId = 'templateSetLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n private readonly __cartLoaderId = 'cartLoader';\n\n render(): TemplateResult {\n const currencyDisplay = this.__store?.use_international_currency_symbol ? 'code' : 'symbol';\n const transaction = this.__transaction;\n\n let currencyCode: string | null = null;\n\n if (transaction) {\n currencyCode = transaction.currency_code;\n } else {\n const cart = this.__cart ?? this.__transactionTemplate;\n\n if (cart && 'currency_code' in cart) {\n // TODO: remove the directive below once the SDK is updated\n // @ts-expect-error SDK types are incomplete\n currencyCode = cart.currency_code;\n } else {\n const allLocaleCodes = this.__localeCodesHelper;\n const localeCode = (this.__templateSet ?? this.__defaultTemplateSet)?.locale_code;\n const localeInfo = localeCode ? allLocaleCodes?.values[localeCode] : void 0;\n\n if (localeInfo) currencyCode = /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1] ?? null;\n }\n }\n\n return html`\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__transactionTemplateHref)}\n id=${this.__transactionTemplateLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__defaultTemplateSetHref)}\n id=${this.__defaultTemplateSetLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__localeCodesHelperHref)}\n id=${this.__localeCodesHelperLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__transactionHref)}\n id=${this.__transactionLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__templateSetHref)}\n id=${this.__templateSetLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__storeHref)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__cartHref)}\n id=${this.__cartLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n ${super.render({\n title: data => {\n if (!currencyCode || !currencyDisplay) return html`&ZeroWidthSpace;`;\n\n let priceMod: string;\n\n try {\n priceMod = Math.abs(data.price_mod).toLocaleString(this.lang || 'en', {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n currencyDisplay: currencyDisplay,\n currency: currencyCode,\n style: 'currency',\n });\n } catch {\n priceMod = '--';\n }\n\n return html`${data.name} &bull; ${priceMod} &bull; ${data.weight_mod}`;\n },\n subtitle: data => html`${data.value}`,\n })}\n `;\n }\n\n private get __transactionTemplateHref() {\n try {\n const links = this.data?._links as Partial<Record<string, { href: string }>> | undefined;\n const url = new URL(links?.['fx:subscription']?.href ?? '');\n url.searchParams.set('zoom', 'transaction_template');\n return url.toString();\n } catch {\n //\n }\n }\n\n private get __defaultTemplateSetHref() {\n const templateSetUri = (this.__cart ?? this.__transactionTemplate)?.template_set_uri;\n\n if (templateSetUri === '') {\n try {\n const url = new URL(this.__store?._links['fx:template_sets'].href ?? '');\n url.searchParams.set('code', 'DEFAULT');\n return url.toString();\n } catch {\n //\n }\n }\n }\n\n private get __localeCodesHelperHref() {\n if (this.__defaultTemplateSetHref || this.__templateSetHref) {\n return this.localeCodes ?? void 0;\n }\n }\n\n private get __transactionHref() {\n return this.data?._links['fx:transaction']?.href;\n }\n\n private get __templateSetHref() {\n const cart = this.__cart ?? this.__transactionTemplate;\n // TODO: remove the directive below once SDK is updated\n // @ts-expect-error SDK types are incomplete\n const currencyCode = cart?.currency_code as string | undefined;\n\n if (!currencyCode) return cart?.template_set_uri || void 0;\n }\n\n private get __storeHref() {\n return this.data?._links['fx:store']?.href;\n }\n\n private get __cartHref() {\n const links = this.data?._links as Partial<Record<string, { href: string }>> | undefined;\n return links?.['fx:cart']?.href;\n }\n\n private get __transactionTemplate() {\n type Loader = NucleonElement<Resource<Rels.Subscription, { zoom: 'transaction_template' }>>;\n const selector = `#${this.__transactionTemplateLoaderId}`;\n const loader = this.renderRoot.querySelector<Loader>(selector);\n return loader?.data?._embedded['fx:transaction_template'] ?? null;\n }\n\n private get __defaultTemplateSet() {\n type Loader = NucleonElement<Resource<Rels.TemplateSets>>;\n const selector = `#${this.__defaultTemplateSetLoaderId}`;\n const loader = this.renderRoot.querySelector<Loader>(selector);\n return loader?.data?._embedded['fx:template_sets'][0] ?? null;\n }\n\n private get __localeCodesHelper() {\n type Loader = NucleonElement<Resource<Rels.LocaleCodes>>;\n const selector = `#${this.__localeCodesHelperLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __transaction() {\n type Loader = NucleonElement<Resource<Rels.Transaction>>;\n const selector = `#${this.__transactionLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __templateSet() {\n type Loader = NucleonElement<Resource<Rels.TemplateSet>>;\n const selector = `#${this.__templateSetLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __store() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n const selector = `#${this.__storeLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __cart() {\n type Loader = NucleonElement<Resource<Rels.Cart>>;\n const selector = `#${this.__cartLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import '@polymer/iron-icons';
2
2
  import '@polymer/iron-icon';
3
3
  import '../../internal/InternalSandbox/index';
4
+ import '../NucleonElement/index';
4
5
  import '../Spinner/index';
5
6
  import { ItemOptionCard } from './ItemOptionCard';
6
7
  export { ItemOptionCard };
@@ -1,6 +1,7 @@
1
1
  import '@polymer/iron-icons';
2
2
  import '@polymer/iron-icon';
3
3
  import "../../internal/InternalSandbox/index.js";
4
+ import "../NucleonElement/index.js";
4
5
  import "../Spinner/index.js";
5
6
  import { ItemOptionCard } from "./ItemOptionCard.js";
6
7
  customElements.define('foxy-item-option-card', ItemOptionCard);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAC5B,iDAA8C;AAC9C,6BAA0B;AAE1B,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import '@polymer/iron-icons';\nimport '@polymer/iron-icon';\nimport '../../internal/InternalSandbox/index';\nimport '../Spinner/index';\n\nimport { ItemOptionCard } from './ItemOptionCard';\n\ncustomElements.define('foxy-item-option-card', ItemOptionCard);\n\nexport { ItemOptionCard };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAE5B,iDAA8C;AAE9C,oCAAiC;AACjC,6BAA0B;AAE1B,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import '@polymer/iron-icons';\nimport '@polymer/iron-icon';\n\nimport '../../internal/InternalSandbox/index';\n\nimport '../NucleonElement/index';\nimport '../Spinner/index';\n\nimport { ItemOptionCard } from './ItemOptionCard';\n\ncustomElements.define('foxy-item-option-card', ItemOptionCard);\n\nexport { ItemOptionCard };\n"]}
@@ -36,6 +36,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
36
36
  this.related = [];
37
37
  this.__hrefToLoad = null;
38
38
  this.__group = '';
39
+ this.__unsubscribeFromRumour = null;
39
40
  this.__fetchEventQueue = [];
40
41
  this.__service = interpret(Nucleon.machine.withConfig({
41
42
  services: {
@@ -124,8 +125,11 @@ export class NucleonElement extends InferrableMixin(LitElement) {
124
125
  return this.__service.state.context.data;
125
126
  }
126
127
  set data(data) {
128
+ this.__destroyRumour();
127
129
  this.__service.send({ type: 'SET_DATA', data });
128
130
  this.__hrefToLoad = null;
131
+ if (data)
132
+ this.__createRumour();
129
133
  }
130
134
  /**
131
135
  * Rumour group. Elements in different groups will not share updates. Empty by default.
@@ -153,8 +157,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
153
157
  this.__service.send({ type: 'FETCH' });
154
158
  }
155
159
  else {
156
- this.__hrefToLoad = null;
157
- this.__service.send({ type: 'SET_DATA', data: null });
160
+ this.data = null;
158
161
  }
159
162
  }
160
163
  /**
@@ -273,44 +276,47 @@ export class NucleonElement extends InferrableMixin(LitElement) {
273
276
  /** POSTs to `element.parent`, shares response with the Rumour group and returns parsed JSON. */
274
277
  async _sendPost(edits) {
275
278
  this.__destroyRumour();
279
+ let data;
276
280
  try {
277
281
  const body = JSON.stringify(edits);
278
282
  const postData = await this._fetch(this.parent, { body, method: 'POST' });
279
- const data = await this._fetch(postData._links.self.href);
283
+ data = await this._fetch(postData._links.self.href);
280
284
  const rumour = NucleonElement.Rumour(this.group);
281
285
  const related = [...this.related, this.parent];
282
286
  rumour.share({ data, related, source: data._links.self.href });
283
- return data;
284
287
  }
285
288
  finally {
286
289
  this.__createRumour();
287
290
  }
291
+ return data;
288
292
  }
289
293
  /** GETs `element.href`, shares response with the Rumour group and returns parsed JSON. */
290
294
  async _sendGet() {
291
295
  this.__destroyRumour();
296
+ let data;
292
297
  try {
293
- const data = await this._fetch(this.href);
298
+ data = await this._fetch(this.href);
294
299
  NucleonElement.Rumour(this.group).share({ data, source: this.href });
295
- return data;
296
300
  }
297
301
  finally {
298
302
  this.__createRumour();
299
303
  }
304
+ return data;
300
305
  }
301
306
  /** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */
302
307
  async _sendPatch(edits) {
303
308
  this.__destroyRumour();
309
+ let data;
304
310
  try {
305
311
  const body = JSON.stringify(edits);
306
- const data = await this._fetch(this.href, { body, method: 'PATCH' });
312
+ data = await this._fetch(this.href, { body, method: 'PATCH' });
307
313
  const rumour = NucleonElement.Rumour(this.group);
308
314
  rumour.share({ data, source: this.href, related: this.related });
309
- return data;
310
315
  }
311
316
  finally {
312
317
  this.__createRumour();
313
318
  }
319
+ return data;
314
320
  }
315
321
  /** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */
316
322
  async _sendDelete() {
@@ -320,11 +326,11 @@ export class NucleonElement extends InferrableMixin(LitElement) {
320
326
  const rumour = NucleonElement.Rumour(this.group);
321
327
  const related = [...this.related, this.parent];
322
328
  rumour.share({ data: null, source: this.href, related });
323
- return null;
324
329
  }
325
330
  finally {
326
331
  this.__createRumour();
327
332
  }
333
+ return null;
328
334
  }
329
335
  // this getter is used by LitElement to set the "state" attribute
330
336
  get __state() {
@@ -364,6 +370,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
364
370
  __destroyRumour() {
365
371
  var _a;
366
372
  (_a = this.__unsubscribeFromRumour) === null || _a === void 0 ? void 0 : _a.call(this);
373
+ this.__unsubscribeFromRumour = null;
367
374
  }
368
375
  __createServer() {
369
376
  this.__fetchEventHandler = this.__handleFetchEvent.bind(this);
@@ -376,11 +383,15 @@ export class NucleonElement extends InferrableMixin(LitElement) {
376
383
  var _a;
377
384
  try {
378
385
  const oldData = (_a = this.__service.state) === null || _a === void 0 ? void 0 : _a.context.data;
379
- if (!oldData)
380
- return;
381
- const newData = update(oldData);
382
- if (newData !== oldData)
383
- this.__service.send({ data: newData, type: 'SET_DATA' });
386
+ const newData = oldData ? update(oldData) : oldData;
387
+ if (newData !== oldData) {
388
+ this.data = newData;
389
+ if (!newData) {
390
+ const result = UpdateResult.ResourceDeleted;
391
+ const event = new UpdateEvent('update', { detail: { result } });
392
+ this.dispatchEvent(event);
393
+ }
394
+ }
384
395
  }
385
396
  catch (err) {
386
397
  if (err instanceof Rumour.UpdateError) {