@genexus/genexus-ide-ui 1.1.17 → 1.1.18
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/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js +201 -0
- package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.en.json +18 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.ja.json +18 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.zh.json +18 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/shortcuts.json +15 -0
- package/dist/collection/components/json-import/json-import.css +77 -0
- package/dist/collection/components/json-import/json-import.js +458 -0
- package/dist/collection/components/json-import/json-import.js.map +1 -0
- package/dist/collection/testing/locale.e2e.js +1 -0
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/gx-ide-json-import.d.ts +11 -0
- package/dist/components/gx-ide-json-import.js +239 -0
- package/dist/components/gx-ide-json-import.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-json-import.entry.js +197 -0
- package/dist/esm/gx-ide-json-import.entry.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.en.json +18 -0
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.ja.json +18 -0
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.zh.json +18 -0
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/p-2bfae98b.entry.js +303 -0
- package/dist/genexus-ide-ui/p-2bfae98b.entry.js.map +1 -0
- package/dist/types/components/json-import/json-import.d.ts +73 -0
- package/dist/types/components.d.ts +131 -16
- package/package.json +1 -1
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f)
|
|
3
|
+
throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
5
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
6
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
9
|
+
if (kind === "m")
|
|
10
|
+
throw new TypeError("Private method is not writable");
|
|
11
|
+
if (kind === "a" && !f)
|
|
12
|
+
throw new TypeError("Private accessor was defined without a setter");
|
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
14
|
+
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
+
};
|
|
17
|
+
var _GxIdeJsonImport_componentLocale, _GxIdeJsonImport_data, _GxIdeJsonImport_radioOptionsModel, _GxIdeJsonImport_shortcutsSrc, _GxIdeJsonImport_checkBoxEl, _GxIdeJsonImport_chShortcutsEl, _GxIdeJsonImport_descriptionEl, _GxIdeJsonImport_fileInputHiddenEl, _GxIdeJsonImport_moduleEntitySelector, _GxIdeJsonImport_nameEl, _GxIdeJsonImport_radioGroup, _GxIdeJsonImport_validateForm, _GxIdeJsonImport_nameChangedHandler, _GxIdeJsonImport_changeRadioHandler, _GxIdeJsonImport_createHandler, _GxIdeJsonImport_removeFileSelection, _GxIdeJsonImport_selectFileInputChangedHandler, _GxIdeJsonImport_selectFileInputHandler, _GxIdeJsonImport_handleEditorChange, _GxIdeJsonImport_handleSlotChange;
|
|
18
|
+
import { Host, getAssetPath, h } from "@stencil/core";
|
|
19
|
+
import { getIconPath } from "@genexus/mercury";
|
|
20
|
+
import { config } from "../../common/config";
|
|
21
|
+
import { Locale } from "../../common/locale";
|
|
22
|
+
const CSS_BUNDLES = [
|
|
23
|
+
"resets/box-sizing",
|
|
24
|
+
"components/tab",
|
|
25
|
+
"components/tooltip",
|
|
26
|
+
"utils/form--full",
|
|
27
|
+
"utils/layout",
|
|
28
|
+
"utils/typography",
|
|
29
|
+
"utils/spacing",
|
|
30
|
+
"chameleon/scrollbar"
|
|
31
|
+
];
|
|
32
|
+
const FILE_ICON = getIconPath({
|
|
33
|
+
category: "gemini-tools",
|
|
34
|
+
name: "file",
|
|
35
|
+
colorType: "primary"
|
|
36
|
+
});
|
|
37
|
+
const MENU_DELETE = getIconPath({
|
|
38
|
+
category: "menus",
|
|
39
|
+
name: "delete",
|
|
40
|
+
colorType: "primary"
|
|
41
|
+
});
|
|
42
|
+
export class GxIdeJsonImport {
|
|
43
|
+
constructor() {
|
|
44
|
+
_GxIdeJsonImport_componentLocale.set(this, void 0);
|
|
45
|
+
_GxIdeJsonImport_data.set(this, {
|
|
46
|
+
name: "",
|
|
47
|
+
description: "",
|
|
48
|
+
assumeVarcharForNull: false,
|
|
49
|
+
parentId: "",
|
|
50
|
+
json: ""
|
|
51
|
+
});
|
|
52
|
+
_GxIdeJsonImport_radioOptionsModel.set(this, []);
|
|
53
|
+
_GxIdeJsonImport_shortcutsSrc.set(this, getAssetPath(`./gx-ide-assets/json-import/shortcuts.json`));
|
|
54
|
+
_GxIdeJsonImport_checkBoxEl.set(this, void 0);
|
|
55
|
+
_GxIdeJsonImport_chShortcutsEl.set(this, void 0);
|
|
56
|
+
_GxIdeJsonImport_descriptionEl.set(this, void 0);
|
|
57
|
+
_GxIdeJsonImport_fileInputHiddenEl.set(this, void 0);
|
|
58
|
+
_GxIdeJsonImport_moduleEntitySelector.set(this, void 0);
|
|
59
|
+
_GxIdeJsonImport_nameEl.set(this, void 0);
|
|
60
|
+
_GxIdeJsonImport_radioGroup.set(this, void 0);
|
|
61
|
+
_GxIdeJsonImport_validateForm.set(this, () => {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
const name = ((_b = (_a = __classPrivateFieldGet(this, _GxIdeJsonImport_nameEl, "f")) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.trim()) || "";
|
|
64
|
+
const json = this.radioGroupValue === "file" ? this.fileName : this.jsonContent;
|
|
65
|
+
const isNameValid = this.validateNameCallback
|
|
66
|
+
? this.validateNameCallback(name)
|
|
67
|
+
: Boolean(name);
|
|
68
|
+
const isJsonValid = this.radioGroupValue === "file"
|
|
69
|
+
? Boolean(this.fileName)
|
|
70
|
+
: this.validateJSONCallback
|
|
71
|
+
? this.validateJSONCallback(json)
|
|
72
|
+
: false;
|
|
73
|
+
this.isFormValid = isNameValid && isJsonValid;
|
|
74
|
+
});
|
|
75
|
+
_GxIdeJsonImport_nameChangedHandler.set(this, () => {
|
|
76
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_validateForm, "f").call(this);
|
|
77
|
+
});
|
|
78
|
+
_GxIdeJsonImport_changeRadioHandler.set(this, () => {
|
|
79
|
+
var _a;
|
|
80
|
+
this.radioGroupValue = __classPrivateFieldGet(this, _GxIdeJsonImport_radioGroup, "f").value;
|
|
81
|
+
if (this.radioGroupValue === "file") {
|
|
82
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_checkBoxEl, "f").value = "false";
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f").json = null;
|
|
86
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_removeFileSelection, "f").call(this);
|
|
87
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_validateForm, "f").call(this);
|
|
88
|
+
}
|
|
89
|
+
(_a = this.modeChangeCallback) === null || _a === void 0 ? void 0 : _a.call(this, this.radioGroupValue);
|
|
90
|
+
});
|
|
91
|
+
_GxIdeJsonImport_createHandler.set(this, () => {
|
|
92
|
+
var _a;
|
|
93
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f").name = __classPrivateFieldGet(this, _GxIdeJsonImport_nameEl, "f").value;
|
|
94
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f").description = __classPrivateFieldGet(this, _GxIdeJsonImport_descriptionEl, "f").value;
|
|
95
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f").parentId = (_a = __classPrivateFieldGet(this, _GxIdeJsonImport_moduleEntitySelector, "f").value) === null || _a === void 0 ? void 0 : _a.id;
|
|
96
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f").assumeVarcharForNull = __classPrivateFieldGet(this, _GxIdeJsonImport_checkBoxEl, "f").value === "true";
|
|
97
|
+
this.confirmCallback(__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f")).then((formSubmitResult) => {
|
|
98
|
+
this.showTooltipError = !formSubmitResult.success;
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
_GxIdeJsonImport_removeFileSelection.set(this, () => {
|
|
102
|
+
var _a;
|
|
103
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f").json = null;
|
|
104
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_fileInputHiddenEl, "f").value = null;
|
|
105
|
+
this.fileName = null;
|
|
106
|
+
(_a = this.fileChangeCallback) === null || _a === void 0 ? void 0 : _a.call(this, null);
|
|
107
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_validateForm, "f").call(this);
|
|
108
|
+
});
|
|
109
|
+
_GxIdeJsonImport_selectFileInputChangedHandler.set(this, (event) => {
|
|
110
|
+
var _a, _b;
|
|
111
|
+
const target = event.target;
|
|
112
|
+
if (((_a = target.files) === null || _a === void 0 ? void 0 : _a.length) > 0 && this.radioGroupValue === "file") {
|
|
113
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_data, "f").json = target.files[0];
|
|
114
|
+
this.fileName = target.files[0].name;
|
|
115
|
+
(_b = this.fileChangeCallback) === null || _b === void 0 ? void 0 : _b.call(this, target.files[0]);
|
|
116
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_validateForm, "f").call(this);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
_GxIdeJsonImport_selectFileInputHandler.set(this, () => {
|
|
120
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_fileInputHiddenEl, "f").click();
|
|
121
|
+
});
|
|
122
|
+
_GxIdeJsonImport_handleEditorChange.set(this, () => {
|
|
123
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_validateForm, "f").call(this);
|
|
124
|
+
});
|
|
125
|
+
_GxIdeJsonImport_handleSlotChange.set(this, (e) => {
|
|
126
|
+
const elements = e.target.assignedElements();
|
|
127
|
+
if (elements.length > 0) {
|
|
128
|
+
const element = elements[0];
|
|
129
|
+
element.addEventListener("json-content-change", ((event) => {
|
|
130
|
+
if (this.radioGroupValue === "text") {
|
|
131
|
+
this.jsonContent = event.detail.content;
|
|
132
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_handleEditorChange, "f").call(this);
|
|
133
|
+
}
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
this.fileName = undefined;
|
|
138
|
+
this.radioGroupValue = "file";
|
|
139
|
+
this.showTooltipError = false;
|
|
140
|
+
this.isFormValid = false;
|
|
141
|
+
this.jsonContent = "";
|
|
142
|
+
this.cancelCallback = undefined;
|
|
143
|
+
this.confirmCallback = undefined;
|
|
144
|
+
this.defaultParent = undefined;
|
|
145
|
+
this.defaultRadioValue = undefined;
|
|
146
|
+
this.parent = undefined;
|
|
147
|
+
this.selectModuleCallback = undefined;
|
|
148
|
+
this.modeChangeCallback = undefined;
|
|
149
|
+
this.fileChangeCallback = undefined;
|
|
150
|
+
this.validateNameCallback = undefined;
|
|
151
|
+
this.validateJSONCallback = undefined;
|
|
152
|
+
this.onJsonContentChange = undefined;
|
|
153
|
+
}
|
|
154
|
+
async componentWillLoad() {
|
|
155
|
+
__classPrivateFieldSet(this, _GxIdeJsonImport_componentLocale, await Locale.getComponentStrings(this.el), "f");
|
|
156
|
+
__classPrivateFieldSet(this, _GxIdeJsonImport_radioOptionsModel, [
|
|
157
|
+
{
|
|
158
|
+
value: "file",
|
|
159
|
+
caption: __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.filePathLabel
|
|
160
|
+
},
|
|
161
|
+
{ value: "text", caption: __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").main.jsonAreaLabel }
|
|
162
|
+
], "f");
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Suspends or reactivates the shortcuts
|
|
166
|
+
*/
|
|
167
|
+
async suspendShortcuts(suspendShortcuts) {
|
|
168
|
+
__classPrivateFieldGet(this, _GxIdeJsonImport_chShortcutsEl, "f").suspend = suspendShortcuts;
|
|
169
|
+
}
|
|
170
|
+
render() {
|
|
171
|
+
return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeJsonImport_shortcutsSrc, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeJsonImport_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { class: "header field-group spacing-body control-header-with-border" }, h("div", { class: "field-group field-group-name-description-module" }, h("label", {
|
|
172
|
+
// name
|
|
173
|
+
class: "label name-label", htmlFor: "input-name"
|
|
174
|
+
}, __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.nameFieldLabel), h("ch-edit", { class: "input name-input", id: "input-name", ref: (el) => (__classPrivateFieldSet(this, _GxIdeJsonImport_nameEl, el, "f")), onInput: __classPrivateFieldGet(this, _GxIdeJsonImport_nameChangedHandler, "f") }), h("label", {
|
|
175
|
+
// description
|
|
176
|
+
class: "label description-label", htmlFor: "input-description"
|
|
177
|
+
}, __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.descriptionFieldLabel), h("ch-edit", { class: "input description-input", id: "input-description", ref: (el) => (__classPrivateFieldSet(this, _GxIdeJsonImport_descriptionEl, el, "f")) }), h("label", {
|
|
178
|
+
// module/folder
|
|
179
|
+
class: "label module-label", htmlFor: "input-module"
|
|
180
|
+
}, __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.moduleFolderLabel), h("gx-ide-entity-selector", { class: "module module-entity-selector", id: "module", value: this.defaultParent, ref: (el) => (__classPrivateFieldSet(this, _GxIdeJsonImport_moduleEntitySelector, el, "f")), labelPosition: "none", defaultValue: this.defaultParent, selectEntityCallback: this.selectModuleCallback })), h("div", { class: "radio-file-input-wrapper field-group" }, h("ch-radio-group-render", {
|
|
181
|
+
// file url/text
|
|
182
|
+
class: "radio-group", model: __classPrivateFieldGet(this, _GxIdeJsonImport_radioOptionsModel, "f"), onChange: __classPrivateFieldGet(this, _GxIdeJsonImport_changeRadioHandler, "f"), value: this.defaultRadioValue, ref: (el) => (__classPrivateFieldSet(this, _GxIdeJsonImport_radioGroup, el, "f"))
|
|
183
|
+
}), h("div", { class: "field field-inline field-file-input" }, h("ch-edit", { autoFocus: true, id: "file-name", class: "input", part: "file-name", type: "text", value: this.fileName, readonly: true, placeholder: __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.fileNamePlaceholder, startImgSrc: FILE_ICON, disabled: this.radioGroupValue !== "file" }), h("input", { hidden: true, type: "file", accept: ".json", onChange: __classPrivateFieldGet(this, _GxIdeJsonImport_selectFileInputChangedHandler, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeJsonImport_fileInputHiddenEl, el, "f")) }), h("div", { class: "buttons-spacer" }, h("button", { "aria-label": __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.removeFileSelection, title: __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.removeFileSelection, id: "reset-all-button", class: "button-tertiary button-icon-only", part: "reset-all-button", onClick: __classPrivateFieldGet(this, _GxIdeJsonImport_removeFileSelection, "f"), disabled: this.radioGroupValue !== "file" }, h("ch-image", { class: "icon-md", src: MENU_DELETE })), h("button", { id: "select-file-load-button", class: "button-primary", part: "select-file-load-button", onClick: __classPrivateFieldGet(this, _GxIdeJsonImport_selectFileInputHandler, "f"), disabled: this.radioGroupValue !== "file" }, __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").header.selectfileButton))))), h("div", { class: "main field-group" }, h("div", { class: "json-area" }, h("div", { class: "slotted-container scrollable" }, h("slot", { name: "JsonTextEditor", onSlotchange: __classPrivateFieldGet(this, _GxIdeJsonImport_handleSlotChange, "f") })), this.showTooltipError && (h("ch-tooltip", { class: "tooltip", blockAlign: config.tooltipSettings.blockAlign, inlineAlign: config.tooltipSettings.inlineAlign, delay: config.tooltipSettings.delay }, "Error message"))), h("ch-checkbox", { class: "checkbox spacing-body-block-end spacing-body-inline-start", caption: __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").main.checkBoxLabel, checkedValue: "true", ref: (el) => (__classPrivateFieldSet(this, _GxIdeJsonImport_checkBoxEl, el, "f")) })), h("footer", { class: "control-footer control-footer-with-border spacing-body-block-end spacing-body-inline" }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", id: "button-cancel", onClick: this.cancelCallback, part: "button-cancel" }, __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").footer.btnCancel), h("button", { class: "button-primary", id: "button-ok", onClick: __classPrivateFieldGet(this, _GxIdeJsonImport_createHandler, "f"), part: "button-ok", disabled: !this.isFormValid }, __classPrivateFieldGet(this, _GxIdeJsonImport_componentLocale, "f").footer.btnOk))))));
|
|
184
|
+
}
|
|
185
|
+
static get is() { return "gx-ide-json-import"; }
|
|
186
|
+
static get encapsulation() { return "shadow"; }
|
|
187
|
+
static get originalStyleUrls() {
|
|
188
|
+
return {
|
|
189
|
+
"$": ["json-import.scss"]
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
static get styleUrls() {
|
|
193
|
+
return {
|
|
194
|
+
"$": ["json-import.css"]
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
static get assetsDirs() { return ["gx-ide-assets/json-import"]; }
|
|
198
|
+
static get properties() {
|
|
199
|
+
return {
|
|
200
|
+
"cancelCallback": {
|
|
201
|
+
"type": "unknown",
|
|
202
|
+
"mutable": false,
|
|
203
|
+
"complexType": {
|
|
204
|
+
"original": "() => Promise<void>",
|
|
205
|
+
"resolved": "() => Promise<void>",
|
|
206
|
+
"references": {
|
|
207
|
+
"Promise": {
|
|
208
|
+
"location": "global",
|
|
209
|
+
"id": "global::Promise"
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"required": false,
|
|
214
|
+
"optional": false,
|
|
215
|
+
"docs": {
|
|
216
|
+
"tags": [],
|
|
217
|
+
"text": "Callback that must be invoked when the user want to cancel the operation"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"confirmCallback": {
|
|
221
|
+
"type": "unknown",
|
|
222
|
+
"mutable": false,
|
|
223
|
+
"complexType": {
|
|
224
|
+
"original": "(\n data: JsonImportData\n ) => Promise<FormSubmitResult>",
|
|
225
|
+
"resolved": "(data: JsonImportData) => Promise<FormSubmitResult>",
|
|
226
|
+
"references": {
|
|
227
|
+
"JsonImportData": {
|
|
228
|
+
"location": "local",
|
|
229
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/json-import/json-import.tsx",
|
|
230
|
+
"id": "src/components/json-import/json-import.tsx::JsonImportData"
|
|
231
|
+
},
|
|
232
|
+
"Promise": {
|
|
233
|
+
"location": "global",
|
|
234
|
+
"id": "global::Promise"
|
|
235
|
+
},
|
|
236
|
+
"FormSubmitResult": {
|
|
237
|
+
"location": "import",
|
|
238
|
+
"path": "../../common/types",
|
|
239
|
+
"id": "src/common/types.ts::FormSubmitResult"
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"required": true,
|
|
244
|
+
"optional": false,
|
|
245
|
+
"docs": {
|
|
246
|
+
"tags": [],
|
|
247
|
+
"text": "Callback that must be invoked when the user confirms the creation of the SDT. It receives as parameters the data necessary to create the SDT."
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"defaultParent": {
|
|
251
|
+
"type": "unknown",
|
|
252
|
+
"mutable": false,
|
|
253
|
+
"complexType": {
|
|
254
|
+
"original": "EntityData",
|
|
255
|
+
"resolved": "{ id: string; name: string; iconSrc?: string; }",
|
|
256
|
+
"references": {
|
|
257
|
+
"EntityData": {
|
|
258
|
+
"location": "local",
|
|
259
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/json-import/json-import.tsx",
|
|
260
|
+
"id": "src/components/json-import/json-import.tsx::EntityData"
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"required": false,
|
|
265
|
+
"optional": false,
|
|
266
|
+
"docs": {
|
|
267
|
+
"tags": [],
|
|
268
|
+
"text": "Default value for Module/Folder field"
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"defaultRadioValue": {
|
|
272
|
+
"type": "string",
|
|
273
|
+
"mutable": false,
|
|
274
|
+
"complexType": {
|
|
275
|
+
"original": "string",
|
|
276
|
+
"resolved": "string",
|
|
277
|
+
"references": {}
|
|
278
|
+
},
|
|
279
|
+
"required": false,
|
|
280
|
+
"optional": false,
|
|
281
|
+
"docs": {
|
|
282
|
+
"tags": [],
|
|
283
|
+
"text": "Default value for Module/Folder field"
|
|
284
|
+
},
|
|
285
|
+
"attribute": "default-radio-value",
|
|
286
|
+
"reflect": false
|
|
287
|
+
},
|
|
288
|
+
"parent": {
|
|
289
|
+
"type": "unknown",
|
|
290
|
+
"mutable": false,
|
|
291
|
+
"complexType": {
|
|
292
|
+
"original": "EntityData",
|
|
293
|
+
"resolved": "{ id: string; name: string; iconSrc?: string; }",
|
|
294
|
+
"references": {
|
|
295
|
+
"EntityData": {
|
|
296
|
+
"location": "local",
|
|
297
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/json-import/json-import.tsx",
|
|
298
|
+
"id": "src/components/json-import/json-import.tsx::EntityData"
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"required": false,
|
|
303
|
+
"optional": false,
|
|
304
|
+
"docs": {
|
|
305
|
+
"tags": [],
|
|
306
|
+
"text": "Actual value for Module/Folder field"
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
"selectModuleCallback": {
|
|
310
|
+
"type": "unknown",
|
|
311
|
+
"mutable": false,
|
|
312
|
+
"complexType": {
|
|
313
|
+
"original": "SelectModuleCallback",
|
|
314
|
+
"resolved": "() => Promise<EntityData>",
|
|
315
|
+
"references": {
|
|
316
|
+
"SelectModuleCallback": {
|
|
317
|
+
"location": "local",
|
|
318
|
+
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/json-import/json-import.tsx",
|
|
319
|
+
"id": "src/components/json-import/json-import.tsx::SelectModuleCallback"
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"required": false,
|
|
324
|
+
"optional": false,
|
|
325
|
+
"docs": {
|
|
326
|
+
"tags": [],
|
|
327
|
+
"text": "Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled."
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"modeChangeCallback": {
|
|
331
|
+
"type": "unknown",
|
|
332
|
+
"mutable": false,
|
|
333
|
+
"complexType": {
|
|
334
|
+
"original": "(\n mode: \"file\" | \"text\"\n ) => Promise<void>",
|
|
335
|
+
"resolved": "(mode: \"text\" | \"file\") => Promise<void>",
|
|
336
|
+
"references": {
|
|
337
|
+
"Promise": {
|
|
338
|
+
"location": "global",
|
|
339
|
+
"id": "global::Promise"
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"required": false,
|
|
344
|
+
"optional": true,
|
|
345
|
+
"docs": {
|
|
346
|
+
"tags": [],
|
|
347
|
+
"text": "Callback invoked when the input mode changes between file and text."
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
"fileChangeCallback": {
|
|
351
|
+
"type": "unknown",
|
|
352
|
+
"mutable": false,
|
|
353
|
+
"complexType": {
|
|
354
|
+
"original": "(file: File | null) => Promise<void>",
|
|
355
|
+
"resolved": "(file: File) => Promise<void>",
|
|
356
|
+
"references": {
|
|
357
|
+
"File": {
|
|
358
|
+
"location": "global",
|
|
359
|
+
"id": "global::File"
|
|
360
|
+
},
|
|
361
|
+
"Promise": {
|
|
362
|
+
"location": "global",
|
|
363
|
+
"id": "global::Promise"
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
"required": false,
|
|
368
|
+
"optional": true,
|
|
369
|
+
"docs": {
|
|
370
|
+
"tags": [],
|
|
371
|
+
"text": "Callback invoked when a file is selected or removed."
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
"validateNameCallback": {
|
|
375
|
+
"type": "unknown",
|
|
376
|
+
"mutable": false,
|
|
377
|
+
"complexType": {
|
|
378
|
+
"original": "(name: string) => boolean",
|
|
379
|
+
"resolved": "(name: string) => boolean",
|
|
380
|
+
"references": {}
|
|
381
|
+
},
|
|
382
|
+
"required": false,
|
|
383
|
+
"optional": true,
|
|
384
|
+
"docs": {
|
|
385
|
+
"tags": [],
|
|
386
|
+
"text": "Callback para validar el nombre del objeto. Debe retornar true si el nombre es v\u00E1lido, false en caso contrario."
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"validateJSONCallback": {
|
|
390
|
+
"type": "unknown",
|
|
391
|
+
"mutable": false,
|
|
392
|
+
"complexType": {
|
|
393
|
+
"original": "(json: string) => boolean",
|
|
394
|
+
"resolved": "(json: string) => boolean",
|
|
395
|
+
"references": {}
|
|
396
|
+
},
|
|
397
|
+
"required": false,
|
|
398
|
+
"optional": true,
|
|
399
|
+
"docs": {
|
|
400
|
+
"tags": [],
|
|
401
|
+
"text": "Callback para validar el JSON. Debe retornar true si el JSON es v\u00E1lido, false en caso contrario."
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
"onJsonContentChange": {
|
|
405
|
+
"type": "unknown",
|
|
406
|
+
"mutable": false,
|
|
407
|
+
"complexType": {
|
|
408
|
+
"original": "(content: string) => void",
|
|
409
|
+
"resolved": "(content: string) => void",
|
|
410
|
+
"references": {}
|
|
411
|
+
},
|
|
412
|
+
"required": false,
|
|
413
|
+
"optional": true,
|
|
414
|
+
"docs": {
|
|
415
|
+
"tags": [],
|
|
416
|
+
"text": "Callback invocado cuando el contenido del JSON cambia"
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
static get states() {
|
|
422
|
+
return {
|
|
423
|
+
"fileName": {},
|
|
424
|
+
"radioGroupValue": {},
|
|
425
|
+
"showTooltipError": {},
|
|
426
|
+
"isFormValid": {},
|
|
427
|
+
"jsonContent": {}
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
static get methods() {
|
|
431
|
+
return {
|
|
432
|
+
"suspendShortcuts": {
|
|
433
|
+
"complexType": {
|
|
434
|
+
"signature": "(suspendShortcuts: boolean) => Promise<void>",
|
|
435
|
+
"parameters": [{
|
|
436
|
+
"name": "suspendShortcuts",
|
|
437
|
+
"type": "boolean",
|
|
438
|
+
"docs": ""
|
|
439
|
+
}],
|
|
440
|
+
"references": {
|
|
441
|
+
"Promise": {
|
|
442
|
+
"location": "global",
|
|
443
|
+
"id": "global::Promise"
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
"return": "Promise<void>"
|
|
447
|
+
},
|
|
448
|
+
"docs": {
|
|
449
|
+
"text": "Suspends or reactivates the shortcuts",
|
|
450
|
+
"tags": []
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
static get elementRef() { return "el"; }
|
|
456
|
+
}
|
|
457
|
+
_GxIdeJsonImport_componentLocale = new WeakMap(), _GxIdeJsonImport_data = new WeakMap(), _GxIdeJsonImport_radioOptionsModel = new WeakMap(), _GxIdeJsonImport_shortcutsSrc = new WeakMap(), _GxIdeJsonImport_checkBoxEl = new WeakMap(), _GxIdeJsonImport_chShortcutsEl = new WeakMap(), _GxIdeJsonImport_descriptionEl = new WeakMap(), _GxIdeJsonImport_fileInputHiddenEl = new WeakMap(), _GxIdeJsonImport_moduleEntitySelector = new WeakMap(), _GxIdeJsonImport_nameEl = new WeakMap(), _GxIdeJsonImport_radioGroup = new WeakMap(), _GxIdeJsonImport_validateForm = new WeakMap(), _GxIdeJsonImport_nameChangedHandler = new WeakMap(), _GxIdeJsonImport_changeRadioHandler = new WeakMap(), _GxIdeJsonImport_createHandler = new WeakMap(), _GxIdeJsonImport_removeFileSelection = new WeakMap(), _GxIdeJsonImport_selectFileInputChangedHandler = new WeakMap(), _GxIdeJsonImport_selectFileInputHandler = new WeakMap(), _GxIdeJsonImport_handleEditorChange = new WeakMap(), _GxIdeJsonImport_handleSlotChange = new WeakMap();
|
|
458
|
+
//# sourceMappingURL=json-import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-import.js","sourceRoot":"","sources":["../../../src/components/json-import/json-import.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n Prop,\n Element,\n State,\n getAssetPath,\n Method,\n h\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\n\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tab\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\n@Component({\n tag: \"gx-ide-json-import\",\n styleUrl: \"json-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/json-import\"]\n})\nexport class GxIdeJsonImport {\n #componentLocale: any;\n #data: JsonImportData = {\n name: \"\",\n description: \"\",\n assumeVarcharForNull: false,\n parentId: \"\",\n json: \"\"\n };\n #radioOptionsModel: RadioGroupItemModel[] = [];\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/json-import/shortcuts.json`);\n\n @Element() el: HTMLGxIdeJsonImportElement;\n #checkBoxEl!: HTMLChCheckboxElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #moduleEntitySelector!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #radioGroup!: HTMLChRadioGroupRenderElement;\n\n @State() fileName: string;\n @State() radioGroupValue: string = \"file\";\n @State() showTooltipError: boolean = false;\n @State() isFormValid: boolean = false;\n @State() jsonContent: string = \"\";\n\n /**\n * Callback that must be invoked when the user want to cancel the operation\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the user confirms the creation of the SDT. It receives as parameters the data necessary to create the SDT.\n */\n @Prop() readonly confirmCallback!: (\n data: JsonImportData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultRadioValue: string;\n\n /**\n * Actual value for Module/Folder field\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback invoked when the input mode changes between file and text.\n */\n @Prop() readonly modeChangeCallback?: (\n mode: \"file\" | \"text\"\n ) => Promise<void>;\n\n /**\n * Callback invoked when a file is selected or removed.\n */\n @Prop() readonly fileChangeCallback?: (file: File | null) => Promise<void>;\n\n /**\n * Callback para validar el nombre del objeto. Debe retornar true si el nombre es válido, false en caso contrario.\n */\n @Prop() readonly validateNameCallback?: (name: string) => boolean;\n\n /**\n * Callback para validar el JSON. Debe retornar true si el JSON es válido, false en caso contrario.\n */\n @Prop() readonly validateJSONCallback?: (json: string) => boolean;\n\n /**\n * Callback invocado cuando el contenido del JSON cambia\n */\n @Prop() readonly onJsonContentChange?: (content: string) => void;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#radioOptionsModel = [\n {\n value: \"file\",\n caption: this.#componentLocale.header.filePathLabel\n },\n { value: \"text\", caption: this.#componentLocale.main.jsonAreaLabel }\n ];\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #validateForm = () => {\n const name = this.#nameEl?.value?.trim() || \"\";\n const json =\n this.radioGroupValue === \"file\" ? this.fileName : this.jsonContent;\n\n const isNameValid = this.validateNameCallback\n ? this.validateNameCallback(name)\n : Boolean(name);\n\n const isJsonValid =\n this.radioGroupValue === \"file\"\n ? Boolean(this.fileName)\n : this.validateJSONCallback\n ? this.validateJSONCallback(json)\n : false;\n\n this.isFormValid = isNameValid && isJsonValid;\n };\n\n #nameChangedHandler = () => {\n this.#validateForm();\n };\n\n #changeRadioHandler = () => {\n this.radioGroupValue = this.#radioGroup.value;\n if (this.radioGroupValue === \"file\") {\n this.#checkBoxEl.value = \"false\";\n } else {\n this.#data.json = null;\n this.#removeFileSelection();\n this.#validateForm();\n }\n this.modeChangeCallback?.(this.radioGroupValue as \"file\" | \"text\");\n };\n\n #createHandler = () => {\n this.#data.name = this.#nameEl.value;\n this.#data.description = this.#descriptionEl.value;\n this.#data.parentId = this.#moduleEntitySelector.value?.id;\n this.#data.assumeVarcharForNull = this.#checkBoxEl.value === \"true\";\n this.confirmCallback(this.#data).then(\n (formSubmitResult: FormSubmitResult) => {\n this.showTooltipError = !formSubmitResult.success;\n }\n );\n };\n\n #removeFileSelection = () => {\n this.#data.json = null;\n this.#fileInputHiddenEl.value = null;\n this.fileName = null;\n this.fileChangeCallback?.(null);\n this.#validateForm();\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0 && this.radioGroupValue === \"file\") {\n this.#data.json = target.files[0];\n this.fileName = target.files[0].name;\n this.fileChangeCallback?.(target.files[0]);\n this.#validateForm();\n }\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #handleEditorChange = () => {\n this.#validateForm();\n };\n\n #handleSlotChange = (e: Event) => {\n const elements = (e.target as HTMLSlotElement).assignedElements();\n if (elements.length > 0) {\n const element = elements[0];\n element.addEventListener(\"json-content-change\", ((event: CustomEvent) => {\n if (this.radioGroupValue === \"text\") {\n this.jsonContent = event.detail.content;\n this.#handleEditorChange();\n }\n }) as EventListener);\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header field-group spacing-body control-header-with-border\">\n <div class=\"field-group field-group-name-description-module\">\n <label\n // name\n class=\"label name-label\"\n htmlFor=\"input-name\"\n >\n {this.#componentLocale.header.nameFieldLabel}\n </label>\n <ch-edit\n class=\"input name-input\"\n id=\"input-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onInput={this.#nameChangedHandler}\n ></ch-edit>\n\n <label\n // description\n class=\"label description-label\"\n htmlFor=\"input-description\"\n >\n {this.#componentLocale.header.descriptionFieldLabel}\n </label>\n <ch-edit\n class=\"input description-input\"\n id=\"input-description\"\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n <label\n // module/folder\n class=\"label module-label\"\n htmlFor=\"input-module\"\n >\n {this.#componentLocale.header.moduleFolderLabel}\n </label>\n <gx-ide-entity-selector\n class=\"module module-entity-selector\"\n id=\"module\"\n value={this.defaultParent}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEntitySelector =\n el as HTMLGxIdeEntitySelectorElement)\n }\n labelPosition=\"none\"\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ></gx-ide-entity-selector>\n </div>\n\n <div class=\"radio-file-input-wrapper field-group\">\n <ch-radio-group-render\n // file url/text\n class=\"radio-group\"\n model={this.#radioOptionsModel}\n onChange={this.#changeRadioHandler}\n value={this.defaultRadioValue}\n ref={(el: HTMLChRadioGroupRenderElement) =>\n (this.#radioGroup = el as HTMLChRadioGroupRenderElement)\n }\n ></ch-radio-group-render>\n <div class=\"field field-inline field-file-input\">\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input\"\n part=\"file-name\"\n type=\"text\"\n value={this.fileName}\n readonly\n placeholder={this.#componentLocale.header.fileNamePlaceholder}\n startImgSrc={FILE_ICON}\n disabled={this.radioGroupValue !== \"file\"}\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".json\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n <div class=\"buttons-spacer\">\n <button\n aria-label={\n this.#componentLocale.header.removeFileSelection\n }\n title={this.#componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n disabled={this.radioGroupValue !== \"file\"}\n >\n <ch-image class=\"icon-md\" src={MENU_DELETE}></ch-image>\n </button>\n\n <button\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.radioGroupValue !== \"file\"}\n >\n {this.#componentLocale.header.selectfileButton}\n </button>\n </div>\n </div>\n </div>\n </header>\n <div class=\"main field-group\">\n <div class=\"json-area\">\n <div class=\"slotted-container scrollable\">\n <slot\n name=\"JsonTextEditor\"\n onSlotchange={this.#handleSlotChange}\n ></slot>\n </div>\n {this.showTooltipError && (\n <ch-tooltip\n class=\"tooltip\"\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n Error message\n </ch-tooltip>\n )}\n </div>\n <ch-checkbox\n class=\"checkbox spacing-body-block-end spacing-body-inline-start\"\n caption={this.#componentLocale.main.checkBoxLabel}\n checkedValue=\"true\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#checkBoxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </div>\n\n <footer class=\"control-footer control-footer-with-border spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.cancelCallback}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-ok\"\n onClick={this.#createHandler}\n part=\"button-ok\"\n disabled={!this.isFormValid}\n >\n {this.#componentLocale.footer.btnOk}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type JsonImportData = {\n name: string;\n description: string;\n parentId: string;\n json: File | string;\n assumeVarcharForNull: boolean;\n};\n\nexport type EntityData = {\n id: string;\n name: string;\n iconSrc?: string;\n};\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n"]}
|
|
@@ -114,6 +114,7 @@ const allGeneXusIdeUIComponents = {
|
|
|
114
114
|
"gx-ide-file-item": 0,
|
|
115
115
|
"gx-ide-file-uploader": 0,
|
|
116
116
|
"gx-ide-gam-installation-settings": 0,
|
|
117
|
+
"gx-ide-json-import": 0,
|
|
117
118
|
"gx-ide-kb-manager-export": 0,
|
|
118
119
|
"gx-ide-kb-manager-import": 0,
|
|
119
120
|
"gx-ide-list-selector": 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-ai-assistant\": 0,\n \"gx-ide-ai-message\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-card\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-dashboard-home\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-directory-selector\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-manage-module-references-v2\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-switch-panel\": 0,\n \"gx-ide-switcher\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-title\": 0,\n \"gx-ide-top-bar\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-ai-message\",\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-directory-selector\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-switch-panel\",\n \"gx-ide-switcher\",\n \"gx-ide-test\",\n \"gx-ide-title\",\n \"gx-ide-top-bar\",\n \"gx-ide-file-item\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
|
|
1
|
+
{"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-ai-assistant\": 0,\n \"gx-ide-ai-message\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-card\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-dashboard-home\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-directory-selector\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-manage-module-references-v2\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-switch-panel\": 0,\n \"gx-ide-switcher\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-title\": 0,\n \"gx-ide-top-bar\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-ai-message\",\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-directory-selector\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-switch-panel\",\n \"gx-ide-switcher\",\n \"gx-ide-test\",\n \"gx-ide-title\",\n \"gx-ide-top-bar\",\n \"gx-ide-file-item\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface GxIdeJsonImport extends Components.GxIdeJsonImport, HTMLElement {}
|
|
4
|
+
export const GxIdeJsonImport: {
|
|
5
|
+
prototype: GxIdeJsonImport;
|
|
6
|
+
new (): GxIdeJsonImport;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|