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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-admin-subscription-card.js +1 -0
  5. package/dist/cdn/foxy-api-browser.js +1 -1
  6. package/dist/cdn/foxy-applied-coupon-code-card.js +1 -0
  7. package/dist/cdn/foxy-applied-coupon-code-form.js +1 -0
  8. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  9. package/dist/cdn/foxy-attribute-card.js +1 -1
  10. package/dist/cdn/foxy-attribute-form.js +1 -1
  11. package/dist/cdn/foxy-cancellation-form.js +1 -1
  12. package/dist/cdn/foxy-cart-card.js +1 -0
  13. package/dist/cdn/foxy-cart-form.js +1 -0
  14. package/dist/cdn/foxy-collection-page.js +1 -1
  15. package/dist/cdn/foxy-collection-pages.js +1 -1
  16. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  17. package/dist/cdn/foxy-coupon-card.js +1 -1
  18. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  19. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  20. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  21. package/dist/cdn/foxy-coupon-form.js +1 -1
  22. package/dist/cdn/foxy-custom-field-card.js +1 -1
  23. package/dist/cdn/foxy-custom-field-form.js +1 -1
  24. package/dist/cdn/foxy-customer-api.js +1 -1
  25. package/dist/cdn/foxy-customer-card.js +1 -1
  26. package/dist/cdn/foxy-customer-form.js +1 -1
  27. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  28. package/dist/cdn/foxy-customer-portal.js +3 -2
  29. package/dist/cdn/foxy-customer.js +1 -1
  30. package/dist/cdn/foxy-customers-table.js +1 -1
  31. package/dist/cdn/foxy-discount-builder.js +1 -1
  32. package/dist/cdn/foxy-discount-card.js +1 -1
  33. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  34. package/dist/cdn/foxy-donation.js +1 -1
  35. package/dist/cdn/foxy-email-template-card.js +1 -1
  36. package/dist/cdn/foxy-email-template-form.js +1 -1
  37. package/dist/cdn/foxy-error-entry-card.js +1 -1
  38. package/dist/cdn/foxy-form-dialog.js +1 -1
  39. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  40. package/dist/cdn/foxy-gift-card-card.js +1 -1
  41. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  42. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  43. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  44. package/dist/cdn/foxy-gift-card-form.js +1 -1
  45. package/dist/cdn/foxy-i18n-editor.js +2 -2
  46. package/dist/cdn/foxy-i18n.js +1 -1
  47. package/dist/cdn/foxy-integration-card.js +1 -1
  48. package/dist/cdn/foxy-integration-form.js +1 -1
  49. package/dist/cdn/foxy-item-card.js +1 -1
  50. package/dist/cdn/foxy-item-category-card.js +1 -1
  51. package/dist/cdn/foxy-item-category-form.js +1 -1
  52. package/dist/cdn/foxy-item-form.js +1 -1
  53. package/dist/cdn/foxy-item-option-card.js +1 -1
  54. package/dist/cdn/foxy-item-option-form.js +1 -1
  55. package/dist/cdn/foxy-items-form.js +1 -1
  56. package/dist/cdn/foxy-nucleon-element.js +1 -1
  57. package/dist/cdn/foxy-pagination.js +1 -1
  58. package/dist/cdn/foxy-payment-card.js +1 -1
  59. package/dist/cdn/foxy-payment-method-card.js +1 -1
  60. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  61. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  62. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  63. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  64. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  65. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  66. package/dist/cdn/foxy-payments-api.js +1 -1
  67. package/dist/cdn/foxy-query-builder.js +1 -1
  68. package/dist/cdn/foxy-report-form.js +1 -1
  69. package/dist/cdn/foxy-reports-table.js +1 -1
  70. package/dist/cdn/foxy-shipment-card.js +1 -1
  71. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  72. package/dist/cdn/foxy-sign-in-form.js +1 -1
  73. package/dist/cdn/foxy-spinner.js +2 -2
  74. package/dist/cdn/foxy-store-form.js +1 -1
  75. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  76. package/dist/cdn/foxy-subscription-card.js +1 -1
  77. package/dist/cdn/foxy-subscription-form.js +4 -16
  78. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  79. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  80. package/dist/cdn/foxy-table.js +1 -1
  81. package/dist/cdn/foxy-tax-card.js +1 -1
  82. package/dist/cdn/foxy-tax-form.js +1 -1
  83. package/dist/cdn/foxy-template-card.js +1 -1
  84. package/dist/cdn/foxy-template-config-form.js +1 -1
  85. package/dist/cdn/foxy-template-form.js +1 -1
  86. package/dist/cdn/foxy-template-set-card.js +1 -1
  87. package/dist/cdn/foxy-template-set-form.js +1 -1
  88. package/dist/cdn/foxy-transaction-card.js +1 -1
  89. package/dist/cdn/foxy-transaction.js +1 -1
  90. package/dist/cdn/foxy-transactions-table.js +60 -1
  91. package/dist/cdn/foxy-user-form.js +1 -1
  92. package/dist/cdn/foxy-users-table.js +1 -1
  93. package/dist/cdn/foxy-webhook-card.js +1 -1
  94. package/dist/cdn/foxy-webhook-form.js +1 -1
  95. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  96. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  97. package/dist/cdn/{shared-29e21467.js → shared-00752056.js} +1 -1
  98. package/dist/cdn/{shared-56d26968.js → shared-01d2cae6.js} +1 -1
  99. package/dist/cdn/{shared-d5f242df.js → shared-09c75a01.js} +1 -1
  100. package/dist/cdn/shared-09eb558f.js +1 -0
  101. package/dist/cdn/{shared-236d9b7e.js → shared-0a52b08c.js} +1 -1
  102. package/dist/cdn/{shared-55e20d5b.js → shared-0b17e9a6.js} +1 -1
  103. package/dist/cdn/{shared-f022673a.js → shared-124a17c1.js} +1 -1
  104. package/dist/cdn/{shared-344485cf.js → shared-15effede.js} +5 -5
  105. package/dist/cdn/{shared-196fa627.js → shared-17cb43f3.js} +2 -2
  106. package/dist/cdn/shared-181f51bd.js +1 -0
  107. package/dist/cdn/{shared-262caea4.js → shared-1936d1d5.js} +1 -1
  108. package/dist/cdn/{shared-f2d19582.js → shared-1e9fd9f1.js} +1 -1
  109. package/dist/cdn/{shared-c52d3772.js → shared-2470973b.js} +1 -1
  110. package/dist/cdn/{shared-923da875.js → shared-254ef6a4.js} +1 -1
  111. package/dist/cdn/shared-2afc2d3b.js +1 -0
  112. package/dist/cdn/{shared-0672e78b.js → shared-2bce9f91.js} +1 -1
  113. package/dist/cdn/{shared-b5cbbdd8.js → shared-2c067e88.js} +1 -1
  114. package/dist/cdn/{shared-dcbf57e0.js → shared-2f7dcefa.js} +1 -1
  115. package/dist/cdn/{shared-4975f86f.js → shared-37d6c723.js} +1 -1
  116. package/dist/cdn/{shared-3a3878c9.js → shared-39549b4e.js} +1 -1
  117. package/dist/cdn/{shared-f23d122e.js → shared-3aecf4e3.js} +1 -1
  118. package/dist/cdn/{shared-17d24760.js → shared-3ba49bac.js} +1 -1
  119. package/dist/cdn/shared-436f4187.js +1 -0
  120. package/dist/cdn/{shared-5ad8c9a0.js → shared-43bcce74.js} +1 -1
  121. package/dist/cdn/{shared-34b11d34.js → shared-4c32f1ad.js} +1 -1
  122. package/dist/cdn/{shared-ea316e64.js → shared-4cf568d8.js} +1 -1
  123. package/dist/cdn/{shared-2215e6c8.js → shared-50f97405.js} +1 -1
  124. package/dist/cdn/{shared-4308cdab.js → shared-54c5d16b.js} +1 -1
  125. package/dist/cdn/{shared-ff2f84c7.js → shared-63139d9e.js} +1 -1
  126. package/dist/cdn/{shared-ef0fc329.js → shared-6a53f85f.js} +1 -1
  127. package/dist/cdn/{shared-002b788f.js → shared-76b3d76a.js} +1 -1
  128. package/dist/cdn/shared-7a1de87a.js +1 -0
  129. package/dist/cdn/shared-7b6f4a11.js +1 -0
  130. package/dist/cdn/{shared-8a5bdad3.js → shared-7cc9cc71.js} +1 -1
  131. package/dist/cdn/{shared-162fc285.js → shared-7df6ee40.js} +1 -1
  132. package/dist/cdn/shared-7e2ea44c.js +1 -0
  133. package/dist/cdn/{shared-bb522838.js → shared-7ed14dc8.js} +1 -1
  134. package/dist/cdn/shared-839dd3a8.js +1 -0
  135. package/dist/cdn/{shared-da6cc488.js → shared-862b436d.js} +1 -1
  136. package/dist/cdn/{shared-b0a6d48f.js → shared-873b14d1.js} +1 -1
  137. package/dist/cdn/{shared-5b55627c.js → shared-875748d8.js} +1 -1
  138. package/dist/cdn/{shared-2d3027f4.js → shared-8b6addec.js} +1 -1
  139. package/dist/cdn/{shared-07fb5be2.js → shared-90b8ef49.js} +1 -1
  140. package/dist/cdn/{shared-b7f7f15f.js → shared-9923f00e.js} +1 -1
  141. package/dist/cdn/{shared-b28dbc68.js → shared-9c3934c8.js} +1 -1
  142. package/dist/cdn/{shared-6b8874a7.js → shared-9cba1b0e.js} +1 -1
  143. package/dist/cdn/{shared-aebbceea.js → shared-a2e9009b.js} +1 -1
  144. package/dist/cdn/{shared-d43fc5cc.js → shared-a696c602.js} +1 -1
  145. package/dist/cdn/shared-a85afa33.js +1 -0
  146. package/dist/cdn/{shared-e396ec04.js → shared-ab687b1e.js} +1 -1
  147. package/dist/cdn/{shared-c484320b.js → shared-aef0c294.js} +1 -1
  148. package/dist/cdn/shared-b51997d1.js +1 -0
  149. package/dist/cdn/{shared-8a5e01ae.js → shared-b90ddfc1.js} +1 -1
  150. package/dist/cdn/shared-bcc6e13b.js +1 -0
  151. package/dist/cdn/{shared-b8e9b536.js → shared-bfc37e75.js} +1 -1
  152. package/dist/cdn/{shared-6d2064e9.js → shared-c434e6d6.js} +3 -3
  153. package/dist/cdn/{shared-ce1ae7e1.js → shared-cce2fc5a.js} +1 -1
  154. package/dist/cdn/{shared-1f0841ec.js → shared-cd6381a5.js} +1 -1
  155. package/dist/cdn/{shared-a86761d3.js → shared-cef7c63d.js} +2 -2
  156. package/dist/cdn/{shared-7b167fe9.js → shared-cfae0154.js} +1 -1
  157. package/dist/cdn/{shared-98652709.js → shared-d34586cb.js} +1 -1
  158. package/dist/cdn/shared-d4f80692.js +1 -0
  159. package/dist/cdn/{shared-2c842660.js → shared-d7e653ae.js} +1 -1
  160. package/dist/cdn/shared-d8b07f4f.js +1 -0
  161. package/dist/cdn/{shared-85f9051e.js → shared-db61a5e8.js} +1 -1
  162. package/dist/cdn/{shared-b0ff4590.js → shared-ddf10c04.js} +1 -1
  163. package/dist/cdn/{shared-d302ad2c.js → shared-ea67b3f3.js} +1 -1
  164. package/dist/cdn/translations/admin-subscription-card/en.json +27 -0
  165. package/dist/cdn/translations/applied-coupon-code-card/en.json +7 -0
  166. package/dist/cdn/translations/applied-coupon-code-form/en.json +26 -0
  167. package/dist/cdn/translations/cart-card/en.json +15 -0
  168. package/dist/cdn/translations/cart-form/en.json +762 -0
  169. package/dist/cdn/translations/coupon-card/en.json +2 -2
  170. package/dist/cdn/translations/customer-portal/en.json +9 -9
  171. package/dist/cdn/translations/subscription-form/en.json +116 -21
  172. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.d.ts +2 -0
  173. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js +4 -0
  174. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js.map +1 -1
  175. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +3 -3
  176. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +12 -10
  177. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  178. package/dist/elements/internal/InternalAsyncListControl/index.d.ts +1 -1
  179. package/dist/elements/internal/InternalAsyncListControl/index.js +1 -1
  180. package/dist/elements/internal/InternalAsyncListControl/index.js.map +1 -1
  181. package/dist/elements/internal/InternalCard/InternalCard.d.ts +1 -0
  182. package/dist/elements/internal/InternalCard/InternalCard.js +12 -4
  183. package/dist/elements/internal/InternalCard/InternalCard.js.map +1 -1
  184. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js +2 -1
  185. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js.map +1 -1
  186. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.d.ts +6 -1
  187. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +21 -0
  188. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -1
  189. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.d.ts +1 -0
  190. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js +6 -0
  191. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js.map +1 -1
  192. package/dist/elements/private/Dialog/Dialog.js +1 -0
  193. package/dist/elements/private/Dialog/Dialog.js.map +1 -1
  194. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.d.ts +40 -0
  195. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js +304 -0
  196. package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js.map +1 -0
  197. package/dist/elements/public/AdminSubscriptionCard/index.d.ts +4 -0
  198. package/dist/elements/public/AdminSubscriptionCard/index.js +6 -0
  199. package/dist/elements/public/AdminSubscriptionCard/index.js.map +1 -0
  200. package/dist/elements/public/AdminSubscriptionCard/types.d.ts +9 -0
  201. package/dist/elements/public/AdminSubscriptionCard/types.js +2 -0
  202. package/dist/elements/public/AdminSubscriptionCard/types.js.map +1 -0
  203. package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.d.ts +11 -0
  204. package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js +33 -0
  205. package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js.map +1 -0
  206. package/dist/elements/public/AppliedCouponCodeCard/index.d.ts +4 -0
  207. package/dist/elements/public/AppliedCouponCodeCard/index.js +6 -0
  208. package/dist/elements/public/AppliedCouponCodeCard/index.js.map +1 -0
  209. package/dist/elements/public/AppliedCouponCodeCard/types.d.ts +3 -0
  210. package/dist/elements/public/AppliedCouponCodeCard/types.js +2 -0
  211. package/dist/elements/public/AppliedCouponCodeCard/types.js.map +1 -0
  212. package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.d.ts +18 -0
  213. package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js +54 -0
  214. package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js.map +1 -0
  215. package/dist/elements/public/AppliedCouponCodeForm/index.d.ts +5 -0
  216. package/dist/elements/public/AppliedCouponCodeForm/index.js +7 -0
  217. package/dist/elements/public/AppliedCouponCodeForm/index.js.map +1 -0
  218. package/dist/elements/public/AppliedCouponCodeForm/types.d.ts +5 -0
  219. package/dist/elements/public/AppliedCouponCodeForm/types.js +2 -0
  220. package/dist/elements/public/AppliedCouponCodeForm/types.js.map +1 -0
  221. package/dist/elements/public/AttributeCard/AttributeCard.js +5 -4
  222. package/dist/elements/public/AttributeCard/AttributeCard.js.map +1 -1
  223. package/dist/elements/public/CartCard/CartCard.d.ts +42 -0
  224. package/dist/elements/public/CartCard/CartCard.js +264 -0
  225. package/dist/elements/public/CartCard/CartCard.js.map +1 -0
  226. package/dist/elements/public/CartCard/index.d.ts +5 -0
  227. package/dist/elements/public/CartCard/index.js +7 -0
  228. package/dist/elements/public/CartCard/index.js.map +1 -0
  229. package/dist/elements/public/CartCard/types.d.ts +5 -0
  230. package/dist/elements/public/CartCard/types.js +2 -0
  231. package/dist/elements/public/CartCard/types.js.map +1 -0
  232. package/dist/elements/public/CartForm/CartForm.d.ts +59 -0
  233. package/dist/elements/public/CartForm/CartForm.js +603 -0
  234. package/dist/elements/public/CartForm/CartForm.js.map +1 -0
  235. package/dist/elements/public/CartForm/index.d.ts +19 -0
  236. package/dist/elements/public/CartForm/index.js +21 -0
  237. package/dist/elements/public/CartForm/index.js.map +1 -0
  238. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.d.ts +10 -0
  239. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js +83 -0
  240. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js.map +1 -0
  241. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.d.ts +4 -0
  242. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js +6 -0
  243. package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js.map +1 -0
  244. package/dist/elements/public/CartForm/types.d.ts +3 -0
  245. package/dist/elements/public/CartForm/types.js +2 -0
  246. package/dist/elements/public/CartForm/types.js.map +1 -0
  247. package/dist/elements/public/CollectionPage/CollectionPage.js +11 -8
  248. package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
  249. package/dist/elements/public/CustomFieldCard/TwoLineCard.js +5 -4
  250. package/dist/elements/public/CustomFieldCard/TwoLineCard.js.map +1 -1
  251. package/dist/elements/public/CustomerCard/CustomerCard.js +1 -1
  252. package/dist/elements/public/CustomerCard/CustomerCard.js.map +1 -1
  253. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +3 -1
  254. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
  255. package/dist/elements/public/DiscountCard/DiscountCard.js +2 -1
  256. package/dist/elements/public/DiscountCard/DiscountCard.js.map +1 -1
  257. package/dist/elements/public/GiftCardCard/GiftCardCard.js +2 -2
  258. package/dist/elements/public/GiftCardCard/GiftCardCard.js.map +1 -1
  259. package/dist/elements/public/IntegrationCard/IntegrationCard.js +2 -2
  260. package/dist/elements/public/IntegrationCard/IntegrationCard.js.map +1 -1
  261. package/dist/elements/public/ItemCard/ItemCard.d.ts +26 -4
  262. package/dist/elements/public/ItemCard/ItemCard.js +216 -27
  263. package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
  264. package/dist/elements/public/ItemCard/index.d.ts +1 -0
  265. package/dist/elements/public/ItemCard/index.js +1 -0
  266. package/dist/elements/public/ItemCard/index.js.map +1 -1
  267. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.d.ts +3 -1
  268. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js +4 -3
  269. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js.map +1 -1
  270. package/dist/elements/public/ItemForm/ItemForm.d.ts +3 -0
  271. package/dist/elements/public/ItemForm/ItemForm.js +58 -8
  272. package/dist/elements/public/ItemForm/ItemForm.js.map +1 -1
  273. package/dist/elements/public/ItemOptionCard/ItemOptionCard.d.ts +25 -5
  274. package/dist/elements/public/ItemOptionCard/ItemOptionCard.js +200 -17
  275. package/dist/elements/public/ItemOptionCard/ItemOptionCard.js.map +1 -1
  276. package/dist/elements/public/ItemOptionCard/index.d.ts +1 -0
  277. package/dist/elements/public/ItemOptionCard/index.js +1 -0
  278. package/dist/elements/public/ItemOptionCard/index.js.map +1 -1
  279. package/dist/elements/public/NucleonElement/NucleonElement.js +25 -14
  280. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  281. package/dist/elements/public/Pagination/Pagination.js +2 -2
  282. package/dist/elements/public/Pagination/Pagination.js.map +1 -1
  283. package/dist/elements/public/StoreForm/StoreForm.js +1 -1
  284. package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
  285. package/dist/elements/public/SubscriptionForm/SubscriptionForm.d.ts +46 -14
  286. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +300 -156
  287. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
  288. package/dist/elements/public/SubscriptionForm/index.d.ts +9 -4
  289. package/dist/elements/public/SubscriptionForm/index.js +9 -4
  290. package/dist/elements/public/SubscriptionForm/index.js.map +1 -1
  291. package/dist/elements/public/SubscriptionForm/types.d.ts +2 -5
  292. package/dist/elements/public/SubscriptionForm/types.js.map +1 -1
  293. package/dist/elements/public/TransactionCard/TransactionCard.js +1 -1
  294. package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
  295. package/dist/elements/public/index.d.ts +5 -0
  296. package/dist/elements/public/index.defined.d.ts +5 -0
  297. package/dist/elements/public/index.defined.js +5 -0
  298. package/dist/elements/public/index.defined.js.map +1 -1
  299. package/dist/elements/public/index.js +5 -0
  300. package/dist/elements/public/index.js.map +1 -1
  301. package/dist/mixins/themeable.js +29 -8
  302. package/dist/mixins/themeable.js.map +1 -1
  303. package/package.json +1 -1
  304. package/dist/cdn/shared-1b3e1a0d.js +0 -1
  305. package/dist/cdn/shared-210387cb.js +0 -1
  306. package/dist/cdn/shared-222fe491.js +0 -1
  307. package/dist/cdn/shared-515f00b1.js +0 -1
  308. package/dist/cdn/shared-5643d0ed.js +0 -1
  309. package/dist/cdn/shared-62c8cfa2.js +0 -60
  310. package/dist/cdn/shared-6b622399.js +0 -1
  311. package/dist/cdn/shared-92926b1d.js +0 -1
  312. package/dist/cdn/shared-b7219771.js +0 -1
  313. package/dist/cdn/shared-dc798bf4.js +0 -1
  314. package/dist/cdn/shared-e08bcb6c.js +0 -1
  315. package/dist/cdn/shared-fdac2851.js +0 -1
