@foxy.io/elements 1.21.1 → 1.22.0-beta.1

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 (286) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +2 -2
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-admin-subscription-card.js +1 -1
  5. package/dist/cdn/foxy-api-browser.js +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-cancellation-form.js +1 -1
  12. package/dist/cdn/foxy-cart-card.js +1 -1
  13. package/dist/cdn/foxy-cart-form.js +1 -1
  14. package/dist/cdn/foxy-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-card.js +1 -1
  25. package/dist/cdn/foxy-customer-form.js +1 -1
  26. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  27. package/dist/cdn/foxy-customer-portal.js +7 -7
  28. package/dist/cdn/foxy-customer.js +5 -5
  29. package/dist/cdn/foxy-customers-table.js +1 -1
  30. package/dist/cdn/foxy-discount-builder.js +1 -1
  31. package/dist/cdn/foxy-discount-card.js +1 -1
  32. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  33. package/dist/cdn/foxy-donation.js +1 -1
  34. package/dist/cdn/foxy-email-template-card.js +1 -1
  35. package/dist/cdn/foxy-email-template-form.js +1 -1
  36. package/dist/cdn/foxy-error-entry-card.js +1 -1
  37. package/dist/cdn/foxy-form-dialog.js +1 -1
  38. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  39. package/dist/cdn/foxy-gift-card-card.js +1 -1
  40. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  41. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  42. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  43. package/dist/cdn/foxy-gift-card-form.js +1 -1
  44. package/dist/cdn/foxy-i18n-editor.js +2 -2
  45. package/dist/cdn/foxy-i18n.js +1 -1
  46. package/dist/cdn/foxy-integration-card.js +1 -1
  47. package/dist/cdn/foxy-integration-form.js +1 -1
  48. package/dist/cdn/foxy-item-card.js +1 -1
  49. package/dist/cdn/foxy-item-category-card.js +1 -1
  50. package/dist/cdn/foxy-item-category-form.js +1 -1
  51. package/dist/cdn/foxy-item-form.js +1 -1
  52. package/dist/cdn/foxy-item-option-card.js +1 -1
  53. package/dist/cdn/foxy-item-option-form.js +1 -1
  54. package/dist/cdn/foxy-items-form.js +1 -1
  55. package/dist/cdn/foxy-pagination.js +1 -1
  56. package/dist/cdn/foxy-payment-card.js +1 -1
  57. package/dist/cdn/foxy-payment-method-card.js +1 -1
  58. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  59. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  60. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  61. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  62. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  63. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  64. package/dist/cdn/foxy-query-builder.js +1 -1
  65. package/dist/cdn/foxy-report-form.js +2 -2
  66. package/dist/cdn/foxy-reports-table.js +1 -1
  67. package/dist/cdn/foxy-shipment-card.js +1 -1
  68. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  69. package/dist/cdn/foxy-sign-in-form.js +1 -1
  70. package/dist/cdn/foxy-spinner.js +1 -1
  71. package/dist/cdn/foxy-store-card.js +1 -0
  72. package/dist/cdn/foxy-store-form.js +1 -1
  73. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  74. package/dist/cdn/foxy-subscription-card.js +1 -1
  75. package/dist/cdn/foxy-subscription-form.js +2 -2
  76. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  77. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  78. package/dist/cdn/foxy-table.js +1 -1
  79. package/dist/cdn/foxy-tax-card.js +1 -1
  80. package/dist/cdn/foxy-tax-form.js +1 -1
  81. package/dist/cdn/foxy-template-config-form.js +1 -1
  82. package/dist/cdn/foxy-template-form.js +1 -1
  83. package/dist/cdn/foxy-template-set-card.js +1 -1
  84. package/dist/cdn/foxy-template-set-form.js +1 -1
  85. package/dist/cdn/foxy-transaction-card.js +1 -1
  86. package/dist/cdn/foxy-transaction.js +1 -1
  87. package/dist/cdn/foxy-transactions-table.js +9 -9
  88. package/dist/cdn/foxy-user-card.js +1 -0
  89. package/dist/cdn/foxy-user-form.js +1 -1
  90. package/dist/cdn/foxy-users-table.js +1 -1
  91. package/dist/cdn/foxy-webhook-card.js +1 -1
  92. package/dist/cdn/foxy-webhook-form.js +1 -1
  93. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  94. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  95. package/dist/cdn/{shared-274c49b0.js → shared-01af9591.js} +1 -1
  96. package/dist/cdn/shared-0d2ac2bf.js +1 -0
  97. package/dist/cdn/shared-0e0632a7.js +1 -0
  98. package/dist/cdn/{shared-81f9dc9a.js → shared-14202046.js} +1 -1
  99. package/dist/cdn/{shared-efc1aeae.js → shared-146d31e3.js} +1 -1
  100. package/dist/cdn/shared-17e8a23b.js +1 -0
  101. package/dist/cdn/{shared-d3bf404a.js → shared-1a1f739c.js} +1 -1
  102. package/dist/cdn/{shared-62d636b5.js → shared-1c2b06d9.js} +1 -1
  103. package/dist/cdn/{shared-9f905d9f.js → shared-1e7e13c1.js} +1 -1
  104. package/dist/cdn/{shared-639c666f.js → shared-1f4510ea.js} +1 -1
  105. package/dist/cdn/{shared-0ce006b9.js → shared-22e7642d.js} +1 -1
  106. package/dist/cdn/{shared-83596b46.js → shared-2ab995c2.js} +1 -1
  107. package/dist/cdn/{shared-08156595.js → shared-2cdd9cfd.js} +2 -2
  108. package/dist/cdn/{shared-88c4cfec.js → shared-3945506e.js} +1 -1
  109. package/dist/cdn/shared-399a781f.js +1 -0
  110. package/dist/cdn/{shared-6cb1015f.js → shared-3d5adeab.js} +1 -1
  111. package/dist/cdn/{shared-be66c2e7.js → shared-3f04827e.js} +1 -1
  112. package/dist/cdn/{shared-e262920d.js → shared-412affb4.js} +1 -1
  113. package/dist/cdn/{shared-5378bd8c.js → shared-45a9193f.js} +1 -1
  114. package/dist/cdn/{shared-d8dc97f0.js → shared-4af5329d.js} +1 -1
  115. package/dist/cdn/{shared-404aa9cc.js → shared-4ce1c116.js} +1 -1
  116. package/dist/cdn/{shared-71d8d167.js → shared-4d441506.js} +1 -1
  117. package/dist/cdn/{shared-9f436277.js → shared-4e34cfb5.js} +1 -1
  118. package/dist/cdn/{shared-242b3ee9.js → shared-577cab08.js} +1 -1
  119. package/dist/cdn/{shared-f621ccee.js → shared-5db24a3c.js} +2 -2
  120. package/dist/cdn/{shared-be99323d.js → shared-606449c3.js} +1 -1
  121. package/dist/cdn/{shared-2092d86f.js → shared-63ed0be3.js} +1 -1
  122. package/dist/cdn/{shared-2cc638ad.js → shared-6fb007df.js} +2 -2
  123. package/dist/cdn/{shared-ed0dee03.js → shared-711b1d11.js} +1 -1
  124. package/dist/cdn/{shared-c8f5c306.js → shared-727058e8.js} +1 -1
  125. package/dist/cdn/{shared-08e27fe9.js → shared-889ec003.js} +3 -3
  126. package/dist/cdn/{shared-bd252323.js → shared-9227d2e5.js} +1 -1
  127. package/dist/cdn/{shared-5ea18e60.js → shared-959c976b.js} +1 -1
  128. package/dist/cdn/{shared-7097364f.js → shared-97a723fa.js} +1 -1
  129. package/dist/cdn/{shared-ee5a7812.js → shared-97da5c82.js} +1 -1
  130. package/dist/cdn/{shared-747b6d74.js → shared-9a11f821.js} +1 -1
  131. package/dist/cdn/{shared-f7e4cd67.js → shared-9be9d167.js} +1 -1
  132. package/dist/cdn/{shared-d807ae5c.js → shared-9c898ce5.js} +2 -2
  133. package/dist/cdn/{shared-4849ef5b.js → shared-9cfb3149.js} +1 -1
  134. package/dist/cdn/{shared-5a4829e3.js → shared-a2d07dc8.js} +1 -1
  135. package/dist/cdn/{shared-8f8abcd6.js → shared-b0508df4.js} +1 -1
  136. package/dist/cdn/shared-b22c63cc.js +1 -0
  137. package/dist/cdn/{shared-454f172e.js → shared-b5a6dea8.js} +1 -1
  138. package/dist/cdn/{shared-6f5c3101.js → shared-bb8287f7.js} +1 -1
  139. package/dist/cdn/{shared-8c11a711.js → shared-bd52f4a0.js} +1 -1
  140. package/dist/cdn/{shared-3dbe9aaa.js → shared-bd87e451.js} +1 -1
  141. package/dist/cdn/{shared-cbdf08d8.js → shared-bee7a953.js} +1 -1
  142. package/dist/cdn/{shared-a01b5597.js → shared-d2b2c3c3.js} +1 -1
  143. package/dist/cdn/{shared-62c088b7.js → shared-d5e7c2d0.js} +1 -1
  144. package/dist/cdn/{shared-bc814810.js → shared-e6b54b51.js} +1 -1
  145. package/dist/cdn/{shared-7d4fb1a2.js → shared-e9975921.js} +1 -1
  146. package/dist/cdn/{shared-a2d619b4.js → shared-ec5bb132.js} +1 -1
  147. package/dist/cdn/{shared-ca87cf22.js → shared-eed6272b.js} +1 -1
  148. package/dist/cdn/{shared-61e74612.js → shared-fac390a7.js} +4 -4
  149. package/dist/cdn/{shared-3d241b7f.js → shared-fe74f52a.js} +1 -1
  150. package/dist/cdn/shared-febaf6ac.js +1 -0
  151. package/dist/cdn/translations/store-card/en.json +7 -0
  152. package/dist/cdn/translations/user-card/en.json +8 -0
  153. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +1 -1
  154. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +5 -1
  155. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  156. package/dist/elements/internal/InternalDetails/InternalDetails.js +1 -1
  157. package/dist/elements/internal/InternalDetails/InternalDetails.js.map +1 -1
  158. package/dist/elements/private/Page/Page.js +1 -1
  159. package/dist/elements/private/Page/Page.js.map +1 -1
  160. package/dist/elements/private/Section/Section.js +1 -1
  161. package/dist/elements/private/Section/Section.js.map +1 -1
  162. package/dist/elements/private/Switch/Switch.js +1 -1
  163. package/dist/elements/private/Switch/Switch.js.map +1 -1
  164. package/dist/elements/private/Tabs/Tabs.js +1 -1
  165. package/dist/elements/private/Tabs/Tabs.js.map +1 -1
  166. package/dist/elements/public/AddressCard/AddressCard.js +1 -1
  167. package/dist/elements/public/AddressCard/AddressCard.js.map +1 -1
  168. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js +1 -1
  169. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js.map +1 -1
  170. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.js +2 -2
  171. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.js.map +1 -1
  172. package/dist/elements/public/CartCard/CartCard.js +1 -1
  173. package/dist/elements/public/CartCard/CartCard.js.map +1 -1
  174. package/dist/elements/public/CartForm/CartForm.js +4 -4
  175. package/dist/elements/public/CartForm/CartForm.js.map +1 -1
  176. package/dist/elements/public/CouponCard/CouponCard.js +1 -1
  177. package/dist/elements/public/CouponCard/CouponCard.js.map +1 -1
  178. package/dist/elements/public/CouponForm/CouponForm.js +3 -3
  179. package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
  180. package/dist/elements/public/CustomFieldCard/TwoLineCard.js +1 -1
  181. package/dist/elements/public/CustomFieldCard/TwoLineCard.js.map +1 -1
  182. package/dist/elements/public/Customer/Customer.js +4 -4
  183. package/dist/elements/public/Customer/Customer.js.map +1 -1
  184. package/dist/elements/public/CustomerCard/CustomerCard.js +1 -1
  185. package/dist/elements/public/CustomerCard/CustomerCard.js.map +1 -1
  186. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +8 -8
  187. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
  188. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js +2 -2
  189. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js.map +1 -1
  190. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +1 -1
  191. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
  192. package/dist/elements/public/CustomerPortal/InternalCustomerPortalTransactions.js +1 -1
  193. package/dist/elements/public/CustomerPortal/InternalCustomerPortalTransactions.js.map +1 -1
  194. package/dist/elements/public/DiscountBuilder/DiscountBuilder.js +3 -3
  195. package/dist/elements/public/DiscountBuilder/DiscountBuilder.js.map +1 -1
  196. package/dist/elements/public/ErrorEntryCard/ErrorEntryCard.js +4 -4
  197. package/dist/elements/public/ErrorEntryCard/ErrorEntryCard.js.map +1 -1
  198. package/dist/elements/public/GiftCardCard/GiftCardCard.js +1 -1
  199. package/dist/elements/public/GiftCardCard/GiftCardCard.js.map +1 -1
  200. package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.js +1 -1
  201. package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.js.map +1 -1
  202. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js +3 -3
  203. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js.map +1 -1
  204. package/dist/elements/public/IntegrationCard/IntegrationCard.js +3 -3
  205. package/dist/elements/public/IntegrationCard/IntegrationCard.js.map +1 -1
  206. package/dist/elements/public/IntegrationForm/IntegrationForm.js +3 -3
  207. package/dist/elements/public/IntegrationForm/IntegrationForm.js.map +1 -1
  208. package/dist/elements/public/ItemCard/ItemCard.js +1 -1
  209. package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
  210. package/dist/elements/public/PaymentCard/PaymentCard.js +3 -3
  211. package/dist/elements/public/PaymentCard/PaymentCard.js.map +1 -1
  212. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js +3 -3
  213. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js.map +1 -1
  214. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js +4 -4
  215. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js.map +1 -1
  216. package/dist/elements/public/QueryBuilder/components/Group.js +1 -1
  217. package/dist/elements/public/QueryBuilder/components/Group.js.map +1 -1
  218. package/dist/elements/public/ReportsTable/ReportsTable.js +1 -1
  219. package/dist/elements/public/ReportsTable/ReportsTable.js.map +1 -1
  220. package/dist/elements/public/ShippingMethodCard/ShippingMethodCard.js +1 -1
  221. package/dist/elements/public/ShippingMethodCard/ShippingMethodCard.js.map +1 -1
  222. package/dist/elements/public/SignInForm/SignInForm.js +1 -1
  223. package/dist/elements/public/SignInForm/SignInForm.js.map +1 -1
  224. package/dist/elements/public/StoreCard/StoreCard.d.ts +26 -0
  225. package/dist/elements/public/StoreCard/StoreCard.js +41 -0
  226. package/dist/elements/public/StoreCard/StoreCard.js.map +1 -0
  227. package/dist/elements/public/StoreCard/index.d.ts +5 -0
  228. package/dist/elements/public/StoreCard/index.js +7 -0
  229. package/dist/elements/public/StoreCard/index.js.map +1 -0
  230. package/dist/elements/public/StoreCard/types.d.ts +3 -0
  231. package/dist/elements/public/StoreCard/types.js +2 -0
  232. package/dist/elements/public/StoreCard/types.js.map +1 -0
  233. package/dist/elements/public/StoreForm/StoreForm.js +1 -1
  234. package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
  235. package/dist/elements/public/SubscriptionCard/SubscriptionCard.js +2 -2
  236. package/dist/elements/public/SubscriptionCard/SubscriptionCard.js.map +1 -1
  237. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +1 -1
  238. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
  239. package/dist/elements/public/SubscriptionsTable/SubscriptionsTable.js +3 -3
  240. package/dist/elements/public/SubscriptionsTable/SubscriptionsTable.js.map +1 -1
  241. package/dist/elements/public/TaxCard/TaxCard.js +1 -1
  242. package/dist/elements/public/TaxCard/TaxCard.js.map +1 -1
  243. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/InternalTransactionSummaryControl.js +2 -2
  244. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/InternalTransactionSummaryControl.js.map +1 -1
  245. package/dist/elements/public/TransactionCard/TransactionCard.js +1 -1
  246. package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
  247. package/dist/elements/public/TransactionsTable/TransactionsTable.js +2 -2
  248. package/dist/elements/public/TransactionsTable/TransactionsTable.js.map +1 -1
  249. package/dist/elements/public/UserCard/UserCard.d.ts +22 -0
  250. package/dist/elements/public/UserCard/UserCard.js +29 -0
  251. package/dist/elements/public/UserCard/UserCard.js.map +1 -0
  252. package/dist/elements/public/UserCard/index.d.ts +5 -0
  253. package/dist/elements/public/UserCard/index.js +7 -0
  254. package/dist/elements/public/UserCard/index.js.map +1 -0
  255. package/dist/elements/public/UserCard/types.d.ts +3 -0
  256. package/dist/elements/public/UserCard/types.js +2 -0
  257. package/dist/elements/public/UserCard/types.js.map +1 -0
  258. package/dist/elements/public/UserForm/UserForm.d.ts +32 -9
  259. package/dist/elements/public/UserForm/UserForm.js +116 -82
  260. package/dist/elements/public/UserForm/UserForm.js.map +1 -1
  261. package/dist/elements/public/UserForm/index.d.ts +1 -0
  262. package/dist/elements/public/UserForm/index.js +1 -0
  263. package/dist/elements/public/UserForm/index.js.map +1 -1
  264. package/dist/elements/public/UserForm/types.d.ts +22 -3
  265. package/dist/elements/public/UserForm/types.js.map +1 -1
  266. package/dist/elements/public/WebhookCard/WebhookCard.js +1 -1
  267. package/dist/elements/public/WebhookCard/WebhookCard.js.map +1 -1
  268. package/dist/elements/public/WebhookLogCard/WebhookLogCard.js +1 -1
  269. package/dist/elements/public/WebhookLogCard/WebhookLogCard.js.map +1 -1
  270. package/dist/elements/public/WebhookStatusCard/WebhookStatusCard.js +1 -1
  271. package/dist/elements/public/WebhookStatusCard/WebhookStatusCard.js.map +1 -1
  272. package/dist/elements/public/index.d.ts +2 -0
  273. package/dist/elements/public/index.defined.d.ts +2 -0
  274. package/dist/elements/public/index.defined.js +2 -0
  275. package/dist/elements/public/index.defined.js.map +1 -1
  276. package/dist/elements/public/index.js +2 -0
  277. package/dist/elements/public/index.js.map +1 -1
  278. package/dist/mixins/themeable.js +0 -8
  279. package/dist/mixins/themeable.js.map +1 -1
  280. package/package.json +2 -2
  281. package/dist/cdn/shared-1433fc29.js +0 -1
  282. package/dist/cdn/shared-45926e43.js +0 -1
  283. package/dist/cdn/shared-5c804971.js +0 -1
  284. package/dist/cdn/shared-94fc438b.js +0 -1
  285. package/dist/cdn/shared-a29b600a.js +0 -1
  286. package/dist/cdn/shared-c6a01446.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InternalAsyncListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncListControl/InternalAsyncListControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CollectionPage, NucleonElement } from '../../public/index';\nimport type { InternalConfirmDialog } from '../InternalConfirmDialog';\nimport type { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport type { ItemRenderer } from '../../public/CollectionPage/types';\nimport type { FormDialog } from '../../index';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-element';\n\nexport class InternalAsyncListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n hideDeleteButton: { type: Boolean, attribute: 'hide-delete-button' },\n hideCreateButton: { type: Boolean, attribute: 'hide-create-button' },\n getPageHref: { attribute: false },\n related: { type: Array },\n first: {},\n limit: { type: Number },\n form: {},\n item: {},\n wide: { type: Boolean },\n alert: { type: Boolean },\n };\n }\n\n /** Same as the `related` property of `NucleonElement`. */\n related = [] as string[];\n\n /** Limit query parameter to apply to the `first` URL. */\n limit = 20;\n\n /** URI of the first page of the hAPI collection to display. */\n first: string | null = null;\n\n /** Same as the `form` property of `FormDialog`. If set, will open a dialog on item click. */\n form: FormDialog['form'] = null;\n\n /** Same as the `item` property of `CollectionPage`. */\n item: CollectionPage<any>['item'] = null;\n\n /** Same as the `wide` property of `FormDialog`. */\n wide = false;\n\n /** Same as the `alert` property of `FormDialog`. */\n alert = false;\n\n /** Hides Delete Swipe Action if true. */\n hideDeleteButton = false;\n\n /** Hides Create button if true. */\n hideCreateButton = false;\n\n /** If set, renders list items as <a> tags. */\n getPageHref: ((itemHref: string, item: unknown) => string) | null = null;\n\n private __deletionConfimationCallback: (() => void) | null = null;\n\n private __cachedCardRenderer: {\n item: InternalAsyncListControl['item'];\n render: ItemRenderer;\n } | null = null;\n\n private __itemRenderer: ItemRenderer = ctx => {\n if (!(this.form || this.getPageHref) || !ctx.data) return this.__cardRenderer(ctx);\n\n const isDisabled = this.disabledSelector.matches('card', true);\n const card = this.__cardRenderer(ctx);\n let clickableItem: TemplateResult;\n\n const wrapperClass = classMap({\n 'rounded-t': !ctx.previous,\n 'rounded-b': !ctx.next,\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n 'text-left w-full block transition-colors': true,\n 'hover-bg-contrast-5': !isDisabled,\n });\n\n if (this.getPageHref) {\n if (isDisabled) {\n clickableItem = html`<div class=${wrapperClass}>${card}</div>`;\n } else {\n const href = this.getPageHref(ctx.href, ctx.data);\n clickableItem = html`<a class=${wrapperClass} href=${href}>${card}</a>`;\n }\n } else {\n const handleClick = (evt: Event) => {\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.__dialog;\n\n dialog.header = 'header_update';\n dialog.href = ctx.href;\n dialog.show(button);\n };\n\n clickableItem = html`\n <button ?disabled=${isDisabled} class=${wrapperClass} @click=${handleClick}>${card}</button>\n `;\n }\n\n if (this.hideDeleteButton) return clickableItem;\n\n return html`\n <foxy-swipe-actions class=\"block\">\n ${clickableItem}\n\n <vaadin-button\n theme=\"primary error\"\n class=\"h-full\"\n slot=\"action\"\n @click=${(evt: CustomEvent) => {\n const button = evt.currentTarget as HTMLElement;\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n\n confirm.show(button);\n\n this.__deletionConfimationCallback = () => {\n const cardButton = button.previousElementSibling!;\n const card = cardButton.querySelector<NucleonElement<any>>('[href]');\n\n card?.delete();\n this.__deletionConfimationCallback = null;\n };\n }}\n >\n <foxy-i18n infer=\"\" key=\"delete_button_text\"></foxy-i18n>\n </vaadin-button>\n </foxy-swipe-actions>\n `;\n };\n\n renderControl(): TemplateResult {\n let first: string | undefined;\n\n try {\n const url = new URL(this.first ?? '');\n url.searchParams.set('limit', String(this.limit));\n first = url.toString();\n } catch {\n first = undefined;\n }\n\n return html`\n ${this.form\n ? html`\n <foxy-form-dialog\n parent=${ifDefined(this.first ?? void 0)}\n infer=\"dialog\"\n id=\"form\"\n ?wide=${this.wide}\n ?alert=${this.alert}\n .related=${this.related}\n .form=${this.form as any}\n >\n </foxy-form-dialog>\n `\n : ''}\n ${this.hideDeleteButton\n ? ''\n : html`\n <foxy-internal-confirm-dialog\n message=\"delete_message\"\n confirm=\"delete_confirm\"\n cancel=\"delete_cancel\"\n header=\"delete_header\"\n theme=\"error\"\n infer=\"\"\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => {\n if (!evt.detail.cancelled) this.__deletionConfimationCallback?.();\n }}\n >\n </foxy-internal-confirm-dialog>\n `}\n ${this.label && this.label !== 'label'\n ? html`<div class=\"font-medium text-secondary text-s mb-xs\">${this.label}</div>`\n : ''}\n\n <foxy-pagination first=${ifDefined(first)} infer=\"pagination\">\n <foxy-collection-page\n class=\"mb-s block divide-y divide-contrast-5 rounded overflow-hidden bg-contrast-5\"\n infer=\"card\"\n .related=${this.related}\n .item=${this.__itemRenderer as any}\n >\n </foxy-collection-page>\n\n ${!this.form || this.readonly || this.hideCreateButton\n ? ''\n : html`\n <vaadin-button\n class=\"mb-s w-full\"\n theme=\"success\"\n ?disabled=${this.disabled}\n @click=${(evt: Event) => {\n evt.preventDefault();\n evt.stopPropagation();\n\n const dialog = this.__dialog;\n const button = evt.currentTarget as HTMLButtonElement;\n\n dialog.header = 'header_create';\n dialog.href = '';\n dialog.show(button);\n }}\n >\n <foxy-i18n infer=\"\" key=\"create_button_text\"></foxy-i18n>\n </vaadin-button>\n `}\n </foxy-pagination>\n `;\n }\n\n private get __dialog() {\n return this.renderRoot.querySelector('#form') as FormDialog;\n }\n\n private get __cardRenderer() {\n const item = this.item;\n\n if (this.__cachedCardRenderer?.item !== item) {\n this.__cachedCardRenderer = {\n item: item,\n render:\n typeof item === 'string'\n ? (new Function(\n 'ctx',\n `return ctx.html\\`<${item} related=\\${JSON.stringify(ctx.related)} parent=\\${ctx.parent} style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\" infer href=\\${ctx.href}></${item}>\\``\n ) as ItemRenderer)\n : ctx => html`\n <div style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\">\n ${item?.(ctx)}\n </div>\n `,\n };\n }\n\n return this.__cachedCardRenderer.render;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalAsyncListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncListControl/InternalAsyncListControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CollectionPage, NucleonElement } from '../../public/index';\nimport type { InternalConfirmDialog } from '../InternalConfirmDialog';\nimport type { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport type { ItemRenderer } from '../../public/CollectionPage/types';\nimport type { FormDialog } from '../../index';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-element';\n\nexport class InternalAsyncListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n hideDeleteButton: { type: Boolean, attribute: 'hide-delete-button' },\n hideCreateButton: { type: Boolean, attribute: 'hide-create-button' },\n getPageHref: { attribute: false },\n related: { type: Array },\n first: {},\n limit: { type: Number },\n form: {},\n item: {},\n wide: { type: Boolean },\n alert: { type: Boolean },\n };\n }\n\n /** Same as the `related` property of `NucleonElement`. */\n related = [] as string[];\n\n /** Limit query parameter to apply to the `first` URL. */\n limit = 20;\n\n /** URI of the first page of the hAPI collection to display. */\n first: string | null = null;\n\n /** Same as the `form` property of `FormDialog`. If set, will open a dialog on item click. */\n form: FormDialog['form'] = null;\n\n /** Same as the `item` property of `CollectionPage`. */\n item: CollectionPage<any>['item'] = null;\n\n /** Same as the `wide` property of `FormDialog`. */\n wide = false;\n\n /** Same as the `alert` property of `FormDialog`. */\n alert = false;\n\n /** Hides Delete Swipe Action if true. */\n hideDeleteButton = false;\n\n /** Hides Create button if true. */\n hideCreateButton = false;\n\n /** If set, renders list items as <a> tags. */\n getPageHref: ((itemHref: string, item: unknown) => string | null) | null = null;\n\n private __deletionConfimationCallback: (() => void) | null = null;\n\n private __cachedCardRenderer: {\n item: InternalAsyncListControl['item'];\n render: ItemRenderer;\n } | null = null;\n\n private __itemRenderer: ItemRenderer = ctx => {\n if (!ctx.data) return this.__cardRenderer(ctx);\n\n const href = this.getPageHref?.(ctx.href, ctx.data);\n if (typeof href !== 'string' && !this.form) return this.__cardRenderer(ctx);\n\n const isDisabled = this.disabledSelector.matches('card', true);\n const card = this.__cardRenderer(ctx);\n let clickableItem: TemplateResult;\n\n const wrapperClass = classMap({\n 'rounded-t': !ctx.previous,\n 'rounded-b': !ctx.next,\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n 'text-left w-full block transition-colors': true,\n 'hover-bg-contrast-5': !isDisabled,\n });\n\n if (this.getPageHref) {\n if (isDisabled) {\n clickableItem = html`<div class=${wrapperClass}>${card}</div>`;\n } else {\n const href = this.getPageHref(ctx.href, ctx.data);\n clickableItem = html`<a class=${wrapperClass} href=${href}>${card}</a>`;\n }\n } else {\n const handleClick = (evt: Event) => {\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.__dialog;\n\n dialog.header = 'header_update';\n dialog.href = ctx.href;\n dialog.show(button);\n };\n\n clickableItem = html`\n <button ?disabled=${isDisabled} class=${wrapperClass} @click=${handleClick}>${card}</button>\n `;\n }\n\n if (this.hideDeleteButton) return clickableItem;\n\n return html`\n <foxy-swipe-actions class=\"block\">\n ${clickableItem}\n\n <vaadin-button\n theme=\"primary error\"\n class=\"h-full\"\n slot=\"action\"\n @click=${(evt: CustomEvent) => {\n const button = evt.currentTarget as HTMLElement;\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n\n confirm.show(button);\n\n this.__deletionConfimationCallback = () => {\n const cardButton = button.previousElementSibling!;\n const card = cardButton.querySelector<NucleonElement<any>>('[href]');\n\n card?.delete();\n this.__deletionConfimationCallback = null;\n };\n }}\n >\n <foxy-i18n infer=\"\" key=\"delete_button_text\"></foxy-i18n>\n </vaadin-button>\n </foxy-swipe-actions>\n `;\n };\n\n renderControl(): TemplateResult {\n let first: string | undefined;\n\n try {\n const url = new URL(this.first ?? '');\n url.searchParams.set('limit', String(this.limit));\n first = url.toString();\n } catch {\n first = undefined;\n }\n\n return html`\n ${this.form\n ? html`\n <foxy-form-dialog\n parent=${ifDefined(this.first ?? void 0)}\n infer=\"dialog\"\n id=\"form\"\n ?wide=${this.wide}\n ?alert=${this.alert}\n .related=${this.related}\n .form=${this.form as any}\n >\n </foxy-form-dialog>\n `\n : ''}\n ${this.hideDeleteButton\n ? ''\n : html`\n <foxy-internal-confirm-dialog\n message=\"delete_message\"\n confirm=\"delete_confirm\"\n cancel=\"delete_cancel\"\n header=\"delete_header\"\n theme=\"error\"\n infer=\"\"\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => {\n if (!evt.detail.cancelled) this.__deletionConfimationCallback?.();\n }}\n >\n </foxy-internal-confirm-dialog>\n `}\n ${this.label && this.label !== 'label'\n ? html`<div class=\"font-medium text-secondary text-s mb-xs\">${this.label}</div>`\n : ''}\n\n <foxy-pagination first=${ifDefined(first)} infer=\"pagination\">\n <foxy-collection-page\n class=\"mb-s block divide-y divide-contrast-5 rounded overflow-hidden bg-contrast-5\"\n infer=\"card\"\n .related=${this.related}\n .item=${this.__itemRenderer as any}\n >\n </foxy-collection-page>\n\n ${!this.form || this.readonly || this.hideCreateButton\n ? ''\n : html`\n <vaadin-button\n class=\"mb-s w-full\"\n theme=\"success\"\n ?disabled=${this.disabled}\n @click=${(evt: Event) => {\n evt.preventDefault();\n evt.stopPropagation();\n\n const dialog = this.__dialog;\n const button = evt.currentTarget as HTMLButtonElement;\n\n dialog.header = 'header_create';\n dialog.href = '';\n dialog.show(button);\n }}\n >\n <foxy-i18n infer=\"\" key=\"create_button_text\"></foxy-i18n>\n </vaadin-button>\n `}\n </foxy-pagination>\n `;\n }\n\n private get __dialog() {\n return this.renderRoot.querySelector('#form') as FormDialog;\n }\n\n private get __cardRenderer() {\n const item = this.item;\n\n if (this.__cachedCardRenderer?.item !== item) {\n this.__cachedCardRenderer = {\n item: item,\n render:\n typeof item === 'string'\n ? (new Function(\n 'ctx',\n `return ctx.html\\`<${item} related=\\${JSON.stringify(ctx.related)} parent=\\${ctx.parent} style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\" infer href=\\${ctx.href}></${item}>\\``\n ) as ItemRenderer)\n : ctx => html`\n <div style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\">\n ${item?.(ctx)}\n </div>\n `,\n };\n }\n\n return this.__cachedCardRenderer.render;\n }\n}\n"]}
@@ -44,7 +44,7 @@ export class InternalDetails extends ThemeableMixin(InferrableMixin(LitElement))
44
44
  <div class="flex items-center h-m pl-m pr-s">
45
45
  <div class="flex items-center flex-1">
46
46
  <foxy-i18n
47
- class="flex items-center text-xs tracking-wide uppercase font-bold text-body"
47
+ class="flex items-center text-xs tracking-wide uppercase font-medium text-body"
48
48
  infer=""
49
49
  key=${(_a = this.summary) !== null && _a !== void 0 ? _a : ''}
50
50
  >
@@ -1 +1 @@
1
- {"version":3,"file":"InternalDetails.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDetails/InternalDetails.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAAhF;;QASE,iCAAiC;QACjC,YAAO,GAAkB,IAAI,CAAC;QAE9B,4CAA4C;QAC5C,SAAI,GAAG,KAAK,CAAC;IA6Cf,CAAC;IAzDC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACxB,CAAC;IACJ,CAAC;IAQD,MAAM;;QACJ,OAAO,IAAI,CAAA;;;gBAGC,IAAI,CAAC,IAAI;kBACP,CAAC,GAAU,EAAE,EAAE;YACvB,IAAI,CAAC,IAAI,GAAI,GAAG,CAAC,aAAoC,CAAC,IAAI,CAAC;QAC7D,CAAC;;;kBAGS,QAAQ,CAAC;YACf,wEAAwE,EAAE,IAAI;YAC9E,sDAAsD,EAAE,IAAI;YAC5D,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI;SACxB,CAAC;;;;;;;sBAOU,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE;;;;;;;;;mCASL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;;;;;;;;;;KAUzD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\n\nimport { html, LitElement } from 'lit-element';\nimport { InferrableMixin } from '../../../mixins/inferrable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\n\n/**\n * Internal details/summary control.\n *\n * @since 1.17.0\n * @element foxy-internal-details\n */\nexport class InternalDetails extends ThemeableMixin(InferrableMixin(LitElement)) {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n summary: { type: String },\n open: { type: Boolean },\n };\n }\n\n /** i18n key for summary text. */\n summary: string | null = null;\n\n /** Same as `HTMLDetailsElement['open']`. */\n open = false;\n\n render(): TemplateResult {\n return html`\n <details\n class=\"w-full border border-contrast-10 rounded\"\n ?open=${this.open}\n @toggle=${(evt: Event) => {\n this.open = (evt.currentTarget as HTMLDetailsElement).open;\n }}\n >\n <summary\n class=${classMap({\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n 'transition-colors cursor-pointer hover-bg-contrast-5': true,\n 'rounded-t': true,\n 'rounded-b': !this.open,\n })}\n >\n <div class=\"flex items-center h-m pl-m pr-s\">\n <div class=\"flex items-center flex-1\">\n <foxy-i18n\n class=\"flex items-center text-xs tracking-wide uppercase font-bold text-body\"\n infer=\"\"\n key=${this.summary ?? ''}\n >\n </foxy-i18n>\n\n <slot name=\"actions\"></slot>\n </div>\n\n <iron-icon\n class=\"icon-inline text-xl text-body\"\n icon=\"icons:expand-${this.open ? 'less' : 'more'}\"\n >\n </iron-icon>\n </div>\n </summary>\n\n <div class=\"border-t border-contrast-10\">\n <slot></slot>\n </div>\n </details>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalDetails.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDetails/InternalDetails.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAAhF;;QASE,iCAAiC;QACjC,YAAO,GAAkB,IAAI,CAAC;QAE9B,4CAA4C;QAC5C,SAAI,GAAG,KAAK,CAAC;IA6Cf,CAAC;IAzDC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACxB,CAAC;IACJ,CAAC;IAQD,MAAM;;QACJ,OAAO,IAAI,CAAA;;;gBAGC,IAAI,CAAC,IAAI;kBACP,CAAC,GAAU,EAAE,EAAE;YACvB,IAAI,CAAC,IAAI,GAAI,GAAG,CAAC,aAAoC,CAAC,IAAI,CAAC;QAC7D,CAAC;;;kBAGS,QAAQ,CAAC;YACf,wEAAwE,EAAE,IAAI;YAC9E,sDAAsD,EAAE,IAAI;YAC5D,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI;SACxB,CAAC;;;;;;;sBAOU,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE;;;;;;;;;mCASL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;;;;;;;;;;KAUzD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\n\nimport { html, LitElement } from 'lit-element';\nimport { InferrableMixin } from '../../../mixins/inferrable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\n\n/**\n * Internal details/summary control.\n *\n * @since 1.17.0\n * @element foxy-internal-details\n */\nexport class InternalDetails extends ThemeableMixin(InferrableMixin(LitElement)) {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n summary: { type: String },\n open: { type: Boolean },\n };\n }\n\n /** i18n key for summary text. */\n summary: string | null = null;\n\n /** Same as `HTMLDetailsElement['open']`. */\n open = false;\n\n render(): TemplateResult {\n return html`\n <details\n class=\"w-full border border-contrast-10 rounded\"\n ?open=${this.open}\n @toggle=${(evt: Event) => {\n this.open = (evt.currentTarget as HTMLDetailsElement).open;\n }}\n >\n <summary\n class=${classMap({\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n 'transition-colors cursor-pointer hover-bg-contrast-5': true,\n 'rounded-t': true,\n 'rounded-b': !this.open,\n })}\n >\n <div class=\"flex items-center h-m pl-m pr-s\">\n <div class=\"flex items-center flex-1\">\n <foxy-i18n\n class=\"flex items-center text-xs tracking-wide uppercase font-medium text-body\"\n infer=\"\"\n key=${this.summary ?? ''}\n >\n </foxy-i18n>\n\n <slot name=\"actions\"></slot>\n </div>\n\n <iron-icon\n class=\"icon-inline text-xl text-body\"\n icon=\"icons:expand-${this.open ? 'less' : 'more'}\"\n >\n </iron-icon>\n </div>\n </summary>\n\n <div class=\"border-t border-contrast-10\">\n <slot></slot>\n </div>\n </details>\n `;\n }\n}\n"]}
@@ -15,7 +15,7 @@ export class Page extends LitElement {
15
15
  return html `
16
16
  <article class="relative antialiased font-lumo">
17
17
  <header class="space-y-xs leading-s">
18
- <h1 class="font-bold text-header text-xl border-b border-contrast-10 pb-s mb-s">
18
+ <h1 class="font-medium text-header text-xl border-b border-contrast-10 pb-s mb-s">
19
19
  <slot name="title"></slot>
20
20
  </h1>
21
21
  <p class="text-l text-secondary">
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../../src/elements/private/Page/Page.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAEpC,OAAO,EAAkB,UAAU,EAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,SAAS,EAAE,qCAAkC;AAEtD,MAAM,OAAO,IAAK,SAAQ,UAAU;IAC3B,MAAM,KAAK,MAAM;QACtB,OAAO;YACL,SAAS,CAAC,MAAM;YAChB,GAAG;;;OAIF;SACF,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;;;;;;;;;;KAaV,CAAC;IACJ,CAAC;CACF","sourcesContent":["import '@vaadin/vaadin-lumo-styles';\n\nimport { CSSResultArray, LitElement, TemplateResult, css, html } from 'lit-element';\n\nimport { Themeable } from '../../../mixins/themeable';\n\nexport class Page extends LitElement {\n public static get styles(): CSSResultArray {\n return [\n Themeable.styles,\n css`\n ::slotted(:not([slot])) {\n margin-top: var(--lumo-space-xl);\n }\n `,\n ];\n }\n\n public render(): TemplateResult {\n return html`\n <article class=\"relative antialiased font-lumo\">\n <header class=\"space-y-xs leading-s\">\n <h1 class=\"font-bold text-header text-xl border-b border-contrast-10 pb-s mb-s\">\n <slot name=\"title\"></slot>\n </h1>\n <p class=\"text-l text-secondary\">\n <slot name=\"subtitle\"></slot>\n </p>\n </header>\n\n <slot></slot>\n </article>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../../src/elements/private/Page/Page.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAEpC,OAAO,EAAkB,UAAU,EAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,SAAS,EAAE,qCAAkC;AAEtD,MAAM,OAAO,IAAK,SAAQ,UAAU;IAC3B,MAAM,KAAK,MAAM;QACtB,OAAO;YACL,SAAS,CAAC,MAAM;YAChB,GAAG;;;OAIF;SACF,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;;;;;;;;;;KAaV,CAAC;IACJ,CAAC;CACF","sourcesContent":["import '@vaadin/vaadin-lumo-styles';\n\nimport { CSSResultArray, LitElement, TemplateResult, css, html } from 'lit-element';\n\nimport { Themeable } from '../../../mixins/themeable';\n\nexport class Page extends LitElement {\n public static get styles(): CSSResultArray {\n return [\n Themeable.styles,\n css`\n ::slotted(:not([slot])) {\n margin-top: var(--lumo-space-xl);\n }\n `,\n ];\n }\n\n public render(): TemplateResult {\n return html`\n <article class=\"relative antialiased font-lumo\">\n <header class=\"space-y-xs leading-s\">\n <h1 class=\"font-medium text-header text-xl border-b border-contrast-10 pb-s mb-s\">\n <slot name=\"title\"></slot>\n </h1>\n <p class=\"text-l text-secondary\">\n <slot name=\"subtitle\"></slot>\n </p>\n </header>\n\n <slot></slot>\n </article>\n `;\n }\n}\n"]}
@@ -14,7 +14,7 @@ export class Section extends Page {
14
14
  return html `
15
15
  <section class="leading-s antialiased font-lumo">
16
16
  <header>
17
- <h2 class="text-header font-semibold text-l">
17
+ <h2 class="text-header font-medium text-l">
18
18
  <slot name="title"></slot>
19
19
  </h2>
20
20
  <p class="text-secondary text-m">
@@ -1 +1 @@
1
- {"version":3,"file":"Section.js","sourceRoot":"","sources":["../../../../src/elements/private/Section/Section.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAkC,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,wBAAqB;AAEpC,MAAM,OAAO,OAAQ,SAAQ,IAAI;IACxB,MAAM,KAAK,MAAM;QACtB,OAAO;YACL,KAAK,CAAC,MAAM;YACZ,GAAG;;;OAIF;SACF,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;;;;;;;;;;KAaV,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { html, css, CSSResultArray, TemplateResult } from 'lit-element';\nimport { Page } from '../Page/Page';\n\nexport class Section extends Page {\n public static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n ::slotted(:not([slot])) {\n margin-top: var(--lumo-space-m);\n }\n `,\n ];\n }\n\n public render(): TemplateResult {\n return html`\n <section class=\"leading-s antialiased font-lumo\">\n <header>\n <h2 class=\"text-header font-semibold text-l\">\n <slot name=\"title\"></slot>\n </h2>\n <p class=\"text-secondary text-m\">\n <slot name=\"subtitle\"></slot>\n </p>\n </header>\n\n <slot></slot>\n </section>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"Section.js","sourceRoot":"","sources":["../../../../src/elements/private/Section/Section.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAkC,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,wBAAqB;AAEpC,MAAM,OAAO,OAAQ,SAAQ,IAAI;IACxB,MAAM,KAAK,MAAM;QACtB,OAAO;YACL,KAAK,CAAC,MAAM;YACZ,GAAG;;;OAIF;SACF,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;;;;;;;;;;KAaV,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { html, css, CSSResultArray, TemplateResult } from 'lit-element';\nimport { Page } from '../Page/Page';\n\nexport class Section extends Page {\n public static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n ::slotted(:not([slot])) {\n margin-top: var(--lumo-space-m);\n }\n `,\n ];\n }\n\n public render(): TemplateResult {\n return html`\n <section class=\"leading-s antialiased font-lumo\">\n <header>\n <h2 class=\"text-header font-medium text-l\">\n <slot name=\"title\"></slot>\n </h2>\n <p class=\"text-secondary text-m\">\n <slot name=\"subtitle\"></slot>\n </p>\n </header>\n\n <slot></slot>\n </section>\n `;\n }\n}\n"]}
@@ -31,7 +31,7 @@ export class Switch extends LitElement {
31
31
  'cursor-pointer': !this.disabled,
32
32
  })}
