@foxy.io/elements 1.23.0 → 1.24.0-beta.2

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 (271) 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 +1 -1
  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-client-card.js +1 -0
  15. package/dist/cdn/foxy-client-form.js +1 -0
  16. package/dist/cdn/foxy-collection-page.js +1 -1
  17. package/dist/cdn/foxy-collection-pages.js +1 -1
  18. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  19. package/dist/cdn/foxy-coupon-card.js +1 -1
  20. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  21. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  22. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  23. package/dist/cdn/foxy-coupon-form.js +1 -1
  24. package/dist/cdn/foxy-custom-field-card.js +1 -1
  25. package/dist/cdn/foxy-custom-field-form.js +1 -1
  26. package/dist/cdn/foxy-customer-api.js +1 -1
  27. package/dist/cdn/foxy-customer-card.js +1 -1
  28. package/dist/cdn/foxy-customer-form.js +1 -1
  29. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  30. package/dist/cdn/foxy-customer-portal.js +1 -1
  31. package/dist/cdn/foxy-customer.js +1 -1
  32. package/dist/cdn/foxy-customers-table.js +1 -1
  33. package/dist/cdn/foxy-discount-builder.js +1 -1
  34. package/dist/cdn/foxy-discount-card.js +1 -1
  35. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  36. package/dist/cdn/foxy-donation.js +1 -1
  37. package/dist/cdn/foxy-downloadable-card.js +1 -1
  38. package/dist/cdn/foxy-downloadable-form.js +1 -1
  39. package/dist/cdn/foxy-email-template-card.js +1 -1
  40. package/dist/cdn/foxy-email-template-form.js +1 -1
  41. package/dist/cdn/foxy-error-entry-card.js +1 -1
  42. package/dist/cdn/foxy-filter-attribute-card.js +1 -0
  43. package/dist/cdn/foxy-filter-attribute-form.js +1 -0
  44. package/dist/cdn/foxy-form-dialog.js +1 -1
  45. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  46. package/dist/cdn/foxy-gift-card-card.js +1 -1
  47. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  48. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  49. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  50. package/dist/cdn/foxy-gift-card-form.js +1 -1
  51. package/dist/cdn/foxy-i18n-editor.js +2 -2
  52. package/dist/cdn/foxy-i18n.js +1 -1
  53. package/dist/cdn/foxy-integration-card.js +1 -1
  54. package/dist/cdn/foxy-integration-form.js +1 -1
  55. package/dist/cdn/foxy-item-card.js +1 -1
  56. package/dist/cdn/foxy-item-category-card.js +1 -1
  57. package/dist/cdn/foxy-item-category-form.js +1 -1
  58. package/dist/cdn/foxy-item-form.js +1 -1
  59. package/dist/cdn/foxy-item-option-card.js +1 -1
  60. package/dist/cdn/foxy-item-option-form.js +1 -1
  61. package/dist/cdn/foxy-items-form.js +1 -1
  62. package/dist/cdn/foxy-nucleon-element.js +1 -1
  63. package/dist/cdn/foxy-pagination.js +1 -1
  64. package/dist/cdn/foxy-passkey-card.js +1 -0
  65. package/dist/cdn/foxy-passkey-form.js +1 -0
  66. package/dist/cdn/foxy-payment-card.js +1 -1
  67. package/dist/cdn/foxy-payment-method-card.js +1 -1
  68. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  69. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  70. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  71. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  72. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  73. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  74. package/dist/cdn/foxy-payments-api.js +1 -1
  75. package/dist/cdn/foxy-query-builder.js +1 -1
  76. package/dist/cdn/foxy-report-form.js +1 -1
  77. package/dist/cdn/foxy-reports-table.js +1 -1
  78. package/dist/cdn/foxy-shipment-card.js +1 -1
  79. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  80. package/dist/cdn/foxy-sign-in-form.js +1 -1
  81. package/dist/cdn/foxy-spinner.js +2 -2
  82. package/dist/cdn/foxy-store-card.js +1 -1
  83. package/dist/cdn/foxy-store-form.js +1 -1
  84. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  85. package/dist/cdn/foxy-subscription-card.js +1 -1
  86. package/dist/cdn/foxy-subscription-form.js +3 -3
  87. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  88. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  89. package/dist/cdn/foxy-table.js +1 -1
  90. package/dist/cdn/foxy-tax-card.js +1 -1
  91. package/dist/cdn/foxy-tax-form.js +1 -1
  92. package/dist/cdn/foxy-template-config-form.js +1 -1
  93. package/dist/cdn/foxy-template-form.js +1 -1
  94. package/dist/cdn/foxy-template-set-card.js +1 -1
  95. package/dist/cdn/foxy-template-set-form.js +1 -1
  96. package/dist/cdn/foxy-transaction-card.js +1 -1
  97. package/dist/cdn/foxy-transaction.js +1 -1
  98. package/dist/cdn/foxy-transactions-table.js +1 -1
  99. package/dist/cdn/foxy-user-card.js +1 -1
  100. package/dist/cdn/foxy-user-form.js +1 -1
  101. package/dist/cdn/foxy-users-table.js +1 -1
  102. package/dist/cdn/foxy-webhook-card.js +1 -1
  103. package/dist/cdn/foxy-webhook-form.js +1 -1
  104. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  105. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  106. package/dist/cdn/{shared-16b542bc.js → shared-09d4fbb8.js} +2 -2
  107. package/dist/cdn/{shared-5dd31b4e.js → shared-0a248c0d.js} +1 -1
  108. package/dist/cdn/{shared-c40d85dc.js → shared-17d0db7f.js} +1 -1
  109. package/dist/cdn/{shared-7c5754a4.js → shared-1b060170.js} +1 -1
  110. package/dist/cdn/shared-1d08a5ad.js +1 -0
  111. package/dist/cdn/{shared-03b39ec4.js → shared-1d28220a.js} +1 -1
  112. package/dist/cdn/{shared-daf52401.js → shared-1eac92fa.js} +1 -1
  113. package/dist/cdn/{shared-6fb923d5.js → shared-25f64060.js} +1 -1
  114. package/dist/cdn/{shared-98755831.js → shared-307262a1.js} +1 -1
  115. package/dist/cdn/{shared-4c9f96ec.js → shared-31651a9c.js} +1 -1
  116. package/dist/cdn/{shared-a89cb472.js → shared-332f2997.js} +1 -1
  117. package/dist/cdn/shared-36725fe3.js +1 -0
  118. package/dist/cdn/{shared-6b53ef85.js → shared-379b37e6.js} +2 -2
  119. package/dist/cdn/{shared-b5517c1b.js → shared-39f3b48d.js} +1 -1
  120. package/dist/cdn/{shared-f3f5e87e.js → shared-432c5183.js} +1 -1
  121. package/dist/cdn/{shared-e28f16db.js → shared-4674063d.js} +1 -1
  122. package/dist/cdn/{shared-6f465111.js → shared-479ad951.js} +1 -1
  123. package/dist/cdn/{shared-08ff9a8d.js → shared-4904bca4.js} +1 -1
  124. package/dist/cdn/{shared-a8cf402a.js → shared-4b67d699.js} +1 -1
  125. package/dist/cdn/{shared-bd81cc08.js → shared-4bbd600d.js} +1 -1
  126. package/dist/cdn/{shared-ad396f3c.js → shared-4c956a8e.js} +1 -1
  127. package/dist/cdn/{shared-fbfb0943.js → shared-4dc58b73.js} +1 -1
  128. package/dist/cdn/{shared-39761436.js → shared-4dee79d4.js} +1 -1
  129. package/dist/cdn/{shared-b88e35b7.js → shared-51d28e6d.js} +1 -1
  130. package/dist/cdn/shared-53061389.js +1 -0
  131. package/dist/cdn/{shared-7a290f36.js → shared-59042137.js} +1 -1
  132. package/dist/cdn/{shared-068480a3.js → shared-64f98a0f.js} +1 -1
  133. package/dist/cdn/{shared-23923638.js → shared-65318cc1.js} +1 -1
  134. package/dist/cdn/shared-65ba8b39.js +1 -0
  135. package/dist/cdn/{shared-380db651.js → shared-665d6cc4.js} +1 -1
  136. package/dist/cdn/{shared-7bf46d6d.js → shared-69a21b9d.js} +1 -1
  137. package/dist/cdn/{shared-8349938a.js → shared-6abdfcf2.js} +1 -1
  138. package/dist/cdn/{shared-0dc1d012.js → shared-6dc64a17.js} +1 -1
  139. package/dist/cdn/shared-6f84ac3e.js +1 -0
  140. package/dist/cdn/{shared-86768244.js → shared-77a4d8e8.js} +1 -1
  141. package/dist/cdn/{shared-a6518411.js → shared-7995407d.js} +1 -1
  142. package/dist/cdn/shared-7f5618ba.js +1 -0
  143. package/dist/cdn/{shared-61a510d8.js → shared-8474bc4a.js} +1 -1
  144. package/dist/cdn/{shared-0543c6e0.js → shared-88e36564.js} +1 -1
  145. package/dist/cdn/{shared-ca5e1c6b.js → shared-92f27a38.js} +1 -1
  146. package/dist/cdn/{shared-e5c19ea3.js → shared-984fcdf5.js} +3 -3
  147. package/dist/cdn/{shared-43520428.js → shared-9c626d58.js} +1 -1
  148. package/dist/cdn/{shared-8b73191b.js → shared-9caffb4d.js} +1 -1
  149. package/dist/cdn/{shared-1e5292a1.js → shared-a3c73e91.js} +1 -1
  150. package/dist/cdn/{shared-3a252ccd.js → shared-a92ae606.js} +1 -1
  151. package/dist/cdn/{shared-ee13d1a6.js → shared-b0f534ef.js} +1 -1
  152. package/dist/cdn/{shared-d493355a.js → shared-b3ac59eb.js} +1 -1
  153. package/dist/cdn/{shared-e6066f46.js → shared-b48a83b0.js} +1 -1
  154. package/dist/cdn/{shared-939fc890.js → shared-ba658670.js} +1 -1
  155. package/dist/cdn/{shared-85bc54a6.js → shared-bafcab47.js} +1 -1
  156. package/dist/cdn/{shared-cd096e97.js → shared-bdb51db9.js} +1 -1
  157. package/dist/cdn/{shared-9048c076.js → shared-be24dd36.js} +1 -1
  158. package/dist/cdn/shared-bf62a65b.js +1 -0
  159. package/dist/cdn/{shared-eb900735.js → shared-c2d3b32b.js} +1 -1
  160. package/dist/cdn/{shared-3a82d3f5.js → shared-c4240bc6.js} +1 -1
  161. package/dist/cdn/{shared-ca58ef47.js → shared-c6c6ba69.js} +1 -1
  162. package/dist/cdn/{shared-de790de9.js → shared-c7f2f1ab.js} +1 -1
  163. package/dist/cdn/{shared-53fee01f.js → shared-c97e0d6e.js} +1 -1
  164. package/dist/cdn/{shared-bd819b5b.js → shared-cf269a17.js} +1 -1
  165. package/dist/cdn/{shared-4db2c7b1.js → shared-d14c2060.js} +3 -3
  166. package/dist/cdn/{shared-dcbaa1c5.js → shared-db21f6db.js} +1 -1
  167. package/dist/cdn/{shared-2756a4f0.js → shared-dccf0420.js} +1 -1
  168. package/dist/cdn/{shared-0c02b4ee.js → shared-dfe2602a.js} +1 -1
  169. package/dist/cdn/{shared-4abfda9b.js → shared-e10052d0.js} +1 -1
  170. package/dist/cdn/{shared-b95ef318.js → shared-e6828dbf.js} +1 -1
  171. package/dist/cdn/{shared-cb6f2388.js → shared-e6997950.js} +1 -1
  172. package/dist/cdn/{shared-eb4b4597.js → shared-e7c3b7b6.js} +1 -1
  173. package/dist/cdn/{shared-6eb7dc77.js → shared-e84fa0ea.js} +1 -1
  174. package/dist/cdn/{shared-6bfa699d.js → shared-e8e92fe3.js} +1 -1
  175. package/dist/cdn/shared-fe54babe.js +1 -0
  176. package/dist/cdn/{shared-aeec3cab.js → shared-fef9ecc1.js} +1 -1
  177. package/dist/cdn/{shared-c3c67413.js → shared-ff992ead.js} +1 -1
  178. package/dist/cdn/translations/client-card/en.json +10 -0
  179. package/dist/cdn/translations/client-form/en.json +74 -0
  180. package/dist/cdn/translations/filter-attribute-card/en.json +8 -0
  181. package/dist/cdn/translations/filter-attribute-form/en.json +49 -0
  182. package/dist/cdn/translations/passkey-card/en.json +9 -0
  183. package/dist/cdn/translations/passkey-form/en.json +34 -0
  184. package/dist/cdn/translations/transaction-card/en.json +8 -0
  185. package/dist/elements/private/Dialog/Dialog.js +10 -1
  186. package/dist/elements/private/Dialog/Dialog.js.map +1 -1
  187. package/dist/elements/public/ClientCard/ClientCard.d.ts +17 -0
  188. package/dist/elements/public/ClientCard/ClientCard.js +46 -0
  189. package/dist/elements/public/ClientCard/ClientCard.js.map +1 -0
  190. package/dist/elements/public/ClientCard/index.d.ts +3 -0
  191. package/dist/elements/public/ClientCard/index.js +5 -0
  192. package/dist/elements/public/ClientCard/index.js.map +1 -0
  193. package/dist/elements/public/ClientCard/types.d.ts +3 -0
  194. package/dist/elements/public/ClientCard/types.js +2 -0
  195. package/dist/elements/public/ClientCard/types.js.map +1 -0
  196. package/dist/elements/public/ClientForm/ClientForm.d.ts +62 -0
  197. package/dist/elements/public/ClientForm/ClientForm.js +108 -0
  198. package/dist/elements/public/ClientForm/ClientForm.js.map +1 -0
  199. package/dist/elements/public/ClientForm/index.d.ts +5 -0
  200. package/dist/elements/public/ClientForm/index.js +7 -0
  201. package/dist/elements/public/ClientForm/index.js.map +1 -0
  202. package/dist/elements/public/ClientForm/types.d.ts +35 -0
  203. package/dist/elements/public/ClientForm/types.js +2 -0
  204. package/dist/elements/public/ClientForm/types.js.map +1 -0
  205. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.d.ts +31 -0
  206. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js +113 -0
  207. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js.map +1 -0
  208. package/dist/elements/public/FilterAttributeCard/index.d.ts +4 -0
  209. package/dist/elements/public/FilterAttributeCard/index.js +6 -0
  210. package/dist/elements/public/FilterAttributeCard/index.js.map +1 -0
  211. package/dist/elements/public/FilterAttributeCard/types.d.ts +3 -0
  212. package/dist/elements/public/FilterAttributeCard/types.js +2 -0
  213. package/dist/elements/public/FilterAttributeCard/types.js.map +1 -0
  214. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.d.ts +46 -0
  215. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js +131 -0
  216. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js.map +1 -0
  217. package/dist/elements/public/FilterAttributeForm/index.d.ts +6 -0
  218. package/dist/elements/public/FilterAttributeForm/index.js +8 -0
  219. package/dist/elements/public/FilterAttributeForm/index.js.map +1 -0
  220. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.d.ts +5 -0
  221. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js +34 -0
  222. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js.map +1 -0
  223. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.d.ts +5 -0
  224. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js +7 -0
  225. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js.map +1 -0
  226. package/dist/elements/public/FilterAttributeForm/types.d.ts +14 -0
  227. package/dist/elements/public/FilterAttributeForm/types.js +2 -0
  228. package/dist/elements/public/FilterAttributeForm/types.js.map +1 -0
  229. package/dist/elements/public/PasskeyCard/PasskeyCard.d.ts +22 -0
  230. package/dist/elements/public/PasskeyCard/PasskeyCard.js +42 -0
  231. package/dist/elements/public/PasskeyCard/PasskeyCard.js.map +1 -0
  232. package/dist/elements/public/PasskeyCard/index.d.ts +3 -0
  233. package/dist/elements/public/PasskeyCard/index.js +5 -0
  234. package/dist/elements/public/PasskeyCard/index.js.map +1 -0
  235. package/dist/elements/public/PasskeyCard/types.d.ts +33 -0
  236. package/dist/elements/public/PasskeyCard/types.js +2 -0
  237. package/dist/elements/public/PasskeyCard/types.js.map +1 -0
  238. package/dist/elements/public/PasskeyForm/PasskeyForm.d.ts +36 -0
  239. package/dist/elements/public/PasskeyForm/PasskeyForm.js +52 -0
  240. package/dist/elements/public/PasskeyForm/PasskeyForm.js.map +1 -0
  241. package/dist/elements/public/PasskeyForm/index.d.ts +6 -0
  242. package/dist/elements/public/PasskeyForm/index.js +8 -0
  243. package/dist/elements/public/PasskeyForm/index.js.map +1 -0
  244. package/dist/elements/public/PasskeyForm/types.d.ts +17 -0
  245. package/dist/elements/public/PasskeyForm/types.js +2 -0
  246. package/dist/elements/public/PasskeyForm/types.js.map +1 -0
  247. package/dist/elements/public/TransactionCard/TransactionCard.js +26 -4
  248. package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
  249. package/dist/elements/public/TransactionCard/types.d.ts +4 -1
  250. package/dist/elements/public/TransactionCard/types.js.map +1 -1
  251. package/dist/elements/public/WebhookCard/WebhookCard.js +5 -17
  252. package/dist/elements/public/WebhookCard/WebhookCard.js.map +1 -1
  253. package/dist/elements/public/WebhookCard/index.d.ts +0 -2
  254. package/dist/elements/public/WebhookCard/index.js +0 -2
  255. package/dist/elements/public/WebhookCard/index.js.map +1 -1
  256. package/dist/elements/public/index.d.ts +6 -0
  257. package/dist/elements/public/index.defined.d.ts +6 -0
  258. package/dist/elements/public/index.defined.js +6 -0
  259. package/dist/elements/public/index.defined.js.map +1 -1
  260. package/dist/elements/public/index.js +6 -0
  261. package/dist/elements/public/index.js.map +1 -1
  262. package/dist/mixins/themeable.js +4 -0
  263. package/dist/mixins/themeable.js.map +1 -1
  264. package/package.json +5 -3
  265. package/dist/cdn/shared-49d978e1.js +0 -1
  266. package/dist/cdn/shared-509a2f52.js +0 -1
  267. package/dist/cdn/shared-9e60ef60.js +0 -1
  268. package/dist/cdn/shared-bb009254.js +0 -1
  269. package/dist/cdn/shared-bfdbd733.js +0 -1
  270. package/dist/cdn/shared-c7f56c90.js +0 -1
  271. package/dist/cdn/shared-e41e53c0.js +0 -1
