@foxy.io/elements 1.18.0-beta.15 → 1.18.0-beta.17

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 (243) 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-api-browser.js +3 -3
  5. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-card.js +1 -1
  7. package/dist/cdn/foxy-attribute-form.js +1 -1
  8. package/dist/cdn/foxy-cancellation-form.js +1 -1
  9. package/dist/cdn/foxy-collection-page.js +1 -1
  10. package/dist/cdn/foxy-collection-pages.js +1 -1
  11. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  12. package/dist/cdn/foxy-coupon-card.js +1 -1
  13. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  14. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  15. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  16. package/dist/cdn/foxy-coupon-form.js +1 -1
  17. package/dist/cdn/foxy-custom-field-card.js +1 -1
  18. package/dist/cdn/foxy-custom-field-form.js +1 -1
  19. package/dist/cdn/foxy-customer-api.js +1 -1
  20. package/dist/cdn/foxy-customer-card.js +1 -1
  21. package/dist/cdn/foxy-customer-form.js +1 -1
  22. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  23. package/dist/cdn/foxy-customer-portal.js +2 -2
  24. package/dist/cdn/foxy-customer.js +1 -1
  25. package/dist/cdn/foxy-customers-table.js +1 -1
  26. package/dist/cdn/foxy-discount-builder.js +1 -1
  27. package/dist/cdn/foxy-discount-card.js +1 -1
  28. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  29. package/dist/cdn/foxy-donation.js +1 -1
  30. package/dist/cdn/foxy-email-template-card.js +1 -1
  31. package/dist/cdn/foxy-email-template-form.js +1 -1
  32. package/dist/cdn/foxy-error-entry-card.js +1 -1
  33. package/dist/cdn/foxy-form-dialog.js +1 -1
  34. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  35. package/dist/cdn/foxy-gift-card-card.js +1 -1
  36. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  37. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  38. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  39. package/dist/cdn/foxy-gift-card-form.js +1 -1
  40. package/dist/cdn/foxy-i18n-editor.js +2 -0
  41. package/dist/cdn/foxy-i18n.js +1 -1
  42. package/dist/cdn/foxy-integration-card.js +1 -0
  43. package/dist/cdn/foxy-integration-form.js +1 -0
  44. package/dist/cdn/foxy-item-card.js +1 -1
  45. package/dist/cdn/foxy-item-category-card.js +1 -1
  46. package/dist/cdn/foxy-item-category-form.js +1 -1
  47. package/dist/cdn/foxy-item-form.js +1 -1
  48. package/dist/cdn/foxy-item-option-card.js +1 -1
  49. package/dist/cdn/foxy-item-option-form.js +1 -1
  50. package/dist/cdn/foxy-items-form.js +1 -1
  51. package/dist/cdn/foxy-nucleon-element.js +1 -1
  52. package/dist/cdn/foxy-pagination.js +1 -1
  53. package/dist/cdn/foxy-payment-card.js +1 -1
  54. package/dist/cdn/foxy-payment-method-card.js +1 -1
  55. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  56. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  57. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  58. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  59. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  60. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  61. package/dist/cdn/foxy-payments-api.js +1 -1
  62. package/dist/cdn/foxy-query-builder.js +1 -1
  63. package/dist/cdn/foxy-report-form.js +1 -1
  64. package/dist/cdn/foxy-reports-table.js +1 -1
  65. package/dist/cdn/foxy-shipment-card.js +1 -1
  66. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  67. package/dist/cdn/foxy-sign-in-form.js +1 -1
  68. package/dist/cdn/foxy-spinner.js +2 -2
  69. package/dist/cdn/foxy-store-form.js +1 -1
  70. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  71. package/dist/cdn/foxy-subscription-card.js +1 -1
  72. package/dist/cdn/foxy-subscription-form.js +4 -4
  73. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  74. package/dist/cdn/foxy-table.js +1 -1
  75. package/dist/cdn/foxy-tax-card.js +1 -1
  76. package/dist/cdn/foxy-tax-form.js +1 -1
  77. package/dist/cdn/foxy-template-card.js +1 -1
  78. package/dist/cdn/foxy-template-config-form.js +1 -1
  79. package/dist/cdn/foxy-template-form.js +1 -1
  80. package/dist/cdn/foxy-template-set-card.js +1 -1
  81. package/dist/cdn/foxy-template-set-form.js +1 -1
  82. package/dist/cdn/foxy-transaction-card.js +1 -1
  83. package/dist/cdn/foxy-transaction.js +1 -1
  84. package/dist/cdn/foxy-transactions-table.js +1 -1
  85. package/dist/cdn/foxy-user-form.js +1 -1
  86. package/dist/cdn/foxy-users-table.js +1 -1
  87. package/dist/cdn/foxy-webhook-card.js +1 -1
  88. package/dist/cdn/foxy-webhook-form.js +1 -1
  89. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  90. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  91. package/dist/cdn/shared-002b788f.js +15 -0
  92. package/dist/cdn/shared-0672e78b.js +1 -0
  93. package/dist/cdn/{shared-d58e7670.js → shared-162fc285.js} +1 -1
  94. package/dist/cdn/shared-1b3e1a0d.js +1 -0
  95. package/dist/cdn/{shared-45418f3b.js → shared-2215e6c8.js} +5 -5
  96. package/dist/cdn/shared-236d9b7e.js +1 -0
  97. package/dist/cdn/{shared-890a22af.js → shared-29376ba1.js} +1 -1
  98. package/dist/cdn/{shared-a5000f1f.js → shared-29e21467.js} +3 -3
  99. package/dist/cdn/{shared-4ff7174f.js → shared-2c842660.js} +1 -1
  100. package/dist/cdn/{shared-23e0d67e.js → shared-2d3027f4.js} +1 -1
  101. package/dist/cdn/{shared-0d91f648.js → shared-2f1e04ae.js} +1 -1
  102. package/dist/cdn/{shared-398b3c49.js → shared-34b11d34.js} +1 -1
  103. package/dist/cdn/{shared-0953a0e7.js → shared-3a3878c9.js} +1 -1
  104. package/dist/cdn/{shared-5c837b54.js → shared-40537775.js} +1 -1
  105. package/dist/cdn/{shared-38df92f3.js → shared-40d82f6b.js} +1 -1
  106. package/dist/cdn/{shared-abf68928.js → shared-4457dc27.js} +1 -1
  107. package/dist/cdn/{shared-760cc838.js → shared-4975f86f.js} +1 -1
  108. package/dist/cdn/{shared-ffea7639.js → shared-4c338ca6.js} +1 -1
  109. package/dist/cdn/shared-515f00b1.js +1 -0
  110. package/dist/cdn/{shared-8704e701.js → shared-5504f415.js} +2 -2
  111. package/dist/cdn/{shared-dee53530.js → shared-55e20d5b.js} +1 -1
  112. package/dist/cdn/{shared-a8966936.js → shared-5ad8c9a0.js} +1 -1
  113. package/dist/cdn/{shared-b6a37360.js → shared-5b55627c.js} +1 -1
  114. package/dist/cdn/{shared-2a56246b.js → shared-6003864d.js} +1 -1
  115. package/dist/cdn/shared-6b8874a7.js +1 -0
  116. package/dist/cdn/shared-6bf8883f.js +1 -0
  117. package/dist/cdn/{shared-fd124dfd.js → shared-6d2064e9.js} +3 -3
  118. package/dist/cdn/{shared-7ab9beb2.js → shared-6e6ed30a.js} +1 -1
  119. package/dist/cdn/shared-71deb26e.js +1 -0
  120. package/dist/cdn/{shared-3425791b.js → shared-74277a73.js} +5 -5
  121. package/dist/cdn/{shared-f22d1ed9.js → shared-7661b51a.js} +15 -15
  122. package/dist/cdn/{shared-7ca327ea.js → shared-7b167fe9.js} +1 -1
  123. package/dist/cdn/{shared-93c15291.js → shared-85f9051e.js} +1 -1
  124. package/dist/cdn/{shared-a6339611.js → shared-8a5e01ae.js} +1 -1
  125. package/dist/cdn/shared-8d533e0c.js +1 -0
  126. package/dist/cdn/shared-923da875.js +6 -0
  127. package/dist/cdn/shared-92926b1d.js +1 -0
  128. package/dist/cdn/{shared-081ad02f.js → shared-92bd849f.js} +1 -1
  129. package/dist/cdn/shared-a46a2f49.js +1 -0
  130. package/dist/cdn/{shared-8dee6348.js → shared-a86761d3.js} +2 -2
  131. package/dist/cdn/{shared-0565ecbc.js → shared-ad8141c4.js} +1 -1
  132. package/dist/cdn/{shared-a8ada44e.js → shared-b28dbc68.js} +27 -51
  133. package/dist/cdn/{shared-4610cbdb.js → shared-b5cbbdd8.js} +1 -1
  134. package/dist/cdn/{shared-15278fe0.js → shared-b7423eab.js} +1 -1
  135. package/dist/cdn/{shared-63671948.js → shared-b7f7f15f.js} +1 -1
  136. package/dist/cdn/{shared-3ef5c283.js → shared-b8e9b536.js} +1 -1
  137. package/dist/cdn/{shared-88924652.js → shared-bb522838.js} +1 -1
  138. package/dist/cdn/{shared-34cd3a01.js → shared-bd194cdf.js} +1 -1
  139. package/dist/cdn/{shared-6dafebaf.js → shared-c484320b.js} +1 -1
  140. package/dist/cdn/{shared-86be537c.js → shared-c52d3772.js} +1 -1
  141. package/dist/cdn/{shared-6b471536.js → shared-cced7800.js} +1 -1
  142. package/dist/cdn/{shared-bd4b0759.js → shared-cfec6ec1.js} +1 -1
  143. package/dist/cdn/{shared-9195959e.js → shared-d302ad2c.js} +1 -1
  144. package/dist/cdn/{shared-eefa4103.js → shared-d43fc5cc.js} +1 -1
  145. package/dist/cdn/shared-dc798bf4.js +1 -0
  146. package/dist/cdn/{shared-4a796610.js → shared-dcbf57e0.js} +1 -1
  147. package/dist/cdn/{shared-1d34726a.js → shared-e119731e.js} +1 -1
  148. package/dist/cdn/shared-e396ec04.js +25 -0
  149. package/dist/cdn/{shared-d1b62ccd.js → shared-e3ce88dc.js} +12 -17
  150. package/dist/cdn/{shared-74b7438a.js → shared-ea316e64.js} +1 -1
  151. package/dist/cdn/{shared-cd14b0cc.js → shared-ef0fc329.js} +1 -1
  152. package/dist/cdn/{shared-8328826e.js → shared-f022673a.js} +7 -7
  153. package/dist/cdn/{shared-d8b14272.js → shared-f23d122e.js} +3 -3
  154. package/dist/cdn/{shared-8033b140.js → shared-f2d19582.js} +1 -1
  155. package/dist/cdn/{shared-a861c770.js → shared-facfe95a.js} +4 -4
  156. package/dist/cdn/{shared-779795c5.js → shared-ff2f84c7.js} +1 -1
  157. package/dist/cdn/translations/api-browser/en.json +1 -0
  158. package/dist/cdn/translations/email-template-form/en.json +5 -0
  159. package/dist/cdn/translations/i18n-editor/en.json +10 -0
  160. package/dist/cdn/translations/integration-card/en.json +13 -0
  161. package/dist/cdn/translations/integration-form/en.json +41 -0
  162. package/dist/cdn/translations/store-form/en.json +1 -1
  163. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +4 -0
  164. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +33 -17
  165. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  166. package/dist/elements/public/ApiBrowser/ApiBrowser.d.ts +2 -1
  167. package/dist/elements/public/ApiBrowser/ApiBrowser.js +38 -15
  168. package/dist/elements/public/ApiBrowser/ApiBrowser.js.map +1 -1
  169. package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.d.ts +1 -0
  170. package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js +22 -13
  171. package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js.map +1 -1
  172. package/dist/elements/public/EmailTemplateForm/index.d.ts +1 -0
  173. package/dist/elements/public/EmailTemplateForm/index.js +1 -0
  174. package/dist/elements/public/EmailTemplateForm/index.js.map +1 -1
  175. package/dist/elements/public/I18n/format/date.js +5 -4
  176. package/dist/elements/public/I18n/format/date.js.map +1 -1
  177. package/dist/elements/public/I18nEditor/I18nEditor.d.ts +18 -0
  178. package/dist/elements/public/I18nEditor/I18nEditor.js +173 -0
  179. package/dist/elements/public/I18nEditor/I18nEditor.js.map +1 -0
  180. package/dist/elements/public/I18nEditor/index.d.ts +7 -0
  181. package/dist/elements/public/I18nEditor/index.js +9 -0
  182. package/dist/elements/public/I18nEditor/index.js.map +1 -0
  183. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.d.ts +17 -0
  184. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js +169 -0
  185. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js.map +1 -0
  186. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.d.ts +6 -0
  187. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.js +8 -0
  188. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.js.map +1 -0
  189. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.d.ts +3 -0
  190. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.js +2 -0
  191. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.js.map +1 -0
  192. package/dist/elements/public/I18nEditor/types.d.ts +4 -0
  193. package/dist/elements/public/I18nEditor/types.js +2 -0
  194. package/dist/elements/public/I18nEditor/types.js.map +1 -0
  195. package/dist/elements/public/IntegrationCard/IntegrationCard.d.ts +10 -0
  196. package/dist/elements/public/IntegrationCard/IntegrationCard.js +49 -0
  197. package/dist/elements/public/IntegrationCard/IntegrationCard.js.map +1 -0
  198. package/dist/elements/public/IntegrationCard/index.d.ts +4 -0
  199. package/dist/elements/public/IntegrationCard/index.js +6 -0
  200. package/dist/elements/public/IntegrationCard/index.js.map +1 -0
  201. package/dist/elements/public/IntegrationCard/types.d.ts +3 -0
  202. package/dist/elements/public/IntegrationCard/types.js +2 -0
  203. package/dist/elements/public/IntegrationCard/types.js.map +1 -0
  204. package/dist/elements/public/IntegrationForm/IntegrationForm.d.ts +18 -0
  205. package/dist/elements/public/IntegrationForm/IntegrationForm.js +220 -0
  206. package/dist/elements/public/IntegrationForm/IntegrationForm.js.map +1 -0
  207. package/dist/elements/public/IntegrationForm/index.d.ts +10 -0
  208. package/dist/elements/public/IntegrationForm/index.js +12 -0
  209. package/dist/elements/public/IntegrationForm/index.js.map +1 -0
  210. package/dist/elements/public/IntegrationForm/types.d.ts +21 -0
  211. package/dist/elements/public/IntegrationForm/types.js +2 -0
  212. package/dist/elements/public/IntegrationForm/types.js.map +1 -0
  213. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js +0 -2
  214. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js.map +1 -1
  215. package/dist/elements/public/StoreForm/StoreForm.js +2 -10
  216. package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
  217. package/dist/elements/public/TemplateSetForm/TemplateSetForm.d.ts +1 -0
  218. package/dist/elements/public/TemplateSetForm/TemplateSetForm.js +29 -18
  219. package/dist/elements/public/TemplateSetForm/TemplateSetForm.js.map +1 -1
  220. package/dist/elements/public/TemplateSetForm/index.d.ts +1 -0
  221. package/dist/elements/public/TemplateSetForm/index.js +1 -0
  222. package/dist/elements/public/TemplateSetForm/index.js.map +1 -1
  223. package/dist/elements/public/index.d.ts +3 -0
  224. package/dist/elements/public/index.defined.d.ts +3 -0
  225. package/dist/elements/public/index.defined.js +3 -0
  226. package/dist/elements/public/index.defined.js.map +1 -1
  227. package/dist/elements/public/index.js +3 -0
  228. package/dist/elements/public/index.js.map +1 -1
  229. package/dist/mixins/responsive.js +3 -3
  230. package/dist/mixins/responsive.js.map +1 -1
  231. package/dist/mixins/themeable.js +280 -0
  232. package/dist/mixins/themeable.js.map +1 -1
  233. package/package.json +2 -2
  234. package/dist/cdn/shared-10dbb9d7.js +0 -1
  235. package/dist/cdn/shared-2af327d0.js +0 -15
  236. package/dist/cdn/shared-5606cd36.js +0 -1
  237. package/dist/cdn/shared-8ab29d7d.js +0 -1
  238. package/dist/cdn/shared-a420358e.js +0 -1
  239. package/dist/cdn/shared-b567541a.js +0 -1
  240. package/dist/cdn/shared-b98f0ad9.js +0 -1
  241. package/dist/cdn/shared-c29811ec.js +0 -1
  242. package/dist/cdn/shared-d82f3ba0.js +0 -1
  243. package/dist/cdn/shared-fdf6ca55.js +0 -1