33
33
  >
34
- <span class="text-body font-semibold text-m mr-m">
34
+ <span class="text-body font-medium text-m mr-m">
35
35
  <slot></slot>
36
36
  </span>
37
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../../src/elements/private/Switch/Switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,qCAAkC;AACtD,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD,MAAM,OAAO,iBAAkB,SAAQ,WAAoB;IACzD,YAAY,MAAe;QACzB,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,MAAO,SAAQ,UAAU;IAAtC;;QAaS,aAAQ,GAAG,KAAK,CAAC;QAEjB,YAAO,GAAG,KAAK,CAAC;IA+CzB,CAAC;IA7DQ,MAAM,KAAK,UAAU;QAC1B,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC9B,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAEM,MAAM,KAAK,MAAM;QACtB,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAMM,MAAM;QACX,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC;YACf,iEAAiE,EAAE,IAAI;YACvE,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ;SACjC,CAAC;;;;;;;;kBAQQ,QAAQ,CAAC;YACf,kEAAkE,EAAE,IAAI;YACxE,gDAAgD,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;YAChF,4CAA4C,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;YAC5E,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;SAClD,CAAC;;;;oBAIQ,QAAQ,CAAC;YACf,mEAAmE,EAAE,IAAI;YACzE,eAAe,EAAE,IAAI,CAAC,OAAO;YAC7B,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO;YAC9B,sDAAsD,EAAE,CAAC,IAAI,CAAC,QAAQ;SACvE,CAAC;;;;;;uBAMS,IAAI,CAAC,OAAO;wBACX,IAAI,CAAC,QAAQ;sBACf,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC;;;;KAIR,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { CSSResult, CSSResultArray, LitElement, PropertyDeclarations } from 'lit-element';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { Themeable } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\n\nexport class SwitchChangeEvent extends CustomEvent<boolean> {\n constructor(detail: boolean) {\n super('change', { detail });\n }\n}\n\nexport class Switch extends LitElement {\n public static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n disabled: { attribute: false },\n checked: { attribute: false },\n };\n }\n\n public static get styles(): CSSResult | CSSResultArray {\n return Themeable.styles;\n }\n\n public disabled = false;\n\n public checked = false;\n\n public render(): TemplateResult {\n return html`\n <label\n class=${classMap({\n 'transition duration-200 flex justify-between items-center group': true,\n 'cursor-pointer': !this.disabled,\n })}\n >\n <span class=\"text-body font-semibold text-m mr-m\">\n <slot></slot>\n </span>\n\n <span\n style=\"border-radius: var(--lumo-size-xl); width: calc((var(--lumo-space-l) * 2) + (var(--lumo-space-xs) * 2))\"\n class=${classMap({\n 'transition duration-150 relative flex flex-shrink-0 items-center': true,\n 'bg-success focus-within-shadow-outline-success': !this.disabled && this.checked,\n 'bg-contrast-10 focus-within-shadow-outline': this.disabled || !this.checked,\n 'bg-contrast-20': !this.disabled && !this.checked,\n })}\n >\n <span\n style=\"width: var(--lumo-space-l); height: var(--lumo-space-l)\"\n class=${classMap({\n 'bg-tint transition duration-200 transform block rounded-full m-xs': true,\n 'translate-x-l': this.checked,\n 'translate-x-0': !this.checked,\n 'shadow-xs group-hover-shadow-s group-hover-scale-110': !this.disabled,\n })}\n ></span>\n\n <input\n type=\"checkbox\"\n class=\"opacity-0 absolute inset-0\"\n .checked=${this.checked}\n .disabled=${this.disabled}\n @change=${() => {\n this.checked = !this.checked;\n this.dispatchEvent(new SwitchChangeEvent(this.checked));\n }}\n />\n </span>\n </label>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../../src/elements/private/Switch/Switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,qCAAkC;AACtD,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD,MAAM,OAAO,iBAAkB,SAAQ,WAAoB;IACzD,YAAY,MAAe;QACzB,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,MAAO,SAAQ,UAAU;IAAtC;;QAaS,aAAQ,GAAG,KAAK,CAAC;QAEjB,YAAO,GAAG,KAAK,CAAC;IA+CzB,CAAC;IA7DQ,MAAM,KAAK,UAAU;QAC1B,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC9B,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAEM,MAAM,KAAK,MAAM;QACtB,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAMM,MAAM;QACX,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC;YACf,iEAAiE,EAAE,IAAI;YACvE,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ;SACjC,CAAC;;;;;;;;kBAQQ,QAAQ,CAAC;YACf,kEAAkE,EAAE,IAAI;YACxE,gDAAgD,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;YAChF,4CAA4C,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;YAC5E,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;SAClD,CAAC;;;;oBAIQ,QAAQ,CAAC;YACf,mEAAmE,EAAE,IAAI;YACzE,eAAe,EAAE,IAAI,CAAC,OAAO;YAC7B,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO;YAC9B,sDAAsD,EAAE,CAAC,IAAI,CAAC,QAAQ;SACvE,CAAC;;;;;;uBAMS,IAAI,CAAC,OAAO;wBACX,IAAI,CAAC,QAAQ;sBACf,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC;;;;KAIR,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { CSSResult, CSSResultArray, LitElement, PropertyDeclarations } from 'lit-element';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { Themeable } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\n\nexport class SwitchChangeEvent extends CustomEvent<boolean> {\n constructor(detail: boolean) {\n super('change', { detail });\n }\n}\n\nexport class Switch extends LitElement {\n public static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n disabled: { attribute: false },\n checked: { attribute: false },\n };\n }\n\n public static get styles(): CSSResult | CSSResultArray {\n return Themeable.styles;\n }\n\n public disabled = false;\n\n public checked = false;\n\n public render(): TemplateResult {\n return html`\n <label\n class=${classMap({\n 'transition duration-200 flex justify-between items-center group': true,\n 'cursor-pointer': !this.disabled,\n })}\n >\n <span class=\"text-body font-medium text-m mr-m\">\n <slot></slot>\n </span>\n\n <span\n style=\"border-radius: var(--lumo-size-xl); width: calc((var(--lumo-space-l) * 2) + (var(--lumo-space-xs) * 2))\"\n class=${classMap({\n 'transition duration-150 relative flex flex-shrink-0 items-center': true,\n 'bg-success focus-within-shadow-outline-success': !this.disabled && this.checked,\n 'bg-contrast-10 focus-within-shadow-outline': this.disabled || !this.checked,\n 'bg-contrast-20': !this.disabled && !this.checked,\n })}\n >\n <span\n style=\"width: var(--lumo-space-l); height: var(--lumo-space-l)\"\n class=${classMap({\n 'bg-tint transition duration-200 transform block rounded-full m-xs': true,\n 'translate-x-l': this.checked,\n 'translate-x-0': !this.checked,\n 'shadow-xs group-hover-shadow-s group-hover-scale-110': !this.disabled,\n })}\n ></span>\n\n <input\n type=\"checkbox\"\n class=\"opacity-0 absolute inset-0\"\n .checked=${this.checked}\n .disabled=${this.disabled}\n @change=${() => {\n this.checked = !this.checked;\n this.dispatchEvent(new SwitchChangeEvent(this.checked));\n }}\n />\n </span>\n </label>\n `;\n }\n}\n"]}
@@ -26,7 +26,7 @@ export class Tabs extends LitElement {
26
26
  id="tab-${index}"
27
27
  role="tab"
28
28
  class=${classMap({
29
- 'text-l font-semibold px-s rounded focus-outline-none focus-shadow-outline': true,
29
+ 'text-l font-medium px-s rounded focus-outline-none focus-shadow-outline': true,
30
30
  'text-tertiary hover-text-body focus-text-body': this.value !== index,
31
31
  })}
32
32
  aria-controls="panel-${index}"
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../src/elements/private/Tabs/Tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,qCAAkC;AACtD,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD,MAAM,OAAO,IAAK,SAAQ,UAAU;IAApC;;QAYE,UAAK,GAAG,CAAC,CAAC;QAEV,SAAI,GAAG,CAAC,CAAC;IA4DX,CAAC;IAzEC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAMD,MAAM;QACJ,MAAM,IAAI,GAAqB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;;oBAEA,KAAK;;kBAEP,QAAQ,CAAC;gBACf,2EAA2E,EAAE,IAAI;gBACjF,+CAA+C,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK;aACtE,CAAC;iCACqB,KAAK;0BACZ,IAAI,CAAC,KAAK,KAAK,KAAK;mBAC3B,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;qBACxB,IAAI,CAAC,eAAe;;4BAEb,KAAK;;OAE1B,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA;;sBAEA,KAAK;;wBAEH,KAAK;kBACX,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;wBACpC,IAAI,CAAC,KAAK,KAAK,KAAK;iCACX,KAAK;;;OAG/B,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAA;6EAC8D,IAAI;QACzE,MAAM;KACT,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,GAAkB;QACxC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC/B,GAAG,CAAC,cAAc,EAAE,CAAC;YAErB,MAAM,MAAM,GAAG,GAAG,CAAC,MAA2B,CAAC;YAC/C,IAAI,IAAI,GAA6B,IAAI,CAAC;YAE1C,IAAI,GAAG,CAAC,GAAG,KAAK,YAAY,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,EAAE;gBACvD,IAAI,GAAG,MAAM,CAAC,kBAA8C,CAAC;aAC9D;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC3D,IAAI,GAAG,MAAM,CAAC,sBAAkD,CAAC;aAClE;YAED,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,GAAG;YACd,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,GAAG;SACf;IACH,CAAC;CACF","sourcesContent":["import { CSSResult, CSSResultArray, LitElement, PropertyDeclarations } from 'lit-element';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { Themeable } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\n\nexport class Tabs extends LitElement {\n static get properties(): PropertyDeclarations {\n return {\n value: { type: Number },\n size: { type: Number },\n };\n }\n\n static get styles(): CSSResult | CSSResultArray {\n return Themeable.styles;\n }\n\n value = 0;\n\n size = 0;\n\n render(): TemplateResult {\n const tabs: TemplateResult[] = [];\n const panels: TemplateResult[] = [];\n\n for (let index = 0; index < this.size; ++index) {\n tabs.push(html`\n <button\n id=\"tab-${index}\"\n role=\"tab\"\n class=${classMap({\n 'text-l font-semibold px-s rounded focus-outline-none focus-shadow-outline': true,\n 'text-tertiary hover-text-body focus-text-body': this.value !== index,\n })}\n aria-controls=\"panel-${index}\"\n aria-selected=${this.value === index}\n @click=${() => (this.value = index)}\n @keydown=${this.__handleKeyDown}\n >\n <slot name=\"tab-${index}\"></slot>\n </button>\n `);\n\n panels.push(html`\n <slot\n id=\"panel-${index}\"\n role=\"tabpanel\"\n name=\"panel-${index}\"\n class=${classMap({ hidden: this.value !== index })}\n aria-hidden=${this.value !== index}\n aria-labelledby=\"tab-${index}\"\n >\n </slot>\n `);\n }\n\n return html`\n <div role=\"tablist\" aria-orientation=\"horizontal\" class=\"-mx-s mb-s\">${tabs}</div>\n ${panels}\n `;\n }\n\n private __handleKeyDown(evt: KeyboardEvent) {\n if (evt.key.startsWith('Arrow')) {\n evt.preventDefault();\n\n const target = evt.target as HTMLButtonElement;\n let next: HTMLButtonElement | null = null;\n\n if (evt.key === 'ArrowRight' || evt.key === 'ArrowDown') {\n next = target.nextElementSibling as HTMLButtonElement | null;\n } else if (evt.key === 'ArrowLeft' || evt.key === 'ArrowUp') {\n next = target.previousElementSibling as HTMLButtonElement | null;\n }\n\n next?.click();\n next?.focus();\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../src/elements/private/Tabs/Tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,qCAAkC;AACtD,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD,MAAM,OAAO,IAAK,SAAQ,UAAU;IAApC;;QAYE,UAAK,GAAG,CAAC,CAAC;QAEV,SAAI,GAAG,CAAC,CAAC;IA4DX,CAAC;IAzEC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAMD,MAAM;QACJ,MAAM,IAAI,GAAqB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;;oBAEA,KAAK;;kBAEP,QAAQ,CAAC;gBACf,yEAAyE,EAAE,IAAI;gBAC/E,+CAA+C,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK;aACtE,CAAC;iCACqB,KAAK;0BACZ,IAAI,CAAC,KAAK,KAAK,KAAK;mBAC3B,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;qBACxB,IAAI,CAAC,eAAe;;4BAEb,KAAK;;OAE1B,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA;;sBAEA,KAAK;;wBAEH,KAAK;kBACX,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;wBACpC,IAAI,CAAC,KAAK,KAAK,KAAK;iCACX,KAAK;;;OAG/B,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAA;6EAC8D,IAAI;QACzE,MAAM;KACT,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,GAAkB;QACxC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC/B,GAAG,CAAC,cAAc,EAAE,CAAC;YAErB,MAAM,MAAM,GAAG,GAAG,CAAC,MAA2B,CAAC;YAC/C,IAAI,IAAI,GAA6B,IAAI,CAAC;YAE1C,IAAI,GAAG,CAAC,GAAG,KAAK,YAAY,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,EAAE;gBACvD,IAAI,GAAG,MAAM,CAAC,kBAA8C,CAAC;aAC9D;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC3D,IAAI,GAAG,MAAM,CAAC,sBAAkD,CAAC;aAClE;YAED,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,GAAG;YACd,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,GAAG;SACf;IACH,CAAC;CACF","sourcesContent":["import { CSSResult, CSSResultArray, LitElement, PropertyDeclarations } from 'lit-element';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { Themeable } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\n\nexport class Tabs extends LitElement {\n static get properties(): PropertyDeclarations {\n return {\n value: { type: Number },\n size: { type: Number },\n };\n }\n\n static get styles(): CSSResult | CSSResultArray {\n return Themeable.styles;\n }\n\n value = 0;\n\n size = 0;\n\n render(): TemplateResult {\n const tabs: TemplateResult[] = [];\n const panels: TemplateResult[] = [];\n\n for (let index = 0; index < this.size; ++index) {\n tabs.push(html`\n <button\n id=\"tab-${index}\"\n role=\"tab\"\n class=${classMap({\n 'text-l font-medium px-s rounded focus-outline-none focus-shadow-outline': true,\n 'text-tertiary hover-text-body focus-text-body': this.value !== index,\n })}\n aria-controls=\"panel-${index}\"\n aria-selected=${this.value === index}\n @click=${() => (this.value = index)}\n @keydown=${this.__handleKeyDown}\n >\n <slot name=\"tab-${index}\"></slot>\n </button>\n `);\n\n panels.push(html`\n <slot\n id=\"panel-${index}\"\n role=\"tabpanel\"\n name=\"panel-${index}\"\n class=${classMap({ hidden: this.value !== index })}\n aria-hidden=${this.value !== index}\n aria-labelledby=\"tab-${index}\"\n >\n </slot>\n `);\n }\n\n return html`\n <div role=\"tablist\" aria-orientation=\"horizontal\" class=\"-mx-s mb-s\">${tabs}</div>\n ${panels}\n `;\n }\n\n private __handleKeyDown(evt: KeyboardEvent) {\n if (evt.key.startsWith('Arrow')) {\n evt.preventDefault();\n\n const target = evt.target as HTMLButtonElement;\n let next: HTMLButtonElement | null = null;\n\n if (evt.key === 'ArrowRight' || evt.key === 'ArrowDown') {\n next = target.nextElementSibling as HTMLButtonElement | null;\n } else if (evt.key === 'ArrowLeft' || evt.key === 'ArrowUp') {\n next = target.previousElementSibling as HTMLButtonElement | null;\n }\n\n next?.click();\n next?.focus();\n }\n }\n}\n"]}
@@ -39,7 +39,7 @@ export class AddressCard extends Base {
39
39
  <div class="mb-s leading-none">
40
40
  ${this.renderTemplateOrSlot('address-name:before')}
41
41
 
42
- <span class="font-semibold">
42
+ <span class="font-medium">
43
43
  ${isDefaultBilling || isDefaultShipping
44
44
  ? html `
45
45
  <foxy-i18n
@@ -1 +1 @@
1
- {"version":3,"file":"AddressCard.js","sourceRoot":"","sources":["../../../../src/elements/public/AddressCard/AddressCard.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'address-card';\nconst Base = ConfigurableMixin(ThemeableMixin(TranslatableMixin(NucleonElement, NS)));\n\n/**\n * Card element displaying a customer address.\n *\n * @slot address-name:before - **new in v1.4.0**\n * @slot address-name:after - **new in v1.4.0**\n *\n * @slot full-name:before - **new in v1.4.0**\n * @slot full-name:after - **new in v1.4.0**\n *\n * @slot full-address:before - **new in v1.4.0**\n * @slot full-address:after - **new in v1.4.0**\n *\n * @slot company:before - **new in v1.4.0**\n * @slot company:after - **new in v1.4.0**\n *\n * @slot phone:before - **new in v1.4.0**\n * @slot phone:after - **new in v1.4.0**\n *\n * @element foxy-address-card\n * @since 1.2.0\n */\nexport class AddressCard extends Base<Data> {\n templates: Templates = {};\n\n private readonly __renderAddressName = () => {\n const isDefaultBilling = !!this.data?.is_default_billing;\n const isDefaultShipping = !!this.data?.is_default_shipping;\n\n return html`\n <div class=\"mb-s leading-none\">\n ${this.renderTemplateOrSlot('address-name:before')}\n\n <span class=\"font-semibold\">\n ${isDefaultBilling || isDefaultShipping\n ? html`\n <foxy-i18n\n data-testid=\"address-name\"\n lang=${this.lang}\n key=\"default_${isDefaultBilling ? 'billing' : 'shipping'}_address\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `\n : html`<span data-testid=\"address-name\">${this.data?.address_name}</span>`}\n &ZeroWidthSpace;\n </span>\n\n ${this.renderTemplateOrSlot('address-name:after')}\n </div>\n `;\n };\n\n private readonly __renderLine = (id: string, icon: string, text: TemplateResult) => {\n return html`\n <p>\n ${this.renderTemplateOrSlot(`${id}:before`)}\n\n <span class=\"flex items-center text-m space-x-s text-secondary\">\n <iron-icon icon=${icon} class=\"icon-inline flex-shrink-0\"></iron-icon>\n <span class=\"truncate\" data-testid=${id}>${text}</span>\n &ZeroWidthSpace;\n </span>\n\n ${this.renderTemplateOrSlot(`${id}:after`)}\n </p>\n `;\n };\n\n private readonly __renderFullName = () => {\n const text = this.data\n ? html`\n <foxy-i18n\n options=${JSON.stringify(this.data)}\n lang=${this.lang}\n key=\"full_name\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `\n : html`–`;\n\n return this.__renderLine('full-name', 'social:person', text);\n };\n\n private readonly __renderFullAddress = () => {\n const text = this.data\n ? html`\n <foxy-i18n\n data-testid=\"full-address\"\n options=${JSON.stringify(this.data)}\n lang=${this.lang}\n key=\"full_address\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `\n : html`–`;\n\n return this.__renderLine('full-address', 'maps:place', text);\n };\n\n private readonly __renderCompany = () => {\n const text = html`${this.data?.company || '–'}`;\n return this.__renderLine('company', 'icons:work', text);\n };\n\n private readonly __renderPhone = () => {\n const text = html`${this.data?.phone || '–'}`;\n return this.__renderLine('phone', 'maps:local-phone', text);\n };\n\n render(): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n const isLoaded = this.in({ idle: 'snapshot' });\n const isEmpty = this.in({ idle: 'template' });\n const isBusy = this.in('busy');\n\n return html`\n <div\n class=\"relative h-full text-left text-m leading-m font-lumo text-body\"\n aria-live=\"polite\"\n aria-busy=${isBusy}\n data-testid=\"wrapper\"\n >\n <div\n class=${classMap({\n 'transition duration-250 ease-in-out': true,\n 'opacity-0 pointer-events-none': !isLoaded,\n })}\n >\n ${hiddenSelector.matches('address-name', true) ? '' : this.__renderAddressName()}\n ${hiddenSelector.matches('full-name', true) ? '' : this.__renderFullName()}\n ${hiddenSelector.matches('full-address', true) ? '' : this.__renderFullAddress()}\n ${hiddenSelector.matches('company', true) ? '' : this.__renderCompany()}\n ${hiddenSelector.matches('phone', true) ? '' : this.__renderPhone()}\n </div>\n\n <div\n class=${classMap({\n 'transition duration-250 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': isLoaded,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n state=${this.in('fail') ? 'error' : isEmpty ? 'empty' : 'busy'}\n class=\"m-auto\"\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"AddressCard.js","sourceRoot":"","sources":["../../../../src/elements/public/AddressCard/AddressCard.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'address-card';\nconst Base = ConfigurableMixin(ThemeableMixin(TranslatableMixin(NucleonElement, NS)));\n\n/**\n * Card element displaying a customer address.\n *\n * @slot address-name:before - **new in v1.4.0**\n * @slot address-name:after - **new in v1.4.0**\n *\n * @slot full-name:before - **new in v1.4.0**\n * @slot full-name:after - **new in v1.4.0**\n *\n * @slot full-address:before - **new in v1.4.0**\n * @slot full-address:after - **new in v1.4.0**\n *\n * @slot company:before - **new in v1.4.0**\n * @slot company:after - **new in v1.4.0**\n *\n * @slot phone:before - **new in v1.4.0**\n * @slot phone:after - **new in v1.4.0**\n *\n * @element foxy-address-card\n * @since 1.2.0\n */\nexport class AddressCard extends Base<Data> {\n templates: Templates = {};\n\n private readonly __renderAddressName = () => {\n const isDefaultBilling = !!this.data?.is_default_billing;\n const isDefaultShipping = !!this.data?.is_default_shipping;\n\n return html`\n <div class=\"mb-s leading-none\">\n ${this.renderTemplateOrSlot('address-name:before')}\n\n <span class=\"font-medium\">\n ${isDefaultBilling || isDefaultShipping\n ? html`\n <foxy-i18n\n data-testid=\"address-name\"\n lang=${this.lang}\n key=\"default_${isDefaultBilling ? 'billing' : 'shipping'}_address\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `\n : html`<span data-testid=\"address-name\">${this.data?.address_name}</span>`}\n &ZeroWidthSpace;\n </span>\n\n ${this.renderTemplateOrSlot('address-name:after')}\n </div>\n `;\n };\n\n private readonly __renderLine = (id: string, icon: string, text: TemplateResult) => {\n return html`\n <p>\n ${this.renderTemplateOrSlot(`${id}:before`)}\n\n <span class=\"flex items-center text-m space-x-s text-secondary\">\n <iron-icon icon=${icon} class=\"icon-inline flex-shrink-0\"></iron-icon>\n <span class=\"truncate\" data-testid=${id}>${text}</span>\n &ZeroWidthSpace;\n </span>\n\n ${this.renderTemplateOrSlot(`${id}:after`)}\n </p>\n `;\n };\n\n private readonly __renderFullName = () => {\n const text = this.data\n ? html`\n <foxy-i18n\n options=${JSON.stringify(this.data)}\n lang=${this.lang}\n key=\"full_name\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `\n : html`–`;\n\n return this.__renderLine('full-name', 'social:person', text);\n };\n\n private readonly __renderFullAddress = () => {\n const text = this.data\n ? html`\n <foxy-i18n\n data-testid=\"full-address\"\n options=${JSON.stringify(this.data)}\n lang=${this.lang}\n key=\"full_address\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `\n : html`–`;\n\n return this.__renderLine('full-address', 'maps:place', text);\n };\n\n private readonly __renderCompany = () => {\n const text = html`${this.data?.company || '–'}`;\n return this.__renderLine('company', 'icons:work', text);\n };\n\n private readonly __renderPhone = () => {\n const text = html`${this.data?.phone || '–'}`;\n return this.__renderLine('phone', 'maps:local-phone', text);\n };\n\n render(): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n const isLoaded = this.in({ idle: 'snapshot' });\n const isEmpty = this.in({ idle: 'template' });\n const isBusy = this.in('busy');\n\n return html`\n <div\n class=\"relative h-full text-left text-m leading-m font-lumo text-body\"\n aria-live=\"polite\"\n aria-busy=${isBusy}\n data-testid=\"wrapper\"\n >\n <div\n class=${classMap({\n 'transition duration-250 ease-in-out': true,\n 'opacity-0 pointer-events-none': !isLoaded,\n })}\n >\n ${hiddenSelector.matches('address-name', true) ? '' : this.__renderAddressName()}\n ${hiddenSelector.matches('full-name', true) ? '' : this.__renderFullName()}\n ${hiddenSelector.matches('full-address', true) ? '' : this.__renderFullAddress()}\n ${hiddenSelector.matches('company', true) ? '' : this.__renderCompany()}\n ${hiddenSelector.matches('phone', true) ? '' : this.__renderPhone()}\n </div>\n\n <div\n class=${classMap({\n 'transition duration-250 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': isLoaded,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n state=${this.in('fail') ? 'error' : isEmpty ? 'empty' : 'busy'}\n class=\"m-auto\"\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n}\n"]}
@@ -102,7 +102,7 @@ export class AdminSubscriptionCard extends Base {
102
102
 
103
103
  <div class="text-left leading-s text-tertiary">
104
104
  <div class="flex items-center space-x-s">
105
- <span class="block flex-1 font-semibold text-body truncate">
105
+ <span class="block flex-1 font-medium text-body truncate">
106
106
  ${summaryOptions && summaryKey
107
107
  ? html `<foxy-i18n infer="" key=${summaryKey} .options=${summaryOptions}></foxy-i18n>`
108
108
  : html `&ZeroWidthSpace;`}
@@ -1 +1 @@
1
- {"version":3,"file":"AdminSubscriptionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport 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 { ConfigurableMixin } from '../../../mixins/configurable';\nimport { parseFrequency } from '../../../utils/parse-frequency';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'admin-subscription-card';\nconst Base = ConfigurableMixin(TranslatableMixin(InternalCard, NS));\n\n/**\n * Card element representing a subscription (`fx:subscription`).\n * Admin-only.\n *\n * @element foxy-admin-subscription-card\n * @since 1.21.0\n */\nexport class AdminSubscriptionCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n localeCodes: { attribute: 'locale-codes' },\n };\n }\n\n /**\n * URL of the `fx:locale_codes` property helper.\n * This will be used to determine the currency code for subscriptions that link to a\n * transaction template without the code.\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 __templateSetLoaderId = 'templateSetLoader';\n\n private readonly __itemsLoaderId = 'itemsLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const isFailed = !!this.data?.first_failed_transaction_date;\n const cart = this.__transactionTemplate;\n\n const priceKey = this.__priceKey;\n const priceOptions = this.__priceOptions;\n const summaryOptions = this.__summaryOptions;\n const summaryKey = this.__summaryKey;\n const statusKey = this.__statusKey;\n const statusOptions = this.__statusOptions;\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.__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.__itemsHref)}\n id=${this.__itemsLoaderId}\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 <div class=\"text-left leading-s text-tertiary\">\n <div class=\"flex items-center space-x-s\">\n <span class=\"block flex-1 font-semibold text-body truncate\">\n ${summaryOptions && summaryKey\n ? html`<foxy-i18n infer=\"\" key=${summaryKey} .options=${summaryOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n <span class=\"text-s\">\n ${priceOptions && priceKey\n ? html`<foxy-i18n infer=\"\" key=${priceKey} .options=${priceOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n </div>\n\n <div class=\"truncate text-s ${isFailed ? 'text-error' : 'text-secondary'}\">\n ${statusOptions && statusKey\n ? html`<foxy-i18n infer=\"\" key=${statusKey} .options=${statusOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </div>\n\n <div class=\"text-tertiary truncate text-s\">${cart?.customer_email}&ZeroWidthSpace;</div>\n </div>\n `;\n }\n\n get isBodyReady(): boolean {\n const isLoaded = !!this.__items && !!this.__currencyCode && !!this.__currencyDisplay;\n return super.isBodyReady && isLoaded;\n }\n\n private get __transactionTemplateHref() {\n const data = this.data;\n\n if (!data) return;\n if ('_embedded' in data && 'fx:transaction_template' in data._embedded) return;\n\n const url = new URL(this.data?._links['fx:transaction_template'].href ?? '');\n url.searchParams.set('zoom', 'items');\n return url.toString();\n }\n\n private get __defaultTemplateSetHref() {\n const templateSetUri = 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 __templateSetHref() {\n const cart = this.__transactionTemplate;\n if (!cart?.currency_code) return cart?.template_set_uri || void 0;\n }\n\n private get __itemsHref() {\n const cart = this.__transactionTemplate;\n\n if (!cart) return;\n if ('_embedded' in cart && 'fx:items' in cart._embedded) return;\n\n const url = new URL(cart._links['fx:items'].href);\n url.searchParams.set('limit', '1');\n return url.toString();\n }\n\n private get __storeHref() {\n return this.data?._links['fx:store']?.href;\n }\n\n private get __transactionTemplate() {\n const data = this.data;\n\n if (data && '_embedded' in data && 'fx:transaction_template' in data._embedded) {\n type Cart = Resource<Rels.TransactionTemplate>;\n type CartWithItems = Resource<Rels.TransactionTemplate, { zoom: 'items' }>;\n return data._embedded['fx:transaction_template'] as Cart | CartWithItems;\n } else {\n type Loader = NucleonElement<Resource<Rels.TransactionTemplate, { zoom: 'items' }>>;\n const selector = `#${this.__transactionTemplateLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\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 __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 __items() {\n type Cart = Resource<Rels.TransactionTemplate>;\n type CartWithItems = Resource<Rels.TransactionTemplate, { zoom: 'items' }>;\n\n const cart = this.__transactionTemplate as Cart | CartWithItems | null;\n\n if (cart && '_embedded' in cart && 'fx:items' in cart._embedded) {\n const items = cart._embedded['fx:items'];\n\n return {\n array: items,\n count: items.length,\n isApproximateCount: items.length === 20,\n };\n }\n\n type Loader = NucleonElement<Resource<Rels.Items>>;\n const loader = this.renderRoot.querySelector<Loader>(`#${this.__itemsLoaderId}`);\n if (!loader?.data) return null;\n\n return {\n array: loader.data._embedded['fx:items'],\n count: loader.data.total_items,\n isApproximateCount: false,\n };\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 __currencyDisplay() {\n const useCode = this.__store?.use_international_currency_symbol;\n\n if (useCode === true) return 'code';\n if (useCode === false) return 'symbol';\n }\n\n private get __summaryOptions() {\n const { array, count } = this.__items ?? {};\n if (array && count) return { firstItem: array[0], count, countMinus1: count - 1 };\n }\n\n private get __summaryKey() {\n const items = this.__items;\n if (items) return items.isApproximateCount ? 'summary_approximate' : 'summary';\n }\n\n private get __statusOptions() {\n const d = this.data;\n const date = d?.first_failed_transaction_date ?? d?.end_date ?? d?.next_transaction_date;\n if (date) return { date };\n }\n\n private get __currencyCode() {\n const cart = this.__transactionTemplate;\n\n if (cart?.currency_code) {\n return cart.currency_code as string;\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) return /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1];\n }\n }\n\n private get __priceOptions() {\n const currencyDisplay = this.__currencyDisplay;\n if (currencyDisplay === undefined) return;\n\n const currencyCode = this.__currencyCode;\n if (currencyCode === undefined) return;\n\n const totalOrder = this.__transactionTemplate?.total_order;\n if (totalOrder === undefined) return;\n\n const frequency = this.data?.frequency;\n if (frequency === undefined) return;\n\n return {\n ...parseFrequency(frequency),\n amount: `${totalOrder} ${currencyCode}`,\n currencyDisplay,\n };\n }\n\n private get __statusKey() {\n const data = this.data;\n\n if (data === null) return;\n if (data.first_failed_transaction_date) return 'subscription_failed';\n if (data.end_date) {\n const hasEnded = new Date(data.end_date).getTime() > Date.now();\n return hasEnded ? 'subscription_will_be_cancelled' : 'subscription_cancelled';\n }\n\n return `subscription_${data.is_active ? 'active' : 'inactive'}`;\n }\n\n private get __priceKey() {\n const frequency = this.data?.frequency;\n if (frequency) return `price_${frequency === '.5m' ? 'twice_a_month' : 'recurring'}`;\n }\n}\n"]}
1
+ {"version":3,"file":"AdminSubscriptionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport 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 { ConfigurableMixin } from '../../../mixins/configurable';\nimport { parseFrequency } from '../../../utils/parse-frequency';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'admin-subscription-card';\nconst Base = ConfigurableMixin(TranslatableMixin(InternalCard, NS));\n\n/**\n * Card element representing a subscription (`fx:subscription`).\n * Admin-only.\n *\n * @element foxy-admin-subscription-card\n * @since 1.21.0\n */\nexport class AdminSubscriptionCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n localeCodes: { attribute: 'locale-codes' },\n };\n }\n\n /**\n * URL of the `fx:locale_codes` property helper.\n * This will be used to determine the currency code for subscriptions that link to a\n * transaction template without the code.\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 __templateSetLoaderId = 'templateSetLoader';\n\n private readonly __itemsLoaderId = 'itemsLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const isFailed = !!this.data?.first_failed_transaction_date;\n const cart = this.__transactionTemplate;\n\n const priceKey = this.__priceKey;\n const priceOptions = this.__priceOptions;\n const summaryOptions = this.__summaryOptions;\n const summaryKey = this.__summaryKey;\n const statusKey = this.__statusKey;\n const statusOptions = this.__statusOptions;\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.__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.__itemsHref)}\n id=${this.__itemsLoaderId}\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 <div class=\"text-left leading-s text-tertiary\">\n <div class=\"flex items-center space-x-s\">\n <span class=\"block flex-1 font-medium text-body truncate\">\n ${summaryOptions && summaryKey\n ? html`<foxy-i18n infer=\"\" key=${summaryKey} .options=${summaryOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n <span class=\"text-s\">\n ${priceOptions && priceKey\n ? html`<foxy-i18n infer=\"\" key=${priceKey} .options=${priceOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n </div>\n\n <div class=\"truncate text-s ${isFailed ? 'text-error' : 'text-secondary'}\">\n ${statusOptions && statusKey\n ? html`<foxy-i18n infer=\"\" key=${statusKey} .options=${statusOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </div>\n\n <div class=\"text-tertiary truncate text-s\">${cart?.customer_email}&ZeroWidthSpace;</div>\n </div>\n `;\n }\n\n get isBodyReady(): boolean {\n const isLoaded = !!this.__items && !!this.__currencyCode && !!this.__currencyDisplay;\n return super.isBodyReady && isLoaded;\n }\n\n private get __transactionTemplateHref() {\n const data = this.data;\n\n if (!data) return;\n if ('_embedded' in data && 'fx:transaction_template' in data._embedded) return;\n\n const url = new URL(this.data?._links['fx:transaction_template'].href ?? '');\n url.searchParams.set('zoom', 'items');\n return url.toString();\n }\n\n private get __defaultTemplateSetHref() {\n const templateSetUri = 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 __templateSetHref() {\n const cart = this.__transactionTemplate;\n if (!cart?.currency_code) return cart?.template_set_uri || void 0;\n }\n\n private get __itemsHref() {\n const cart = this.__transactionTemplate;\n\n if (!cart) return;\n if ('_embedded' in cart && 'fx:items' in cart._embedded) return;\n\n const url = new URL(cart._links['fx:items'].href);\n url.searchParams.set('limit', '1');\n return url.toString();\n }\n\n private get __storeHref() {\n return this.data?._links['fx:store']?.href;\n }\n\n private get __transactionTemplate() {\n const data = this.data;\n\n if (data && '_embedded' in data && 'fx:transaction_template' in data._embedded) {\n type Cart = Resource<Rels.TransactionTemplate>;\n type CartWithItems = Resource<Rels.TransactionTemplate, { zoom: 'items' }>;\n return data._embedded['fx:transaction_template'] as Cart | CartWithItems;\n } else {\n type Loader = NucleonElement<Resource<Rels.TransactionTemplate, { zoom: 'items' }>>;\n const selector = `#${this.__transactionTemplateLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\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 __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 __items() {\n type Cart = Resource<Rels.TransactionTemplate>;\n type CartWithItems = Resource<Rels.TransactionTemplate, { zoom: 'items' }>;\n\n const cart = this.__transactionTemplate as Cart | CartWithItems | null;\n\n if (cart && '_embedded' in cart && 'fx:items' in cart._embedded) {\n const items = cart._embedded['fx:items'];\n\n return {\n array: items,\n count: items.length,\n isApproximateCount: items.length === 20,\n };\n }\n\n type Loader = NucleonElement<Resource<Rels.Items>>;\n const loader = this.renderRoot.querySelector<Loader>(`#${this.__itemsLoaderId}`);\n if (!loader?.data) return null;\n\n return {\n array: loader.data._embedded['fx:items'],\n count: loader.data.total_items,\n isApproximateCount: false,\n };\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 __currencyDisplay() {\n const useCode = this.__store?.use_international_currency_symbol;\n\n if (useCode === true) return 'code';\n if (useCode === false) return 'symbol';\n }\n\n private get __summaryOptions() {\n const { array, count } = this.__items ?? {};\n if (array && count) return { firstItem: array[0], count, countMinus1: count - 1 };\n }\n\n private get __summaryKey() {\n const items = this.__items;\n if (items) return items.isApproximateCount ? 'summary_approximate' : 'summary';\n }\n\n private get __statusOptions() {\n const d = this.data;\n const date = d?.first_failed_transaction_date ?? d?.end_date ?? d?.next_transaction_date;\n if (date) return { date };\n }\n\n private get __currencyCode() {\n const cart = this.__transactionTemplate;\n\n if (cart?.currency_code) {\n return cart.currency_code as string;\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) return /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1];\n }\n }\n\n private get __priceOptions() {\n const currencyDisplay = this.__currencyDisplay;\n if (currencyDisplay === undefined) return;\n\n const currencyCode = this.__currencyCode;\n if (currencyCode === undefined) return;\n\n const totalOrder = this.__transactionTemplate?.total_order;\n if (totalOrder === undefined) return;\n\n const frequency = this.data?.frequency;\n if (frequency === undefined) return;\n\n return {\n ...parseFrequency(frequency),\n amount: `${totalOrder} ${currencyCode}`,\n currencyDisplay,\n };\n }\n\n private get __statusKey() {\n const data = this.data;\n\n if (data === null) return;\n if (data.first_failed_transaction_date) return 'subscription_failed';\n if (data.end_date) {\n const hasEnded = new Date(data.end_date).getTime() > Date.now();\n return hasEnded ? 'subscription_will_be_cancelled' : 'subscription_cancelled';\n }\n\n return `subscription_${data.is_active ? 'active' : 'inactive'}`;\n }\n\n private get __priceKey() {\n const frequency = this.data?.frequency;\n if (frequency) return `price_${frequency === '.5m' ? 'twice_a_month' : 'recurring'}`;\n }\n}\n"]}
@@ -80,7 +80,7 @@ textarea::selection{
80
80
  <foxy-copy-to-clipboard infer="copy-to-clipboard" text=${this.href || this.parent}>
81
81
  </foxy-copy-to-clipboard>
82
82
 
83
- <span class="font-semibold truncate">${this.__renderTitle()}</span>
83
+ <span class="font-medium truncate">${this.__renderTitle()}</span>
84
84
  <span class="flex-1"></span>
85
85
 
86
86
  ${this.in({ idle: { snapshot: 'dirty' } }) || this.in({ idle: 'template' })
@@ -265,7 +265,7 @@ textarea::selection{
265
265
  >
266
266
  <div class="flex items-center">
267
267
  <div class="flex-1 space-y-xs px-s min-w-0 text-s">
268
- <div class="truncate font-semibold">${title || href}</div>
268
+ <div class="truncate font-medium">${title || href}</div>
269
269
  <div class="opacity-75 truncate">${curie}</div>
270
270
  </div>
271
271
 
@@ -1 +1 @@
1
- {"version":3,"file":"InternalApiBrowserResourceForm.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, 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 { classMap } from '../../../../../utils/class-map';\nimport { html } from 'lit-html';\nimport { css } from 'lit-element';\n\nconst InvalidValueSymbol = Symbol() as symbol;\nconst ValidValueSymbol = Symbol() as symbol;\n\n/**\n * Internal raw resource JSON editor for use with ApiBrowser.\n *\n * @element foxy-internal-api-browser-resource-form\n * @since 1.17.0\n */\nexport class InternalApiBrowserResourceForm extends TranslatableMixin(InternalForm)<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n open: { type: Boolean, reflect: true },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n ...super.styles,\n css`\n .monospace {\n font-family: monospace;\n }\n\n .resize-none {\n resize: none;\n }\n\n .resource {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(calc(18.75 * var(--lumo-space-m)), 1fr));\n grid-gap: 1px;\n }\n\n .resource > :first-child {\n grid-column-start: 1;\n grid-column-end: -2;\n }\n\n textarea::selection {\n background: var(--lumo-contrast-10pct);\n }\n `,\n ];\n }\n\n static get v8n(): NucleonV8N<any> {\n return [\n ...super.v8n,\n v => (typeof (v as any)[InvalidValueSymbol] === 'string' ? 'invalid_json' : true),\n ];\n }\n\n /** Same as the \"open\" attribute/property of the details element. */\n open = false;\n\n renderBody(): TemplateResult {\n return html`\n <details\n class=\"select-none rounded-t-l rounded-b-l overflow-hidden border border-contrast-10\"\n ?open=${this.open}\n @toggle=${(evt: Event) => {\n const details = evt.currentTarget as HTMLDetailsElement;\n this.open = details.open;\n }}\n >\n <summary\n class=${classMap({\n 'ring-inset ring-primary-50 rounded-t-l': true,\n 'focus-outline-none focus-ring-2': true,\n 'rounded-b-l': !this.open,\n })}\n >\n <div\n class=\"flex items-center space-x-s p-s pr-m transition-colors cursor-pointer bg-contrast-5 hover-bg-contrast-10\"\n >\n <foxy-copy-to-clipboard infer=\"copy-to-clipboard\" text=${this.href || this.parent}>\n </foxy-copy-to-clipboard>\n\n <span class=\"font-semibold truncate\">${this.__renderTitle()}</span>\n <span class=\"flex-1\"></span>\n\n ${this.in({ idle: { snapshot: 'dirty' } }) || this.in({ idle: 'template' })\n ? html`\n <foxy-internal-create-control infer=\"create\" theme=\"tertiary-inline success\">\n </foxy-internal-create-control>\n `\n : ''}\n ${this.in({ idle: { snapshot: 'dirty' } }) || this.in({ idle: { template: 'dirty' } })\n ? html`\n <vaadin-button\n data-testid=\"undo\"\n theme=\"tertiary-inline contrast\"\n class=\"px-xs\"\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"undo\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n ${this.in({ idle: 'snapshot' })\n ? html`\n <foxy-internal-delete-control infer=\"delete\" theme=\"tertiary-inline error\">\n </foxy-internal-delete-control>\n `\n : ''}\n </div>\n </summary>\n\n ${this.open ? this.__renderForm() : ''}\n </details>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n this.__setTextAreaHeight();\n }\n\n protected async _fetch<TResult = any>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n try {\n const request = args[0] instanceof Request ? args[0] : new Request(...args);\n if (request.method !== 'POST') return await super._fetch(...args);\n\n const body = (this.form as any)[ValidValueSymbol] ?? JSON.stringify(this.form);\n return await super._fetch(request.url, { method: 'POST', body });\n } catch (err) {\n throw ['invalid_json'];\n }\n }\n\n private __setTextAreaHeight() {\n const textarea = this.renderRoot.querySelector<HTMLTextAreaElement>('textarea');\n\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n textarea.style.overflowY = 'hidden';\n }\n }\n\n private __renderTitle() {\n if (!this.href) {\n return html`\n <span class=\"text-tertiary\">POST</span>\n <span>${this.parent}</span>\n `;\n }\n\n let pathname = '';\n let identifier = '';\n let search = '';\n\n try {\n const url = new URL(this.href);\n\n pathname = url.pathname;\n if (pathname.startsWith('/')) pathname = pathname.substring(1);\n\n const splitPathname = pathname.split('/');\n pathname = splitPathname.slice(0, splitPathname.length - 1).join('/');\n\n if (splitPathname.length > 1) {\n pathname = `${pathname}/`;\n identifier = splitPathname[splitPathname.length - 1];\n }\n\n search = url.search;\n } catch {\n pathname = this.href;\n }\n\n return html`\n ${[\n html`<span>${pathname}</span>`,\n html`<span class=\"text-primary\">${identifier}</span>`,\n html`<span class=\"text-tertiary\">${search}</span>`,\n ]}\n `;\n }\n\n private __renderForm() {\n return html`\n <div class=\"bg-base\">\n <div class=\"${this.data ? 'resource' : ''} border-t border-contrast-5 bg-contrast-10\">\n <div class=\"flex-1 flex bg-base\">\n <div class=\"monospace bg-contrast-5 leading-s text-s p-m text-tertiary text-right\">\n ${this.__formAsString.split('\\n').map((_, index) => html`<div>${index + 1}</div>`)}\n </div>\n\n <textarea\n class=${classMap({\n 'whitespace-pre leading-s text-s focus-outline-none': true,\n 'monospace resize-none p-m block w-full select-text': true,\n 'bg-error-10': this.errors.length > 0,\n 'bg-base': this.errors.length === 0,\n })}\n .value=${this.__formAsString}\n @input=${(evt: InputEvent) => {\n const textarea = evt.currentTarget as HTMLTextAreaElement;\n this.__formAsString = textarea.value;\n }}\n >\n </textarea>\n </div>\n\n ${this.data\n ? html`\n <div class=\"bg-base\">\n <ul class=\"bg-contrast-5 p-xs h-full\">\n ${this.__links.map(([curie, link]) =>\n this.__renderLink(curie, link.href, link.title)\n )}\n </ul>\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private get __links() {\n const linksAsEntries = Object.entries(this.data?._links ?? {});\n const relevantLinks = linksAsEntries.filter(\n ([curie, link]) => curie !== 'self' && !Array.isArray(link) && !(link as any).templated\n );\n\n try {\n relevantLinks.sort(([curie1], [curie2]) => curie1.localeCompare(curie2, this.lang));\n } catch {\n relevantLinks.sort(([curie1], [curie2]) => curie1.localeCompare(curie2));\n }\n\n return relevantLinks;\n }\n\n private get __formAsString() {\n const form = this.form as any;\n const validValue = form[ValidValueSymbol];\n const invalidValue = form[InvalidValueSymbol];\n\n if (typeof invalidValue === 'string') return invalidValue;\n if (typeof validValue === 'string') return validValue;\n\n return JSON.stringify(form, (key, value) => (key.startsWith('_') ? undefined : value), 2);\n }\n\n private set __formAsString(newValue: string) {\n this.undo();\n\n try {\n const parsedNewValue = JSON.parse(newValue);\n if (typeof parsedNewValue === 'object') this.edit(parsedNewValue);\n this.edit({ [ValidValueSymbol]: newValue });\n } catch {\n this.edit({ [InvalidValueSymbol]: newValue });\n }\n }\n\n private __renderLink(curie: string, href: string, title?: string) {\n return html`\n <li\n data-testclass=\"link\"\n class=\"m-xs rounded overflow-hidden transition-colors hover-bg-contrast-5\"\n >\n <foxy-swipe-actions>\n <button\n class=${classMap({\n 'rounded leading-none space-y-xs block text-left w-full py-s': true,\n 'ring-inset ring-primary-50': true,\n 'focus-outline-none focus-ring-2 ': true,\n })}\n @click=${() => {\n const evt = new CustomEvent('navigate:get', { bubbles: true, detail: href });\n this.dispatchEvent(evt);\n }}\n >\n <div class=\"flex items-center\">\n <div class=\"flex-1 space-y-xs px-s min-w-0 text-s\">\n <div class=\"truncate font-semibold\">${title || href}</div>\n <div class=\"opacity-75 truncate\">${curie}</div>\n </div>\n\n <iron-icon\n class=\"icon-inline text-xl text-tertiary mr-s flex-shrink-0\"\n icon=\"icons:chevron-right\"\n >\n </iron-icon>\n </div>\n </button>\n\n <div slot=\"action\" class=\"h-full flex\">\n <vaadin-button\n theme=\"secondary success\"\n class=\"h-full rounded-none\"\n @click=${() => {\n const evt = new CustomEvent('navigate:post', { bubbles: true, detail: href });\n this.dispatchEvent(evt);\n }}\n >\n POST\n </vaadin-button>\n </div>\n </foxy-swipe-actions>\n </li>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalApiBrowserResourceForm.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,8CAA2C;AACvE,OAAO,EAAE,YAAY,EAAE,0DAAuD;AAC9E,OAAO,EAAE,QAAQ,EAAE,0CAAuC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,kBAAkB,GAAG,MAAM,EAAY,CAAC;AAC9C,MAAM,gBAAgB,GAAG,MAAM,EAAY,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,iBAAiB,CAAC,YAAY,CAAO;IAAzF;;QA6CE,oEAAoE;QACpE,SAAI,GAAG,KAAK,CAAC;IA8Pf,CAAC;IA3SC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO;YACL,GAAG,KAAK,CAAC,MAAM;YACf,GAAG;;;;;;;;;;;;;;;;;;;;;;OAuBF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,GAAG,KAAK,CAAC,GAAG;YACZ,CAAC,CAAC,EAAE,CAAC,CAAC,OAAQ,CAAS,CAAC,kBAAkB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;SAClF,CAAC;IACJ,CAAC;IAKD,UAAU;QACR,OAAO,IAAI,CAAA;;;gBAGC,IAAI,CAAC,IAAI;kBACP,CAAC,GAAU,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAmC,CAAC;YACxD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3B,CAAC;;;kBAGS,QAAQ,CAAC;YACf,wCAAwC,EAAE,IAAI;YAC9C,iCAAiC,EAAE,IAAI;YACvC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI;SAC1B,CAAC;;;;;qEAKyD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;;;iDAG5C,IAAI,CAAC,aAAa,EAAE;;;cAGvD,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACzE,CAAC,CAAC,IAAI,CAAA;;;iBAGH;YACH,CAAC,CAAC,EAAE;cACJ,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YACpF,CAAC,CAAC,IAAI,CAAA;;;;;6BAKS,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;;;;iBAI7B;YACH,CAAC,CAAC,EAAE;cACJ,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAA;;;iBAGH;YACH,CAAC,CAAC,EAAE;;;;UAIR,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;KAEzC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAiC;QACvC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,MAAM,CAAgB,GAAG,IAAiC;;QACxE,IAAI;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAElE,MAAM,IAAI,SAAI,IAAI,CAAC,IAAY,CAAC,gBAAgB,CAAC,mCAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SAClE;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,cAAc,CAAC,CAAC;SACxB;IACH,CAAC;IAEO,mBAAmB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAsB,UAAU,CAAC,CAAC;QAEhF,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,IAAI,CAAC;YACrD,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;SACrC;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,IAAI,CAAA;;gBAED,IAAI,CAAC,MAAM;OACpB,CAAC;SACH;QAED,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE/B,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YACxB,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAE/D,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1C,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEtE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,QAAQ,GAAG,GAAG,QAAQ,GAAG,CAAC;gBAC1B,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACtD;YAED,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;SACrB;QAAC,WAAM;YACN,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;SACtB;QAED,OAAO,IAAI,CAAA;QACP;YACA,IAAI,CAAA,SAAS,QAAQ,SAAS;YAC9B,IAAI,CAAA,8BAA8B,UAAU,SAAS;YACrD,IAAI,CAAA,+BAA+B,MAAM,SAAS;SACnD;KACF,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAA;;sBAEO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;;gBAGjC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC;;;;sBAI1E,QAAQ,CAAC;YACf,oDAAoD,EAAE,IAAI;YAC1D,oDAAoD,EAAE,IAAI;YAC1D,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;SACpC,CAAC;uBACO,IAAI,CAAC,cAAc;uBACnB,CAAC,GAAe,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAoC,CAAC;YAC1D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC;QACvC,CAAC;;;;;YAKH,IAAI,CAAC,IAAI;YACT,CAAC,CAAC,IAAI,CAAA;;;sBAGI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CACnC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAChD;;;eAGN;YACH,CAAC,CAAC,EAAE;;;KAGX,CAAC;IACJ,CAAC;IAED,IAAY,OAAO;;QACjB,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,aAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,mCAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CACzC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAE,IAAY,CAAC,SAAS,CACxF,CAAC;QAEF,IAAI;YACF,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACrF;QAAC,WAAM;YACN,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;SAC1E;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAY,cAAc;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAW,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE9C,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO,YAAY,CAAC;QAC1D,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC;QAEtD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAY,cAAc,CAAC,QAAgB;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,OAAO,cAAc,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC7C;QAAC,WAAM;YACN,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC/C;IACH,CAAC;IAEO,YAAY,CAAC,KAAa,EAAE,IAAY,EAAE,KAAc;QAC9D,OAAO,IAAI,CAAA;;;;;;;oBAOK,QAAQ,CAAC;YACf,6DAA6D,EAAE,IAAI;YACnE,4BAA4B,EAAE,IAAI;YAClC,kCAAkC,EAAE,IAAI;SACzC,CAAC;qBACO,GAAG,EAAE;YACZ,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;;;;oDAIuC,KAAK,IAAI,IAAI;mDACd,KAAK;;;;;;;;;;;;;;;uBAejC,GAAG,EAAE;YACZ,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;;;;;;;KAOV,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { CSSResultArray, 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 { classMap } from '../../../../../utils/class-map';\nimport { html } from 'lit-html';\nimport { css } from 'lit-element';\n\nconst InvalidValueSymbol = Symbol() as symbol;\nconst ValidValueSymbol = Symbol() as symbol;\n\n/**\n * Internal raw resource JSON editor for use with ApiBrowser.\n *\n * @element foxy-internal-api-browser-resource-form\n * @since 1.17.0\n */\nexport class InternalApiBrowserResourceForm extends TranslatableMixin(InternalForm)<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n open: { type: Boolean, reflect: true },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n ...super.styles,\n css`\n .monospace {\n font-family: monospace;\n }\n\n .resize-none {\n resize: none;\n }\n\n .resource {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(calc(18.75 * var(--lumo-space-m)), 1fr));\n grid-gap: 1px;\n }\n\n .resource > :first-child {\n grid-column-start: 1;\n grid-column-end: -2;\n }\n\n textarea::selection {\n background: var(--lumo-contrast-10pct);\n }\n `,\n ];\n }\n\n static get v8n(): NucleonV8N<any> {\n return [\n ...super.v8n,\n v => (typeof (v as any)[InvalidValueSymbol] === 'string' ? 'invalid_json' : true),\n ];\n }\n\n /** Same as the \"open\" attribute/property of the details element. */\n open = false;\n\n renderBody(): TemplateResult {\n return html`\n <details\n class=\"select-none rounded-t-l rounded-b-l overflow-hidden border border-contrast-10\"\n ?open=${this.open}\n @toggle=${(evt: Event) => {\n const details = evt.currentTarget as HTMLDetailsElement;\n this.open = details.open;\n }}\n >\n <summary\n class=${classMap({\n 'ring-inset ring-primary-50 rounded-t-l': true,\n 'focus-outline-none focus-ring-2': true,\n 'rounded-b-l': !this.open,\n })}\n >\n <div\n class=\"flex items-center space-x-s p-s pr-m transition-colors cursor-pointer bg-contrast-5 hover-bg-contrast-10\"\n >\n <foxy-copy-to-clipboard infer=\"copy-to-clipboard\" text=${this.href || this.parent}>\n </foxy-copy-to-clipboard>\n\n <span class=\"font-medium truncate\">${this.__renderTitle()}</span>\n <span class=\"flex-1\"></span>\n\n ${this.in({ idle: { snapshot: 'dirty' } }) || this.in({ idle: 'template' })\n ? html`\n <foxy-internal-create-control infer=\"create\" theme=\"tertiary-inline success\">\n </foxy-internal-create-control>\n `\n : ''}\n ${this.in({ idle: { snapshot: 'dirty' } }) || this.in({ idle: { template: 'dirty' } })\n ? html`\n <vaadin-button\n data-testid=\"undo\"\n theme=\"tertiary-inline contrast\"\n class=\"px-xs\"\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"undo\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n ${this.in({ idle: 'snapshot' })\n ? html`\n <foxy-internal-delete-control infer=\"delete\" theme=\"tertiary-inline error\">\n </foxy-internal-delete-control>\n `\n : ''}\n </div>\n </summary>\n\n ${this.open ? this.__renderForm() : ''}\n </details>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n this.__setTextAreaHeight();\n }\n\n protected async _fetch<TResult = any>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n try {\n const request = args[0] instanceof Request ? args[0] : new Request(...args);\n if (request.method !== 'POST') return await super._fetch(...args);\n\n const body = (this.form as any)[ValidValueSymbol] ?? JSON.stringify(this.form);\n return await super._fetch(request.url, { method: 'POST', body });\n } catch (err) {\n throw ['invalid_json'];\n }\n }\n\n private __setTextAreaHeight() {\n const textarea = this.renderRoot.querySelector<HTMLTextAreaElement>('textarea');\n\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n textarea.style.overflowY = 'hidden';\n }\n }\n\n private __renderTitle() {\n if (!this.href) {\n return html`\n <span class=\"text-tertiary\">POST</span>\n <span>${this.parent}</span>\n `;\n }\n\n let pathname = '';\n let identifier = '';\n let search = '';\n\n try {\n const url = new URL(this.href);\n\n pathname = url.pathname;\n if (pathname.startsWith('/')) pathname = pathname.substring(1);\n\n const splitPathname = pathname.split('/');\n pathname = splitPathname.slice(0, splitPathname.length - 1).join('/');\n\n if (splitPathname.length > 1) {\n pathname = `${pathname}/`;\n identifier = splitPathname[splitPathname.length - 1];\n }\n\n search = url.search;\n } catch {\n pathname = this.href;\n }\n\n return html`\n ${[\n html`<span>${pathname}</span>`,\n html`<span class=\"text-primary\">${identifier}</span>`,\n html`<span class=\"text-tertiary\">${search}</span>`,\n ]}\n `;\n }\n\n private __renderForm() {\n return html`\n <div class=\"bg-base\">\n <div class=\"${this.data ? 'resource' : ''} border-t border-contrast-5 bg-contrast-10\">\n <div class=\"flex-1 flex bg-base\">\n <div class=\"monospace bg-contrast-5 leading-s text-s p-m text-tertiary text-right\">\n ${this.__formAsString.split('\\n').map((_, index) => html`<div>${index + 1}</div>`)}\n </div>\n\n <textarea\n class=${classMap({\n 'whitespace-pre leading-s text-s focus-outline-none': true,\n 'monospace resize-none p-m block w-full select-text': true,\n 'bg-error-10': this.errors.length > 0,\n 'bg-base': this.errors.length === 0,\n })}\n .value=${this.__formAsString}\n @input=${(evt: InputEvent) => {\n const textarea = evt.currentTarget as HTMLTextAreaElement;\n this.__formAsString = textarea.value;\n }}\n >\n </textarea>\n </div>\n\n ${this.data\n ? html`\n <div class=\"bg-base\">\n <ul class=\"bg-contrast-5 p-xs h-full\">\n ${this.__links.map(([curie, link]) =>\n this.__renderLink(curie, link.href, link.title)\n )}\n </ul>\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private get __links() {\n const linksAsEntries = Object.entries(this.data?._links ?? {});\n const relevantLinks = linksAsEntries.filter(\n ([curie, link]) => curie !== 'self' && !Array.isArray(link) && !(link as any).templated\n );\n\n try {\n relevantLinks.sort(([curie1], [curie2]) => curie1.localeCompare(curie2, this.lang));\n } catch {\n relevantLinks.sort(([curie1], [curie2]) => curie1.localeCompare(curie2));\n }\n\n return relevantLinks;\n }\n\n private get __formAsString() {\n const form = this.form as any;\n const validValue = form[ValidValueSymbol];\n const invalidValue = form[InvalidValueSymbol];\n\n if (typeof invalidValue === 'string') return invalidValue;\n if (typeof validValue === 'string') return validValue;\n\n return JSON.stringify(form, (key, value) => (key.startsWith('_') ? undefined : value), 2);\n }\n\n private set __formAsString(newValue: string) {\n this.undo();\n\n try {\n const parsedNewValue = JSON.parse(newValue);\n if (typeof parsedNewValue === 'object') this.edit(parsedNewValue);\n this.edit({ [ValidValueSymbol]: newValue });\n } catch {\n this.edit({ [InvalidValueSymbol]: newValue });\n }\n }\n\n private __renderLink(curie: string, href: string, title?: string) {\n return html`\n <li\n data-testclass=\"link\"\n class=\"m-xs rounded overflow-hidden transition-colors hover-bg-contrast-5\"\n >\n <foxy-swipe-actions>\n <button\n class=${classMap({\n 'rounded leading-none space-y-xs block text-left w-full py-s': true,\n 'ring-inset ring-primary-50': true,\n 'focus-outline-none focus-ring-2 ': true,\n })}\n @click=${() => {\n const evt = new CustomEvent('navigate:get', { bubbles: true, detail: href });\n this.dispatchEvent(evt);\n }}\n >\n <div class=\"flex items-center\">\n <div class=\"flex-1 space-y-xs px-s min-w-0 text-s\">\n <div class=\"truncate font-medium\">${title || href}</div>\n <div class=\"opacity-75 truncate\">${curie}</div>\n </div>\n\n <iron-icon\n class=\"icon-inline text-xl text-tertiary mr-s flex-shrink-0\"\n icon=\"icons:chevron-right\"\n >\n </iron-icon>\n </div>\n </button>\n\n <div slot=\"action\" class=\"h-full flex\">\n <vaadin-button\n theme=\"secondary success\"\n class=\"h-full rounded-none\"\n @click=${() => {\n const evt = new CustomEvent('navigate:post', { bubbles: true, detail: href });\n this.dispatchEvent(evt);\n }}\n >\n POST\n </vaadin-button>\n </div>\n </foxy-swipe-actions>\n </li>\n `;\n }\n}\n"]}
@@ -87,7 +87,7 @@ export class CartCard extends Base {
87
87
 
88
88
  <div class="text-left leading-s">
89
89
  <div class="flex items-center space-x-s">
90
- <span class="flex-1 font-semibold text-body truncate">
90
+ <span class="flex-1 font-medium text-body truncate">
91
91
  ${line1Options && line1Key
92
92
  ? html `<foxy-i18n infer="" key=${line1Key} .options=${line1Options}></foxy-i18n>`
93
93
  : html `&ZeroWidthSpace;`}
@@ -1 +1 @@
1
- {"version":3,"file":"CartCard.js","sourceRoot":"","sources":["../../../../src/elements/public/CartCard/CartCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport 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 { ConfigurableMixin } from '../../../mixins/configurable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'cart-card';\nconst Base = ConfigurableMixin(TranslatableMixin(InternalCard, NS));\n\n/**\n * Card element representing cart resource (`fx:cart`).\n *\n * @element foxy-cart-card\n * @since 1.21.0\n */\nexport class CartCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n localeCodes: { type: String, attribute: 'locale-codes' },\n };\n }\n\n /**\n * URL of the `fx:locale_codes` property helper.\n * This will be used to determine the currency code for carts created with hAPI\n * since it isn't included in them.\n */\n localeCodes: string | null = null;\n\n private readonly __defaultTemplateSetLoaderId = 'defaultTemplateSetLoader';\n\n private readonly __localeCodesHelperLoaderId = 'localeCodesLoader';\n\n private readonly __templateSetLoaderId = 'templateSetLoader';\n\n private readonly __itemsLoaderId = 'itemsLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const statusOptions = this.__statusOptions;\n const line1Options = this.__line1Options;\n const line1Key = this.__line1Key;\n const line2Options = this.__line2Options;\n const line2Key = this.__line2Key;\n const data = this.data;\n\n return html`\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__itemsHref)}\n id=${this.__itemsLoaderId}\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.__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 <div class=\"text-left leading-s\">\n <div class=\"flex items-center space-x-s\">\n <span class=\"flex-1 font-semibold text-body truncate\">\n ${line1Options && line1Key\n ? html`<foxy-i18n infer=\"\" key=${line1Key} .options=${line1Options}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n <span class=\"text-s text-tertiary\">\n ${data\n ? html`<foxy-i18n infer=\"\" key=\"status\" .options=${statusOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n </div>\n\n <div class=\"truncate text-s text-secondary\">\n ${line2Key\n ? html`<foxy-i18n infer=\"\" key=${line2Key} .options=${line2Options}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </div>\n\n <div class=\"text-tertiary truncate text-s\">\n ${data\n ? data.customer_email\n ? html`${data.customer_email}`\n : html`<foxy-i18n infer=\"\" key=\"no_customer\"></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </div>\n </div>\n `;\n }\n\n get isBodyReady(): boolean {\n const isLoaded = !!this.__line1Options && !!this.__statusOptions && !!this.__line2Key;\n return super.isBodyReady && isLoaded;\n }\n\n private get __defaultTemplateSetHref() {\n const templateSetUri = this.data?.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 __templateSetHref() {\n if (!this.data?.currency_code) return this.data?.template_set_uri || void 0;\n }\n\n private get __itemsHref() {\n const data = this.data;\n\n if (!data) return;\n if ('_embedded' in data && 'fx:items' in data._embedded) return;\n\n const url = new URL(data._links['fx:items'].href);\n\n url.searchParams.set('order', 'price desc');\n url.searchParams.set('limit', '1');\n\n return url.toString();\n }\n\n private get __storeHref() {\n return this.data?._links['fx:store']?.href;\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 __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 __items() {\n const data = this.data;\n\n if (data && '_embedded' in data && 'fx:items' in data._embedded) {\n const items = data._embedded['fx:items'];\n\n return {\n array: items,\n count: items.length,\n isApproximateCount: items.length === 20,\n };\n }\n\n type Loader = NucleonElement<Resource<Rels.Items>>;\n const loader = this.renderRoot.querySelector<Loader>(`#${this.__itemsLoaderId}`);\n\n if (!loader?.data) return;\n\n return {\n array: loader.data._embedded['fx:items'],\n count: loader.data.total_items,\n isApproximateCount: false,\n };\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 __currencyDisplay() {\n const useCode = this.__store?.use_international_currency_symbol;\n\n if (useCode === true) return 'code';\n if (useCode === false) return 'symbol';\n }\n\n private get __currencyCode() {\n const data = this.data;\n\n if (data?.currency_code) {\n return data.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) return /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1];\n }\n }\n\n private get __line1Options() {\n const totalOrder = this.data?.total_order;\n if (totalOrder === undefined) return;\n\n const currencyDisplay = this.__currencyDisplay;\n if (currencyDisplay === undefined) return;\n\n const currencyCode = this.__currencyCode;\n if (currencyCode === undefined) return;\n\n const count = this.__items?.count;\n if (count === undefined) return;\n\n return { amount: `${totalOrder} ${currencyCode}`, currencyDisplay, count };\n }\n\n private get __line1Key() {\n const items = this.__items;\n if (items) return items.isApproximateCount ? 'line_1_approximate' : 'line_1';\n }\n\n private get __line2Options() {\n return this.__items?.array[0];\n }\n\n private get __line2Key() {\n const items = this.__items;\n if (items === undefined) return;\n\n if (items.count === 0) return 'line_2_empty';\n if (items.count === 1) return 'line_2_one';\n if (items.count > 1) return 'line_2_many';\n }\n\n private get __statusOptions() {\n const data = this.data;\n if (data) return { dateCreated: data.date_created };\n }\n}\n"]}
1
+ {"version":3,"file":"CartCard.js","sourceRoot":"","sources":["../../../../src/elements/public/CartCard/CartCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport 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 { ConfigurableMixin } from '../../../mixins/configurable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'cart-card';\nconst Base = ConfigurableMixin(TranslatableMixin(InternalCard, NS));\n\n/**\n * Card element representing cart resource (`fx:cart`).\n *\n * @element foxy-cart-card\n * @since 1.21.0\n */\nexport class CartCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n localeCodes: { type: String, attribute: 'locale-codes' },\n };\n }\n\n /**\n * URL of the `fx:locale_codes` property helper.\n * This will be used to determine the currency code for carts created with hAPI\n * since it isn't included in them.\n */\n localeCodes: string | null = null;\n\n private readonly __defaultTemplateSetLoaderId = 'defaultTemplateSetLoader';\n\n private readonly __localeCodesHelperLoaderId = 'localeCodesLoader';\n\n private readonly __templateSetLoaderId = 'templateSetLoader';\n\n private readonly __itemsLoaderId = 'itemsLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const statusOptions = this.__statusOptions;\n const line1Options = this.__line1Options;\n const line1Key = this.__line1Key;\n const line2Options = this.__line2Options;\n const line2Key = this.__line2Key;\n const data = this.data;\n\n return html`\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__itemsHref)}\n id=${this.__itemsLoaderId}\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.__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 <div class=\"text-left leading-s\">\n <div class=\"flex items-center space-x-s\">\n <span class=\"flex-1 font-medium text-body truncate\">\n ${line1Options && line1Key\n ? html`<foxy-i18n infer=\"\" key=${line1Key} .options=${line1Options}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n <span class=\"text-s text-tertiary\">\n ${data\n ? html`<foxy-i18n infer=\"\" key=\"status\" .options=${statusOptions}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </span>\n </div>\n\n <div class=\"truncate text-s text-secondary\">\n ${line2Key\n ? html`<foxy-i18n infer=\"\" key=${line2Key} .options=${line2Options}></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </div>\n\n <div class=\"text-tertiary truncate text-s\">\n ${data\n ? data.customer_email\n ? html`${data.customer_email}`\n : html`<foxy-i18n infer=\"\" key=\"no_customer\"></foxy-i18n>`\n : html`&ZeroWidthSpace;`}\n </div>\n </div>\n `;\n }\n\n get isBodyReady(): boolean {\n const isLoaded = !!this.__line1Options && !!this.__statusOptions && !!this.__line2Key;\n return super.isBodyReady && isLoaded;\n }\n\n private get __defaultTemplateSetHref() {\n const templateSetUri = this.data?.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 __templateSetHref() {\n if (!this.data?.currency_code) return this.data?.template_set_uri || void 0;\n }\n\n private get __itemsHref() {\n const data = this.data;\n\n if (!data) return;\n if ('_embedded' in data && 'fx:items' in data._embedded) return;\n\n const url = new URL(data._links['fx:items'].href);\n\n url.searchParams.set('order', 'price desc');\n url.searchParams.set('limit', '1');\n\n return url.toString();\n }\n\n private get __storeHref() {\n return this.data?._links['fx:store']?.href;\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 __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 __items() {\n const data = this.data;\n\n if (data && '_embedded' in data && 'fx:items' in data._embedded) {\n const items = data._embedded['fx:items'];\n\n return {\n array: items,\n count: items.length,\n isApproximateCount: items.length === 20,\n };\n }\n\n type Loader = NucleonElement<Resource<Rels.Items>>;\n const loader = this.renderRoot.querySelector<Loader>(`#${this.__itemsLoaderId}`);\n\n if (!loader?.data) return;\n\n return {\n array: loader.data._embedded['fx:items'],\n count: loader.data.total_items,\n isApproximateCount: false,\n };\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 __currencyDisplay() {\n const useCode = this.__store?.use_international_currency_symbol;\n\n if (useCode === true) return 'code';\n if (useCode === false) return 'symbol';\n }\n\n private get __currencyCode() {\n const data = this.data;\n\n if (data?.currency_code) {\n return data.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) return /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1];\n }\n }\n\n private get __line1Options() {\n const totalOrder = this.data?.total_order;\n if (totalOrder === undefined) return;\n\n const currencyDisplay = this.__currencyDisplay;\n if (currencyDisplay === undefined) return;\n\n const currencyCode = this.__currencyCode;\n if (currencyCode === undefined) return;\n\n const count = this.__items?.count;\n if (count === undefined) return;\n\n return { amount: `${totalOrder} ${currencyCode}`, currencyDisplay, count };\n }\n\n private get __line1Key() {\n const items = this.__items;\n if (items) return items.isApproximateCount ? 'line_1_approximate' : 'line_1';\n }\n\n private get __line2Options() {\n return this.__items?.array[0];\n }\n\n private get __line2Key() {\n const items = this.__items;\n if (items === undefined) return;\n\n if (items.count === 0) return 'line_2_empty';\n if (items.count === 1) return 'line_2_one';\n if (items.count > 1) return 'line_2_many';\n }\n\n private get __statusOptions() {\n const data = this.data;\n if (data) return { dateCreated: data.date_created };\n }\n}\n"]}