@@ -0,0 +1,10 @@
1
+ {
2
+ "no_project_name": "Unnamed project",
3
+ "no_project_description": "No description provided",
4
+ "no_company_name": "Unknown company",
5
+ "spinner": {
6
+ "loading_busy": "Loading",
7
+ "loading_empty": "No data",
8
+ "loading_error": "Failed to load"
9
+ }
10
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "client-id": {
3
+ "label": "Client ID",
4
+ "placeholder": "",
5
+ "helper_text": ""
6
+ },
7
+ "client-secret": {
8
+ "label": "Client secret",
9
+ "placeholder": "",
10
+ "helper_text": ""
11
+ },
12
+ "project-name": {
13
+ "label": "Project name",
14
+ "placeholder": "",
15
+ "helper_text": ""
16
+ },
17
+ "project-description": {
18
+ "label": "Project description",
19
+ "placeholder": "",
20
+ "helper_text": ""
21
+ },
22
+ "redirect-uri": {
23
+ "label": "Redirect URI",
24
+ "placeholder": "",
25
+ "helper_text": ""
26
+ },
27
+ "company-name": {
28
+ "label": "Company name",
29
+ "placeholder": "",
30
+ "helper_text": ""
31
+ },
32
+ "company-url": {
33
+ "label": "Company url",
34
+ "placeholder": "",
35
+ "helper_text": ""
36
+ },
37
+ "company-logo": {
38
+ "label": "Company logo",
39
+ "placeholder": "",
40
+ "helper_text": ""
41
+ },
42
+ "contact-name": {
43
+ "label": "Contact name",
44
+ "placeholder": "",
45
+ "helper_text": ""
46
+ },
47
+ "contact-email": {
48
+ "label": "Contact email",
49
+ "placeholder": "",
50
+ "helper_text": ""
51
+ },
52
+ "contact-phone": {
53
+ "label": "Contact phone",
54
+ "placeholder": "",
55
+ "helper_text": ""
56
+ },
57
+ "timestamps": {
58
+ "date_created": "Created on",
59
+ "date_modified": "Last updated",
60
+ "date": "{{value, date}}"
61
+ },
62
+ "delete": {
63
+ "delete": "Delete",
64
+ "cancel": "Cancel",
65
+ "delete_prompt": "Once deleted, applications using this client will no longer be able to access Foxy stores and users."
66
+ },
67
+ "create": {
68
+ "create": "Create"
69
+ },
70
+ "spinner": {
71
+ "loading_busy": "Loading",
72
+ "loading_error": "Failed to load"
73
+ }
74
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "no_name": "Custom filter",
3
+ "spinner": {
4
+ "loading_busy": "Loading",
5
+ "loading_empty": "No data",
6
+ "loading_error": "Failed to load"
7
+ }
8
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "filter-query": {
3
+ "add_or_clause": "Add OR clause",
4
+ "add_value": "Add value",
5
+ "date": "{{value, date}}",
6
+ "delete": "Delete",
7
+ "field": "Field",
8
+ "hidden": "Hidden",
9
+ "is_defined_false": "Not defined",
10
+ "is_defined_true": "Defined",
11
+ "name": "Name",
12
+ "operator_equal": "Equal",
13
+ "operator_greaterthan": "Greater than",
14
+ "operator_greaterthanorequal": "Greater than or equal",
15
+ "operator_in": "One of",
16
+ "operator_isdefined": "Is defined",
17
+ "operator_lessthan": "Less than",
18
+ "operator_lessthanorequal": "Less than or equal",
19
+ "operator_not": "Not equal",
20
+ "or": "Or",
21
+ "query_builder_group": "Group of filters",
22
+ "query_builder_rule": "Filter",
23
+ "range_from": "From",
24
+ "range_to": "To",
25
+ "type": "Type",
26
+ "type_any": "Field of unknown type",
27
+ "type_attribute": "Key-value resource",
28
+ "type_date": "Date field",
29
+ "type_here": "Type here...",
30
+ "type_number": "Numeric field",
31
+ "type_string": "Text field",
32
+ "value": "Value"
33
+ },
34
+ "filter-name": {
35
+ "label": "Name",
36
+ "placeholder": "My custom filter",
37
+ "helper_text": ""
38
+ },
39
+ "action": {
40
+ "create": "Pin to sidebar",
41
+ "update": "Save changes",
42
+ "delete": "Unpin",
43
+ "reset": "Reset"
44
+ },
45
+ "spinner": {
46
+ "loading_busy": "Loading",
47
+ "loading_error": "Failed to load"
48
+ }
49
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "subtitle_no_data": "Usage data is not available for this passkey",
3
+ "subtitle": "Last used on {{ last_login_date, date }} in {{ last_login_ua }}",
4
+ "spinner": {
5
+ "loading_busy": "Loading",
6
+ "loading_empty": "No data",
7
+ "loading_error": "Failed to load"
8
+ }
9
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "credential-id": {
3
+ "label": "Credential ID",
4
+ "placeholder": "",
5
+ "helper_text": "Unique identifier of your passkey. You might be able to find this passkey by Credential ID in your password manager."
6
+ },
7
+ "last-login-date": {
8
+ "label": "Last login date",
9
+ "placeholder": "",
10
+ "helper_text": "The last time this passkey was used to sign in to your Foxy Account."
11
+ },
12
+ "last-login-ua": {
13
+ "label": "Last browser",
14
+ "placeholder": "",
15
+ "helper_text": "User agent string of the browser that was last used to sign in to your Foxy Account with this passkey."
16
+ },
17
+ "timestamps": {
18
+ "date_created": "Created on",
19
+ "date_modified": "Last updated",
20
+ "date": "{{value, date}}"
21
+ },
22
+ "delete": {
23
+ "delete": "Delete",
24
+ "cancel": "Cancel",
25
+ "delete_prompt": "Once deleted, this passkey will no longer be accepted on login but will remain in your password manager. Sessions created with this passkey will stay active."
26
+ },
27
+ "create": {
28
+ "create": "Create"
29
+ },
30
+ "spinner": {
31
+ "loading_busy": "Loading",
32
+ "loading_error": "Failed to load"
33
+ }
34
+ }
@@ -17,6 +17,14 @@
17
17
  "transaction_summary_plural": "{{most_expensive_item.name}} and {{count_minus_one}} more",