@@ -24,8 +24,8 @@
24
24
  "repeat_quantity_percentage_discount_summary": "{{adjustment, percent}} on each {{from, ordinal}} item",
25
25
  "single_price_amount_discount_summary": "{{adjustment}}¤ after {{from}}",
26
26
  "single_price_percentage_discount_summary": "{{adjustment, percent}} after {{from}}",
27
- "single_quantity_amount_discount_summary": "{{adjustment}}¤ after {{from}} items",
28
- "single_quantity_percentage_discount_summary": "{{adjustment, percent}} after {{from}} items",
27
+ "single_quantity_amount_discount_summary": "{{adjustment}}¤ after {{from}} item(s)",
28
+ "single_quantity_percentage_discount_summary": "{{adjustment, percent}} after {{from}} item(s)",
29
29
  "uses_count": "{{count}} uses",
30
30
  "uses_to_total_count": "{{count}}/{{total}} uses",
31
31
  "spinner": {
@@ -116,11 +116,11 @@
116
116
  "loading_error": "Failed to load"
117
117
  },
118
118
  "subscription-card": {
119
- "daily": "Daily",
120
- "daily_plural": "Every {{count}} days",
119
+ "daily": "/ day",
120
+ "daily_plural": "/ {{count}} days",
121
121
  "frequency": "$t(customer.subscription-card.{{units}}, { \"count\": {{count}}, \"ns\": \"customer-portal\" })",
122
- "monthly": "Monthly",
123
- "monthly_plural": "Every {{count}} months",
122
+ "monthly": "/ month",
123
+ "monthly_plural": "/ {{count}} months",
124
124
  "price_recurring": "{{amount, price}} $t(customer.subscription-card.frequency, { \"count\": \"{{count}}\", \"units\": \"{{units}}\", \"ns\": \"customer-portal\" })",
125
125
  "price_twice_a_month": "{{amount, price}} $t(customer.subscription-card.twice_a_month, { \"ns\": \"customer-portal\" })",
126
126
  "subscription_active": "Next payment on {{date, date}}",
@@ -129,11 +129,11 @@
129
129
  "subscription_inactive": "Inactive",
130
130
  "subscription_will_be_cancelled": "Ends on {{date, date}}",
131
131
  "transaction_summary": "{{most_expensive_item.name}}",
132
- "twice_a_month": "Twice a month",
133
- "weekly": "Weekly",
134
- "weekly_plural": "Every {{count}} weeks",
135
- "yearly": "Yearly",
136
- "yearly_plural": "Every {{count}} years",
132
+ "twice_a_month": "twice a month",
133
+ "weekly": "/ week",
134
+ "weekly_plural": "/ {{count}} weeks",
135
+ "yearly": "/ year",
136
+ "yearly_plural": "/ {{count}} years",
137
137
  "spinner": {
138
138
  "loading_busy": "Loading",
139
139
  "loading_empty": "No subscriptions",
@@ -20,6 +20,7 @@
20
20
  "monthly": "Monthly",
21
21
  "monthly_plural": "Every {{count}} months",
22
22
  "next_transaction_date": "Next transaction date",
23
+ "start_date": "Start date",
23
24
  "price_recurring": "{{amount, price}} $t(frequency, { \"count\": \"{{count}}\", \"units\": \"{{units}}\", \"ns\": \"subscription-form\" })",
24
25
  "price_twice_a_month": "{{amount, price}} $t(twice_a_month, { \"ns\": \"subscription-form\" })",
25
26
  "subscription_active": "Next payment on {{date, date}}",
@@ -37,6 +38,117 @@
37
38
  "weekly_plural": "Every {{count}} weeks",
38
39
  "yearly": "Yearly",
39
40
  "yearly_plural": "Every {{count}} years",
41
+ "past-due-amount": {
42
+ "label": "Past due amount",
43
+ "placeholder": "",
44
+ "helper_text": "If a subscription payment is missed, this amount will be increased by that payment. The next time the subscription runs, it may be charged automatically depending on your store's subscription settings."
45
+ },
46
+ "attributes": {
47
+ "label": "Attributes",
48
+ "delete_confirm": "Delete",
49
+ "delete_cancel": "Cancel",
50
+ "delete_message": "Are you sure you'd like to remove this attribute? You won't be able to bring it back.",
51
+ "delete_header": "Delete attribute?",
52
+ "pagination": {
53
+ "create_button_text": "Add attribute",
54
+ "first": "First",
55
+ "last": "Last",
56
+ "next": "Next",
57
+ "pagination": "{{from}}-{{to}} out of {{total}}",
58
+ "previous": "Previous",
59
+ "card": {
60
+ "delete_button_text": "Remove",
61
+ "spinner": {
62
+ "loading_busy": "Loading",
63
+ "loading_empty": "No attributes",
64
+ "loading_error": "Failed to load"
65
+ }
66
+ }
67
+ },
68
+ "dialog": {
69
+ "close": "Close",
70
+ "header_update": "Attribute",
71
+ "header_create": "New attribute",
72
+ "save": "Save",
73
+ "undo_header": "Unsaved changes",
74
+ "undo_message": "Looks like you didn't save your changes! What would you like to do with them?",
75
+ "undo_cancel": "Review",
76
+ "undo_confirm": "Discard",
77
+ "cancel": "Cancel",
78
+ "confirm": "Confirm",
79
+ "create": "Create",
80
+ "date": "{{value, date}}",
81
+ "date_created": "Created on",
82
+ "date_modified": "Last updated",
83
+ "delete": "Delete",
84
+ "delete_prompt": "This attribute will be permanently removed. Are you sure?",
85
+ "name": "Name",
86
+ "v8n_required": "Required",
87
+ "v8n_too_long": "Too long",
88
+ "value": "Value",
89
+ "visibility": "Visibility",
90
+ "visibility_private": "Only me",
91
+ "visibility_public": "Everyone",
92
+ "visibility_restricted": "Store admins",
93
+ "spinner": {
94
+ "loading_busy": "Loading",
95
+ "loading_error": "Failed to load"
96
+ }
97
+ }
98
+ },
99
+ "items": {
100
+ "pagination": {
101
+ "first": "First",
102
+ "last": "Last",
103
+ "next": "Next",
104
+ "pagination": "{{from}}-{{to}} out of {{total}}",
105
+ "previous": "Previous",
106
+ "card": {
107
+ "price": "{{amount, price}}",
108
+ "wgt": "WGT",
109
+ "spinner": {
110
+ "loading_busy": "Loading",
111
+ "loading_empty": "No items",
112
+ "loading_error": "Failed to load"
113
+ }
114
+ }
115
+ }
116
+ },
117
+ "transactions": {
118
+ "label": "Transactions",
119
+ "pagination": {
120
+ "first": "First",
121
+ "last": "Last",
122
+ "next": "Next",
123
+ "pagination": "{{from}}-{{to}} out of {{total}}",
124
+ "previous": "Previous",
125
+ "card": {
126
+ "code": "Code",
127
+ "customer": "Customer",
128
+ "description": "Description",
129
+ "price": "{{amount, price}}",
130
+ "time": "{{value, date}}",
131
+ "transaction_approved": "Approved",
132
+ "transaction_authorized": "Authorized",
133
+ "transaction_captured": "Captured",
134
+ "transaction_completed": "Completed",
135
+ "transaction_declined": "Declined",
136
+ "transaction_pending": "Pending",
137
+ "transaction_plural": "Transactions",
138
+ "transaction_refunded": "Refunded",
139
+ "transaction_rejected": "Rejected",
140
+ "transaction_summary": "{{most_expensive_item.name}}",
141
+ "transaction_summary_plural": "{{most_expensive_item.name}} and {{count}} more",
142
+ "transaction_verified": "Verified",
143
+ "transaction_voided": "Voided",
144
+ "spinner": {
145
+ "loading_busy": "Loading",
146
+ "loading_empty": "No transactions",
147
+ "loading_error": "Failed to load"
148
+ }
149
+ }
150
+ }
151
+ },
40
152
  "cancellation-form": {
41
153
  "end_date": "End date",
42
154
  "end_subscription": "End subscription",
@@ -51,26 +163,9 @@
51
163
  "loading_busy": "Loading",
52
164
  "loading_error": "Failed to load"
53
165
  },
54
- "transactions-table": {
55
- "date": "{{value, date}}",
56
- "price": "{{amount, price}}",
57
- "receipt": "Receipt",
58
- "transaction_approved": "Approved",
59
- "transaction_authorized": "Authorized",
60
- "transaction_captured": "Captured",
61
- "transaction_completed": "Completed",
62
- "transaction_declined": "Declined",
63
- "transaction_pending": "Pending",
64
- "transaction_refunded": "Refunded",
65
- "transaction_rejected": "Rejected",
66
- "transaction_summary": "{{most_expensive_item.name}}",
67
- "transaction_summary_plural": "{{most_expensive_item.name}} and {{count}} more",
68
- "transaction_verified": "Verified",
69
- "transaction_voided": "Voided",
70
- "spinner": {
71
- "loading_busy": "Loading",
72
- "loading_empty": "No data",
73
- "loading_error": "Failed to load"
74
- }
166
+ "timestamps": {
167
+ "date_created": "Created on",
168
+ "date_modified": "Last updated",
169
+ "date": "{{value, date}}"
75
170
  }
76
171
  }
@@ -11,6 +11,8 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
11
11
  */
12
12
  export declare class InternalAsyncComboBoxControl extends InternalEditableControl {
13
13
  static get properties(): PropertyDeclarations;
14
+ /** Same as `allowCustomValue` property of Vaadin's `ComboBoxElement`. */
15
+ allowCustomValue: boolean;
14
16
  /** Same as `itemLabelPath` property of Vaadin's `ComboBoxElement`. */
15
17
  itemLabelPath: string | null;
16
18
  /** Same as `itemValuePath` property of Vaadin's `ComboBoxElement`. */
@@ -12,6 +12,8 @@ import { API } from "../../public/NucleonElement/API.js";
12
12
  export class InternalAsyncComboBoxControl extends InternalEditableControl {
13
13
  constructor() {
14
14
  super(...arguments);
15
+ /** Same as `allowCustomValue` property of Vaadin's `ComboBoxElement`. */
16
+ this.allowCustomValue = false;
15
17
  /** Same as `itemLabelPath` property of Vaadin's `ComboBoxElement`. */
16
18
  this.itemLabelPath = null;
17
19
  /** Same as `itemValuePath` property of Vaadin's `ComboBoxElement`. */
@@ -39,6 +41,7 @@ export class InternalAsyncComboBoxControl extends InternalEditableControl {
39
41
  static get properties() {
40
42
  return {
41
43
  ...super.properties,
44
+ allowCustomValue: { type: Boolean, attribute: 'allow-custom-value' },
42
45
  itemLabelPath: { type: String, attribute: 'item-label-path' },
43
46
  itemValuePath: { type: String, attribute: 'item-value-path' },
44
47
  selectedItem: { attribute: false },
@@ -57,6 +60,7 @@ export class InternalAsyncComboBoxControl extends InternalEditableControl {
57
60
  placeholder=${this.placeholder}
58
61
  label=${this.label}
59
62
  class="w-full"
63
+ ?allow-custom-value=${this.allowCustomValue}
60
64
  ?disabled=${this.disabled}
61
65
  ?readonly=${this.readonly}
62
66
  clear-button-visible
@@ -1 +1 @@
1
- {"version":3,"file":"InternalAsyncComboBoxControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComboBoxDataProvider, ComboBoxElement, ComboBoxItem } from '@vaadin/vaadin-combo-box';\nimport type { TemplateResult } from 'lit-html';\n\nimport { PropertyDeclarations } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { API } from '../../public/NucleonElement/API';\n\n/**\n * Internal control displaying a combo box where items are loaded from\n * a hAPI collection.\n *\n * @since 1.17.0\n * @element foxy-internal-async-combo-box-control\n */\nexport class InternalAsyncComboBoxControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n itemLabelPath: { type: String, attribute: 'item-label-path' },\n itemValuePath: { type: String, attribute: 'item-value-path' },\n selectedItem: { attribute: false },\n first: { type: String },\n };\n }\n\n /** Same as `itemLabelPath` property of Vaadin's `ComboBoxElement`. */\n itemLabelPath: string | null = null;\n\n /** Same as `itemValuePath` property of Vaadin's `ComboBoxElement`. */\n itemValuePath: string | null = null;\n\n selectedItem: ComboBoxItem | string | undefined = undefined;\n\n /** URL of the first page of the hAPI collection serving as a source for items. */\n first: string | null = null;\n\n private __dataProvider: ComboBoxDataProvider = async (params, callback) => {\n if (!this.first) return callback([], 0);\n\n const url = new URL(this.first);\n url.searchParams.set('offset', String(params.page * params.pageSize));\n url.searchParams.set('limit', String(params.pageSize));\n\n if (params.filter && this.itemLabelPath) {\n url.searchParams.set(this.itemLabelPath, `*${params.filter}*`);\n }\n\n const response = await new API(this).fetch(url.toString());\n if (!response.ok) throw new Error(await response.text());\n\n const json = await response.json();\n const items = Array.from(Object.values(json._embedded))[0] as unknown[];\n\n callback(items, json.total_items);\n };\n\n renderControl(): TemplateResult {\n return html`\n <vaadin-combo-box\n item-value-path=${ifDefined(this.itemValuePath ?? undefined)}\n item-label-path=${ifDefined(this.itemLabelPath ?? undefined)}\n error-message=${ifDefined(this._errorMessage)}\n item-id-path=\"_links.self.href\"\n helper-text=${this.helperText}\n placeholder=${this.placeholder}\n label=${this.label}\n class=\"w-full\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n clear-button-visible\n .checkValidity=${this._checkValidity}\n .dataProvider=${this.__dataProvider}\n .selectedItem=${this.selectedItem}\n .value=${this._value}\n @change=${(evt: CustomEvent) => {\n evt.stopPropagation();\n\n const comboBox = evt.currentTarget as ComboBoxElement;\n this._value = comboBox.value;\n\n if (this._value === comboBox.value) {\n this.selectedItem = comboBox.selectedItem;\n this.dispatchEvent(new CustomEvent('selected-item-changed'));\n } else {\n comboBox.value = this._value;\n }\n }}\n >\n </vaadin-combo-box>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (changes.has('first') || changes.has('itemLabelPath')) {\n const comboBox = this.renderRoot.querySelector<ComboBoxElement>('vaadin-combo-box');\n\n // this forces reload\n if (comboBox) {\n comboBox.size = 0;\n comboBox.size = 1;\n }\n }\n }\n\n protected get _value(): string {\n return (super._value as string | undefined) ?? '';\n }\n\n protected set _value(newValue: string) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalAsyncComboBoxControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComboBoxDataProvider, ComboBoxElement, ComboBoxItem } from '@vaadin/vaadin-combo-box';\nimport type { TemplateResult } from 'lit-html';\n\nimport { PropertyDeclarations } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { API } from '../../public/NucleonElement/API';\n\n/**\n * Internal control displaying a combo box where items are loaded from\n * a hAPI collection.\n *\n * @since 1.17.0\n * @element foxy-internal-async-combo-box-control\n */\nexport class InternalAsyncComboBoxControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n allowCustomValue: { type: Boolean, attribute: 'allow-custom-value' },\n itemLabelPath: { type: String, attribute: 'item-label-path' },\n itemValuePath: { type: String, attribute: 'item-value-path' },\n selectedItem: { attribute: false },\n first: { type: String },\n };\n }\n\n /** Same as `allowCustomValue` property of Vaadin's `ComboBoxElement`. */\n allowCustomValue = false;\n\n /** Same as `itemLabelPath` property of Vaadin's `ComboBoxElement`. */\n itemLabelPath: string | null = null;\n\n /** Same as `itemValuePath` property of Vaadin's `ComboBoxElement`. */\n itemValuePath: string | null = null;\n\n selectedItem: ComboBoxItem | string | undefined = undefined;\n\n /** URL of the first page of the hAPI collection serving as a source for items. */\n first: string | null = null;\n\n private __dataProvider: ComboBoxDataProvider = async (params, callback) => {\n if (!this.first) return callback([], 0);\n\n const url = new URL(this.first);\n url.searchParams.set('offset', String(params.page * params.pageSize));\n url.searchParams.set('limit', String(params.pageSize));\n\n if (params.filter && this.itemLabelPath) {\n url.searchParams.set(this.itemLabelPath, `*${params.filter}*`);\n }\n\n const response = await new API(this).fetch(url.toString());\n if (!response.ok) throw new Error(await response.text());\n\n const json = await response.json();\n const items = Array.from(Object.values(json._embedded))[0] as unknown[];\n\n callback(items, json.total_items);\n };\n\n renderControl(): TemplateResult {\n return html`\n <vaadin-combo-box\n item-value-path=${ifDefined(this.itemValuePath ?? undefined)}\n item-label-path=${ifDefined(this.itemLabelPath ?? undefined)}\n error-message=${ifDefined(this._errorMessage)}\n item-id-path=\"_links.self.href\"\n helper-text=${this.helperText}\n placeholder=${this.placeholder}\n label=${this.label}\n class=\"w-full\"\n ?allow-custom-value=${this.allowCustomValue}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n clear-button-visible\n .checkValidity=${this._checkValidity}\n .dataProvider=${this.__dataProvider}\n .selectedItem=${this.selectedItem}\n .value=${this._value}\n @change=${(evt: CustomEvent) => {\n evt.stopPropagation();\n\n const comboBox = evt.currentTarget as ComboBoxElement;\n this._value = comboBox.value;\n\n if (this._value === comboBox.value) {\n this.selectedItem = comboBox.selectedItem;\n this.dispatchEvent(new CustomEvent('selected-item-changed'));\n } else {\n comboBox.value = this._value;\n }\n }}\n >\n </vaadin-combo-box>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (changes.has('first') || changes.has('itemLabelPath')) {\n const comboBox = this.renderRoot.querySelector<ComboBoxElement>('vaadin-combo-box');\n\n // this forces reload\n if (comboBox) {\n comboBox.size = 0;\n comboBox.size = 1;\n }\n }\n }\n\n protected get _value(): string {\n return (super._value as string | undefined) ?? '';\n }\n\n protected set _value(newValue: string) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import type { PropertyDeclarations, TemplateResult } from 'lit-element';
2
2
  import type { CollectionPage } from '../../public';
3
3
  import type { FormDialog } from '../../index';
4
- import { InternalControl } from '../InternalControl/InternalControl';
5
- export declare class InternalAsyncListControl extends InternalControl {
4
+ import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
5
+ export declare class InternalAsyncListControl extends InternalEditableControl {
6
6
  static get properties(): PropertyDeclarations;
7
7
  /** Same as the `related` property of `NucleonElement`. */
8
8
  related: string[];
@@ -23,7 +23,7 @@ export declare class InternalAsyncListControl extends InternalControl {
23
23
  /** Hides Create button if true. */
24
24
  hideCreateButton: boolean;
25
25
  /** If set, renders list items as <a> tags. */
26
- getPageHref: ((itemHref: string) => string) | null;
26
+ getPageHref: ((itemHref: string, item: unknown) => string) | null;
27
27
  private __deletionConfimationCallback;
28
28
  private __cachedCardRenderer;
29
29
  private __itemRenderer;
@@ -1,7 +1,7 @@
1
- import { InternalControl } from "../InternalControl/InternalControl.js";
1
+ import { InternalEditableControl } from "../InternalEditableControl/InternalEditableControl.js";
2
2
  import { classMap } from "../../../utils/class-map.js";
3
3
  import { html } from 'lit-element';
4
- export class InternalAsyncListControl extends InternalControl {
4
+ export class InternalAsyncListControl extends InternalEditableControl {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  /** Same as the `related` property of `NucleonElement`. */
@@ -33,8 +33,8 @@ export class InternalAsyncListControl extends InternalControl {
33
33
  const card = this.__cardRenderer(ctx);
34
34
  let clickableItem;
35
35
  const wrapperClass = classMap({
36
- 'rounded-t-l': !ctx.previous,
37
- 'rounded-b-l': !ctx.next,
36
+ 'rounded-t': !ctx.previous,
37
+ 'rounded-b': !ctx.next,
38
38
  'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,
39
39
  'text-left w-full block transition-colors': true,
40
40
  'hover-bg-contrast-5': !isDisabled,
@@ -44,7 +44,7 @@ export class InternalAsyncListControl extends InternalControl {
44
44
  clickableItem = html `<div class=${wrapperClass}>${card}</div>`;
45
45
  }
46
46
  else {
47
- const href = this.getPageHref(ctx.href);
47
+ const href = this.getPageHref(ctx.href, ctx.data);
48
48
  clickableItem = html `<a class=${wrapperClass} href=${href}>${card}</a>`;
49
49
  }
50
50
  }
@@ -68,7 +68,7 @@ export class InternalAsyncListControl extends InternalControl {
68
68
 
69
69
  <vaadin-button
70
70
  theme="primary error"
71
- class="h-full rounded-t-l rounded-b-l"
71
+ class="h-full"
72
72
  slot="action"
73
73
  @click=${(evt) => {
74
74
  const button = evt.currentTarget;
@@ -149,10 +149,13 @@ export class InternalAsyncListControl extends InternalControl {
149
149
  `}
150
150
  `
151
151
  : ''}
152
+ ${this.label && this.label !== 'label'
153
+ ? html `<div class="font-medium text-secondary text-s mb-xs">${this.label}</div>`
154
+ : ''}
152
155
 
153
156
  <foxy-pagination first=${first} infer="pagination">
154
157
  <foxy-collection-page
155
- class="mb-s block divide-y divide-contrast-5 rounded-t-l rounded-b-l overflow-hidden bg-contrast-5"
158
+ class="mb-s block divide-y divide-contrast-5 rounded overflow-hidden bg-contrast-5"
156
159
  infer="card"
157
160
  .related=${this.related}
158
161
  .item=${this.__itemRenderer}
@@ -163,7 +166,7 @@ export class InternalAsyncListControl extends InternalControl {
163
166
  ? ''
164
167
  : html `
165
168
  <vaadin-button
166
- class="mb-s bg-success-10 w-full rounded-t-l rounded-b-l"
169
+ class="mb-s w-full"
167
170
  theme="success"
168
171
  ?disabled=${this.disabled}
169
172
  @click=${(evt) => {
@@ -177,7 +180,6 @@ export class InternalAsyncListControl extends InternalControl {
177
180
  }}
178
181
  >
179
182
  <foxy-i18n infer="" key="create_button_text"></foxy-i18n>
180
- <iron-icon class="icon-inline" icon="icons:add"></iron-icon>
181
183
  </vaadin-button>
182
184
  `}
183
185
  </foxy-pagination>
@@ -192,7 +194,7 @@ export class InternalAsyncListControl extends InternalControl {
192
194
  this.__cachedCardRenderer = {
193
195
  item: this.item,
194
196
  render: typeof this.item === 'string'
195
- ? new Function('ctx', `return ctx.html\`<${this.item} related=\${JSON.stringify(ctx.related)} parent=\${ctx.parent} class="p-m" infer href=\${ctx.href}></${this.item}>\``)
197
+ ? new Function('ctx', `return ctx.html\`<${this.item} related=\${JSON.stringify(ctx.related)} parent=\${ctx.parent} style="padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)" infer href=\${ctx.href}></${this.item}>\``)
196
198
  : this.item,
197
199
  };
198
200
  }
@@ -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';\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 { InternalControl } from '../InternalControl/InternalControl';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-element';\n\nexport class InternalAsyncListControl extends InternalControl {\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: { type: String },\n limit: { type: Number },\n form: { type: String },\n item: { type: String },\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 = '';\n\n /** Same as the `form` property of `FormDialog`. If set, will open a dialog on item click. */\n form: FormDialog['form'] = '';\n\n /** Same as the `item` property of `CollectionPage`. */\n item: CollectionPage<any>['item'] = '';\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) => 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-l': !ctx.previous,\n 'rounded-b-l': !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);\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 rounded-t-l rounded-b-l\"\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;\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 = this.first;\n }\n\n return html`\n ${this.form\n ? html`\n <foxy-form-dialog\n parent=${first}\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 ${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 lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => {\n if (!evt.detail.cancelled) this.__deletionConfimationCallback?.();\n }}\n >\n </foxy-internal-confirm-dialog>\n `}\n `\n : ''}\n\n <foxy-pagination first=${first} infer=\"pagination\">\n <foxy-collection-page\n class=\"mb-s block divide-y divide-contrast-5 rounded-t-l rounded-b-l 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 bg-success-10 w-full rounded-t-l rounded-b-l\"\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 <iron-icon class=\"icon-inline\" icon=\"icons:add\"></iron-icon>\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 if (this.__cachedCardRenderer?.item !== this.item) {\n this.__cachedCardRenderer = {\n item: this.item,\n render:\n typeof this.item === 'string'\n ? (new Function(\n 'ctx',\n `return ctx.html\\`<${this.item} related=\\${JSON.stringify(ctx.related)} parent=\\${ctx.parent} class=\"p-m\" infer href=\\${ctx.href}></${this.item}>\\``\n ) as ItemRenderer)\n : this.item,\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';\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 { 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: { type: String },\n limit: { type: Number },\n form: { type: String },\n item: { type: String },\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 = '';\n\n /** Same as the `form` property of `FormDialog`. If set, will open a dialog on item click. */\n form: FormDialog['form'] = '';\n\n /** Same as the `item` property of `CollectionPage`. */\n item: CollectionPage<any>['item'] = '';\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;\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 = this.first;\n }\n\n return html`\n ${this.form\n ? html`\n <foxy-form-dialog\n parent=${first}\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 ${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 lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => {\n if (!evt.detail.cancelled) this.__deletionConfimationCallback?.();\n }}\n >\n </foxy-internal-confirm-dialog>\n `}\n `\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=${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 if (this.__cachedCardRenderer?.item !== this.item) {\n this.__cachedCardRenderer = {\n item: this.item,\n render:\n typeof this.item === 'string'\n ? (new Function(\n 'ctx',\n `return ctx.html\\`<${this.item} related=\\${JSON.stringify(ctx.related)} parent=\\${ctx.parent} style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\" infer href=\\${ctx.href}></${this.item}>\\``\n ) as ItemRenderer)\n : this.item,\n };\n }\n\n return this.__cachedCardRenderer.render;\n }\n}\n"]}
@@ -6,7 +6,7 @@ import '../../public/SwipeActions/index';
6
6
  import '../../public/FormDialog/index';
7
7
  import '../../public/Pagination/index';
8
8
  import '../../public/I18n/index';
9
+ import '../InternalEditableControl/index';
9
10
  import '../InternalConfirmDialog/index';
10
- import '../InternalControl/index';
11
11
  import { InternalAsyncListControl as Control } from './InternalAsyncListControl';
12
12
  export { Control as InternalAsyncListControl };
@@ -6,8 +6,8 @@ import "../../public/SwipeActions/index.js";
6
6
  import "../../public/FormDialog/index.js";
7
7
  import "../../public/Pagination/index.js";
8
8
  import "../../public/I18n/index.js";
9
+ import "../InternalEditableControl/index.js";
9
10
  import "../InternalConfirmDialog/index.js";
10
- import "../InternalControl/index.js";
11
11
  import { InternalAsyncListControl as Control } from "./InternalAsyncListControl.js";
12
12
  customElements.define('foxy-internal-async-list-control', Control);
13
13
  export { Control as InternalAsyncListControl };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncListControl/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAE5B,8CAA2C;AAC3C,4CAAyC;AACzC,0CAAuC;AACvC,0CAAuC;AACvC,oCAAiC;AAEjC,2CAAwC;AACxC,qCAAkC;AAElC,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AAEjF,cAAc,CAAC,MAAM,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;AAEnE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\nimport '@polymer/iron-icons';\nimport '@polymer/iron-icon';\n\nimport '../../public/CollectionPage/index';\nimport '../../public/SwipeActions/index';\nimport '../../public/FormDialog/index';\nimport '../../public/Pagination/index';\nimport '../../public/I18n/index';\n\nimport '../InternalConfirmDialog/index';\nimport '../InternalControl/index';\n\nimport { InternalAsyncListControl as Control } from './InternalAsyncListControl';\n\ncustomElements.define('foxy-internal-async-list-control', Control);\n\nexport { Control as InternalAsyncListControl };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncListControl/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAE5B,8CAA2C;AAC3C,4CAAyC;AACzC,0CAAuC;AACvC,0CAAuC;AACvC,oCAAiC;AAEjC,6CAA0C;AAC1C,2CAAwC;AAExC,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AAEjF,cAAc,CAAC,MAAM,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;AAEnE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\nimport '@polymer/iron-icons';\nimport '@polymer/iron-icon';\n\nimport '../../public/CollectionPage/index';\nimport '../../public/SwipeActions/index';\nimport '../../public/FormDialog/index';\nimport '../../public/Pagination/index';\nimport '../../public/I18n/index';\n\nimport '../InternalEditableControl/index';\nimport '../InternalConfirmDialog/index';\n\nimport { InternalAsyncListControl as Control } from './InternalAsyncListControl';\n\ncustomElements.define('foxy-internal-async-list-control', Control);\n\nexport { Control as InternalAsyncListControl };\n"]}
@@ -17,5 +17,6 @@ export declare class InternalCard<TData extends Data> extends InternalCard_base<
17
17
  */
18
18
  renderBody(): TemplateResult;
19
19
  render(): TemplateResult;
20
+ protected get _isBodyReady(): boolean;
20
21
  }
21
22
  export {};
@@ -17,6 +17,11 @@ export class InternalCard extends ThemeableMixin(NucleonElement) {
17
17
  return html ``;
18
18
  }
19
19
  render() {
20
+ const spinnerState = this.in('fail')
21
+ ? 'error'
22
+ : this.in({ idle: 'template' })
23
+ ? 'empty'
24
+ : 'busy';
20
25
  return html `
21
26
  <div
22
27
  aria-busy=${this.in('busy')}
@@ -26,7 +31,7 @@ export class InternalCard extends ThemeableMixin(NucleonElement) {
26
31
  <div
27
32
  class=${classMap({
28
33
  'transition duration-500 ease-in-out': true,
29
- 'opacity-0 pointer-events-none': !this.in({ idle: 'snapshot' }),
34
+ 'opacity-0 pointer-events-none': !this._isBodyReady,
30
35
  })}
31
36
  >
32
37
  ${this.renderBody()}
@@ -35,12 +40,12 @@ export class InternalCard extends ThemeableMixin(NucleonElement) {
35
40
  <div
36
41
  class=${classMap({
37
42
  'transition duration-500 ease-in-out absolute inset-0 flex': true,
38
- 'opacity-0 pointer-events-none': this.in({ idle: 'snapshot' }),
43
+ 'opacity-0 pointer-events-none': this._isBodyReady,
39
44
  })}
40
45
  >
41
46
  <foxy-spinner
42
- layout=${this.in('busy') ? 'no-label' : 'horizontal'}
43
- state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}
47
+ layout=${spinnerState === 'busy' ? 'no-label' : 'horizontal'}
48
+ state=${spinnerState}
44
49
  class="m-auto"
45
50
  infer="spinner"
46
51
  >
@@ -49,5 +54,8 @@ export class InternalCard extends ThemeableMixin(NucleonElement) {
49
54
  </div>
50
55
  `;
51
56
  }
57
+ get _isBodyReady() {
58
+ return !!this.data;
59
+ }
52
60
  }
53
61
  //# sourceMappingURL=InternalCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InternalCard.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalCard/InternalCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,OAAO,YAAiC,SAAQ,cAAc,CAAC,cAAc,CAAQ;IACzF;;;OAGG;IACH,UAAU;QACR,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;oBAEK,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;;;;;kBAKjB,QAAQ,CAAC;YACf,qCAAqC,EAAE,IAAI;YAC3C,+BAA+B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SAChE,CAAC;;YAEA,IAAI,CAAC,UAAU,EAAE;;;;kBAIX,QAAQ,CAAC;YACf,2DAA2D,EAAE,IAAI;YACjE,+BAA+B,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SAC/D,CAAC;;;qBAGS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;oBAC5C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;;;;;;;KAO3F,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { HALJSONResource as Data } from '../../public/NucleonElement/types';\nimport type { TemplateResult } from 'lit-html';\n\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\n/**\n * Internal base element for cards.\n *\n * @since 1.17.0\n * @element foxy-internal-card\n */\nexport class InternalCard<TData extends Data> extends ThemeableMixin(NucleonElement)<TData> {\n /**\n * Invoked together with `.render()` to obtain a template for card contents.\n * When extending `InternalCard`, prefer overriding this method to `.render()`.\n */\n renderBody(): TemplateResult {\n return html``;\n }\n\n render(): TemplateResult {\n return html`\n <div\n aria-busy=${this.in('busy')}\n aria-live=\"polite\"\n class=\"relative leading-m text-body text-m font-lumo\"\n >\n <div\n class=${classMap({\n 'transition duration-500 ease-in-out': true,\n 'opacity-0 pointer-events-none': !this.in({ idle: 'snapshot' }),\n })}\n >\n ${this.renderBody()}\n </div>\n\n <div\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': this.in({ idle: 'snapshot' }),\n })}\n >\n <foxy-spinner\n layout=${this.in('busy') ? 'no-label' : 'horizontal'}\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n class=\"m-auto\"\n infer=\"spinner\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalCard.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalCard/InternalCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,OAAO,YAAiC,SAAQ,cAAc,CAAC,cAAc,CAAQ;IACzF;;;OAGG;IACH,UAAU;QACR,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBAC/B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,MAAM,CAAC;QAEX,OAAO,IAAI,CAAA;;oBAEK,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;;;;;kBAKjB,QAAQ,CAAC;YACf,qCAAqC,EAAE,IAAI;YAC3C,+BAA+B,EAAE,CAAC,IAAI,CAAC,YAAY;SACpD,CAAC;;YAEA,IAAI,CAAC,UAAU,EAAE;;;;kBAIX,QAAQ,CAAC;YACf,2DAA2D,EAAE,IAAI;YACjE,+BAA+B,EAAE,IAAI,CAAC,YAAY;SACnD,CAAC;;;qBAGS,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;oBACpD,YAAY;;;;;;;KAO3B,CAAC;IACJ,CAAC;IAED,IAAc,YAAY;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACF","sourcesContent":["import type { HALJSONResource as Data } from '../../public/NucleonElement/types';\nimport type { TemplateResult } from 'lit-html';\n\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\n/**\n * Internal base element for cards.\n *\n * @since 1.17.0\n * @element foxy-internal-card\n */\nexport class InternalCard<TData extends Data> extends ThemeableMixin(NucleonElement)<TData> {\n /**\n * Invoked together with `.render()` to obtain a template for card contents.\n * When extending `InternalCard`, prefer overriding this method to `.render()`.\n */\n renderBody(): TemplateResult {\n return html``;\n }\n\n render(): TemplateResult {\n const spinnerState = this.in('fail')\n ? 'error'\n : this.in({ idle: 'template' })\n ? 'empty'\n : 'busy';\n\n return html`\n <div\n aria-busy=${this.in('busy')}\n aria-live=\"polite\"\n class=\"relative leading-m text-body text-m font-lumo\"\n >\n <div\n class=${classMap({\n 'transition duration-500 ease-in-out': true,\n 'opacity-0 pointer-events-none': !this._isBodyReady,\n })}\n >\n ${this.renderBody()}\n </div>\n\n <div\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': this._isBodyReady,\n })}\n >\n <foxy-spinner\n layout=${spinnerState === 'busy' ? 'no-label' : 'horizontal'}\n state=${spinnerState}\n class=\"m-auto\"\n infer=\"spinner\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected get _isBodyReady(): boolean {\n return !!this.data;\n }\n}\n"]}
@@ -119,10 +119,11 @@ vaadin-combo-box::part(text-field){
119
119
  `;
120
120
  }
121
121
  updated(changes) {
122
+ var _a;
122
123
  super.updated(changes);
123
124
  const field = this.renderRoot.querySelector('vaadin-custom-field');
124
125
  if (field && field.value !== this._value)
125
- field.value = this._value;
126
+ field.value = ((_a = this._value) !== null && _a !== void 0 ? _a : '');
126
127
  }
127
128
  }
128
129
  //# sourceMappingURL=InternalFrequencyControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InternalFrequencyControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalFrequencyControl/InternalFrequencyControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CustomFieldElement, CustomFieldI18n } from '@vaadin/vaadin-custom-field';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { css, html } from 'lit-element';\n\n/**\n * Internal control displaying a custom field for frequency input.\n *\n * @since 1.17.0\n * @element foxy-internal-frequency-control\n */\nexport class InternalFrequencyControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { attribute: false },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n display: block;\n }\n\n vaadin-custom-field {\n width: 100%;\n font-size: 0;\n line-height: 0;\n padding-top: 0 !important;\n }\n\n vaadin-custom-field::part(label) {\n padding-bottom: var(--lumo-space-s);\n }\n\n vaadin-custom-field::part(error-message)[aria-hidden='false'] {\n padding-top: var(--lumo-space-xs);\n }\n\n vaadin-integer-field,\n vaadin-combo-box {\n width: calc(50% - (var(--lumo-space-s) / 2));\n }\n\n vaadin-integer-field {\n margin-right: var(--lumo-space-s);\n padding: 0;\n }\n\n vaadin-combo-box::part(text-field) {\n padding: 0;\n }\n `,\n ];\n }\n\n options = [\n { value: 'd', label: 'day' },\n { value: 'w', label: 'week' },\n { value: 'm', label: 'month' },\n { value: 'y', label: 'year' },\n ];\n\n private __i18n: CustomFieldI18n = {\n formatValue: inputValues => inputValues.join(''),\n parseValue: value => {\n const normalizedValue = value.startsWith('.') ? `0${value}` : value;\n const count = parseFloat(value.substring(0, Math.max(normalizedValue.length - 1, 0)));\n const units = normalizedValue[normalizedValue.length - 1] ?? '';\n\n return isNaN(count) ? ['0', ''] : [count.toString(), units];\n },\n };\n\n renderControl(): TemplateResult {\n const value = (this._value ?? '') as string;\n const count = parseFloat(this.__i18n.parseValue(value)[0] as string);\n const items = this.options.map(({ value, label }) => ({\n label: this.t(label, { count }),\n value,\n }));\n\n return html`\n <vaadin-custom-field\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .errorMessage=${this._errorMessage ?? ''}\n .helperText=${this.helperText}\n .label=${this.label}\n .value=${value}\n .i18n=${this.__i18n}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as CustomFieldElement;\n this._value = field.value as string;\n }}\n >\n <vaadin-integer-field\n max=\"999\"\n min=\"1\"\n prevent-invalid-input\n has-controls\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-integer-field>\n\n <vaadin-combo-box\n item-value-path=\"value\"\n item-label-path=\"label\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n .items=${items}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-combo-box>\n </vaadin-custom-field>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n const field = this.renderRoot.querySelector('vaadin-custom-field');\n if (field && field.value !== this._value) field.value = this._value as string;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalFrequencyControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalFrequencyControl/InternalFrequencyControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CustomFieldElement, CustomFieldI18n } from '@vaadin/vaadin-custom-field';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { css, html } from 'lit-element';\n\n/**\n * Internal control displaying a custom field for frequency input.\n *\n * @since 1.17.0\n * @element foxy-internal-frequency-control\n */\nexport class InternalFrequencyControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { attribute: false },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n display: block;\n }\n\n vaadin-custom-field {\n width: 100%;\n font-size: 0;\n line-height: 0;\n padding-top: 0 !important;\n }\n\n vaadin-custom-field::part(label) {\n padding-bottom: var(--lumo-space-s);\n }\n\n vaadin-custom-field::part(error-message)[aria-hidden='false'] {\n padding-top: var(--lumo-space-xs);\n }\n\n vaadin-integer-field,\n vaadin-combo-box {\n width: calc(50% - (var(--lumo-space-s) / 2));\n }\n\n vaadin-integer-field {\n margin-right: var(--lumo-space-s);\n padding: 0;\n }\n\n vaadin-combo-box::part(text-field) {\n padding: 0;\n }\n `,\n ];\n }\n\n options = [\n { value: 'd', label: 'day' },\n { value: 'w', label: 'week' },\n { value: 'm', label: 'month' },\n { value: 'y', label: 'year' },\n ];\n\n private __i18n: CustomFieldI18n = {\n formatValue: inputValues => inputValues.join(''),\n parseValue: value => {\n const normalizedValue = value.startsWith('.') ? `0${value}` : value;\n const count = parseFloat(value.substring(0, Math.max(normalizedValue.length - 1, 0)));\n const units = normalizedValue[normalizedValue.length - 1] ?? '';\n\n return isNaN(count) ? ['0', ''] : [count.toString(), units];\n },\n };\n\n renderControl(): TemplateResult {\n const value = (this._value ?? '') as string;\n const count = parseFloat(this.__i18n.parseValue(value)[0] as string);\n const items = this.options.map(({ value, label }) => ({\n label: this.t(label, { count }),\n value,\n }));\n\n return html`\n <vaadin-custom-field\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .errorMessage=${this._errorMessage ?? ''}\n .helperText=${this.helperText}\n .label=${this.label}\n .value=${value}\n .i18n=${this.__i18n}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as CustomFieldElement;\n this._value = field.value as string;\n }}\n >\n <vaadin-integer-field\n max=\"999\"\n min=\"1\"\n prevent-invalid-input\n has-controls\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-integer-field>\n\n <vaadin-combo-box\n item-value-path=\"value\"\n item-label-path=\"label\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n .items=${items}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-combo-box>\n </vaadin-custom-field>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n const field = this.renderRoot.querySelector('vaadin-custom-field');\n if (field && field.value !== this._value) field.value = (this._value ?? '') as string;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { TemplateResult } from 'lit-element';
1
+ import type { PropertyDeclarations, TemplateResult } from 'lit-element';
2
2
  import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
3
3
  /**
4
4
  * Internal control displaying a basic number box.
@@ -7,6 +7,11 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
7
7
  * @element foxy-internal-number-control
8
8
  */
9
9
  export declare class InternalNumberControl extends InternalEditableControl {
10
+ static get properties(): PropertyDeclarations;
11
+ prefix: string | null;
12
+ suffix: string | null;
13
+ min: number | null;
14
+ max: number | null;
10
15
  renderControl(): TemplateResult;
11
16
  protected get _value(): number;
12
17
  protected set _value(newValue: number);