@foxy.io/elements 1.18.0-beta.16 → 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 (209) 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 +1 -1
  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 -1
  43. package/dist/cdn/foxy-integration-form.js +1 -1
  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 +2 -2
  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 +3 -3
  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-4623f740.js → shared-0672e78b.js} +1 -1
  93. package/dist/cdn/{shared-afaa6139.js → shared-162fc285.js} +1 -1
  94. package/dist/cdn/{shared-3f4f362e.js → shared-1b3e1a0d.js} +1 -1
  95. package/dist/cdn/{shared-de385bdb.js → shared-2215e6c8.js} +5 -5
  96. package/dist/cdn/shared-236d9b7e.js +1 -0
  97. package/dist/cdn/{shared-03f7cc13.js → shared-29376ba1.js} +1 -1
  98. package/dist/cdn/{shared-ff13276c.js → shared-29e21467.js} +3 -3
  99. package/dist/cdn/{shared-00c585e4.js → shared-2c842660.js} +1 -1
  100. package/dist/cdn/{shared-23e0d67e.js → shared-2d3027f4.js} +1 -1
  101. package/dist/cdn/{shared-a0c09692.js → shared-2f1e04ae.js} +1 -1
  102. package/dist/cdn/{shared-788e5ff5.js → shared-34b11d34.js} +1 -1
  103. package/dist/cdn/{shared-5714d3a4.js → shared-3a3878c9.js} +1 -1
  104. package/dist/cdn/{shared-0ff5e59d.js → shared-40537775.js} +1 -1
  105. package/dist/cdn/{shared-b1b40832.js → shared-40d82f6b.js} +1 -1
  106. package/dist/cdn/{shared-28b09f69.js → shared-4457dc27.js} +1 -1
  107. package/dist/cdn/{shared-6822bc96.js → shared-4975f86f.js} +1 -1
  108. package/dist/cdn/{shared-77359cd0.js → shared-4c338ca6.js} +1 -1
  109. package/dist/cdn/shared-515f00b1.js +1 -0
  110. package/dist/cdn/{shared-b5120f1a.js → shared-5504f415.js} +2 -2
  111. package/dist/cdn/{shared-452a471d.js → shared-55e20d5b.js} +1 -1
  112. package/dist/cdn/{shared-a8966936.js → shared-5ad8c9a0.js} +1 -1
  113. package/dist/cdn/{shared-9f53978e.js → shared-5b55627c.js} +1 -1
  114. package/dist/cdn/{shared-c70b41e1.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-77970922.js → shared-6d2064e9.js} +3 -3
  118. package/dist/cdn/{shared-1d851ca7.js → shared-6e6ed30a.js} +1 -1
  119. package/dist/cdn/{shared-59d73648.js → shared-71deb26e.js} +1 -1
  120. package/dist/cdn/{shared-0a7b94ac.js → shared-74277a73.js} +1 -1
  121. package/dist/cdn/{shared-555ec39f.js → shared-7661b51a.js} +15 -15
  122. package/dist/cdn/{shared-3d0dc4a6.js → shared-7b167fe9.js} +1 -1
  123. package/dist/cdn/{shared-03d5434f.js → shared-85f9051e.js} +1 -1
  124. package/dist/cdn/{shared-684e229f.js → shared-8a5e01ae.js} +1 -1
  125. package/dist/cdn/{shared-7af4d4b6.js → shared-8d533e0c.js} +1 -1
  126. package/dist/cdn/shared-923da875.js +6 -0
  127. package/dist/cdn/shared-92926b1d.js +1 -0
  128. package/dist/cdn/{shared-17d5d718.js → shared-92bd849f.js} +1 -1
  129. package/dist/cdn/shared-a46a2f49.js +1 -0
  130. package/dist/cdn/{shared-f04dd7e9.js → shared-a86761d3.js} +2 -2
  131. package/dist/cdn/{shared-b97d9ae3.js → shared-ad8141c4.js} +1 -1
  132. package/dist/cdn/{shared-7bfd93b7.js → shared-b28dbc68.js} +27 -51
  133. package/dist/cdn/{shared-2ce65ad5.js → shared-b5cbbdd8.js} +1 -1
  134. package/dist/cdn/{shared-15278fe0.js → shared-b7423eab.js} +1 -1
  135. package/dist/cdn/{shared-760538ac.js → shared-b7f7f15f.js} +1 -1
  136. package/dist/cdn/{shared-e4bc532a.js → shared-b8e9b536.js} +1 -1
  137. package/dist/cdn/{shared-ecd289b3.js → shared-bb522838.js} +1 -1
  138. package/dist/cdn/{shared-1e9dc71f.js → shared-bd194cdf.js} +1 -1
  139. package/dist/cdn/{shared-a98a6602.js → shared-c484320b.js} +1 -1
  140. package/dist/cdn/{shared-08d6d02b.js → shared-c52d3772.js} +1 -1
  141. package/dist/cdn/{shared-debbc076.js → shared-cced7800.js} +1 -1
  142. package/dist/cdn/{shared-b617fde5.js → shared-cfec6ec1.js} +1 -1
  143. package/dist/cdn/{shared-9195959e.js → shared-d302ad2c.js} +1 -1
  144. package/dist/cdn/{shared-e6bff624.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-8cb76c8b.js → shared-e119731e.js} +1 -1
  148. package/dist/cdn/shared-e396ec04.js +25 -0
  149. package/dist/cdn/{shared-0db7afef.js → shared-e3ce88dc.js} +12 -17
  150. package/dist/cdn/{shared-3b22a756.js → shared-ea316e64.js} +1 -1
  151. package/dist/cdn/{shared-b5b5c848.js → shared-ef0fc329.js} +1 -1
  152. package/dist/cdn/{shared-f43a5253.js → shared-f022673a.js} +7 -7
  153. package/dist/cdn/{shared-184945cc.js → shared-f23d122e.js} +3 -3
  154. package/dist/cdn/{shared-45c3705a.js → shared-f2d19582.js} +1 -1
  155. package/dist/cdn/{shared-0d697dd1.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/i18n-editor/en.json +10 -0
  159. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +2 -0
  160. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +29 -17
  161. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  162. package/dist/elements/public/ApiBrowser/ApiBrowser.d.ts +2 -1
  163. package/dist/elements/public/ApiBrowser/ApiBrowser.js +38 -15
  164. package/dist/elements/public/ApiBrowser/ApiBrowser.js.map +1 -1
  165. package/dist/elements/public/I18nEditor/I18nEditor.d.ts +18 -0
  166. package/dist/elements/public/I18nEditor/I18nEditor.js +173 -0
  167. package/dist/elements/public/I18nEditor/I18nEditor.js.map +1 -0
  168. package/dist/elements/public/I18nEditor/index.d.ts +7 -0
  169. package/dist/elements/public/I18nEditor/index.js +9 -0
  170. package/dist/elements/public/I18nEditor/index.js.map +1 -0
  171. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.d.ts +17 -0
  172. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js +169 -0
  173. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js.map +1 -0
  174. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.d.ts +6 -0
  175. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.js +8 -0
  176. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.js.map +1 -0
  177. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.d.ts +3 -0
  178. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.js +2 -0
  179. package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.js.map +1 -0
  180. package/dist/elements/public/I18nEditor/types.d.ts +4 -0
  181. package/dist/elements/public/I18nEditor/types.js +2 -0
  182. package/dist/elements/public/I18nEditor/types.js.map +1 -0
  183. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js +0 -2
  184. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js.map +1 -1
  185. package/dist/elements/public/StoreForm/StoreForm.js +2 -10
  186. package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
  187. package/dist/elements/public/TemplateSetForm/TemplateSetForm.d.ts +1 -0
  188. package/dist/elements/public/TemplateSetForm/TemplateSetForm.js +29 -18
  189. package/dist/elements/public/TemplateSetForm/TemplateSetForm.js.map +1 -1
  190. package/dist/elements/public/TemplateSetForm/index.d.ts +1 -0
  191. package/dist/elements/public/TemplateSetForm/index.js +1 -0
  192. package/dist/elements/public/TemplateSetForm/index.js.map +1 -1
  193. package/dist/elements/public/index.d.ts +1 -0
  194. package/dist/elements/public/index.defined.d.ts +1 -0
  195. package/dist/elements/public/index.defined.js +1 -0
  196. package/dist/elements/public/index.defined.js.map +1 -1
  197. package/dist/elements/public/index.js +1 -0
  198. package/dist/elements/public/index.js.map +1 -1
  199. package/dist/mixins/responsive.js +3 -3
  200. package/dist/mixins/responsive.js.map +1 -1
  201. package/dist/mixins/themeable.js +264 -0
  202. package/dist/mixins/themeable.js.map +1 -1
  203. package/package.json +2 -2
  204. package/dist/cdn/shared-193a0fb1.js +0 -1
  205. package/dist/cdn/shared-2af327d0.js +0 -15
  206. package/dist/cdn/shared-a420358e.js +0 -1
  207. package/dist/cdn/shared-a83b38f1.js +0 -1
  208. package/dist/cdn/shared-d82f3ba0.js +0 -1
  209. package/dist/cdn/shared-f14201ed.js +0 -1
@@ -0,0 +1,173 @@
1
+ import { ConfigurableMixin } from "../../../mixins/configurable.js";
2
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
3
+ import { ThemeableMixin } from "../../../mixins/themeable.js";
4
+ import { NucleonElement } from "../NucleonElement/NucleonElement.js";
5
+ import { ifDefined } from 'lit-html/directives/if-defined';
6
+ import { classMap } from "../../../utils/class-map.js";
7
+ import { repeat } from 'lit-html/directives/repeat';
8
+ import { html } from 'lit-html';
9
+ const NS = 'i18n-editor';
10
+ const Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(NucleonElement)), NS);
11
+ export class I18nEditor extends Base {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.languageOverrides = 'https://demo.api/hapi/language_overrides';
15
+ this.selectedLanguage = 'english';
16
+ this.__selectedTabIndex = 0;
17
+ }
18
+ static get properties() {
19
+ return {
20
+ ...super.properties,
21
+ languageOverrides: { attribute: 'language-overrides' },
22
+ selectedLanguage: { attribute: 'selected-language' },
23
+ __selectedTabIndex: { attribute: false },
24
+ };
25
+ }
26
+ render() {
27
+ var _a, _b, _c;
28
+ const tabs = this.__tabs;
29
+ const prefix = tabs[this.__selectedTabIndex];
30
+ const valuesForLang = (_c = (_a = this.data) === null || _a === void 0 ? void 0 : _a.values[(_b = this.selectedLanguage) !== null && _b !== void 0 ? _b : '']) !== null && _c !== void 0 ? _c : {};
31
+ const filteredValues = {};
32
+ const isSpinnerVisible = !this.in({ idle: 'snapshot' });
33
+ if (prefix) {
34
+ if (prefix.includes('_')) {
35
+ const group = prefix.substring(0, prefix.indexOf('_'));
36
+ const subGroup = prefix.substring(prefix.indexOf('_') + 1);
37
+ const values = valuesForLang[group][subGroup];
38
+ for (const key in values) {
39
+ filteredValues[`${group}_${subGroup}_${key}`] = values[key];
40
+ }
41
+ }
42
+ else {
43
+ for (const key in valuesForLang) {
44
+ if (key.startsWith(prefix))
45
+ filteredValues[key] = valuesForLang[key];
46
+ }
47
+ }
48
+ }
49
+ const overridesLoader = this.__renderOverridesLoader();
50
+ const overrides = overridesLoader.overrides;
51
+ return html `
52
+ ${overridesLoader.template}
53
+
54
+ <div aria-busy=${this.in('busy')} aria-live="polite" class="relative">
55
+ <div
56
+ class=${classMap({
57
+ 'transition-opacity grid grid-cols-1 gap-s': true,
58
+ 'opacity-0 pointer-events-none': isSpinnerVisible,
59
+ })}
60
+ >
61
+ <vaadin-tabs
62
+ selected=${this.__selectedTabIndex}
63
+ class="-mx-l"
64
+ theme="minimal"
65
+ @selected-changed=${(evt) => {
66
+ var _a;
67
+ const tabsElement = evt.currentTarget;
68
+ this.__selectedTabIndex = (_a = tabsElement.selected) !== null && _a !== void 0 ? _a : 0;
69
+ }}
70
+ >
71
+ ${tabs.map(name => {
72
+ const shortName = name.substring(name.indexOf('_') + 1).replace(/_/g, ' ');
73
+ const label = html `<span class="capitalize">${shortName}</span>`;
74
+ return html `<vaadin-tab>${label}</vaadin-tab>`;
75
+ })}
76
+ </vaadin-tabs>
77
+
78
+ ${repeat(Object.entries(filteredValues), ([keyOrGroup]) => keyOrGroup, ([keyOrGroup, translationOrDictionary]) => {
79
+ var _a;
80
+ let code;
81
+ let gateway;
82
+ let override;
83
+ if (keyOrGroup.startsWith('gateways_')) {
84
+ code = keyOrGroup.substring(prefix.length + 1);
85
+ gateway = prefix.substring(9);
86
+ override = overrides.find(o => o.code === code && o.gateway === gateway);
87
+ }
88
+ else {
89
+ code = keyOrGroup;
90
+ gateway = undefined;
91
+ override = overrides.find(o => o.code === code);
92
+ }
93
+ return html `
94
+ <foxy-internal-i18n-editor-entry
95
+ default-value=${translationOrDictionary}
96
+ gateway=${ifDefined(gateway)}
97
+ parent=${ifDefined((_a = this.languageOverrides) !== null && _a !== void 0 ? _a : void 0)}
98
+ code=${code}
99
+ infer=""
100
+ .data=${override !== null && override !== void 0 ? override : null}
101
+ >
102
+ </foxy-internal-i18n-editor-entry>
103
+ `;
104
+ })}
105
+ </div>
106
+
107
+ <div
108
+ data-testid="spinner"
109
+ class=${classMap({
110
+ 'transition-opacity absolute inset-0 flex': true,
111
+ 'opacity-0 pointer-events-none': !isSpinnerVisible,
112
+ })}
113
+ >
114
+ <foxy-spinner
115
+ layout=${this.in('busy') ? 'no-label' : 'horizontal'}
116
+ class="m-auto"
117
+ state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}
118
+ infer="spinner"
119
+ >
120
+ </foxy-spinner>
121
+ </div>
122
+ </div>
123
+ `;
124
+ }
125
+ get __tabs() {
126
+ var _a;
127
+ const values = this.selectedLanguage ? (_a = this.data) === null || _a === void 0 ? void 0 : _a.values[this.selectedLanguage] : undefined;
128
+ const tabs = Object.entries(values !== null && values !== void 0 ? values : {}).reduce((allKeys, [key, value]) => {
129
+ if (typeof value === 'string') {
130
+ const prefix = key.substring(0, key.indexOf('_'));
131
+ allKeys.add(prefix || key);
132
+ }
133
+ else {
134
+ Object.entries(value).forEach(([subKey, subValue]) => {
135
+ if (Object.keys(subValue).length === 0)
136
+ return;
137
+ allKeys.add(`${key}_${subKey}`);
138
+ });
139
+ }
140
+ return allKeys;
141
+ }, new Set());
142
+ return Array.from(tabs);
143
+ }
144
+ __renderOverridesLoader() {
145
+ var _a;
146
+ const loaders = Array.from(this.renderRoot.querySelectorAll('foxy-nucleon'));
147
+ const overrides = loaders.reduce((result, loader) => { var _a, _b; return [...result, ...((_b = (_a = loader.data) === null || _a === void 0 ? void 0 : _a._embedded['fx:language_overrides']) !== null && _b !== void 0 ? _b : [])]; }, []);
148
+ const firstLoader = loaders[0];
149
+ const loaderTemplates = new Array(Math.ceil((((_a = firstLoader === null || firstLoader === void 0 ? void 0 : firstLoader.data) === null || _a === void 0 ? void 0 : _a.total_items) || 300) / 300))
150
+ .fill(0)
151
+ .map((_, index) => {
152
+ var _a;
153
+ try {
154
+ const url = new URL((_a = this.languageOverrides) !== null && _a !== void 0 ? _a : '');
155
+ url.searchParams.set('offset', String(index * 300));
156
+ url.searchParams.set('limit', '300');
157
+ return html `
158
+ <foxy-nucleon infer="" href=${url.toString()} @update=${() => this.requestUpdate()}>
159
+ </foxy-nucleon>
160
+ `;
161
+ }
162
+ catch (_b) {
163
+ return undefined;
164
+ }
165
+ });
166
+ return {
167
+ template: html `<div class="hidden">${loaderTemplates}</div>`,
168
+ overrides,
169
+ loaders,
170
+ };
171
+ }
172
+ }
173
+ //# sourceMappingURL=I18nEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"I18nEditor.js","sourceRoot":"","sources":["../../../../src/elements/public/I18nEditor/I18nEditor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { Data, Overrides } from './types';\nimport type { TabsElement } from '@vaadin/vaadin-tabs';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { html } from 'lit-html';\n\nconst NS = 'i18n-editor';\nconst Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(NucleonElement)), NS);\n\nexport class I18nEditor extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n languageOverrides: { attribute: 'language-overrides' },\n selectedLanguage: { attribute: 'selected-language' },\n __selectedTabIndex: { attribute: false },\n };\n }\n\n languageOverrides: string | null = 'https://demo.api/hapi/language_overrides';\n\n selectedLanguage: string | null = 'english';\n\n private __selectedTabIndex = 0;\n\n render(): TemplateResult {\n const tabs = this.__tabs;\n const prefix = tabs[this.__selectedTabIndex] as string | undefined;\n const valuesForLang = this.data?.values[this.selectedLanguage ?? ''] ?? {};\n const filteredValues: Record<string, string> = {};\n const isSpinnerVisible = !this.in({ idle: 'snapshot' });\n\n if (prefix) {\n if (prefix.includes('_')) {\n const group = prefix.substring(0, prefix.indexOf('_'));\n const subGroup = prefix.substring(prefix.indexOf('_') + 1);\n const values = (valuesForLang[group] as Record<string, Record<string, string>>)[subGroup];\n\n for (const key in values) {\n filteredValues[`${group}_${subGroup}_${key}`] = values[key];\n }\n } else {\n for (const key in valuesForLang) {\n if (key.startsWith(prefix)) filteredValues[key] = valuesForLang[key] as string;\n }\n }\n }\n\n const overridesLoader = this.__renderOverridesLoader();\n const overrides = overridesLoader.overrides;\n\n return html`\n ${overridesLoader.template}\n\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'transition-opacity grid grid-cols-1 gap-s': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n <vaadin-tabs\n selected=${this.__selectedTabIndex}\n class=\"-mx-l\"\n theme=\"minimal\"\n @selected-changed=${(evt: CustomEvent) => {\n const tabsElement = evt.currentTarget as TabsElement;\n this.__selectedTabIndex = tabsElement.selected ?? 0;\n }}\n >\n ${tabs.map(name => {\n const shortName = name.substring(name.indexOf('_') + 1).replace(/_/g, ' ');\n const label = html`<span class=\"capitalize\">${shortName}</span>`;\n return html`<vaadin-tab>${label}</vaadin-tab>`;\n })}\n </vaadin-tabs>\n\n ${repeat(\n Object.entries(filteredValues),\n ([keyOrGroup]) => keyOrGroup,\n ([keyOrGroup, translationOrDictionary]) => {\n let code: string;\n let gateway: string | undefined;\n let override: Overrides['_embedded']['fx:language_overrides'][number] | undefined;\n\n if (keyOrGroup.startsWith('gateways_')) {\n code = keyOrGroup.substring(prefix!.length + 1);\n gateway = prefix!.substring(9);\n override = overrides.find(o => o.code === code && o.gateway === gateway);\n } else {\n code = keyOrGroup;\n gateway = undefined;\n override = overrides.find(o => o.code === code);\n }\n\n return html`\n <foxy-internal-i18n-editor-entry\n default-value=${translationOrDictionary}\n gateway=${ifDefined(gateway)}\n parent=${ifDefined(this.languageOverrides ?? void 0)}\n code=${code}\n infer=\"\"\n .data=${override ?? null}\n >\n </foxy-internal-i18n-editor-entry>\n `;\n }\n )}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition-opacity absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('busy') ? 'no-label' : 'horizontal'}\n class=\"m-auto\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private get __tabs() {\n const values = this.selectedLanguage ? this.data?.values[this.selectedLanguage] : undefined;\n\n const tabs = Object.entries(values ?? {}).reduce((allKeys, [key, value]) => {\n if (typeof value === 'string') {\n const prefix = key.substring(0, key.indexOf('_'));\n allKeys.add(prefix || key);\n } else {\n Object.entries(value).forEach(([subKey, subValue]) => {\n if (Object.keys(subValue).length === 0) return;\n allKeys.add(`${key}_${subKey}`);\n });\n }\n\n return allKeys;\n }, new Set<string>());\n\n return Array.from(tabs);\n }\n\n private __renderOverridesLoader() {\n type Loader = NucleonElement<Overrides>;\n\n const loaders = Array.from(this.renderRoot.querySelectorAll<Loader>('foxy-nucleon'));\n const overrides = loaders.reduce(\n (result, loader) => [...result, ...(loader.data?._embedded['fx:language_overrides'] ?? [])],\n [] as Resource<Rels.LanguageOverride>[]\n );\n\n const firstLoader = loaders[0] as Loader | undefined;\n\n const loaderTemplates = new Array(Math.ceil((firstLoader?.data?.total_items || 300) / 300))\n .fill(0)\n .map((_, index) => {\n try {\n const url = new URL(this.languageOverrides ?? '');\n\n url.searchParams.set('offset', String(index * 300));\n url.searchParams.set('limit', '300');\n\n return html`\n <foxy-nucleon infer=\"\" href=${url.toString()} @update=${() => this.requestUpdate()}>\n </foxy-nucleon>\n `;\n } catch {\n return undefined;\n }\n });\n\n return {\n template: html`<div class=\"hidden\">${loaderTemplates}</div>`,\n overrides,\n loaders,\n };\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import '@vaadin/vaadin-tabs';
2
+ import '../NucleonElement/index';
3
+ import '../Spinner/index';
4
+ import '../I18n/index';
5
+ import './internal/InternalI18nEditorEntry/index';
6
+ import { I18nEditor } from './I18nEditor';
7
+ export { I18nEditor };
@@ -0,0 +1,9 @@
1
+ import '@vaadin/vaadin-tabs';
2
+ import "../NucleonElement/index.js";
3
+ import "../Spinner/index.js";
4
+ import "../I18n/index.js";
5
+ import "./internal/InternalI18nEditorEntry/index.js";
6
+ import { I18nEditor } from "./I18nEditor.js";
7
+ customElements.define('foxy-i18n-editor', I18nEditor);
8
+ export { I18nEditor };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/I18nEditor/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B,oCAAiC;AACjC,6BAA0B;AAC1B,0BAAuB;AAEvB,qDAAkD;AAElD,OAAO,EAAE,UAAU,EAAE,wBAAqB;AAE1C,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-tabs';\n\nimport '../NucleonElement/index';\nimport '../Spinner/index';\nimport '../I18n/index';\n\nimport './internal/InternalI18nEditorEntry/index';\n\nimport { I18nEditor } from './I18nEditor';\n\ncustomElements.define('foxy-i18n-editor', I18nEditor);\n\nexport { I18nEditor };\n"]}
@@ -0,0 +1,17 @@
1
+ import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';
2
+ import type { Data } from './types';
3
+ import { NucleonElement } from '../../../NucleonElement/NucleonElement';
4
+ declare const Base: typeof NucleonElement & {
5
+ styles: CSSResultArray;
6
+ } & import("lit-element").Constructor<import("../../../../../mixins/configurable").ConfigurableMixinHost> & import("lit-element").Constructor<import("../../../../../mixins/translatable").TranslatableMixinHost> & {
7
+ defaultNS: string;
8
+ };
9
+ export declare class InternalI18nEditorEntry extends Base<Data> {
10
+ static get properties(): PropertyDeclarations;
11
+ static get styles(): CSSResultArray;
12
+ defaultValue: string | null;
13
+ gateway: string | null;
14
+ code: string | null;
15
+ render(): TemplateResult;
16
+ }
17
+ export {};
@@ -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":"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","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"]}
@@ -65,8 +65,6 @@ export class InternalItemCategoryFormTaxesControlItem extends TaxCard {
65
65
  const resource = this.renderRoot.querySelector('#resource');
66
66
  if (checkbox.checked) {
67
67
  resource.edit({
68
- // TODO remove the directive below once sdk type have been corrected
69
- // @ts-expect-error SDK types are wrong
70
68
  tax_uri: this.data._links.self.href,
71
69
  item_category_uri: this.itemCategory,
72
70
  });
@@ -1 +1 @@
1
- {"version":3,"file":"InternalItemCategoryFormTaxesControlItem.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { CheckboxElement } from '@vaadin/vaadin-checkbox';\nimport type { NucleonElement } from '../../../NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { TaxCard } from '../../../TaxCard/TaxCard';\nimport { html } from 'lit-html';\n\ntype TaxItemCategories = Resource<Rels.TaxItemCategories>;\ntype TaxItemCategory = Resource<Rels.TaxItemCategory>;\n\nexport class InternalItemCategoryFormTaxesControlItem extends TaxCard {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n taxItemCategories: { type: String, attribute: 'tax-item-categories' },\n itemCategory: { type: String, attribute: 'item-category' },\n };\n }\n\n taxItemCategories: string | null = null;\n\n itemCategory: string | null = null;\n\n private __resourceElementIsBusy = false;\n\n private __queryElementData: TaxItemCategories | null = null;\n\n render(): TemplateResult {\n const taxItemCategory = this.__queryElementData?._embedded?.['fx:tax_item_categories']?.[0];\n let taxItemCategories: string | undefined;\n\n try {\n const url = new URL(this.taxItemCategories ?? '');\n const hrefAsUrl = new URL(this.href);\n const id = hrefAsUrl.pathname.split('/').pop();\n\n if (!id) throw new Error();\n\n url.searchParams.set('tax_id', id);\n url.searchParams.set('limit', '1');\n taxItemCategories = url.toString();\n } catch {\n taxItemCategories = undefined;\n }\n\n return html`\n <foxy-nucleon\n href=${ifDefined(taxItemCategories)}\n id=\"query\"\n @update=${(evt: CustomEvent) => {\n const nucleon = evt.currentTarget as NucleonElement<TaxItemCategories>;\n this.__queryElementData = nucleon.data;\n this.requestUpdate();\n }}\n >\n <foxy-nucleon\n parent=${ifDefined(this.taxItemCategories ?? undefined)}\n href=${ifDefined(taxItemCategory?._links.self.href)}\n id=\"resource\"\n @update=${(evt: CustomEvent) => {\n const nucleon = evt.currentTarget as NucleonElement<TaxItemCategories>;\n this.__resourceElementIsBusy = !nucleon.in('idle');\n this.requestUpdate();\n }}\n >\n </foxy-nucleon>\n </foxy-nucleon>\n\n <vaadin-checkbox\n class=\"px-m py-s block overflow-hidden\"\n ?disabled=${!this.__queryElementData || this.__resourceElementIsBusy || this.disabled}\n ?checked=${!!taxItemCategory}\n @change=${(evt: CustomEvent) => {\n type ResourceElement = NucleonElement<TaxItemCategory>;\n\n const checkbox = evt.currentTarget as CheckboxElement;\n const resource = this.renderRoot.querySelector('#resource') as ResourceElement;\n\n if (checkbox.checked) {\n resource.edit({\n // TODO remove the directive below once sdk type have been corrected\n // @ts-expect-error SDK types are wrong\n tax_uri: this.data!._links.self.href,\n item_category_uri: this.itemCategory!,\n });\n\n resource.submit();\n } else {\n resource.delete();\n }\n }}\n >\n ${super.render()}\n </vaadin-checkbox>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalItemCategoryFormTaxesControlItem.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { CheckboxElement } from '@vaadin/vaadin-checkbox';\nimport type { NucleonElement } from '../../../NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { TaxCard } from '../../../TaxCard/TaxCard';\nimport { html } from 'lit-html';\n\ntype TaxItemCategories = Resource<Rels.TaxItemCategories>;\ntype TaxItemCategory = Resource<Rels.TaxItemCategory>;\n\nexport class InternalItemCategoryFormTaxesControlItem extends TaxCard {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n taxItemCategories: { type: String, attribute: 'tax-item-categories' },\n itemCategory: { type: String, attribute: 'item-category' },\n };\n }\n\n taxItemCategories: string | null = null;\n\n itemCategory: string | null = null;\n\n private __resourceElementIsBusy = false;\n\n private __queryElementData: TaxItemCategories | null = null;\n\n render(): TemplateResult {\n const taxItemCategory = this.__queryElementData?._embedded?.['fx:tax_item_categories']?.[0];\n let taxItemCategories: string | undefined;\n\n try {\n const url = new URL(this.taxItemCategories ?? '');\n const hrefAsUrl = new URL(this.href);\n const id = hrefAsUrl.pathname.split('/').pop();\n\n if (!id) throw new Error();\n\n url.searchParams.set('tax_id', id);\n url.searchParams.set('limit', '1');\n taxItemCategories = url.toString();\n } catch {\n taxItemCategories = undefined;\n }\n\n return html`\n <foxy-nucleon\n href=${ifDefined(taxItemCategories)}\n id=\"query\"\n @update=${(evt: CustomEvent) => {\n const nucleon = evt.currentTarget as NucleonElement<TaxItemCategories>;\n this.__queryElementData = nucleon.data;\n this.requestUpdate();\n }}\n >\n <foxy-nucleon\n parent=${ifDefined(this.taxItemCategories ?? undefined)}\n href=${ifDefined(taxItemCategory?._links.self.href)}\n id=\"resource\"\n @update=${(evt: CustomEvent) => {\n const nucleon = evt.currentTarget as NucleonElement<TaxItemCategories>;\n this.__resourceElementIsBusy = !nucleon.in('idle');\n this.requestUpdate();\n }}\n >\n </foxy-nucleon>\n </foxy-nucleon>\n\n <vaadin-checkbox\n class=\"px-m py-s block overflow-hidden\"\n ?disabled=${!this.__queryElementData || this.__resourceElementIsBusy || this.disabled}\n ?checked=${!!taxItemCategory}\n @change=${(evt: CustomEvent) => {\n type ResourceElement = NucleonElement<TaxItemCategory>;\n\n const checkbox = evt.currentTarget as CheckboxElement;\n const resource = this.renderRoot.querySelector('#resource') as ResourceElement;\n\n if (checkbox.checked) {\n resource.edit({\n tax_uri: this.data!._links.self.href,\n item_category_uri: this.itemCategory!,\n });\n\n resource.submit();\n } else {\n resource.delete();\n }\n }}\n >\n ${super.render()}\n </vaadin-checkbox>\n `;\n }\n}\n"]}
@@ -41,21 +41,13 @@ export class StoreForm extends Base {
41
41
  return this.form.bcc_on_receipt_email ? ['checked'] : [];
42
42
  };
43
43
  this.__setBccOnReceiptEmailValue = (newValue) => {
44
- this.edit({
45
- // TODO: remove the directive below when SDK types are fixed
46
- // @ts-expect-error SDK types are incorrect
47
- bcc_on_receipt_email: newValue.includes('checked'),
48
- });
44
+ this.edit({ bcc_on_receipt_email: newValue.includes('checked') });
49
45
  };
50
46
  this.__getUseEmailDnsValue = () => {
51
47
  return this.form.use_email_dns ? ['checked'] : [];
52
48
  };
53
49
  this.__setUseEmailDnsValue = (newValue) => {
54
- this.edit({
55
- // TODO: remove the directive below when SDK types are fixed
56
- // @ts-expect-error SDK types are incorrect
57
- use_email_dns: newValue.includes('checked'),
58
- });
50
+ this.edit({ use_email_dns: newValue.includes('checked') });
59
51
  };
60
52
  this.__getUseSmtpConfigValue = () => {
61
53
  return this.form.smtp_config ? ['checked'] : [];