18
18
  "transaction_verified": "Verified",
19
19
  "transaction_voided": "Voided",
20
+ "type_subscription_cancellation": "Subscription cancellation",
21
+ "type_subscription_modification": "Subscription change",
22
+ "type_subscription_renewal": "Subscription renewal",
23
+ "type_updateinfo": "Profile update",
24
+ "type_new_order": "New order",
25
+ "type_new_subscription": "New subscription",
26
+ "source_MIT": "This transaction was initiated by merchant",
27
+ "source_CIT": "This transaction was initiated by customer",
20
28
  "spinner": {
21
29
  "loading_busy": "Loading",
22
30
  "loading_empty": "No data",
@@ -61,6 +61,10 @@ export class Dialog extends Base {
61
61
  --tw-scale-x:0.85;
62
62
  --tw-scale-y:0.85;
63
63
  }
64
+
65
+ .max-h-alert{
66
+ max-height:calc(100vh - var(--lumo-size-l) - var(--lumo-space-m) * 2);
67
+ }
64
68
  `,
65
69
  ];
66
70
  }
@@ -192,7 +196,12 @@ export class Dialog extends Base {
192
196
  : html `<div></div>`}
193
197
  </div>
194
198
 
195
- <div class="flex-1 overflow-y-auto overflow-x-hidden overscroll-contain">
199
+ <div
200
+ class=${classMap({
201
+ 'flex-1 overflow-y-auto overflow-x-hidden overscroll-contain': true,
202
+ 'max-h-alert': this.alert,
203
+ })}
204
+ >
196
205
  <div class="p-m relative">${content === null || content === void 0 ? void 0 : content()}</div>
197
206
  </div>
198
207
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/elements/private/Dialog/Dialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultArray, LitElement, PropertyDeclarations, css } from 'lit-element';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { API } from '../../public/NucleonElement/API';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from './DialogHideEvent';\nimport { DialogShowEvent } from './DialogShowEvent';\nimport { DialogWindow } from './DialogWindow';\nimport { FetchEvent } from '../../public/NucleonElement/FetchEvent';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\nconst Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(InferrableMixin(LitElement))));\n\nexport abstract class Dialog extends Base {\n /**\n * Selector of an element that will serve as a mounting point to all dialog windows.\n * It's `<body>` by default, but you can add your own element with `id=\"foxy-dialog-windows-host\"`\n * anywhere in the light DOM to render dialogs there.\n */\n static readonly dialogWindowsHost = '#foxy-dialog-windows-host, body';\n\n /** Map of all dialog windows linked to their dialog elements. */\n static readonly dialogWindows = new WeakMap<Dialog, DialogWindow>();\n\n /** List of all currently open dialogs. */\n static readonly openDialogs: Dialog[] = [];\n\n /**\n * Instance of this event will be dispatched on a dialog when it finishes entering the screen.\n * This event does not bubble and can't cross shadow DOM boundary.\n */\n static readonly ShowEvent = DialogShowEvent;\n\n /**\n * Instance of this event will be dispatched on a dialog when it finishes leaving the screen.\n * This event does not bubble and can't cross shadow DOM boundary.\n */\n static readonly HideEvent = DialogHideEvent;\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __connected: { attribute: false },\n __visible: { attribute: false },\n centered: { type: Boolean },\n closable: { type: Boolean },\n editable: { type: Boolean },\n header: { type: String },\n group: {},\n alert: { type: Boolean },\n wide: { type: Boolean },\n open: { type: Boolean, noAccessor: true },\n };\n }\n\n /** @readonly */\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n .grid-cols-header {\n grid-template-columns: 1fr auto 1fr;\n }\n\n .scale-85 {\n --tw-scale-x: 0.85;\n --tw-scale-y: 0.85;\n }\n `,\n ];\n }\n\n /** When true, renders Close button in the header. */\n closable = false;\n\n /** When true, renders Save button in the header. */\n editable = false;\n\n /** Header text or a i18next key for it. */\n header = '';\n\n /** NucleonElement's Rumour sync group. */\n group = '';\n\n /** When true, centers a dialog on the screen and does not animate the stack under. */\n alert = false;\n\n /** When true, dialog window will a larger maximum width. */\n wide = false;\n\n private __returnFocusTo?: HTMLElement;\n\n private __handleKeyDown = (evt: KeyboardEvent) => {\n if (evt.key === 'Escape' && Dialog.openDialogs[0] === this && this.closable)\n this.hide(this.editable);\n };\n\n private __connected = false;\n\n private __visible = false;\n\n /** True if dialog is mounted and has finished entering the screen. */\n get open(): boolean {\n return this.__visible && this.__connected;\n }\n\n set open(newValue: boolean) {\n newValue === this.open ? void 0 : newValue ? this.show() : this.hide(this.editable);\n }\n\n /** @readonly */\n connectedCallback(): void {\n super.connectedCallback();\n addEventListener('keydown', this.__handleKeyDown);\n }\n\n /** @readonly */\n disconnectedCallback(): void {\n super.disconnectedCallback();\n removeEventListener('keydown', this.__handleKeyDown);\n\n Dialog.dialogWindows.get(this)?.remove();\n Dialog.dialogWindows.delete(this);\n }\n\n /** @readonly */\n createRenderRoot(): Element | ShadowRoot {\n const dialogWindow = new DialogWindow();\n const dialogWindowsHosts = document.querySelectorAll(Dialog.dialogWindowsHost);\n const dialogWindowsHost = Array.from(dialogWindowsHosts).pop();\n\n dialogWindow.addEventListener('fetch', (evt: Event) => {\n if (evt instanceof FetchEvent) {\n evt.stopImmediatePropagation();\n evt.preventDefault();\n evt.respondWith(new API(this).fetch(evt.request));\n }\n });\n\n dialogWindowsHost?.appendChild(dialogWindow);\n Dialog.dialogWindows.set(this, dialogWindow);\n\n return dialogWindow.shadowRoot!;\n }\n\n /** @readonly */\n render(content?: () => TemplateResult): TemplateResult {\n if (!this.__connected) return html``;\n\n const isFirst = Dialog.openDialogs[0] === this;\n const isSecond = Dialog.openDialogs[1] === this;\n const isThird = Dialog.openDialogs[2] === this;\n const isForthAndGreater = !isFirst && !isSecond && !isThird;\n\n return html`\n <div\n class=${classMap({ 'z-50 fixed inset-0': true, 'pointer-events-none': !this.__visible })}\n >\n <div\n id=\"backdrop\"\n class=${classMap({\n 'select-none ease-in-out transition duration-500 absolute inset-0 bg-shade-50 focus-outline-none':\n true,\n 'opacity-100': this.__visible,\n 'opacity-0': !this.__visible,\n })}\n tabindex=\"-1\"\n @click=${() => this.closable && this.hide(this.editable)}\n ></div>\n\n <div\n tabindex=\"0\"\n role=\"dialog\"\n aria-labelledby=\"dialog-title\"\n class=${classMap({\n 'transform ease-in-out transition duration-500 relative h-full ml-auto': true,\n 'origin-bottom sm-origin-center': true,\n 'focus-outline-none': true,\n 'sm-max-w-modal': !this.wide,\n 'sm-max-w-modal-wide': this.wide,\n 'flex justify-center items-end sm-items-center mr-auto': this.alert,\n 'translate-y-full sm-translate-y-0': !this.__visible,\n 'sm-translate-x-full': !this.alert && !this.__visible,\n 'sm-opacity-0 sm-scale-110': this.alert && !this.__visible,\n 'translate-y-0 translate-x-0': isFirst && this.__visible,\n 'scale-95 -translate-y-s sm-translate-y-0': isSecond && this.__visible,\n 'scale-90 -translate-y-m sm-translate-y-0': isThird && this.__visible,\n 'opacity-0 scale-85 -translate-y-l sm-translate-y-0':\n isForthAndGreater && this.__visible,\n })}\n >\n <div\n class=${classMap({\n 'overflow-hidden flex flex-col bg-base rounded-t-l sm-rounded-b-l': true,\n 'absolute inset-0 mt-xl sm-m-xl': !this.alert,\n 'shadow-xxl': this.__visible,\n 'flex-1': this.alert,\n })}\n >\n <div\n class=\"h-l grid grid-cols-header text-m font-lumo font-medium border-b border-contrast-10\"\n >\n ${this.closable && !this.hiddenSelector.matches('close-button', true)\n ? html`\n <vaadin-button\n id=\"close-button\"\n theme=\"tertiary-inline\"\n class=\"mr-auto m-s px-s\"\n ?disabled=${this.disabledSelector.matches('close-button', true)}\n @click=${() => this.hide(this.editable)}\n >\n <foxy-i18n\n lang=${this.lang}\n key=${this.editable ? 'cancel' : 'close'}\n ns=${this.ns}\n >\n </foxy-i18n>\n </vaadin-button>\n `\n : html`<div></div>`}\n\n <h1 id=\"dialog-title\" class=\"truncate self-center text-center\">\n <foxy-i18n ns=${this.ns} lang=${this.lang} key=${this.header}></foxy-i18n>\n </h1>\n\n ${this.editable && !this.hiddenSelector.matches('save-button', true)\n ? html`\n <vaadin-button\n data-testid=\"save-button\"\n ?disabled=${this.disabledSelector.matches('save-button', true)}\n theme=\"primary\"\n class=\"ml-auto h-auto min-h-0 min-w-0 m-xs px-m\"\n @click=${this.save}\n >\n <foxy-i18n ns=${this.ns} lang=${this.lang} key=\"save\"></foxy-i18n>\n </vaadin-button>\n `\n : html`<div></div>`}\n </div>\n\n <div class=\"flex-1 overflow-y-auto overflow-x-hidden overscroll-contain\">\n <div class=\"p-m relative\">${content?.()}</div>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n const dialogWindow = Dialog.dialogWindows.get(this);\n\n if (dialogWindow) {\n dialogWindow.disabledControls = this.disabledControls;\n dialogWindow.disabled = this.disabled;\n\n dialogWindow.readonlyControls = this.readonlyControls;\n dialogWindow.readonly = this.readonly;\n\n dialogWindow.hiddenControls = this.hiddenControls;\n dialogWindow.hidden = this.hidden;\n\n dialogWindow.group = this.group;\n dialogWindow.lang = this.lang;\n dialogWindow.ns = this.ns;\n }\n }\n\n /**\n * Hides the dialog. Returns a promise that resolves when the dialog\n * finishes leaving the screen.\n *\n * @param cancelled Set this to `true` if closing an editable dialog without saving changes.\n */\n async hide(cancelled = false): Promise<void> {\n this.__returnFocusTo?.focus();\n\n await this.__setOpenDialogs(Dialog.openDialogs.filter(d => d !== this));\n await this.__setConnected(false);\n\n this.dispatchEvent(new Dialog.HideEvent(!!cancelled));\n }\n\n /**\n * Shows the dialog. Returns a promise that resolves when the dialog\n * finishes entering the screen.\n *\n * @param returnFocusTo If provided, the dialog will call `.focus()` on that element once it's closed.\n */\n async show(returnFocusTo?: HTMLElement): Promise<void> {\n this.__returnFocusTo = returnFocusTo;\n\n await this.__setConnected(true);\n await this.__setOpenDialogs([this, ...Dialog.openDialogs]);\n\n this.renderRoot.querySelector<HTMLDivElement>('[role=\"dialog\"]')?.focus();\n this.dispatchEvent(new Dialog.ShowEvent());\n }\n\n /** Alias for `dialog.hide(false)`. */\n async save(): Promise<void> {\n await this.hide(false);\n }\n\n private async __setOpenDialogs(newValue: Dialog[]) {\n Dialog.openDialogs.length = 0;\n Dialog.openDialogs.push(...newValue);\n\n await Promise.all([\n // animate dialog stack\n Promise.all(Dialog.openDialogs.map(dialog => dialog.requestUpdate())),\n\n // trigger exit transition\n new Promise(resolve => {\n const backdrop = this.renderRoot.querySelector('#backdrop') as HTMLDivElement;\n backdrop.addEventListener('transitionend', resolve, { once: true });\n this.__visible = Dialog.openDialogs.includes(this);\n }),\n ]);\n }\n\n private async __setConnected(newValue: boolean) {\n this.__connected = newValue;\n await this.updateComplete.then(() => this.getBoundingClientRect());\n }\n}\n\ncustomElements.define('foxy-dialog-window', DialogWindow);\n"]}
1
+ {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/elements/private/Dialog/Dialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultArray, LitElement, PropertyDeclarations, css } from 'lit-element';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { API } from '../../public/NucleonElement/API';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from './DialogHideEvent';\nimport { DialogShowEvent } from './DialogShowEvent';\nimport { DialogWindow } from './DialogWindow';\nimport { FetchEvent } from '../../public/NucleonElement/FetchEvent';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\nconst Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(InferrableMixin(LitElement))));\n\nexport abstract class Dialog extends Base {\n /**\n * Selector of an element that will serve as a mounting point to all dialog windows.\n * It's `<body>` by default, but you can add your own element with `id=\"foxy-dialog-windows-host\"`\n * anywhere in the light DOM to render dialogs there.\n */\n static readonly dialogWindowsHost = '#foxy-dialog-windows-host, body';\n\n /** Map of all dialog windows linked to their dialog elements. */\n static readonly dialogWindows = new WeakMap<Dialog, DialogWindow>();\n\n /** List of all currently open dialogs. */\n static readonly openDialogs: Dialog[] = [];\n\n /**\n * Instance of this event will be dispatched on a dialog when it finishes entering the screen.\n * This event does not bubble and can't cross shadow DOM boundary.\n */\n static readonly ShowEvent = DialogShowEvent;\n\n /**\n * Instance of this event will be dispatched on a dialog when it finishes leaving the screen.\n * This event does not bubble and can't cross shadow DOM boundary.\n */\n static readonly HideEvent = DialogHideEvent;\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __connected: { attribute: false },\n __visible: { attribute: false },\n centered: { type: Boolean },\n closable: { type: Boolean },\n editable: { type: Boolean },\n header: { type: String },\n group: {},\n alert: { type: Boolean },\n wide: { type: Boolean },\n open: { type: Boolean, noAccessor: true },\n };\n }\n\n /** @readonly */\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n .grid-cols-header {\n grid-template-columns: 1fr auto 1fr;\n }\n\n .scale-85 {\n --tw-scale-x: 0.85;\n --tw-scale-y: 0.85;\n }\n\n .max-h-alert {\n max-height: calc(100vh - var(--lumo-size-l) - var(--lumo-space-m) * 2);\n }\n `,\n ];\n }\n\n /** When true, renders Close button in the header. */\n closable = false;\n\n /** When true, renders Save button in the header. */\n editable = false;\n\n /** Header text or a i18next key for it. */\n header = '';\n\n /** NucleonElement's Rumour sync group. */\n group = '';\n\n /** When true, centers a dialog on the screen and does not animate the stack under. */\n alert = false;\n\n /** When true, dialog window will a larger maximum width. */\n wide = false;\n\n private __returnFocusTo?: HTMLElement;\n\n private __handleKeyDown = (evt: KeyboardEvent) => {\n if (evt.key === 'Escape' && Dialog.openDialogs[0] === this && this.closable)\n this.hide(this.editable);\n };\n\n private __connected = false;\n\n private __visible = false;\n\n /** True if dialog is mounted and has finished entering the screen. */\n get open(): boolean {\n return this.__visible && this.__connected;\n }\n\n set open(newValue: boolean) {\n newValue === this.open ? void 0 : newValue ? this.show() : this.hide(this.editable);\n }\n\n /** @readonly */\n connectedCallback(): void {\n super.connectedCallback();\n addEventListener('keydown', this.__handleKeyDown);\n }\n\n /** @readonly */\n disconnectedCallback(): void {\n super.disconnectedCallback();\n removeEventListener('keydown', this.__handleKeyDown);\n\n Dialog.dialogWindows.get(this)?.remove();\n Dialog.dialogWindows.delete(this);\n }\n\n /** @readonly */\n createRenderRoot(): Element | ShadowRoot {\n const dialogWindow = new DialogWindow();\n const dialogWindowsHosts = document.querySelectorAll(Dialog.dialogWindowsHost);\n const dialogWindowsHost = Array.from(dialogWindowsHosts).pop();\n\n dialogWindow.addEventListener('fetch', (evt: Event) => {\n if (evt instanceof FetchEvent) {\n evt.stopImmediatePropagation();\n evt.preventDefault();\n evt.respondWith(new API(this).fetch(evt.request));\n }\n });\n\n dialogWindowsHost?.appendChild(dialogWindow);\n Dialog.dialogWindows.set(this, dialogWindow);\n\n return dialogWindow.shadowRoot!;\n }\n\n /** @readonly */\n render(content?: () => TemplateResult): TemplateResult {\n if (!this.__connected) return html``;\n\n const isFirst = Dialog.openDialogs[0] === this;\n const isSecond = Dialog.openDialogs[1] === this;\n const isThird = Dialog.openDialogs[2] === this;\n const isForthAndGreater = !isFirst && !isSecond && !isThird;\n\n return html`\n <div\n class=${classMap({ 'z-50 fixed inset-0': true, 'pointer-events-none': !this.__visible })}\n >\n <div\n id=\"backdrop\"\n class=${classMap({\n 'select-none ease-in-out transition duration-500 absolute inset-0 bg-shade-50 focus-outline-none':\n true,\n 'opacity-100': this.__visible,\n 'opacity-0': !this.__visible,\n })}\n tabindex=\"-1\"\n @click=${() => this.closable && this.hide(this.editable)}\n ></div>\n\n <div\n tabindex=\"0\"\n role=\"dialog\"\n aria-labelledby=\"dialog-title\"\n class=${classMap({\n 'transform ease-in-out transition duration-500 relative h-full ml-auto': true,\n 'origin-bottom sm-origin-center': true,\n 'focus-outline-none': true,\n 'sm-max-w-modal': !this.wide,\n 'sm-max-w-modal-wide': this.wide,\n 'flex justify-center items-end sm-items-center mr-auto': this.alert,\n 'translate-y-full sm-translate-y-0': !this.__visible,\n 'sm-translate-x-full': !this.alert && !this.__visible,\n 'sm-opacity-0 sm-scale-110': this.alert && !this.__visible,\n 'translate-y-0 translate-x-0': isFirst && this.__visible,\n 'scale-95 -translate-y-s sm-translate-y-0': isSecond && this.__visible,\n 'scale-90 -translate-y-m sm-translate-y-0': isThird && this.__visible,\n 'opacity-0 scale-85 -translate-y-l sm-translate-y-0':\n isForthAndGreater && this.__visible,\n })}\n >\n <div\n class=${classMap({\n 'overflow-hidden flex flex-col bg-base rounded-t-l sm-rounded-b-l': true,\n 'absolute inset-0 mt-xl sm-m-xl': !this.alert,\n 'shadow-xxl': this.__visible,\n 'flex-1': this.alert,\n })}\n >\n <div\n class=\"h-l grid grid-cols-header text-m font-lumo font-medium border-b border-contrast-10\"\n >\n ${this.closable && !this.hiddenSelector.matches('close-button', true)\n ? html`\n <vaadin-button\n id=\"close-button\"\n theme=\"tertiary-inline\"\n class=\"mr-auto m-s px-s\"\n ?disabled=${this.disabledSelector.matches('close-button', true)}\n @click=${() => this.hide(this.editable)}\n >\n <foxy-i18n\n lang=${this.lang}\n key=${this.editable ? 'cancel' : 'close'}\n ns=${this.ns}\n >\n </foxy-i18n>\n </vaadin-button>\n `\n : html`<div></div>`}\n\n <h1 id=\"dialog-title\" class=\"truncate self-center text-center\">\n <foxy-i18n ns=${this.ns} lang=${this.lang} key=${this.header}></foxy-i18n>\n </h1>\n\n ${this.editable && !this.hiddenSelector.matches('save-button', true)\n ? html`\n <vaadin-button\n data-testid=\"save-button\"\n ?disabled=${this.disabledSelector.matches('save-button', true)}\n theme=\"primary\"\n class=\"ml-auto h-auto min-h-0 min-w-0 m-xs px-m\"\n @click=${this.save}\n >\n <foxy-i18n ns=${this.ns} lang=${this.lang} key=\"save\"></foxy-i18n>\n </vaadin-button>\n `\n : html`<div></div>`}\n </div>\n\n <div\n class=${classMap({\n 'flex-1 overflow-y-auto overflow-x-hidden overscroll-contain': true,\n 'max-h-alert': this.alert,\n })}\n >\n <div class=\"p-m relative\">${content?.()}</div>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n const dialogWindow = Dialog.dialogWindows.get(this);\n\n if (dialogWindow) {\n dialogWindow.disabledControls = this.disabledControls;\n dialogWindow.disabled = this.disabled;\n\n dialogWindow.readonlyControls = this.readonlyControls;\n dialogWindow.readonly = this.readonly;\n\n dialogWindow.hiddenControls = this.hiddenControls;\n dialogWindow.hidden = this.hidden;\n\n dialogWindow.group = this.group;\n dialogWindow.lang = this.lang;\n dialogWindow.ns = this.ns;\n }\n }\n\n /**\n * Hides the dialog. Returns a promise that resolves when the dialog\n * finishes leaving the screen.\n *\n * @param cancelled Set this to `true` if closing an editable dialog without saving changes.\n */\n async hide(cancelled = false): Promise<void> {\n this.__returnFocusTo?.focus();\n\n await this.__setOpenDialogs(Dialog.openDialogs.filter(d => d !== this));\n await this.__setConnected(false);\n\n this.dispatchEvent(new Dialog.HideEvent(!!cancelled));\n }\n\n /**\n * Shows the dialog. Returns a promise that resolves when the dialog\n * finishes entering the screen.\n *\n * @param returnFocusTo If provided, the dialog will call `.focus()` on that element once it's closed.\n */\n async show(returnFocusTo?: HTMLElement): Promise<void> {\n this.__returnFocusTo = returnFocusTo;\n\n await this.__setConnected(true);\n await this.__setOpenDialogs([this, ...Dialog.openDialogs]);\n\n this.renderRoot.querySelector<HTMLDivElement>('[role=\"dialog\"]')?.focus();\n this.dispatchEvent(new Dialog.ShowEvent());\n }\n\n /** Alias for `dialog.hide(false)`. */\n async save(): Promise<void> {\n await this.hide(false);\n }\n\n private async __setOpenDialogs(newValue: Dialog[]) {\n Dialog.openDialogs.length = 0;\n Dialog.openDialogs.push(...newValue);\n\n await Promise.all([\n // animate dialog stack\n Promise.all(Dialog.openDialogs.map(dialog => dialog.requestUpdate())),\n\n // trigger exit transition\n new Promise(resolve => {\n const backdrop = this.renderRoot.querySelector('#backdrop') as HTMLDivElement;\n backdrop.addEventListener('transitionend', resolve, { once: true });\n this.__visible = Dialog.openDialogs.includes(this);\n }),\n ]);\n }\n\n private async __setConnected(newValue: boolean) {\n this.__connected = newValue;\n await this.updateComplete.then(() => this.getBoundingClientRect());\n }\n}\n\ncustomElements.define('foxy-dialog-window', DialogWindow);\n"]}
@@ -0,0 +1,17 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import type { Data } from './types';
3
+ import { InternalCard } from '../../internal/InternalCard/InternalCard';
4
+ declare const Base: typeof InternalCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
5
+ defaultNS: string;
6
+ };
7
+ /**
8
+ * Card element representing a `fx:client` resource.
9
+ *
10
+ * @element foxy-client-card
11
+ * @since 1.24.0
12
+ */
13
+ export declare class ClientCard extends Base<Data> {
14
+ static get defaultImageSrc(): string;
15
+ renderBody(): TemplateResult;
16
+ }
17
+ export {};
@@ -0,0 +1,46 @@
1
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
+ import { InternalCard } from "../../internal/InternalCard/InternalCard.js";
3
+ import { html } from 'lit-html';
4
+ const NS = 'client-card';
5
+ const Base = TranslatableMixin(InternalCard, NS);
6
+ /**
7
+ * Card element representing a `fx:client` resource.
8
+ *
9
+ * @element foxy-client-card
10
+ * @since 1.24.0
11
+ */
12
+ export class ClientCard extends Base {
13
+ static get defaultImageSrc() {
14
+ return "data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_2168_15479)'%3E%3Crect width='40' height='40' fill='%23E8E8E8'/%3E%3Cpath d='M6.93609 0H0V6.93609L6.93609 0Z' fill='white'/%3E%3Cpath d='M0 8.35031V16.2326L16.2326 0H8.35031L0 8.35031Z' fill='white'/%3E%3Cpath d='M23.4667 20C23.4667 21.9146 21.9146 23.4667 20 23.4667C18.0854 23.4667 16.5333 21.9146 16.5333 20C16.5333 18.0854 18.0854 16.5333 20 16.5333C21.9146 16.5333 23.4667 18.0854 23.4667 20Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17.6468 0L0 17.6468V25.529L5.75703 19.772C5.9523 19.5767 6.26888 19.5767 6.46414 19.772C6.6594 19.9673 6.6594 20.2839 6.46414 20.4791L0 26.9433V34.8255L7.67907 27.1464C7.87433 26.9512 8.19091 26.9512 8.38617 27.1464C8.58144 27.3417 8.58144 27.6583 8.38617 27.8536L0 36.2397V40H4.12198L12.4755 31.6464C12.6708 31.4512 12.9874 31.4512 13.1826 31.6464C13.3779 31.8417 13.3779 32.1583 13.1826 32.3536L5.5362 40H13.4185L19.8826 33.5359C20.0779 33.3406 20.3944 33.3406 20.5897 33.5359C20.785 33.7311 20.785 34.0477 20.5897 34.243L14.8327 40H22.7149L40 22.7149V14.8327L34.3536 20.4791C34.1583 20.6744 33.8417 20.6744 33.6464 20.4791C33.4512 20.2839 33.4512 19.9673 33.6464 19.772L40 13.4185V5.5362L32.3536 13.1826C32.1583 13.3779 31.8417 13.3779 31.6464 13.1826C31.4512 12.9874 31.4512 12.6708 31.6464 12.4755L40 4.12198V0H36.2397L27.8536 8.38617C27.6583 8.58144 27.3417 8.58144 27.1464 8.38617C26.9512 8.19091 26.9512 7.87433 27.1464 7.67907L34.8255 0H26.9433L20.5897 6.35355C20.3944 6.54882 20.0779 6.54882 19.8826 6.35355C19.6873 6.15829 19.6873 5.84171 19.8826 5.64645L25.529 0H17.6468ZM12.6461 28.5796L11.4204 27.3539C10.7435 26.677 10.7435 25.5795 11.4204 24.9026L11.7742 24.5489C12.0955 24.2275 12.1662 23.7396 11.992 23.3199C11.8178 22.9003 11.421 22.6 10.9668 22.6H10.4667C9.50938 22.6 8.73334 21.824 8.73334 20.8667V19.1333C8.73334 18.176 9.50938 17.4 10.4667 17.4H10.9668C11.421 17.4 11.8178 17.0997 11.992 16.6801C12.1662 16.2604 12.0955 15.7725 11.7742 15.4511L11.4204 15.0974C10.7435 14.4205 10.7435 13.323 11.4204 12.6461L12.6461 11.4204C13.323 10.7435 14.4205 10.7435 15.0974 11.4204L15.4511 11.7742C15.7725 12.0955 16.2604 12.1662 16.6801 11.992C17.0997 11.8178 17.4 11.421 17.4 10.9668V10.4667C17.4 9.50938 18.176 8.73334 19.1333 8.73334H20.8667C21.824 8.73334 22.6 9.50938 22.6 10.4667V10.9668C22.6 11.421 22.9003 11.8178 23.3199 11.992C23.7396 12.1662 24.2275 12.0955 24.5489 11.7742L24.9026 11.4204C25.5795 10.7435 26.677 10.7435 27.3539 11.4204L28.5796 12.6461C29.2565 13.323 29.2565 14.4205 28.5796 15.0974L28.2259 15.4511C27.9045 15.7725 27.8338 16.2604 28.0081 16.6801C28.1822 17.0997 28.579 17.4 29.0333 17.4H29.5333C30.4906 17.4 31.2667 18.176 31.2667 19.1333V20.8667C31.2667 21.824 30.4906 22.6 29.5333 22.6H29.0332C28.579 22.6 28.1822 22.9003 28.0081 23.3199C27.8338 23.7396 27.9045 24.2275 28.2259 24.5489L28.5796 24.9026C29.2565 25.5795 29.2565 26.677 28.5796 27.3539L27.3539 28.5796C26.677 29.2565 25.5795 29.2565 24.9026 28.5796L24.5489 28.2259C24.2275 27.9045 23.7396 27.8338 23.3199 28.0081C22.9003 28.1822 22.6 28.579 22.6 29.0333V29.5333C22.6 30.4906 21.824 31.2667 20.8667 31.2667H19.1333C18.176 31.2667 17.4 30.4906 17.4 29.5333V29.0333C17.4 28.579 17.0997 28.1822 16.6801 28.0081C16.2604 27.8338 15.7725 27.9045 15.4511 28.2259L15.0974 28.5796C14.4205 29.2565 13.323 29.2565 12.6461 28.5796Z' fill='white'/%3E%3Cpath d='M40 24.1291L24.1291 40H32.0114L40 32.0114V24.1291Z' fill='white'/%3E%3Cpath d='M40 33.4256L33.4256 40H40V33.4256Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_2168_15479'%3E%3Crect width='40' height='40' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A";
15
+ }
16
+ renderBody() {
17
+ const defaultSrc = ClientCard.defaultImageSrc;
18
+ const data = this.data;
19
+ return html `
20
+ <figure class="flex" style="gap: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)">
21
+ <img
22
+ class="relative h-s w-s object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
23
+ src=${(data === null || data === void 0 ? void 0 : data.company_logo) || defaultSrc}
24
+ alt=${this.t('image_alt')}
25
+ @error=${(evt) => (evt.currentTarget.src = defaultSrc)}
26
+ />
27
+
28
+ <figcaption class="min-w-0 flex-1 leading-s -my-xs">
29
+ <p class="text-m truncate text-body font-medium">
30
+ ${(data === null || data === void 0 ? void 0 : data.project_name.trim()) ||
31
+ html `<foxy-i18n infer="" key="no_project_name"></foxy-i18n>`}
32
+ </p>
33
+ <p class="text-s truncate text-secondary">
34
+ ${(data === null || data === void 0 ? void 0 : data.project_description.trim()) ||
35
+ html `<foxy-i18n infer="" key="no_project_description"></foxy-i18n>`}
36
+ </p>
37
+ <p class="text-s truncate text-tertiary">
38
+ ${data ? new URL(data.redirect_uri).host : ''} &bull;
39
+ ${(data === null || data === void 0 ? void 0 : data.company_name) || html `<foxy-i18n infer="" key="no_company_name"></foxy-i18n>`}
40
+ </p>
41
+ </figcaption>
42
+ </figure>
43
+ `;
44
+ }
45
+ }
46
+ //# sourceMappingURL=ClientCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ClientCard/ClientCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,aAAa,CAAC;AACzB,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAU;IACxC,MAAM,KAAK,eAAe;QACxB,OAAO,4pHAA4pH,CAAC;IACtqH,CAAC;IAED,UAAU;QACR,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,OAAO,IAAI,CAAA;;;;gBAIC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,KAAI,UAAU;gBAChC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;mBAChB,CAAC,GAAU,EAAE,EAAE,CAAC,CAAE,GAAG,CAAC,aAAkC,CAAC,GAAG,GAAG,UAAU,CAAC;;;;;cAK/E,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC,IAAI;YACzB,IAAI,CAAA,wDAAwD;;;cAG1D,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,CAAC,IAAI;YAChC,IAAI,CAAA,+DAA+D;;;cAGjE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;cAC3C,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,KAAI,IAAI,CAAA,wDAAwD;;;;KAI3F,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { html } from 'lit-html';\n\nconst NS = 'client-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\n/**\n * Card element representing a `fx:client` resource.\n *\n * @element foxy-client-card\n * @since 1.24.0\n */\nexport class ClientCard extends Base<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_2168_15479)'%3E%3Crect width='40' height='40' fill='%23E8E8E8'/%3E%3Cpath d='M6.93609 0H0V6.93609L6.93609 0Z' fill='white'/%3E%3Cpath d='M0 8.35031V16.2326L16.2326 0H8.35031L0 8.35031Z' fill='white'/%3E%3Cpath d='M23.4667 20C23.4667 21.9146 21.9146 23.4667 20 23.4667C18.0854 23.4667 16.5333 21.9146 16.5333 20C16.5333 18.0854 18.0854 16.5333 20 16.5333C21.9146 16.5333 23.4667 18.0854 23.4667 20Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17.6468 0L0 17.6468V25.529L5.75703 19.772C5.9523 19.5767 6.26888 19.5767 6.46414 19.772C6.6594 19.9673 6.6594 20.2839 6.46414 20.4791L0 26.9433V34.8255L7.67907 27.1464C7.87433 26.9512 8.19091 26.9512 8.38617 27.1464C8.58144 27.3417 8.58144 27.6583 8.38617 27.8536L0 36.2397V40H4.12198L12.4755 31.6464C12.6708 31.4512 12.9874 31.4512 13.1826 31.6464C13.3779 31.8417 13.3779 32.1583 13.1826 32.3536L5.5362 40H13.4185L19.8826 33.5359C20.0779 33.3406 20.3944 33.3406 20.5897 33.5359C20.785 33.7311 20.785 34.0477 20.5897 34.243L14.8327 40H22.7149L40 22.7149V14.8327L34.3536 20.4791C34.1583 20.6744 33.8417 20.6744 33.6464 20.4791C33.4512 20.2839 33.4512 19.9673 33.6464 19.772L40 13.4185V5.5362L32.3536 13.1826C32.1583 13.3779 31.8417 13.3779 31.6464 13.1826C31.4512 12.9874 31.4512 12.6708 31.6464 12.4755L40 4.12198V0H36.2397L27.8536 8.38617C27.6583 8.58144 27.3417 8.58144 27.1464 8.38617C26.9512 8.19091 26.9512 7.87433 27.1464 7.67907L34.8255 0H26.9433L20.5897 6.35355C20.3944 6.54882 20.0779 6.54882 19.8826 6.35355C19.6873 6.15829 19.6873 5.84171 19.8826 5.64645L25.529 0H17.6468ZM12.6461 28.5796L11.4204 27.3539C10.7435 26.677 10.7435 25.5795 11.4204 24.9026L11.7742 24.5489C12.0955 24.2275 12.1662 23.7396 11.992 23.3199C11.8178 22.9003 11.421 22.6 10.9668 22.6H10.4667C9.50938 22.6 8.73334 21.824 8.73334 20.8667V19.1333C8.73334 18.176 9.50938 17.4 10.4667 17.4H10.9668C11.421 17.4 11.8178 17.0997 11.992 16.6801C12.1662 16.2604 12.0955 15.7725 11.7742 15.4511L11.4204 15.0974C10.7435 14.4205 10.7435 13.323 11.4204 12.6461L12.6461 11.4204C13.323 10.7435 14.4205 10.7435 15.0974 11.4204L15.4511 11.7742C15.7725 12.0955 16.2604 12.1662 16.6801 11.992C17.0997 11.8178 17.4 11.421 17.4 10.9668V10.4667C17.4 9.50938 18.176 8.73334 19.1333 8.73334H20.8667C21.824 8.73334 22.6 9.50938 22.6 10.4667V10.9668C22.6 11.421 22.9003 11.8178 23.3199 11.992C23.7396 12.1662 24.2275 12.0955 24.5489 11.7742L24.9026 11.4204C25.5795 10.7435 26.677 10.7435 27.3539 11.4204L28.5796 12.6461C29.2565 13.323 29.2565 14.4205 28.5796 15.0974L28.2259 15.4511C27.9045 15.7725 27.8338 16.2604 28.0081 16.6801C28.1822 17.0997 28.579 17.4 29.0333 17.4H29.5333C30.4906 17.4 31.2667 18.176 31.2667 19.1333V20.8667C31.2667 21.824 30.4906 22.6 29.5333 22.6H29.0332C28.579 22.6 28.1822 22.9003 28.0081 23.3199C27.8338 23.7396 27.9045 24.2275 28.2259 24.5489L28.5796 24.9026C29.2565 25.5795 29.2565 26.677 28.5796 27.3539L27.3539 28.5796C26.677 29.2565 25.5795 29.2565 24.9026 28.5796L24.5489 28.2259C24.2275 27.9045 23.7396 27.8338 23.3199 28.0081C22.9003 28.1822 22.6 28.579 22.6 29.0333V29.5333C22.6 30.4906 21.824 31.2667 20.8667 31.2667H19.1333C18.176 31.2667 17.4 30.4906 17.4 29.5333V29.0333C17.4 28.579 17.0997 28.1822 16.6801 28.0081C16.2604 27.8338 15.7725 27.9045 15.4511 28.2259L15.0974 28.5796C14.4205 29.2565 13.323 29.2565 12.6461 28.5796Z' fill='white'/%3E%3Cpath d='M40 24.1291L24.1291 40H32.0114L40 32.0114V24.1291Z' fill='white'/%3E%3Cpath d='M40 33.4256L33.4256 40H40V33.4256Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_2168_15479'%3E%3Crect width='40' height='40' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A\";\n }\n\n renderBody(): TemplateResult {\n const defaultSrc = ClientCard.defaultImageSrc;\n const data = this.data;\n\n return html`\n <figure class=\"flex\" style=\"gap: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\">\n <img\n class=\"relative h-s w-s object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${data?.company_logo || defaultSrc}\n alt=${this.t('image_alt')}\n @error=${(evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption class=\"min-w-0 flex-1 leading-s -my-xs\">\n <p class=\"text-m truncate text-body font-medium\">\n ${data?.project_name.trim() ||\n html`<foxy-i18n infer=\"\" key=\"no_project_name\"></foxy-i18n>`}\n </p>\n <p class=\"text-s truncate text-secondary\">\n ${data?.project_description.trim() ||\n html`<foxy-i18n infer=\"\" key=\"no_project_description\"></foxy-i18n>`}\n </p>\n <p class=\"text-s truncate text-tertiary\">\n ${data ? new URL(data.redirect_uri).host : ''} &bull;\n ${data?.company_name || html`<foxy-i18n infer=\"\" key=\"no_company_name\"></foxy-i18n>`}\n </p>\n </figcaption>\n </figure>\n `;\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import '../../internal/InternalCard/index';
2
+ import { ClientCard } from './ClientCard';
3
+ export { ClientCard };
@@ -0,0 +1,5 @@
1
+ import "../../internal/InternalCard/index.js";
2
+ import { ClientCard } from "./ClientCard.js";
3
+ customElements.define('foxy-client-card', ClientCard);
4
+ export { ClientCard };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/ClientCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAE3C,OAAO,EAAE,UAAU,EAAE,wBAAqB;AAE1C,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\n\nimport { ClientCard } from './ClientCard';\n\ncustomElements.define('foxy-client-card', ClientCard);\n\nexport { ClientCard };\n"]}
@@ -0,0 +1,3 @@
1
+ import type { Resource } from '@foxy.io/sdk/core';
2
+ import type { Rels } from '@foxy.io/sdk/backend';
3
+ export declare type Data = Resource<Rels.Client>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/ClientCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nexport type Data = Resource<Rels.Client>;\n"]}
@@ -0,0 +1,62 @@
1
+ import type { Data, Templates } from './types';
2
+ import type { TemplateResult } from 'lit-html';
3
+ import { BooleanSelector } from '@foxy.io/sdk/core';
4
+ import { InternalForm } from '../../internal/InternalForm/InternalForm';
5
+ declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
6
+ defaultNS: string;
7
+ };
8
+ /**
9
+ * Form element for viewing and deleting clients (`fx:client`).
10
+ *
11
+ * @slot client-id:before
12
+ * @slot client-id:after
13
+ *
14
+ * @slot client-secret:before
15
+ * @slot client-secret:after
16
+ *
17
+ * @slot redirect-uri:before
18
+ * @slot redirect-uri:after
19
+ *
20
+ * @slot project-name:before
21
+ * @slot project-name:after
22
+ *
23
+ * @slot project-description:before
24
+ * @slot project-description:after
25
+ *
26
+ * @slot company-name:before
27
+ * @slot company-name:after
28
+ *
29
+ * @slot company-url:before
30
+ * @slot company-url:after
31
+ *
32
+ * @slot company-logo:before
33
+ * @slot company-logo:after
34
+ *
35
+ * @slot contact-name:before
36
+ * @slot contact-name:after
37
+ *
38
+ * @slot contact-email:before
39
+ * @slot contact-email:after
40
+ *
41
+ * @slot contact-phone:before
42
+ * @slot contact-phone:after
43
+ *
44
+ * @slot timestamps:before
45
+ * @slot timestamps:after
46
+ *
47
+ * @slot create:before
48
+ * @slot create:after
49
+ *
50
+ * @slot delete:before
51
+ * @slot delete:after
52
+ *
53
+ * @element foxy-client-form
54
+ * @since 1.24.0
55
+ */
56
+ export declare class ClientForm extends Base<Data> {
57
+ templates: Templates;
58
+ get readonlySelector(): BooleanSelector;
59
+ get hiddenSelector(): BooleanSelector;
60
+ renderBody(): TemplateResult;
61
+ }
62
+ export {};
@@ -0,0 +1,108 @@
1
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
+ import { ResponsiveMixin } from "../../../mixins/responsive.js";
3
+ import { BooleanSelector } from '@foxy.io/sdk/core';
4
+ import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
5
+ import { html } from 'lit-element';
6
+ const NS = 'client-form';
7
+ const Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));
8
+ /**
9
+ * Form element for viewing and deleting clients (`fx:client`).
10
+ *
11
+ * @slot client-id:before
12
+ * @slot client-id:after
13
+ *
14
+ * @slot client-secret:before
15
+ * @slot client-secret:after
16
+ *
17
+ * @slot redirect-uri:before
18
+ * @slot redirect-uri:after
19
+ *
20
+ * @slot project-name:before
21
+ * @slot project-name:after
22
+ *
23
+ * @slot project-description:before
24
+ * @slot project-description:after
25
+ *
26
+ * @slot company-name:before
27
+ * @slot company-name:after
28
+ *
29
+ * @slot company-url:before
30
+ * @slot company-url:after
31
+ *
32
+ * @slot company-logo:before
33
+ * @slot company-logo:after
34
+ *
35
+ * @slot contact-name:before
36
+ * @slot contact-name:after
37
+ *
38
+ * @slot contact-email:before
39
+ * @slot contact-email:after
40
+ *
41
+ * @slot contact-phone:before
42
+ * @slot contact-phone:after
43
+ *
44
+ * @slot timestamps:before
45
+ * @slot timestamps:after
46
+ *
47
+ * @slot create:before
48
+ * @slot create:after
49
+ *
50
+ * @slot delete:before
51
+ * @slot delete:after
52
+ *
53
+ * @element foxy-client-form
54
+ * @since 1.24.0
55
+ */
56
+ export class ClientForm extends Base {
57
+ constructor() {
58
+ super(...arguments);
59
+ this.templates = {};
60
+ }
61
+ get readonlySelector() {
62
+ const alwaysMatch = ['client-secret'];
63
+ if (this.data || this.in({ busy: 'fetching' }))
64
+ alwaysMatch.push('client-id');
65
+ return new BooleanSelector(`${alwaysMatch.join(' ')} ${super.readonlySelector.toString()}`);
66
+ }
67
+ get hiddenSelector() {
68
+ const alwaysMatch = [];
69
+ if (!this.data && !this.in({ busy: 'fetching' }))
70
+ alwaysMatch.push('client-secret');
71
+ return new BooleanSelector(`${alwaysMatch.join(' ')} ${super.hiddenSelector.toString()}`);
72
+ }
73
+ renderBody() {
74
+ return html `
75
+ <div class="grid grid-cols-2 gap-m">
76
+ <foxy-internal-text-control class="col-span-2" infer="client-id">
77
+ </foxy-internal-text-control>
78
+
79
+ <foxy-internal-text-control class="col-span-2" infer="client-secret">
80
+ </foxy-internal-text-control>
81
+
82
+ <foxy-internal-text-control class="col-span-2" infer="redirect-uri">
83
+ </foxy-internal-text-control>
84
+
85
+ <foxy-internal-text-control class="col-span-2" infer="project-name">
86
+ </foxy-internal-text-control>
87
+
88
+ <foxy-internal-text-area-control class="col-span-2" infer="project-description">
89
+ </foxy-internal-text-area-control>
90
+
91
+ <foxy-internal-text-control infer="company-name"></foxy-internal-text-control>
92
+ <foxy-internal-text-control infer="company-url"></foxy-internal-text-control>
93
+
94
+ <foxy-internal-text-control class="col-span-2" infer="company-logo">
95
+ </foxy-internal-text-control>
96
+
97
+ <foxy-internal-text-control class="col-span-2" infer="contact-name">
98
+ </foxy-internal-text-control>
99
+
100
+ <foxy-internal-text-control infer="contact-email"></foxy-internal-text-control>
101
+ <foxy-internal-text-control infer="contact-phone"></foxy-internal-text-control>
102
+ </div>
103
+
104
+ ${super.renderBody()}
105
+ `;
106
+ }
107
+ }
108
+ //# sourceMappingURL=ClientForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ClientForm/ClientForm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,EAAE,GAAG,aAAa,CAAC;AACzB,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAU;IAA1C;;QACE,cAAS,GAAc,EAAE,CAAC;IAgD5B,CAAC;IA9CC,IAAI,gBAAgB;QAClB,MAAM,WAAW,GAAG,CAAC,eAAe,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,OAAO,IAAI,eAAe,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,cAAc;QAChB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAAE,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpF,OAAO,IAAI,eAAe,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8BP,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-element';\n\nconst NS = 'client-form';\nconst Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));\n\n/**\n * Form element for viewing and deleting clients (`fx:client`).\n *\n * @slot client-id:before\n * @slot client-id:after\n *\n * @slot client-secret:before\n * @slot client-secret:after\n *\n * @slot redirect-uri:before\n * @slot redirect-uri:after\n *\n * @slot project-name:before\n * @slot project-name:after\n *\n * @slot project-description:before\n * @slot project-description:after\n *\n * @slot company-name:before\n * @slot company-name:after\n *\n * @slot company-url:before\n * @slot company-url:after\n *\n * @slot company-logo:before\n * @slot company-logo:after\n *\n * @slot contact-name:before\n * @slot contact-name:after\n *\n * @slot contact-email:before\n * @slot contact-email:after\n *\n * @slot contact-phone:before\n * @slot contact-phone:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-client-form\n * @since 1.24.0\n */\nexport class ClientForm extends Base<Data> {\n templates: Templates = {};\n\n get readonlySelector(): BooleanSelector {\n const alwaysMatch = ['client-secret'];\n if (this.data || this.in({ busy: 'fetching' })) alwaysMatch.push('client-id');\n return new BooleanSelector(`${alwaysMatch.join(' ')} ${super.readonlySelector.toString()}`);\n }\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch: string[] = [];\n if (!this.data && !this.in({ busy: 'fetching' })) alwaysMatch.push('client-secret');\n return new BooleanSelector(`${alwaysMatch.join(' ')} ${super.hiddenSelector.toString()}`);\n }\n\n renderBody(): TemplateResult {\n return html`\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-text-control class=\"col-span-2\" infer=\"client-id\">\n </foxy-internal-text-control>\n\n <foxy-internal-text-control class=\"col-span-2\" infer=\"client-secret\">\n </foxy-internal-text-control>\n\n <foxy-internal-text-control class=\"col-span-2\" infer=\"redirect-uri\">\n </foxy-internal-text-control>\n\n <foxy-internal-text-control class=\"col-span-2\" infer=\"project-name\">\n </foxy-internal-text-control>\n\n <foxy-internal-text-area-control class=\"col-span-2\" infer=\"project-description\">\n </foxy-internal-text-area-control>\n\n <foxy-internal-text-control infer=\"company-name\"></foxy-internal-text-control>\n <foxy-internal-text-control infer=\"company-url\"></foxy-internal-text-control>\n\n <foxy-internal-text-control class=\"col-span-2\" infer=\"company-logo\">\n </foxy-internal-text-control>\n\n <foxy-internal-text-control class=\"col-span-2\" infer=\"contact-name\">\n </foxy-internal-text-control>\n\n <foxy-internal-text-control infer=\"contact-email\"></foxy-internal-text-control>\n <foxy-internal-text-control infer=\"contact-phone\"></foxy-internal-text-control>\n </div>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}