@@ -0,0 +1,169 @@
1
+ import { ConfigurableMixin } from "../../../../../mixins/configurable.js";
2
+ import { TranslatableMixin } from "../../../../../mixins/translatable.js";
3
+ import { ResponsiveMixin } from "../../../../../mixins/responsive.js";
4
+ import { ThemeableMixin } from "../../../../../mixins/themeable.js";
5
+ import { NucleonElement } from "../../../NucleonElement/NucleonElement.js";
6
+ import { html, css } from 'lit-element';
7
+ import { classMap } from "../../../../../utils/class-map.js";
8
+ const Base = ResponsiveMixin(TranslatableMixin(ConfigurableMixin(ThemeableMixin(NucleonElement))));
9
+ export class InternalI18nEditorEntry extends Base {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.defaultValue = null;
13
+ this.gateway = null;
14
+ this.code = null;
15
+ }
16
+ static get properties() {
17
+ return {
18
+ ...super.properties,
19
+ defaultValue: { attribute: 'default-value' },
20
+ gateway: {},
21
+ code: {},
22
+ };
23
+ }
24
+ static get styles() {
25
+ return [
26
+ super.styles,
27
+ css `:host{
28
+ --button-height:1.703rem;
29
+ }
30
+
31
+ textarea{
32
+ -webkit-text-fill-color:var(--lumo-body-text-color);
33
+ }
34
+
35
+ vaadin-button{
36
+ height:var(--button-height);
37
+ --lumo-primary-color-50pct:var(--lumo-success-contrast-color);
38
+ }
39
+
40
+ .h-bottom-bar{
41
+ height:calc(var(--button-height) + (var(--lumo-space-xs) * 2));
42
+ }
43
+
44
+ .h-0{
45
+ height:0;
46
+ }
47
+ `,
48
+ ];
49
+ }
50
+ render() {
51
+ var _a, _b, _c;
52
+ const value = (_a = this.form.custom_value) !== null && _a !== void 0 ? _a : this.defaultValue;
53
+ const isSnapshot = this.in({ idle: 'snapshot' });
54
+ const isTemplate = this.in({ idle: 'template' });
55
+ const isSnapshotDirty = this.in({ idle: { snapshot: 'dirty' } });
56
+ const isTemplateDirty = this.in({ idle: { template: 'dirty' } });
57
+ const isDirty = isSnapshotDirty || isTemplateDirty;
58
+ const isDisabled = !this.in('idle') || this.disabled;
59
+ const isReadonly = this.readonly;
60
+ const isInteractive = !isDisabled && !isReadonly;
61
+ const isFailed = this.in('fail');
62
+ return html `
63
+ <div
64
+ class=${classMap({
65
+ 'transition-all rounded ring-1 leading-s text-secondary': true,
66
+ 'ring-contrast-10': !isFailed && (!isDirty || isReadonly),
67
+ 'ring-success': !isFailed && isDirty && !isReadonly,
68
+ 'ring-error': isFailed,
69
+ 'opacity-75': isDisabled,
70
+ 'hover-ring-contrast-20': !isFailed && !isDirty && isInteractive,
71
+ 'hover-text-body': !isFailed && isInteractive,
72
+ })}
73
+ >
74
+ <label class="group flex flex-col sm-flex-row">
75
+ <div class="flex-1 p-xs break-all" style="max-width: 20rem">
76
+ <span class="inline-block rounded text-s p-xs font-semibold">
77
+ ${(_c = (_b = this.data) === null || _b === void 0 ? void 0 : _b.code) !== null && _c !== void 0 ? _c : this.code}
78
+ </span>
79
+ </div>
80
+
81
+ <div class="flex-1 flex">
82
+ <div class="relative flex-1">
83
+ <div class="opacity-0 text-s p-s font-semibold break-all">
84
+ <span class="whitespace-pre-wrap">${value}&ZeroWidthSpace;</span>
85
+ </div>
86
+
87
+ <textarea
88
+ class=${classMap({
89
+ 'absolute inset-0 p-s resize-none': true,
90
+ 'sm-border-l sm-border-transparent': true,
91
+ 'break-all text-body transition-colors text-s font-semibold': true,
92
+ 'rounded-b sm-rounded-bl-none sm-rounded-tr': isTemplate && !isDirty,
93
+ 'rounded-bl sm-rounded-bl-none': isSnapshot && !isDirty,
94
+ 'sm-rounded-tr': isTemplate && isDirty,
95
+ 'sm-border-contrast-10': isReadonly,
96
+ 'bg-contrast-10': !isReadonly,
97
+ 'group-hover-bg-contrast-20': isInteractive,
98
+ 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,
99
+ })}
100
+ .value=${value}
101
+ ?disabled=${isDisabled}
102
+ ?readonly=${isReadonly}
103
+ @input=${(evt) => {
104
+ const textarea = evt.currentTarget;
105
+ if (this.gateway)
106
+ this.edit({ gateway: this.gateway });
107
+ if (this.code)
108
+ this.edit({ code: this.code });
109
+ this.edit({ custom_value: textarea.value });
110
+ }}
111
+ >
112
+ </textarea>
113
+ </div>
114
+
115
+ ${isSnapshot
116
+ ? html `
117
+ <button
118
+ class=${classMap({
119
+ 'flex-shrink-0 w-m flex items-center justify-center': true,
120
+ 'transition-colors text-tertiary ring-inset': true,
121
+ 'rounded-br sm-rounded-tr': !isDirty,
122
+ 'sm-rounded-tr': isDirty,
123
+ 'bg-contrast-10': !isReadonly,
124
+ 'cursor-default': !isInteractive,
125
+ 'cursor-pointer': isInteractive,
126
+ 'group-hover-bg-contrast-20 hover-text-body': isInteractive,
127
+ 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,
128
+ })}
129
+ title=${this.t('delete_button_title')}
130
+ theme="contrast icon"
131
+ ?disabled=${isDisabled || isReadonly}
132
+ @click=${() => this.delete()}
133
+ >
134
+ <iron-icon class="icon-inline text-xl" icon="icons:restore"></iron-icon>
135
+ </button>
136
+ `
137
+ : ''}
138
+ </div>
139
+ </label>
140
+
141
+ <div
142
+ class=${classMap({
143
+ 'transition-all bg-success rounded-b overflow-hidden': true,
144
+ 'flex items-center justify-end gap-xs px-xs': true,
145
+ 'h-bottom-bar': isDirty && !isReadonly,
146
+ 'h-0': !isDirty || isReadonly,
147
+ })}
148
+ >
149
+ <vaadin-button
150
+ theme="primary success small"
151
+ ?disabled=${!isInteractive}
152
+ @click=${() => this.undo()}
153
+ >
154
+ <foxy-i18n infer="" key="undo_button"></foxy-i18n>
155
+ </vaadin-button>
156
+
157
+ <vaadin-button
158
+ theme="primary success small"
159
+ ?disabled=${!isInteractive}
160
+ @click=${() => this.submit()}
161
+ >
162
+ <foxy-i18n infer="" key="save_button"></foxy-i18n>
163
+ </vaadin-button>
164
+ </div>
165
+ </div>
166
+ `;
167
+ }
168
+ }
169
+ //# sourceMappingURL=InternalI18nEditorEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalI18nEditorEntry.js","sourceRoot":"","sources":["../../../../../../src/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,8CAA2C;AACvE,OAAO,EAAE,iBAAiB,EAAE,8CAA2C;AACvE,OAAO,EAAE,eAAe,EAAE,4CAAyC;AACnE,OAAO,EAAE,cAAc,EAAE,2CAAwC;AACjE,OAAO,EAAE,cAAc,EAAE,kDAA+C;AACxE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,0CAAuC;AAE1D,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnG,MAAM,OAAO,uBAAwB,SAAQ,IAAU;IAAvD;;QAsCE,iBAAY,GAAkB,IAAI,CAAC;QAEnC,YAAO,GAAkB,IAAI,CAAC;QAE9B,SAAI,GAAkB,IAAI,CAAC;IAyH7B,CAAC;IAlKC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,YAAY,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;YAC5C,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;SACT,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO;YACL,KAAK,CAAC,MAAM;YACZ,GAAG;;;;;;;;;;;;;;;;;;;;OAqBF;SACF,CAAC;IACJ,CAAC;IAQD,MAAM;;QACJ,MAAM,KAAK,SAAG,IAAI,CAAC,IAAI,CAAC,YAAY,mCAAI,IAAI,CAAC,YAAY,CAAC;QAE1D,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,eAAe,IAAI,eAAe,CAAC;QAEnD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,MAAM,aAAa,GAAG,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC;YACf,wDAAwD,EAAE,IAAI;YAC9D,kBAAkB,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;YACzD,cAAc,EAAE,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU;YACnD,YAAY,EAAE,QAAQ;YACtB,YAAY,EAAE,UAAU;YACxB,wBAAwB,EAAE,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,aAAa;YAChE,iBAAiB,EAAE,CAAC,QAAQ,IAAI,aAAa;SAC9C,CAAC;;;;;gBAKM,YAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,mCAAI,IAAI,CAAC,IAAI;;;;;;;oDAOQ,KAAK;;;;wBAIjC,QAAQ,CAAC;YACf,kCAAkC,EAAE,IAAI;YACxC,mCAAmC,EAAE,IAAI;YACzC,4DAA4D,EAAE,IAAI;YAClE,4CAA4C,EAAE,UAAU,IAAI,CAAC,OAAO;YACpE,+BAA+B,EAAE,UAAU,IAAI,CAAC,OAAO;YACvD,eAAe,EAAE,UAAU,IAAI,OAAO;YACtC,uBAAuB,EAAE,UAAU;YACnC,gBAAgB,EAAE,CAAC,UAAU;YAC7B,4BAA4B,EAAE,aAAa;YAC3C,wEAAwE,EAAE,IAAI;SAC/E,CAAC;yBACO,KAAK;4BACF,UAAU;4BACV,UAAU;yBACb,CAAC,GAAe,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAoC,CAAC;YAE1D,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;;;;;cAKH,UAAU;YACV,CAAC,CAAC,IAAI,CAAA;;4BAEQ,QAAQ,CAAC;gBACf,oDAAoD,EAAE,IAAI;gBAC1D,4CAA4C,EAAE,IAAI;gBAClD,0BAA0B,EAAE,CAAC,OAAO;gBACpC,eAAe,EAAE,OAAO;gBACxB,gBAAgB,EAAE,CAAC,UAAU;gBAC7B,gBAAgB,EAAE,CAAC,aAAa;gBAChC,gBAAgB,EAAE,aAAa;gBAC/B,4CAA4C,EAAE,aAAa;gBAC3D,uDAAuD,EAAE,IAAI;aAC9D,CAAC;4BACM,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;;gCAEzB,UAAU,IAAI,UAAU;6BAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;;;;iBAI/B;YACH,CAAC,CAAC,EAAE;;;;;kBAKA,QAAQ,CAAC;YACf,qDAAqD,EAAE,IAAI;YAC3D,4CAA4C,EAAE,IAAI;YAClD,cAAc,EAAE,OAAO,IAAI,CAAC,UAAU;YACtC,KAAK,EAAE,CAAC,OAAO,IAAI,UAAU;SAC9B,CAAC;;;;wBAIY,CAAC,aAAa;qBACjB,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;;;;;;;wBAOd,CAAC,aAAa;qBACjB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;;;;;;KAMnC,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { Data } from './types';\n\nimport { ConfigurableMixin } from '../../../../../mixins/configurable';\nimport { TranslatableMixin } from '../../../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../../../mixins/responsive';\nimport { ThemeableMixin } from '../../../../../mixins/themeable';\nimport { NucleonElement } from '../../../NucleonElement/NucleonElement';\nimport { html, css } from 'lit-element';\nimport { classMap } from '../../../../../utils/class-map';\n\nconst Base = ResponsiveMixin(TranslatableMixin(ConfigurableMixin(ThemeableMixin(NucleonElement))));\n\nexport class InternalI18nEditorEntry extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n defaultValue: { attribute: 'default-value' },\n gateway: {},\n code: {},\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n --button-height: 1.703rem;\n }\n\n textarea {\n -webkit-text-fill-color: var(--lumo-body-text-color);\n }\n\n vaadin-button {\n height: var(--button-height);\n --lumo-primary-color-50pct: var(--lumo-success-contrast-color);\n }\n\n .h-bottom-bar {\n height: calc(var(--button-height) + (var(--lumo-space-xs) * 2));\n }\n\n .h-0 {\n height: 0;\n }\n `,\n ];\n }\n\n defaultValue: string | null = null;\n\n gateway: string | null = null;\n\n code: string | null = null;\n\n render(): TemplateResult {\n const value = this.form.custom_value ?? this.defaultValue;\n\n const isSnapshot = this.in({ idle: 'snapshot' });\n const isTemplate = this.in({ idle: 'template' });\n const isSnapshotDirty = this.in({ idle: { snapshot: 'dirty' } });\n const isTemplateDirty = this.in({ idle: { template: 'dirty' } });\n const isDirty = isSnapshotDirty || isTemplateDirty;\n\n const isDisabled = !this.in('idle') || this.disabled;\n const isReadonly = this.readonly;\n const isInteractive = !isDisabled && !isReadonly;\n const isFailed = this.in('fail');\n\n return html`\n <div\n class=${classMap({\n 'transition-all rounded ring-1 leading-s text-secondary': true,\n 'ring-contrast-10': !isFailed && (!isDirty || isReadonly),\n 'ring-success': !isFailed && isDirty && !isReadonly,\n 'ring-error': isFailed,\n 'opacity-75': isDisabled,\n 'hover-ring-contrast-20': !isFailed && !isDirty && isInteractive,\n 'hover-text-body': !isFailed && isInteractive,\n })}\n >\n <label class=\"group flex flex-col sm-flex-row\">\n <div class=\"flex-1 p-xs break-all\" style=\"max-width: 20rem\">\n <span class=\"inline-block rounded text-s p-xs font-semibold\">\n ${this.data?.code ?? this.code}\n </span>\n </div>\n\n <div class=\"flex-1 flex\">\n <div class=\"relative flex-1\">\n <div class=\"opacity-0 text-s p-s font-semibold break-all\">\n <span class=\"whitespace-pre-wrap\">${value}&ZeroWidthSpace;</span>\n </div>\n\n <textarea\n class=${classMap({\n 'absolute inset-0 p-s resize-none': true,\n 'sm-border-l sm-border-transparent': true,\n 'break-all text-body transition-colors text-s font-semibold': true,\n 'rounded-b sm-rounded-bl-none sm-rounded-tr': isTemplate && !isDirty,\n 'rounded-bl sm-rounded-bl-none': isSnapshot && !isDirty,\n 'sm-rounded-tr': isTemplate && isDirty,\n 'sm-border-contrast-10': isReadonly,\n 'bg-contrast-10': !isReadonly,\n 'group-hover-bg-contrast-20': isInteractive,\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n })}\n .value=${value}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n @input=${(evt: InputEvent) => {\n const textarea = evt.currentTarget as HTMLTextAreaElement;\n\n if (this.gateway) this.edit({ gateway: this.gateway });\n if (this.code) this.edit({ code: this.code });\n this.edit({ custom_value: textarea.value });\n }}\n >\n </textarea>\n </div>\n\n ${isSnapshot\n ? html`\n <button\n class=${classMap({\n 'flex-shrink-0 w-m flex items-center justify-center': true,\n 'transition-colors text-tertiary ring-inset': true,\n 'rounded-br sm-rounded-tr': !isDirty,\n 'sm-rounded-tr': isDirty,\n 'bg-contrast-10': !isReadonly,\n 'cursor-default': !isInteractive,\n 'cursor-pointer': isInteractive,\n 'group-hover-bg-contrast-20 hover-text-body': isInteractive,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n })}\n title=${this.t('delete_button_title')}\n theme=\"contrast icon\"\n ?disabled=${isDisabled || isReadonly}\n @click=${() => this.delete()}\n >\n <iron-icon class=\"icon-inline text-xl\" icon=\"icons:restore\"></iron-icon>\n </button>\n `\n : ''}\n </div>\n </label>\n\n <div\n class=${classMap({\n 'transition-all bg-success rounded-b overflow-hidden': true,\n 'flex items-center justify-end gap-xs px-xs': true,\n 'h-bottom-bar': isDirty && !isReadonly,\n 'h-0': !isDirty || isReadonly,\n })}\n >\n <vaadin-button\n theme=\"primary success small\"\n ?disabled=${!isInteractive}\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"undo_button\"></foxy-i18n>\n </vaadin-button>\n\n <vaadin-button\n theme=\"primary success small\"\n ?disabled=${!isInteractive}\n @click=${() => this.submit()}\n >\n <foxy-i18n infer=\"\" key=\"save_button\"></foxy-i18n>\n </vaadin-button>\n </div>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import '@vaadin/vaadin-button';
2
+ import '@polymer/iron-icons';
3
+ import '@polymer/iron-icon';
4
+ import '../../../I18n/index';
5
+ import { InternalI18nEditorEntry } from './InternalI18nEditorEntry';
6
+ export { InternalI18nEditorEntry };
@@ -0,0 +1,8 @@
1
+ import '@vaadin/vaadin-button';
2
+ import '@polymer/iron-icons';
3
+ import '@polymer/iron-icon';
4
+ import "../../../I18n/index.js";
5
+ import { InternalI18nEditorEntry } from "./InternalI18nEditorEntry.js";
6
+ customElements.define('foxy-internal-i18n-editor-entry', InternalI18nEditorEntry);
7
+ export { InternalI18nEditorEntry };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAE5B,gCAA6B;AAE7B,OAAO,EAAE,uBAAuB,EAAE,qCAAkC;AAEpE,cAAc,CAAC,MAAM,CAAC,iCAAiC,EAAE,uBAAuB,CAAC,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\nimport '@polymer/iron-icons';\nimport '@polymer/iron-icon';\n\nimport '../../../I18n/index';\n\nimport { InternalI18nEditorEntry } from './InternalI18nEditorEntry';\n\ncustomElements.define('foxy-internal-i18n-editor-entry', InternalI18nEditorEntry);\n\nexport { InternalI18nEditorEntry };\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.LanguageOverride>;
@@ -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/I18nEditor/internal/InternalI18nEditorEntry/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.LanguageOverride>;\n"]}
@@ -0,0 +1,4 @@
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.LanguageStrings>;
4
+ export declare type Overrides = Resource<Rels.LanguageOverrides>;
@@ -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/I18nEditor/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.LanguageStrings>;\nexport type Overrides = Resource<Rels.LanguageOverrides>;\n"]}
@@ -0,0 +1,10 @@
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
+ export declare class IntegrationCard extends Base<Data> {
8
+ renderBody(): TemplateResult;
9
+ }
10
+ export {};
@@ -0,0 +1,49 @@
1
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
+ import { InternalCard } from "../../internal/InternalCard/InternalCard.js";
3
+ import { html } from 'lit-html';
4
+ const NS = 'integration-card';
5
+ const Base = TranslatableMixin(InternalCard, NS);
6
+ export class IntegrationCard extends Base {
7
+ renderBody() {
8
+ var _a, _b;
9
+ const data = this.data;
10
+ const expires = new Date(((_a = data === null || data === void 0 ? void 0 : data.expires) !== null && _a !== void 0 ? _a : 0) * 1000);
11
+ const isActive = expires > new Date();
12
+ const description = ((_b = data === null || data === void 0 ? void 0 : data.project_description) === null || _b === void 0 ? void 0 : _b.trim()) || this.t('no_description');
13
+ return html `
14
+ <dl class="flex flex-wrap gap-xs leading-s">
15
+ <div class="min-w-full">
16
+ <div class="flex justify-between gap-s">
17
+ <dt class="sr-only">${this.t('title_description')}</dt>
18
+ <dd class="font-semibold truncate min-w-0">${data === null || data === void 0 ? void 0 : data.project_name}&ZeroWidthSpace;</dd>
19
+
20
+ <dt class="sr-only">${this.t('status_description')}</dt>
21
+ <dd class="whitespace-nowrap font-tnum">
22
+ <foxy-i18n
23
+ class=${isActive ? 'text-tertiary' : 'text-error'}
24
+ infer=""
25
+ key="status_${isActive ? 'active' : 'expired'}"
26
+ .options=${{ date: expires, month: 'short', day: '2-digit' }}
27
+ >
28
+ </foxy-i18n>
29
+ </dd>
30
+ </div>
31
+
32
+ <dt class="sr-only">${this.t('subtitle_description')}</dt>
33
+ <dd class="text-secondary">${description}&ZeroWidthSpace;</dd>
34
+ </div>
35
+
36
+ <div class="text-secondary text-xs bg-contrast-5 rounded overflow-hidden flex">
37
+ <dt class="font-semibold px-xs bg-contrast-5" lang="en">ID</dt>
38
+ <dd class="px-xs"><code>${data === null || data === void 0 ? void 0 : data.client_id}</code>&ZeroWidthSpace;</dd>
39
+ </div>
40
+
41
+ <div class="text-secondary text-xs bg-contrast-5 rounded overflow-hidden flex">
42
+ <dt class="font-semibold px-xs bg-contrast-5" lang="en">Scope</dt>
43
+ <dd class="px-xs"><code>${data === null || data === void 0 ? void 0 : data.scope}</code>&ZeroWidthSpace;</dd>
44
+ </div>
45
+ </dl>
46
+ `;
47
+ }
48
+ }
49
+ //# sourceMappingURL=IntegrationCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegrationCard.js","sourceRoot":"","sources":["../../../../src/elements/public/IntegrationCard/IntegrationCard.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,kBAAkB,CAAC;AAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD,MAAM,OAAO,eAAgB,SAAQ,IAAU;IAC7C,UAAU;;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,OAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,0CAAE,IAAI,OAAM,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAElF,OAAO,IAAI,CAAA;;;;kCAImB,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;yDACJ,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY;;kCAEzC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;;;wBAGtC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY;;8BAEnC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;2BAClC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;;;;;;gCAM5C,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC;uCACvB,WAAW;;;;;oCAKd,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS;;;;;oCAKf,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK;;;KAG1C,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 = 'integration-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\nexport class IntegrationCard extends Base<Data> {\n renderBody(): TemplateResult {\n const data = this.data;\n const expires = new Date((data?.expires ?? 0) * 1000);\n const isActive = expires > new Date();\n const description = data?.project_description?.trim() || this.t('no_description');\n\n return html`\n <dl class=\"flex flex-wrap gap-xs leading-s\">\n <div class=\"min-w-full\">\n <div class=\"flex justify-between gap-s\">\n <dt class=\"sr-only\">${this.t('title_description')}</dt>\n <dd class=\"font-semibold truncate min-w-0\">${data?.project_name}&ZeroWidthSpace;</dd>\n\n <dt class=\"sr-only\">${this.t('status_description')}</dt>\n <dd class=\"whitespace-nowrap font-tnum\">\n <foxy-i18n\n class=${isActive ? 'text-tertiary' : 'text-error'}\n infer=\"\"\n key=\"status_${isActive ? 'active' : 'expired'}\"\n .options=${{ date: expires, month: 'short', day: '2-digit' }}\n >\n </foxy-i18n>\n </dd>\n </div>\n\n <dt class=\"sr-only\">${this.t('subtitle_description')}</dt>\n <dd class=\"text-secondary\">${description}&ZeroWidthSpace;</dd>\n </div>\n\n <div class=\"text-secondary text-xs bg-contrast-5 rounded overflow-hidden flex\">\n <dt class=\"font-semibold px-xs bg-contrast-5\" lang=\"en\">ID</dt>\n <dd class=\"px-xs\"><code>${data?.client_id}</code>&ZeroWidthSpace;</dd>\n </div>\n\n <div class=\"text-secondary text-xs bg-contrast-5 rounded overflow-hidden flex\">\n <dt class=\"font-semibold px-xs bg-contrast-5\" lang=\"en\">Scope</dt>\n <dd class=\"px-xs\"><code>${data?.scope}</code>&ZeroWidthSpace;</dd>\n </div>\n </dl>\n `;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import '../../internal/InternalCard/index';
2
+ import '../I18n/index';
3
+ import { IntegrationCard } from './IntegrationCard';
4
+ export { IntegrationCard };
@@ -0,0 +1,6 @@
1
+ import "../../internal/InternalCard/index.js";
2
+ import "../I18n/index.js";
3
+ import { IntegrationCard } from "./IntegrationCard.js";
4
+ customElements.define('foxy-integration-card', IntegrationCard);
5
+ export { IntegrationCard };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/IntegrationCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAE3C,0BAAuB;AAEvB,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAEpD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\n\nimport '../I18n/index';\n\nimport { IntegrationCard } from './IntegrationCard';\n\ncustomElements.define('foxy-integration-card', IntegrationCard);\n\nexport { IntegrationCard };\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.Integration>;
@@ -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/IntegrationCard/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.Integration>;\n"]}
@@ -0,0 +1,18 @@
1
+ import type { Data } from './types';
2
+ import type { PropertyDeclarations } from 'lit-element';
3
+ import type { TemplateResult } from 'lit-html';
4
+ import type { NucleonV8N } from '../NucleonElement/types';
5
+ import { InternalForm } from '../../internal/InternalForm/InternalForm';
6
+ declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
7
+ defaultNS: string;
8
+ };
9
+ export declare class IntegrationForm extends Base<Data> {
10
+ static get properties(): PropertyDeclarations;
11
+ static get v8n(): NucleonV8N<Data>;
12
+ private __postResponse;
13
+ renderBody(): TemplateResult;
14
+ protected _fetch<TResult = Data>(...args: Parameters<Window['fetch']>): Promise<TResult>;
15
+ private __renderSnapshotBody;
16
+ private __renderTemplateBody;
17
+ }
18
+ export {};
@@ -0,0 +1,220 @@
1
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
+ import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
3
+ import { html } from 'lit-html';
4
+ const NS = 'integration-form';
5
+ const Base = TranslatableMixin(InternalForm, NS);
6
+ export class IntegrationForm extends Base {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.__postResponse = null;
10
+ }
11
+ static get properties() {
12
+ return {
13
+ ...super.properties,
14
+ __postResponse: { attribute: false },
15
+ };
16
+ }
17
+ static get v8n() {
18
+ return [({ project_name: v }) => !!v || 'project-name:v8n_required'];
19
+ }
20
+ renderBody() {
21
+ return this.data ? this.__renderSnapshotBody() : this.__renderTemplateBody();
22
+ }
23
+ async _fetch(...args) {
24
+ var _a;
25
+ const constructor = this.constructor;
26
+ const response = await new constructor.API(this).fetch(...args);
27
+ const method = typeof args[0] === 'string' ? (_a = args[1]) === null || _a === void 0 ? void 0 : _a.method : args[0].method;
28
+ const url = typeof args[0] === 'string' ? args[0] : args[0].url;
29
+ if (!response.ok)
30
+ throw response;
31
+ const json = await response.json();
32
+ if ((method === null || method === void 0 ? void 0 : method.toUpperCase()) === 'POST' && url === this.parent)
33
+ this.__postResponse = json;
34
+ return json;
35
+ }
36
+ __renderSnapshotBody() {
37
+ var _a, _b;
38
+ const data = this.data;
39
+ const expires = new Date(((_a = data.expires) !== null && _a !== void 0 ? _a : 0) * 1000);
40
+ const description = ((_b = data.project_description) === null || _b === void 0 ? void 0 : _b.trim()) || this.t('no_description');
41
+ return html `
42
+ <dl class="grid grid-cols-1 gap-s">
43
+ <dt class="sr-only">${this.t('title_description')}</dt>
44
+ <dd class="font-bold truncate text-xl">${data.project_name}&ZeroWidthSpace;</dd>
45
+
46
+ <dt class="sr-only">${this.t('subtitle_description')}</dt>
47
+ <dd class="text-secondary">${description}&ZeroWidthSpace;</dd>
48
+ </dl>
49
+
50
+ ${this.__postResponse
51
+ ? html `
52
+ <div
53
+ class="bg-success-10 text-success p-m pb-s space-y-xs leading-s rounded-t-l rounded-b-l"
54
+ >
55
+ <foxy-i18n infer="" class="block" key="post_success_message"></foxy-i18n>
56
+ <vaadin-button
57
+ theme="tertiary contrast"
58
+ class="p-0"
59
+ @click=${() => (this.__postResponse = null)}
60
+ >
61
+ <foxy-i18n infer="" key="post_success_action"></foxy-i18n>
62
+ </vaadin-button>
63
+ </div>
64
+ `
65
+ : ''}
66
+
67
+ <table class="font-lumo text-m leading-m w-full">
68
+ <tbody class="divide-y divide-contrast-10">
69
+ <tr>
70
+ <td class="max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold">
71
+ <foxy-i18n infer="" key="added_by"></foxy-i18n>
72
+ </td>
73
+ <td class="max-w-0 truncate py-s text-body w-2-3">
74
+ ${data.added_by_email
75
+ ? html `
76
+ <a
77
+ target="_blank"
78
+ class="font-semibold text-primary rounded hover-underline focus-outline-none focus-ring-2 focus-ring-primary-50"
79
+ href="mailto:${data.added_by_email}"
80
+ >
81
+ ${data.added_by_name}
82
+ </a>
83
+ `
84
+ : data.added_by_name}
85
+ </td>
86
+ </tr>
87
+
88
+ <tr>
89
+ <td class="max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold">
90
+ <foxy-i18n infer="" key="contact"></foxy-i18n>
91
+ </td>
92
+ <td class="max-w-0 truncate py-s text-body w-2-3">
93
+ ${data.contact_email
94
+ ? html `
95
+ <a
96
+ target="_blank"
97
+ class="font-semibold text-primary rounded hover-underline focus-outline-none focus-ring-2 focus-ring-primary-50"
98
+ href="mailto:${data.contact_email}"
99
+ >
100
+ ${data.contact_name}
101
+ </a>
102
+ `
103
+ : data.contact_name}
104
+ </td>
105
+ </tr>
106
+
107
+ <tr>
108
+ <td class="max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold">
109
+ <foxy-i18n infer="" key="company"></foxy-i18n>
110
+ </td>
111
+ <td class="max-w-0 truncate py-s text-body w-2-3">
112
+ ${data.company_url
113
+ ? html `
114
+ <a
115
+ target="_blank"
116
+ class="font-semibold text-primary rounded hover-underline focus-outline-none focus-ring-2 focus-ring-primary-50"
117
+ href=${data.company_url}
118
+ >
119
+ ${data.company_name}
120
+ </a>
121
+ `
122
+ : data.company_name}
123
+ </td>
124
+ </tr>
125
+
126
+ <tr>
127
+ <td class="max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold">
128
+ <foxy-i18n infer="" key="expires"></foxy-i18n>
129
+ </td>
130
+ <td class="max-w-0 truncate py-s text-body w-2-3">
131
+ <foxy-i18n infer="" key="expires_date" .options=${{ date: expires }}></foxy-i18n>
132
+ </td>
133
+ </tr>
134
+
135
+ <tr>
136
+ <td class="max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold">Client ID</td>
137
+ <td class="max-w-0 truncate py-s text-body w-2-3">
138
+ <div class="flex items-center gap-s">
139
+ <code class="truncate flex-1">${data.client_id}</code>
140
+ <foxy-copy-to-clipboard
141
+ infer="copy-to-clipboard"
142
+ class="inline-block"
143
+ text=${data.client_id}
144
+ >
145
+ </foxy-copy-to-clipboard>
146
+ </div>
147
+ </td>
148
+ </tr>
149
+
150
+ ${this.__postResponse
151
+ ? html `
152
+ <tr class="font-semibold text-success">
153
+ <td class="max-w-0 truncate py-s w-1-3 pr-m font-semibold">Client secret</td>
154
+ <td class="max-w-0 py-s w-2-3">
155
+ <div class="flex items-center gap-s">
156
+ <code class="truncate flex-1">${this.__postResponse.client_secret}</code>
157
+ <foxy-copy-to-clipboard
158
+ infer="copy-to-clipboard"
159
+ class="inline-block"
160
+ text=${this.__postResponse.client_secret}
161
+ >
162
+ </foxy-copy-to-clipboard>
163
+ </div>
164
+ </td>
165
+ </tr>
166
+
167
+ <tr class="font-semibold text-success">
168
+ <td class="max-w-0 truncate py-s w-1-3 pr-m font-semibold">Refresh token</td>
169
+ <td class="max-w-0 py-s w-2-3">
170
+ <div class="flex items-center gap-s">
171
+ <code class="truncate flex-1">${this.__postResponse.refresh_token}</code>
172
+ <foxy-copy-to-clipboard
173
+ infer="copy-to-clipboard"
174
+ class="inline-block"
175
+ text=${this.__postResponse.refresh_token}
176
+ >
177
+ </foxy-copy-to-clipboard>
178
+ </div>
179
+ </td>
180
+ </tr>
181
+
182
+ <tr class="font-semibold text-success">
183
+ <td class="max-w-0 truncate py-s w-1-3 pr-m font-semibold">Access token</td>
184
+ <td class="max-w-0 py-s w-2-3">
185
+ <div class="flex items-center gap-s">
186
+ <code class="truncate flex-1">${this.__postResponse.access_token}</code>
187
+ <foxy-copy-to-clipboard
188
+ infer="copy-to-clipboard"
189
+ class="inline-block"
190
+ text=${this.__postResponse.access_token}
191
+ >
192
+ </foxy-copy-to-clipboard>
193
+ </div>
194
+ </td>
195
+ </tr>
196
+ `
197
+ : ''}
198
+
199
+ <tr>
200
+ <td class="max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold">Scope</td>
201
+ <td class="max-w-0 truncate py-s text-body w-2-3"><code>${data.scope}</code></td>
202
+ </tr>
203
+ </tbody>
204
+ </table>
205
+
206
+ <foxy-internal-delete-control infer="delete"></foxy-internal-delete-control>
207
+ `;
208
+ }
209
+ __renderTemplateBody() {
210
+ return html `
211
+ <foxy-internal-text-control infer="project-name"></foxy-internal-text-control>
212
+
213
+ <foxy-internal-text-area-control infer="project-description">
214
+ </foxy-internal-text-area-control>
215
+
216
+ <foxy-internal-create-control infer="create"></foxy-internal-create-control>
217
+ `;
218
+ }
219
+ }
220
+ //# sourceMappingURL=IntegrationForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegrationForm.js","sourceRoot":"","sources":["../../../../src/elements/public/IntegrationForm/IntegrationForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Data, PostResponseData } from './types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'integration-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\nexport class IntegrationForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __postResponse: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [({ project_name: v }) => !!v || 'project-name:v8n_required'];\n }\n\n private __postResponse: PostResponseData | null = null;\n\n renderBody(): TemplateResult {\n return this.data ? this.__renderSnapshotBody() : this.__renderTemplateBody();\n }\n\n protected async _fetch<TResult = Data>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n const constructor = this.constructor as typeof IntegrationForm;\n const response = await new constructor.API(this).fetch(...args);\n const method = typeof args[0] === 'string' ? args[1]?.method : args[0].method;\n const url = typeof args[0] === 'string' ? args[0] : args[0].url;\n\n if (!response.ok) throw response;\n\n const json = await response.json();\n if (method?.toUpperCase() === 'POST' && url === this.parent) this.__postResponse = json;\n\n return json;\n }\n\n private __renderSnapshotBody() {\n const data = this.data as Data;\n const expires = new Date((data.expires ?? 0) * 1000);\n const description = data.project_description?.trim() || this.t('no_description');\n\n return html`\n <dl class=\"grid grid-cols-1 gap-s\">\n <dt class=\"sr-only\">${this.t('title_description')}</dt>\n <dd class=\"font-bold truncate text-xl\">${data.project_name}&ZeroWidthSpace;</dd>\n\n <dt class=\"sr-only\">${this.t('subtitle_description')}</dt>\n <dd class=\"text-secondary\">${description}&ZeroWidthSpace;</dd>\n </dl>\n\n ${this.__postResponse\n ? html`\n <div\n class=\"bg-success-10 text-success p-m pb-s space-y-xs leading-s rounded-t-l rounded-b-l\"\n >\n <foxy-i18n infer=\"\" class=\"block\" key=\"post_success_message\"></foxy-i18n>\n <vaadin-button\n theme=\"tertiary contrast\"\n class=\"p-0\"\n @click=${() => (this.__postResponse = null)}\n >\n <foxy-i18n infer=\"\" key=\"post_success_action\"></foxy-i18n>\n </vaadin-button>\n </div>\n `\n : ''}\n\n <table class=\"font-lumo text-m leading-m w-full\">\n <tbody class=\"divide-y divide-contrast-10\">\n <tr>\n <td class=\"max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold\">\n <foxy-i18n infer=\"\" key=\"added_by\"></foxy-i18n>\n </td>\n <td class=\"max-w-0 truncate py-s text-body w-2-3\">\n ${data.added_by_email\n ? html`\n <a\n target=\"_blank\"\n class=\"font-semibold text-primary rounded hover-underline focus-outline-none focus-ring-2 focus-ring-primary-50\"\n href=\"mailto:${data.added_by_email}\"\n >\n ${data.added_by_name}\n </a>\n `\n : data.added_by_name}\n </td>\n </tr>\n\n <tr>\n <td class=\"max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold\">\n <foxy-i18n infer=\"\" key=\"contact\"></foxy-i18n>\n </td>\n <td class=\"max-w-0 truncate py-s text-body w-2-3\">\n ${data.contact_email\n ? html`\n <a\n target=\"_blank\"\n class=\"font-semibold text-primary rounded hover-underline focus-outline-none focus-ring-2 focus-ring-primary-50\"\n href=\"mailto:${data.contact_email}\"\n >\n ${data.contact_name}\n </a>\n `\n : data.contact_name}\n </td>\n </tr>\n\n <tr>\n <td class=\"max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold\">\n <foxy-i18n infer=\"\" key=\"company\"></foxy-i18n>\n </td>\n <td class=\"max-w-0 truncate py-s text-body w-2-3\">\n ${data.company_url\n ? html`\n <a\n target=\"_blank\"\n class=\"font-semibold text-primary rounded hover-underline focus-outline-none focus-ring-2 focus-ring-primary-50\"\n href=${data.company_url}\n >\n ${data.company_name}\n </a>\n `\n : data.company_name}\n </td>\n </tr>\n\n <tr>\n <td class=\"max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold\">\n <foxy-i18n infer=\"\" key=\"expires\"></foxy-i18n>\n </td>\n <td class=\"max-w-0 truncate py-s text-body w-2-3\">\n <foxy-i18n infer=\"\" key=\"expires_date\" .options=${{ date: expires }}></foxy-i18n>\n </td>\n </tr>\n\n <tr>\n <td class=\"max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold\">Client ID</td>\n <td class=\"max-w-0 truncate py-s text-body w-2-3\">\n <div class=\"flex items-center gap-s\">\n <code class=\"truncate flex-1\">${data.client_id}</code>\n <foxy-copy-to-clipboard\n infer=\"copy-to-clipboard\"\n class=\"inline-block\"\n text=${data.client_id}\n >\n </foxy-copy-to-clipboard>\n </div>\n </td>\n </tr>\n\n ${this.__postResponse\n ? html`\n <tr class=\"font-semibold text-success\">\n <td class=\"max-w-0 truncate py-s w-1-3 pr-m font-semibold\">Client secret</td>\n <td class=\"max-w-0 py-s w-2-3\">\n <div class=\"flex items-center gap-s\">\n <code class=\"truncate flex-1\">${this.__postResponse.client_secret}</code>\n <foxy-copy-to-clipboard\n infer=\"copy-to-clipboard\"\n class=\"inline-block\"\n text=${this.__postResponse.client_secret}\n >\n </foxy-copy-to-clipboard>\n </div>\n </td>\n </tr>\n\n <tr class=\"font-semibold text-success\">\n <td class=\"max-w-0 truncate py-s w-1-3 pr-m font-semibold\">Refresh token</td>\n <td class=\"max-w-0 py-s w-2-3\">\n <div class=\"flex items-center gap-s\">\n <code class=\"truncate flex-1\">${this.__postResponse.refresh_token}</code>\n <foxy-copy-to-clipboard\n infer=\"copy-to-clipboard\"\n class=\"inline-block\"\n text=${this.__postResponse.refresh_token}\n >\n </foxy-copy-to-clipboard>\n </div>\n </td>\n </tr>\n\n <tr class=\"font-semibold text-success\">\n <td class=\"max-w-0 truncate py-s w-1-3 pr-m font-semibold\">Access token</td>\n <td class=\"max-w-0 py-s w-2-3\">\n <div class=\"flex items-center gap-s\">\n <code class=\"truncate flex-1\">${this.__postResponse.access_token}</code>\n <foxy-copy-to-clipboard\n infer=\"copy-to-clipboard\"\n class=\"inline-block\"\n text=${this.__postResponse.access_token}\n >\n </foxy-copy-to-clipboard>\n </div>\n </td>\n </tr>\n `\n : ''}\n\n <tr>\n <td class=\"max-w-0 truncate py-s text-secondary w-1-3 pr-m font-semibold\">Scope</td>\n <td class=\"max-w-0 truncate py-s text-body w-2-3\"><code>${data.scope}</code></td>\n </tr>\n </tbody>\n </table>\n\n <foxy-internal-delete-control infer=\"delete\"></foxy-internal-delete-control>\n `;\n }\n\n private __renderTemplateBody() {\n return html`\n <foxy-internal-text-control infer=\"project-name\"></foxy-internal-text-control>\n\n <foxy-internal-text-area-control infer=\"project-description\">\n </foxy-internal-text-area-control>\n\n <foxy-internal-create-control infer=\"create\"></foxy-internal-create-control>\n `;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import '@vaadin/vaadin-button';
2
+ import '../../internal/InternalTextAreaControl/index';
3
+ import '../../internal/InternalDeleteControl/index';
4
+ import '../../internal/InternalCreateControl/index';
5
+ import '../../internal/InternalTextControl/index';
6
+ import '../../internal/InternalForm/index';
7
+ import '../CopyToClipboard/index';
8
+ import '../I18n/index';
9
+ import { IntegrationForm } from './IntegrationForm';
10
+ export { IntegrationForm };