@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.
- package/dist/cdn/foxy-access-recovery-form.js +1 -1
- package/dist/cdn/foxy-address-card.js +2 -2
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-api-browser.js +3 -3
- package/dist/cdn/foxy-applied-tax-card.js +1 -1
- package/dist/cdn/foxy-attribute-card.js +1 -1
- package/dist/cdn/foxy-attribute-form.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-collection-page.js +1 -1
- package/dist/cdn/foxy-collection-pages.js +1 -1
- package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
- package/dist/cdn/foxy-coupon-card.js +1 -1
- package/dist/cdn/foxy-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-coupon-codes-form.js +1 -1
- package/dist/cdn/foxy-coupon-detail-card.js +1 -1
- package/dist/cdn/foxy-coupon-form.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-api.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +1 -1
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-builder.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-discount-detail-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-email-template-card.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-form.js +1 -1
- package/dist/cdn/foxy-i18n-editor.js +2 -0
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-integration-card.js +1 -1
- package/dist/cdn/foxy-integration-form.js +1 -1
- package/dist/cdn/foxy-item-card.js +1 -1
- package/dist/cdn/foxy-item-category-card.js +1 -1
- package/dist/cdn/foxy-item-category-form.js +1 -1
- package/dist/cdn/foxy-item-form.js +1 -1
- package/dist/cdn/foxy-item-option-card.js +1 -1
- package/dist/cdn/foxy-item-option-form.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-nucleon-element.js +1 -1
- package/dist/cdn/foxy-pagination.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
- package/dist/cdn/foxy-payments-api.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +2 -2
- package/dist/cdn/foxy-reports-table.js +1 -1
- package/dist/cdn/foxy-shipment-card.js +1 -1
- package/dist/cdn/foxy-shipping-method-card.js +1 -1
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +2 -2
- package/dist/cdn/foxy-store-form.js +1 -1
- package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
- package/dist/cdn/foxy-subscription-card.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +3 -3
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.js +1 -1
- package/dist/cdn/foxy-tax-card.js +1 -1
- package/dist/cdn/foxy-tax-form.js +1 -1
- package/dist/cdn/foxy-template-card.js +1 -1
- package/dist/cdn/foxy-template-config-form.js +1 -1
- package/dist/cdn/foxy-template-form.js +1 -1
- package/dist/cdn/foxy-template-set-card.js +1 -1
- package/dist/cdn/foxy-template-set-form.js +1 -1
- package/dist/cdn/foxy-transaction-card.js +1 -1
- package/dist/cdn/foxy-transaction.js +1 -1
- package/dist/cdn/foxy-transactions-table.js +1 -1
- package/dist/cdn/foxy-user-form.js +1 -1
- package/dist/cdn/foxy-users-table.js +1 -1
- package/dist/cdn/foxy-webhook-card.js +1 -1
- package/dist/cdn/foxy-webhook-form.js +1 -1
- package/dist/cdn/foxy-webhook-log-card.js +1 -1
- package/dist/cdn/foxy-webhook-status-card.js +1 -1
- package/dist/cdn/shared-002b788f.js +15 -0
- package/dist/cdn/{shared-4623f740.js → shared-0672e78b.js} +1 -1
- package/dist/cdn/{shared-afaa6139.js → shared-162fc285.js} +1 -1
- package/dist/cdn/{shared-3f4f362e.js → shared-1b3e1a0d.js} +1 -1
- package/dist/cdn/{shared-de385bdb.js → shared-2215e6c8.js} +5 -5
- package/dist/cdn/shared-236d9b7e.js +1 -0
- package/dist/cdn/{shared-03f7cc13.js → shared-29376ba1.js} +1 -1
- package/dist/cdn/{shared-ff13276c.js → shared-29e21467.js} +3 -3
- package/dist/cdn/{shared-00c585e4.js → shared-2c842660.js} +1 -1
- package/dist/cdn/{shared-23e0d67e.js → shared-2d3027f4.js} +1 -1
- package/dist/cdn/{shared-a0c09692.js → shared-2f1e04ae.js} +1 -1
- package/dist/cdn/{shared-788e5ff5.js → shared-34b11d34.js} +1 -1
- package/dist/cdn/{shared-5714d3a4.js → shared-3a3878c9.js} +1 -1
- package/dist/cdn/{shared-0ff5e59d.js → shared-40537775.js} +1 -1
- package/dist/cdn/{shared-b1b40832.js → shared-40d82f6b.js} +1 -1
- package/dist/cdn/{shared-28b09f69.js → shared-4457dc27.js} +1 -1
- package/dist/cdn/{shared-6822bc96.js → shared-4975f86f.js} +1 -1
- package/dist/cdn/{shared-77359cd0.js → shared-4c338ca6.js} +1 -1
- package/dist/cdn/shared-515f00b1.js +1 -0
- package/dist/cdn/{shared-b5120f1a.js → shared-5504f415.js} +2 -2
- package/dist/cdn/{shared-452a471d.js → shared-55e20d5b.js} +1 -1
- package/dist/cdn/{shared-a8966936.js → shared-5ad8c9a0.js} +1 -1
- package/dist/cdn/{shared-9f53978e.js → shared-5b55627c.js} +1 -1
- package/dist/cdn/{shared-c70b41e1.js → shared-6003864d.js} +1 -1
- package/dist/cdn/shared-6b8874a7.js +1 -0
- package/dist/cdn/shared-6bf8883f.js +1 -0
- package/dist/cdn/{shared-77970922.js → shared-6d2064e9.js} +3 -3
- package/dist/cdn/{shared-1d851ca7.js → shared-6e6ed30a.js} +1 -1
- package/dist/cdn/{shared-59d73648.js → shared-71deb26e.js} +1 -1
- package/dist/cdn/{shared-0a7b94ac.js → shared-74277a73.js} +1 -1
- package/dist/cdn/{shared-555ec39f.js → shared-7661b51a.js} +15 -15
- package/dist/cdn/{shared-3d0dc4a6.js → shared-7b167fe9.js} +1 -1
- package/dist/cdn/{shared-03d5434f.js → shared-85f9051e.js} +1 -1
- package/dist/cdn/{shared-684e229f.js → shared-8a5e01ae.js} +1 -1
- package/dist/cdn/{shared-7af4d4b6.js → shared-8d533e0c.js} +1 -1
- package/dist/cdn/shared-923da875.js +6 -0
- package/dist/cdn/shared-92926b1d.js +1 -0
- package/dist/cdn/{shared-17d5d718.js → shared-92bd849f.js} +1 -1
- package/dist/cdn/shared-a46a2f49.js +1 -0
- package/dist/cdn/{shared-f04dd7e9.js → shared-a86761d3.js} +2 -2
- package/dist/cdn/{shared-b97d9ae3.js → shared-ad8141c4.js} +1 -1
- package/dist/cdn/{shared-7bfd93b7.js → shared-b28dbc68.js} +27 -51
- package/dist/cdn/{shared-2ce65ad5.js → shared-b5cbbdd8.js} +1 -1
- package/dist/cdn/{shared-15278fe0.js → shared-b7423eab.js} +1 -1
- package/dist/cdn/{shared-760538ac.js → shared-b7f7f15f.js} +1 -1
- package/dist/cdn/{shared-e4bc532a.js → shared-b8e9b536.js} +1 -1
- package/dist/cdn/{shared-ecd289b3.js → shared-bb522838.js} +1 -1
- package/dist/cdn/{shared-1e9dc71f.js → shared-bd194cdf.js} +1 -1
- package/dist/cdn/{shared-a98a6602.js → shared-c484320b.js} +1 -1
- package/dist/cdn/{shared-08d6d02b.js → shared-c52d3772.js} +1 -1
- package/dist/cdn/{shared-debbc076.js → shared-cced7800.js} +1 -1
- package/dist/cdn/{shared-b617fde5.js → shared-cfec6ec1.js} +1 -1
- package/dist/cdn/{shared-9195959e.js → shared-d302ad2c.js} +1 -1
- package/dist/cdn/{shared-e6bff624.js → shared-d43fc5cc.js} +1 -1
- package/dist/cdn/shared-dc798bf4.js +1 -0
- package/dist/cdn/{shared-4a796610.js → shared-dcbf57e0.js} +1 -1
- package/dist/cdn/{shared-8cb76c8b.js → shared-e119731e.js} +1 -1
- package/dist/cdn/shared-e396ec04.js +25 -0
- package/dist/cdn/{shared-0db7afef.js → shared-e3ce88dc.js} +12 -17
- package/dist/cdn/{shared-3b22a756.js → shared-ea316e64.js} +1 -1
- package/dist/cdn/{shared-b5b5c848.js → shared-ef0fc329.js} +1 -1
- package/dist/cdn/{shared-f43a5253.js → shared-f022673a.js} +7 -7
- package/dist/cdn/{shared-184945cc.js → shared-f23d122e.js} +3 -3
- package/dist/cdn/{shared-45c3705a.js → shared-f2d19582.js} +1 -1
- package/dist/cdn/{shared-0d697dd1.js → shared-facfe95a.js} +4 -4
- package/dist/cdn/{shared-779795c5.js → shared-ff2f84c7.js} +1 -1
- package/dist/cdn/translations/api-browser/en.json +1 -0
- package/dist/cdn/translations/i18n-editor/en.json +10 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +2 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +29 -17
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
- package/dist/elements/public/ApiBrowser/ApiBrowser.d.ts +2 -1
- package/dist/elements/public/ApiBrowser/ApiBrowser.js +38 -15
- package/dist/elements/public/ApiBrowser/ApiBrowser.js.map +1 -1
- package/dist/elements/public/I18nEditor/I18nEditor.d.ts +18 -0
- package/dist/elements/public/I18nEditor/I18nEditor.js +173 -0
- package/dist/elements/public/I18nEditor/I18nEditor.js.map +1 -0
- package/dist/elements/public/I18nEditor/index.d.ts +7 -0
- package/dist/elements/public/I18nEditor/index.js +9 -0
- package/dist/elements/public/I18nEditor/index.js.map +1 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.d.ts +17 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js +169 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js.map +1 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.d.ts +6 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.js +8 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/index.js.map +1 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.d.ts +3 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.js +2 -0
- package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/types.js.map +1 -0
- package/dist/elements/public/I18nEditor/types.d.ts +4 -0
- package/dist/elements/public/I18nEditor/types.js +2 -0
- package/dist/elements/public/I18nEditor/types.js.map +1 -0
- package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js +0 -2
- package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js.map +1 -1
- package/dist/elements/public/StoreForm/StoreForm.js +2 -10
- package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.d.ts +1 -0
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.js +29 -18
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.js.map +1 -1
- package/dist/elements/public/TemplateSetForm/index.d.ts +1 -0
- package/dist/elements/public/TemplateSetForm/index.js +1 -0
- package/dist/elements/public/TemplateSetForm/index.js.map +1 -1
- package/dist/elements/public/index.d.ts +1 -0
- package/dist/elements/public/index.defined.d.ts +1 -0
- package/dist/elements/public/index.defined.js +1 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +1 -0
- package/dist/elements/public/index.js.map +1 -1
- package/dist/mixins/responsive.js +3 -3
- package/dist/mixins/responsive.js.map +1 -1
- package/dist/mixins/themeable.js +264 -0
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +2 -2
- package/dist/cdn/shared-193a0fb1.js +0 -1
- package/dist/cdn/shared-2af327d0.js +0 -15
- package/dist/cdn/shared-a420358e.js +0 -1
- package/dist/cdn/shared-a83b38f1.js +0 -1
- package/dist/cdn/shared-d82f3ba0.js +0 -1
- 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,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 {};
|
package/dist/elements/public/I18nEditor/internal/InternalI18nEditorEntry/InternalI18nEditorEntry.js
ADDED
|
@@ -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}​</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}​</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,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 @@
|
|
|
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 @@
|
|
|
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":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,oCAAiC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAKhC,MAAM,OAAO,wCAAyC,SAAQ,OAAO;IAArE;;QASE,sBAAiB,GAAkB,IAAI,CAAC;QAExC,iBAAY,GAAkB,IAAI,CAAC;QAE3B,4BAAuB,GAAG,KAAK,CAAC;QAEhC,uBAAkB,GAA6B,IAAI,CAAC;
|
|
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'] : [];
|