@genexus/genexus-ide-ui 1.0.75 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +347 -0
  3. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +199 -0
  5. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/collection-manifest.json +2 -0
  8. package/dist/collection/common/types.js.map +1 -1
  9. package/dist/collection/components/deployment-tool/deployment-tool.css +646 -0
  10. package/dist/collection/components/deployment-tool/deployment-tool.js +542 -0
  11. package/dist/collection/components/deployment-tool/deployment-tool.js.map +1 -0
  12. package/dist/collection/components/deployment-tool/gx-ide-assets/deployment-tool/langs/deployment-tool.lang.en.json +17 -0
  13. package/dist/collection/components/deployment-tool/gx-ide-assets/deployment-tool/langs/deployment-tool.lang.ja.json +17 -0
  14. package/dist/collection/components/deployment-tool/gx-ide-assets/deployment-tool/langs/deployment-tool.lang.zh.json +17 -0
  15. package/dist/collection/components/deployment-tool/helpers.js +44 -0
  16. package/dist/collection/components/deployment-tool/helpers.js.map +1 -0
  17. package/dist/collection/components/open-api-import/gx-ide-assets/open-api-import/langs/open-api-import.lang.en.json +24 -0
  18. package/dist/collection/components/open-api-import/gx-ide-assets/open-api-import/langs/open-api-import.lang.ja.json +24 -0
  19. package/dist/collection/components/open-api-import/gx-ide-assets/open-api-import/langs/open-api-import.lang.zh.json +24 -0
  20. package/dist/collection/components/open-api-import/helpers.js +18 -0
  21. package/dist/collection/components/open-api-import/helpers.js.map +1 -0
  22. package/dist/collection/components/open-api-import/open-api-import.css +87 -0
  23. package/dist/collection/components/open-api-import/open-api-import.js +368 -0
  24. package/dist/collection/components/open-api-import/open-api-import.js.map +1 -0
  25. package/dist/collection/testing/locale.e2e.js +2 -0
  26. package/dist/collection/testing/locale.e2e.js.map +1 -1
  27. package/dist/components/gx-ide-deployment-tool.d.ts +11 -0
  28. package/dist/components/gx-ide-deployment-tool.js +387 -0
  29. package/dist/components/gx-ide-deployment-tool.js.map +1 -0
  30. package/dist/components/gx-ide-open-api-import.d.ts +11 -0
  31. package/dist/components/gx-ide-open-api-import.js +235 -0
  32. package/dist/components/gx-ide-open-api-import.js.map +1 -0
  33. package/dist/esm/genexus-ide-ui.js +1 -1
  34. package/dist/esm/gx-ide-deployment-tool.entry.js +343 -0
  35. package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -0
  36. package/dist/esm/gx-ide-open-api-import.entry.js +195 -0
  37. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -0
  38. package/dist/esm/loader.js +1 -1
  39. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  40. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  41. package/dist/genexus-ide-ui/gx-ide-assets/deployment-tool/langs/deployment-tool.lang.en.json +17 -0
  42. package/dist/genexus-ide-ui/gx-ide-assets/deployment-tool/langs/deployment-tool.lang.ja.json +17 -0
  43. package/dist/genexus-ide-ui/gx-ide-assets/deployment-tool/langs/deployment-tool.lang.zh.json +17 -0
  44. package/dist/genexus-ide-ui/gx-ide-assets/open-api-import/langs/open-api-import.lang.en.json +24 -0
  45. package/dist/genexus-ide-ui/gx-ide-assets/open-api-import/langs/open-api-import.lang.ja.json +24 -0
  46. package/dist/genexus-ide-ui/gx-ide-assets/open-api-import/langs/open-api-import.lang.zh.json +24 -0
  47. package/dist/genexus-ide-ui/p-48826a6f.entry.js +393 -0
  48. package/dist/genexus-ide-ui/p-48826a6f.entry.js.map +1 -0
  49. package/dist/genexus-ide-ui/p-fecc50e4.entry.js +321 -0
  50. package/dist/genexus-ide-ui/p-fecc50e4.entry.js.map +1 -0
  51. package/dist/types/common/types.d.ts +4 -0
  52. package/dist/types/components/deployment-tool/deployment-tool.d.ts +89 -0
  53. package/dist/types/components/deployment-tool/helpers.d.ts +11 -0
  54. package/dist/types/components/open-api-import/helpers.d.ts +3 -0
  55. package/dist/types/components/open-api-import/open-api-import.d.ts +63 -0
  56. package/dist/types/components.d.ts +233 -36
  57. package/package.json +1 -1
@@ -0,0 +1,321 @@
1
+ import { r as e, c as t, g as i, h as o, H as s, a as n } from "./p-25a9f1d7.js";
2
+
3
+ import { L as a } from "./p-311eedf3.js";
4
+
5
+ import { g as r } from "./p-6e4208d8.js";
6
+
7
+ import "./p-5ac47c69.js";
8
+
9
+ const convertActionToTreeViewItem = e => {
10
+ const t = [];
11
+ if (!e) {
12
+ return t;
13
+ }
14
+ e.forEach((e => {
15
+ const i = {
16
+ id: e.id,
17
+ caption: `${e.name}`,
18
+ expanded: true,
19
+ leaf: true,
20
+ checkbox: true
21
+ };
22
+ t.push(i);
23
+ }));
24
+ return t;
25
+ };
26
+
27
+ const l = 'section{display:grid;block-size:100%;grid-template-rows:max-content 1fr max-content}.main{position:relative;display:contents}.input-file{display:flex}.field{width:100%}.control-header__operations,.control-header__description{padding-block-start:var(--mer-spacing--md)}.header__field-group{grid-template:"import-file-label import-file-name buttons-container" max-content "module-folder-label module-folder module-folder" max-content/max-content 1fr max-content}.module-folder-name{grid-area:module-folder}.module-folder-label{grid-area:module-folder-label}.import-file-label{grid-area:import-file-label}.header__buttons-container{grid-area:buttons-container}.section-grid{display:grid;grid-template:"top-content-operations top-content-description" max-content "operations-area operations-description" 1fr/1fr 1fr;background-color:var(--items-container__bg-color);border-style:var(--items-container__border-style);border-width:var(--items-container__border-width);border-color:var(--items-container__border-color);border-block-start:0;overflow-y:auto}.list-wrapper{grid-area:operations-area;border-inline-end:var(--section-common-border)}.label{margin-top:6px !important}.tree-operations::part(item__header){padding-inline-start:0}.procedure-description{grid-area:operations-description;overflow:auto;text-align:justify}.control-header__operations{grid-area:top-content-operations;background-color:var(--items-container__bg-color)}.control-header__description{grid-area:top-content-description;background-color:var(--items-container__bg-color)}.text-align-center{text-align:center}';
28
+
29
+ var c = undefined && undefined.__classPrivateFieldGet || function(e, t, i, o) {
30
+ if (i === "a" && !o) throw new TypeError("Private accessor was defined without a getter");
31
+ if (typeof t === "function" ? e !== t || !o : !t.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
32
+ return i === "m" ? o : i === "a" ? o.call(e) : o ? o.value : t.get(e);
33
+ };
34
+
35
+ var d = undefined && undefined.__classPrivateFieldSet || function(e, t, i, o, s) {
36
+ if (o === "m") throw new TypeError("Private method is not writable");
37
+ if (o === "a" && !s) throw new TypeError("Private accessor was defined without a setter");
38
+ if (typeof t === "function" ? e !== t || !s : !t.has(e)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
39
+ return o === "a" ? s.call(e, i) : s ? s.value = i : t.set(e, i), i;
40
+ };
41
+
42
+ var h, p, f, u, b, m, g, v, w, y, k, _, x, W, M, C;
43
+
44
+ const j = [ "resets/box-sizing", "components/button", "components/checkbox", "components/edit", "components/icon", "components/tree-view", "components/list-box", "utils/form", "utils/layout", "utils/spacing", "utils/typography" ];
45
+
46
+ const T = r({
47
+ category: "gemini-tools",
48
+ name: "file",
49
+ colorType: "on-elevation"
50
+ });
51
+
52
+ const E = r({
53
+ category: "menus",
54
+ name: "delete",
55
+ colorType: "primary"
56
+ });
57
+
58
+ const I = "allChecked";
59
+
60
+ const P = "allUnchecked";
61
+
62
+ const D = class {
63
+ constructor(s) {
64
+ e(this, s);
65
+ this.componentDidRenderFirstTime = t(this, "componentDidRenderFirstTime", 7);
66
+ h.set(this, void 0);
67
+ p.set(this, false);
68
+ f.set(this, i(`./gx-ide-assets/new-object/shortcuts.json`));
69
+ u.set(this, void 0);
70
+ b.set(this, void 0);
71
+ m.set(this, void 0);
72
+ g.set(this, void 0);
73
+ // 9.LOCAL METHODS //
74
+ v.set(this, (() => {
75
+ if (this.cancelCallback) {
76
+ this.cancelCallback();
77
+ }
78
+ }));
79
+ w.set(this, (async () => {
80
+ await this.importCallback(this.selectedOperations);
81
+ }));
82
+ y.set(this, (e => {
83
+ if (e.detail.size === 0) {
84
+ return;
85
+ }
86
+ const t = e.detail;
87
+ const i = [ ...t.values() ].filter((e => e.item.checked));
88
+ this.selectedOperations = i.map((e => e.item.id));
89
+ // Evaluate "Select All" checkbox state (siguiendo el patrón de kb-manager-import)
90
+ if (t.size === i.length) {
91
+ this.selectAllCheckboxValue = I;
92
+ this.selectAllCheckboxIndeterminate = false;
93
+ } else if (i.length === 0) {
94
+ this.selectAllCheckboxValue = P;
95
+ this.selectAllCheckboxIndeterminate = false;
96
+ } else {
97
+ this.selectAllCheckboxIndeterminate = true;
98
+ }
99
+ }));
100
+ k.set(this, (e => {
101
+ if ("detail" in e && c(this, g, "f")) {
102
+ const t = e.detail === I;
103
+ // Usar updateAllItemsProperties como en kb-manager-import
104
+ c(this, g, "f").updateAllItemsProperties({
105
+ checked: t
106
+ });
107
+ this.selectedOperations = t ? this.operations.map((e => e.id)) : [];
108
+ this.selectAllCheckboxValue = t ? I : P;
109
+ this.selectAllCheckboxIndeterminate = false;
110
+ }
111
+ }));
112
+ _.set(this, (e => {
113
+ var t;
114
+ this.selectedOperationForDescription = (t = this.operations.filter((t => {
115
+ var i;
116
+ return t.id === ((i = e.detail[0]) === null || i === void 0 ? void 0 : i.item.id);
117
+ }))[0]) === null || t === void 0 ? void 0 : t.description;
118
+ }));
119
+ x.set(this, (() => {
120
+ this.selectedFile = null;
121
+ c(this, b, "f").value = null;
122
+ this.operations = [];
123
+ this.actionListItems = [];
124
+ this.selectedOperationForDescription = null;
125
+ }));
126
+ W.set(this, (async e => {
127
+ var t;
128
+ const i = e.target;
129
+ if (((t = i.files) === null || t === void 0 ? void 0 : t.length) > 0) {
130
+ this.selectedFile = i.files[0];
131
+ this.operations = await this.loadCallback(this.selectedFile, c(this, m, "f").value.id);
132
+ this.actionListItems = convertActionToTreeViewItem(this.operations);
133
+ }
134
+ }));
135
+ M.set(this, (() => {
136
+ c(this, b, "f").click();
137
+ }));
138
+ C.set(this, (() => {
139
+ var e;
140
+ return o("footer", {
141
+ class: "control-footer control-footer-space-between spacing-body-block-end spacing-body-inline"
142
+ }, o("div", {
143
+ class: "buttons-spacer"
144
+ }, o("ch-checkbox", {
145
+ id: "select-all-checkbox",
146
+ class: "checkbox",
147
+ checkedValue: I,
148
+ unCheckedValue: P,
149
+ caption: c(this, h, "f").main.selectAll,
150
+ value: this.selectAllCheckboxValue,
151
+ indeterminate: this.selectAllCheckboxIndeterminate,
152
+ onInput: c(this, k, "f"),
153
+ disabled: this.importingIsInProcess || !((e = this.operations) === null || e === void 0 ? void 0 : e.length),
154
+ part: "select-all-checkbox"
155
+ })), o("div", {
156
+ class: "buttons-spacer"
157
+ }, o("button", {
158
+ class: "button-secondary",
159
+ slot: "footer-end",
160
+ part: "button-cancel",
161
+ onClick: c(this, v, "f")
162
+ }, c(this, h, "f").footer.cancel), o("button", {
163
+ class: "button-primary",
164
+ slot: "footer-end",
165
+ part: "button-confirm",
166
+ onClick: c(this, w, "f")
167
+ }, c(this, h, "f").footer.import)));
168
+ }));
169
+ this.actionListItems = [];
170
+ this.importingIsInProcess = false;
171
+ this.operations = [];
172
+ this.selectedFile = undefined;
173
+ this.selectedOperationForDescription = undefined;
174
+ this.selectedOperations = [];
175
+ this.selectAllCheckboxValue = undefined;
176
+ this.selectAllCheckboxIndeterminate = false;
177
+ this.defaultParent = undefined;
178
+ this.displayTitle = false;
179
+ this.cancelCallback = undefined;
180
+ this.importCallback = undefined;
181
+ this.loadCallback = undefined;
182
+ this.selectParentCallback = undefined;
183
+ }
184
+ componentDidRender() {
185
+ if (!c(this, p, "f")) {
186
+ this.componentDidRenderFirstTime.emit(c(this, h, "f").componentName);
187
+ d(this, p, true, "f");
188
+ }
189
+ }
190
+ async componentWillLoad() {
191
+ d(this, h, await a.getComponentStrings(this.el), "f");
192
+ }
193
+ /**
194
+ * Suspends or reactivates the shortcuts
195
+ */ async suspendShortcuts(e) {
196
+ if (e) {
197
+ c(this, u, "f").suspend = true;
198
+ } else {
199
+ c(this, u, "f").suspend = false;
200
+ }
201
+ }
202
+ render() {
203
+ var e;
204
+ return o(s, {
205
+ class: "widget"
206
+ }, o("ch-theme", {
207
+ model: j
208
+ }), o("ch-shortcuts", {
209
+ src: c(this, f, "f"),
210
+ ref: e => d(this, u, e, "f")
211
+ }), o("section", null, o("header", {
212
+ class: "header control-header-with-border space-body spacing-body-inline spacing-body-block-start",
213
+ role: "banner"
214
+ }, o("div", {
215
+ class: "field-group header__field-group"
216
+ }, o("div", {
217
+ class: "import-file-label"
218
+ }, o("div", {
219
+ class: "field field-block"
220
+ }, o("label", {
221
+ class: "label",
222
+ htmlFor: "file-name"
223
+ }, c(this, h, "f").header.fileNameLabel))), o("div", {
224
+ class: "input-file"
225
+ }, o("div", {
226
+ class: "field input-file"
227
+ }, o("ch-edit", {
228
+ autoFocus: true,
229
+ id: "file-name",
230
+ class: "input file",
231
+ part: "file-name",
232
+ type: "text",
233
+ readonly: true,
234
+ value: (e = this.selectedFile) === null || e === void 0 ? void 0 : e.name,
235
+ placeholder: c(this, h, "f").header.fileNamePlaceholder,
236
+ startImgSrc: T
237
+ }), o("input", {
238
+ hidden: true,
239
+ type: "file",
240
+ accept: ".json, .yaml",
241
+ onChange: c(this, W, "f"),
242
+ ref: e => d(this, b, e, "f")
243
+ })), o("div", {
244
+ class: "cancel-btn "
245
+ }, o("button", {
246
+ "aria-label": c(this, h, "f").header.removeFileSelection,
247
+ title: c(this, h, "f").header.removeFileSelection,
248
+ id: "reset-all-button",
249
+ class: "button-tertiary button-icon-only",
250
+ part: "reset-all-button",
251
+ onClick: c(this, x, "f")
252
+ }, o("ch-image", {
253
+ class: "icon-md",
254
+ src: E
255
+ })))), o("div", {
256
+ class: "header__buttons-container"
257
+ }, o("button", {
258
+ id: "select-file-load-button",
259
+ class: "button-primary",
260
+ part: "select-file-load-button",
261
+ onClick: c(this, M, "f"),
262
+ disabled: this.importingIsInProcess
263
+ }, c(this, h, "f").header.selectFileButton)), o("div", {
264
+ class: "module-folder-label"
265
+ }, o("div", {
266
+ class: "field field-block"
267
+ }, o("label", {
268
+ class: "label"
269
+ }, c(this, h, "f").header.moduleFolderLabel))), o("div", {
270
+ class: "field module-folder-name "
271
+ }, o("gx-ide-entity-selector", {
272
+ value: this.defaultParent,
273
+ defaultValue: this.defaultParent,
274
+ selectEntityCallback: this.selectParentCallback,
275
+ labelPosition: "none",
276
+ ref: e => d(this, m, e, "f"),
277
+ class: "module-folder"
278
+ })))), o("main", {
279
+ class: "main"
280
+ }, o("div", {
281
+ class: "section-grid"
282
+ }, o("h2", {
283
+ id: "operations-title",
284
+ class: "control-header control-header-with-border control-header__operations subtitle-regular-xs text-align-center spacing-body-inline"
285
+ }, c(this, h, "f").main.operations), o("div", {
286
+ class: "list-wrapper field-group spacing-body-block-start spacing-body-inline scrollable",
287
+ role: "region",
288
+ "aria-labelledby": "operations-title"
289
+ }, o("ch-tree-view-render", {
290
+ class: "tree-view tree-operations",
291
+ model: this.actionListItems,
292
+ "show-lines": "last",
293
+ onCheckedItemsChange: c(this, y, "f"),
294
+ onSelectedItemsChange: c(this, _, "f"),
295
+ ref: e => d(this, g, e, "f")
296
+ })), o("h2", {
297
+ id: "description-title",
298
+ class: "control-header control-header-with-border control-header__description subtitle-regular-xs text-align-center spacing-body-inline"
299
+ }, c(this, h, "f").main.procedureDescription), o("div", {
300
+ class: "procedure-description field-group spacing-body-block-start spacing-body-inline scrollable",
301
+ role: "region",
302
+ "aria-labelledby": "description-title"
303
+ }, this.selectedOperationForDescription))), c(this, C, "f").call(this)));
304
+ }
305
+ static get assetsDirs() {
306
+ return [ "gx-ide-assets/open-api-import" ];
307
+ }
308
+ get el() {
309
+ return n(this);
310
+ }
311
+ };
312
+
313
+ h = new WeakMap, p = new WeakMap, f = new WeakMap, u = new WeakMap, b = new WeakMap,
314
+ m = new WeakMap, g = new WeakMap, v = new WeakMap, w = new WeakMap, y = new WeakMap,
315
+ k = new WeakMap, _ = new WeakMap, x = new WeakMap, W = new WeakMap, M = new WeakMap,
316
+ C = new WeakMap;
317
+
318
+ D.style = l;
319
+
320
+ export { D as gx_ide_open_api_import };
321
+ //# sourceMappingURL=p-fecc50e4.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["convertActionToTreeViewItem","operations","treeData","forEach","operation","importCategoryTreeItem","id","caption","name","expanded","leaf","checkbox","push","openApiImportCss","CSS_BUNDLES","FILE_ICON","getIconPath","category","colorType","MENU_DELETE","CHECKBOX_ALL_CHECKED_VALUE","CHECKBOX_ALL_UNCHECKED_VALUE","GxIdeOpenAPIImport","_GxIdeOpenAPIImport__componentLocale","set","this","_GxIdeOpenAPIImport_renderedFirstTime","_GxIdeOpenAPIImport_shortcutsSrc","getAssetPath","_GxIdeOpenAPIImport_chShortcutsEl","_GxIdeOpenAPIImport_fileInputHiddenEl","_GxIdeOpenAPIImport_parentEl","_GxIdeOpenAPIImport_objectsTreeEl","_GxIdeOpenAPIImport_cancelImportHandler","cancelCallback","_GxIdeOpenAPIImport_handleImport","async","importCallback","selectedOperations","_GxIdeOpenAPIImport_objectsTreeCheckedItemsChangedHandler","event","detail","size","allItems","checkedItems","values","filter","node","item","checked","map","length","selectAllCheckboxValue","selectAllCheckboxIndeterminate","_GxIdeOpenAPIImport_handleSelectAll","__classPrivateFieldGet","updateAllItemsProperties","op","_GxIdeOpenAPIImport_objectTreeClickedHandler","selectedOperationForDescription","_a","description","_GxIdeOpenAPIImport_removeFileSelection","selectedFile","value","actionListItems","_GxIdeOpenAPIImport_selectFileInputChangedHandler","target","files","loadCallback","_GxIdeOpenAPIImport_selectFileInputHandler","click","_GxIdeOpenAPIImport_renderFooter","h","class","checkedValue","unCheckedValue","main","selectAll","indeterminate","onInput","disabled","importingIsInProcess","part","slot","onClick","footer","cancel","import","componentDidRender","componentDidRenderFirstTime","emit","componentName","__classPrivateFieldSet","componentWillLoad","Locale","getComponentStrings","el","suspendShortcuts","suspend","render","Host","model","src","ref","role","htmlFor","header","fileNameLabel","autoFocus","type","readonly","placeholder","fileNamePlaceholder","startImgSrc","hidden","accept","onChange","removeFileSelection","title","selectFileButton","moduleFolderLabel","defaultParent","defaultValue","selectEntityCallback","selectParentCallback","labelPosition","onCheckedItemsChange","onSelectedItemsChange","procedureDescription","call"],"sources":["src/components/open-api-import/helpers.ts","src/components/open-api-import/open-api-import.scss?tag=gx-ide-open-api-import&encapsulation=shadow","src/components/open-api-import/open-api-import.tsx"],"sourcesContent":["import { ApiOperationData } from \"./open-api-import\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\n\nexport const convertActionToTreeViewItem = (\n operations: ApiOperationData[]\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!operations) {\n return treeData;\n }\n operations.forEach(operation => {\n const importCategoryTreeItem: TreeViewItemModel = {\n id: operation.id,\n caption: `${operation.name}`,\n expanded: true,\n leaf: true,\n checkbox: true\n };\n treeData.push(importCategoryTreeItem);\n });\n return treeData;\n};\n","section {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.main {\n position: relative;\n display: contents;\n}\n\n.input-file {\n display: flex;\n}\n\n.field {\n width: 100%;\n}\n\n.control-header__operations,\n.control-header__description {\n padding-block-start: var(--mer-spacing--md);\n}\n\n.header__field-group {\n grid-template:\n \"import-file-label import-file-name buttons-container\" max-content\n \"module-folder-label module-folder module-folder\" max-content\n / max-content 1fr max-content;\n}\n.module-folder-name {\n grid-area: module-folder;\n}\n.module-folder-label {\n grid-area: module-folder-label;\n}\n.import-file-label {\n grid-area: import-file-label;\n}\n\n.header__buttons-container {\n grid-area: buttons-container;\n}\n\n.section-grid {\n display: grid;\n grid-template:\n \"top-content-operations top-content-description\" max-content\n \"operations-area operations-description\" 1fr\n / 1fr 1fr;\n background-color: var(--items-container__bg-color);\n border-style: var(--items-container__border-style);\n border-width: var(--items-container__border-width);\n border-color: var(--items-container__border-color);\n border-block-start: 0;\n overflow-y: auto;\n}\n\n.list-wrapper {\n grid-area: operations-area;\n border-inline-end: var(--section-common-border);\n}\n.label {\n margin-top: 6px !important;\n}\n\n.tree-operations::part(item__header) {\n // WA Since this is a tree without parent node.\n // This componnent should ideally by an action-list,\n // but at the time of writting it doesn't support checkboxes.\n padding-inline-start: 0;\n}\n\n.procedure-description {\n grid-area: operations-description;\n overflow: auto;\n text-align: justify;\n}\n\n.control-header__operations {\n grid-area: top-content-operations;\n background-color: var(--items-container__bg-color);\n}\n\n.control-header__description {\n grid-area: top-content-description;\n background-color: var(--items-container__bg-color);\n}\n.text-align-center {\n text-align: center;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n TreeViewItemModel,\n TreeViewItemModelExtended,\n ChCheckboxCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { convertActionToTreeViewItem } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"on-elevation\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-open-api-import\",\n styleUrl: \"open-api-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/open-api-import\"]\n})\nexport class GxIdeOpenAPIImport {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeOpenApiImportElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #parentEl!: HTMLGxIdeEntitySelectorElement;\n\n @State() actionListItems: TreeViewItemModel[] = [];\n @State() importingIsInProcess = false;\n @State() operations: ApiOperationData[] = [];\n @State() selectedFile: File;\n @State() selectedOperationForDescription: string;\n @State() selectedOperations: string[] = [];\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when the user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when the user wants to initiate the import process.\n */\n @Prop() readonly importCallback: ImportCallback;\n\n /**\n * Callback invoked must be loaded the content for an specification API\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked when action is executed on Module/Folder filter (button '...').\n */\n @Prop() readonly selectParentCallback: SelectParentCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n // 9.LOCAL METHODS //\n #cancelImportHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #handleImport = async () => {\n await this.importCallback(this.selectedOperations);\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n if (event.detail.size === 0) {\n return;\n }\n const allItems = event.detail;\n const checkedItems = [...allItems.values()].filter(\n node => node.item.checked\n );\n this.selectedOperations = checkedItems.map(item => item.item.id);\n\n // Evaluate \"Select All\" checkbox state (siguiendo el patrón de kb-manager-import)\n if (allItems.size === checkedItems.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItems.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n };\n\n #handleSelectAll = (event: ChCheckboxCustomEvent<string> | InputEvent) => {\n if (\"detail\" in event && this.#objectsTreeEl) {\n const checked =\n (event as ChCheckboxCustomEvent<string>).detail ===\n CHECKBOX_ALL_CHECKED_VALUE;\n // Usar updateAllItemsProperties como en kb-manager-import\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n this.selectedOperations = checked ? this.operations.map(op => op.id) : [];\n this.selectAllCheckboxValue = checked\n ? CHECKBOX_ALL_CHECKED_VALUE\n : CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n }\n };\n\n #objectTreeClickedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.selectedOperationForDescription = this.operations.filter(\n op => op.id === event.detail[0]?.item.id\n )[0]?.description;\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n this.operations = [];\n this.actionListItems = [];\n this.selectedOperationForDescription = null;\n };\n\n #selectFileInputChangedHandler = async (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n this.operations = await this.loadCallback(\n this.selectedFile,\n this.#parentEl.value.id\n );\n this.actionListItems = convertActionToTreeViewItem(this.operations);\n }\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"control-footer control-footer-space-between spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <ch-checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={this.#_componentLocale.main.selectAll}\n value={this.selectAllCheckboxValue}\n indeterminate={this.selectAllCheckboxIndeterminate}\n onInput={this.#handleSelectAll}\n disabled={this.importingIsInProcess || !this.operations?.length}\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n </div>\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n slot=\"footer-end\"\n part=\"button-cancel\"\n onClick={this.#cancelImportHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n slot=\"footer-end\"\n part=\"button-confirm\"\n onClick={this.#handleImport}\n >\n {this.#_componentLocale.footer.import}\n </button>\n </div>\n </footer>\n );\n };\n\n render() {\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>\n <header\n class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\"\n role=\"banner\"\n >\n <div class=\"field-group header__field-group\">\n <div class=\"import-file-label\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#_componentLocale.header.fileNameLabel}\n </label>\n </div>\n </div>\n <div class=\"input-file\">\n <div class=\"field input-file\">\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input file\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={\n this.#_componentLocale.header.fileNamePlaceholder\n }\n startImgSrc={FILE_ICON}\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".json, .yaml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n <div class=\"cancel-btn \">\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 >\n <ch-image class=\"icon-md\" src={MENU_DELETE}></ch-image>\n </button>\n </div>\n </div>\n\n <div class=\"header__buttons-container\">\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.importingIsInProcess}\n >\n {this.#_componentLocale.header.selectFileButton}\n </button>\n </div>\n <div class=\"module-folder-label\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.moduleFolderLabel}\n </label>\n </div>\n </div>\n <div class=\"field module-folder-name \">\n <gx-ide-entity-selector\n value={this.defaultParent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectParentCallback}\n labelPosition=\"none\"\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#parentEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"module-folder\"\n ></gx-ide-entity-selector>\n </div>\n </div>\n </header>\n\n <main class=\"main\">\n <div class=\"section-grid\">\n <h2\n id=\"operations-title\"\n class=\"control-header control-header-with-border control-header__operations subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.operations}\n </h2>\n\n <div\n class=\"list-wrapper field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"operations-title\"\n >\n <ch-tree-view-render\n class=\"tree-view tree-operations\"\n model={this.actionListItems}\n show-lines=\"last\"\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={this.#objectTreeClickedHandler}\n ref={el =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n </div>\n\n <h2\n id=\"description-title\"\n class=\"control-header control-header-with-border control-header__description subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.procedureDescription}\n </h2>\n\n <div\n class=\"procedure-description field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"description-title\"\n >\n {this.selectedOperationForDescription}\n </div>\n </div>\n </main>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type ApiOperationData = {\n id: string;\n name: string;\n description: string;\n};\nexport type SelectionEventDetail = {\n itemId: string;\n itemValue: string;\n};\n\nexport type CancelCallback = () => Promise<void>;\nexport type ImportCallback = (operationIds: string[]) => Promise<boolean>;\nexport type SelectParentCallback = () => Promise<EntityData | undefined>;\nexport type LoadCallback = (\n source: string | File,\n parentId: string\n) => Promise<ApiOperationData[]>;\n"],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  export type GxgFormItemsArray = (HTMLGxgComboBoxItemElement | HTMLGxgFormCheckboxElement | HTMLGxgFormRadioElement)[] | null;
2
+ export type ObjectBaseData = {
3
+ id: string;
4
+ name: string;
5
+ };
2
6
  export type GxOption = {
3
7
  id: string;
4
8
  label?: string;
@@ -0,0 +1,89 @@
1
+ import { EventEmitter } from "../../stencil-public-runtime";
2
+ import { TreeViewItemModel } from "@genexus/chameleon-controls-library/dist/types/components/tree-view/types";
3
+ import { ObjectBaseData } from "../../common/types";
4
+ export declare class GxIdeDeploymentTool {
5
+ #private;
6
+ el: HTMLGxIdeDeploymentToolElement;
7
+ checkedObjectsIds: string[];
8
+ noObjects: boolean;
9
+ selectedDeployTargetData: DeployTargetData;
10
+ addedObjects: TypedObjectData[];
11
+ allObjectTypes: ObjectTypeData[];
12
+ treeModel: TreeViewItemModel[];
13
+ allowDeploy: boolean;
14
+ watchTreeModelHandler(newState: TreeViewItemModel[]): void;
15
+ /**
16
+ * Available deployment units list
17
+ */
18
+ readonly deploymentUnits: ObjectBaseData[];
19
+ /**
20
+ * Available target types list
21
+ */
22
+ readonly targetTypes: DeployTargetData[];
23
+ /**
24
+ * Defines id for new deployment unit option
25
+ */
26
+ readonly newDeploymentUnitId: string;
27
+ /**
28
+ * Array of possible object types
29
+ */
30
+ readonly objectTypes: ObjectTypeData[];
31
+ watchObjectTypesHandler(newState: ObjectTypeData[]): void;
32
+ /**
33
+ * Callback invoked when the user wants to access the export options.
34
+ */
35
+ readonly getDeploymentUnitObjectsCallback: GetDeploymentUnitObjectsCallback;
36
+ /**
37
+ * Callback invoked when the user wants to access the export options.
38
+ */
39
+ readonly optionsCallback: OptionsCallback;
40
+ /**
41
+ * Callback invoked when user wants to start deploy process
42
+ */
43
+ readonly deployCallback: DeployCallback;
44
+ /**
45
+ * Callback invoked when the user wants to add objects.
46
+ */
47
+ readonly addObjectsCallback: AddObjectsCallback;
48
+ /**
49
+ * Callback invoked when the user wants to create a deployment unit.
50
+ */
51
+ readonly createDeploymentUnitCallback: CreateDeploymentUnitCallback;
52
+ /**
53
+ * This event is emitted once just after the component is fully loaded and the first render() occurs.
54
+ */
55
+ componentDidLoadEvent: EventEmitter<boolean>;
56
+ /**
57
+ * This event is emitted once just after the component is fully loaded and the first render() occurs
58
+ */
59
+ componentDidRenderFirstTime: EventEmitter<boolean>;
60
+ componentWillLoad(): Promise<void>;
61
+ componentDidRender(): void;
62
+ render(): void;
63
+ }
64
+ export type AddObjectsCallback = () => Promise<TypedObjectData[]>;
65
+ export type OptionsCallback = (delpoymentUnitId: string, targetId: string) => Promise<void>;
66
+ export type GetDeploymentUnitObjectsCallback = (id: string) => Promise<TypedObjectData[]>;
67
+ export type DeployCallback = (data: DeployData) => Promise<boolean>;
68
+ export type CreateDeploymentUnitCallback = () => Promise<ObjectBaseData | undefined>;
69
+ export type ObjectTypeData = ObjectBaseData & {
70
+ icon: string;
71
+ };
72
+ export type DeployTargetData = ObjectBaseData & {
73
+ canCreatePackage: boolean;
74
+ canDefineDisplayName: boolean;
75
+ applicationServers: ObjectBaseData[];
76
+ generators: ObjectBaseData[];
77
+ description: string;
78
+ };
79
+ export type TypedObjectData = ObjectBaseData & {
80
+ type: string;
81
+ };
82
+ export type DeployData = {
83
+ targetId: string;
84
+ applicationServerId?: string;
85
+ displayName?: string;
86
+ generatorId?: string;
87
+ onlyPackage: boolean;
88
+ objects: string[];
89
+ };
@@ -0,0 +1,11 @@
1
+ import { TreeViewItemModel } from "@genexus/chameleon-controls-library/dist/types/components/tree-view/types";
2
+ import { TypedObjectData, ObjectTypeData } from "./deployment-tool";
3
+ export declare const KB_OBJECT = "object";
4
+ export declare const convertObjectTypeDataToTreeView: (objectTypeData: ObjectTypeDataWithItems[]) => TreeViewItemModel[];
5
+ export declare const createArrayOfItems: (objectItems: TypedObjectData[], objectTypes: ObjectTypeData[]) => TreeViewItemModel[];
6
+ export type ObjectTypeDataWithItems = {
7
+ id: string;
8
+ name: string;
9
+ icon: string;
10
+ items: TypedObjectData[];
11
+ };
@@ -0,0 +1,3 @@
1
+ import { ApiOperationData } from "./open-api-import";
2
+ import { TreeViewItemModel } from "@genexus/chameleon-controls-library";
3
+ export declare const convertActionToTreeViewItem: (operations: ApiOperationData[]) => TreeViewItemModel[];
@@ -0,0 +1,63 @@
1
+ import { EventEmitter } from "../../stencil-public-runtime";
2
+ import { EntityData } from "../../common/types";
3
+ import { TreeViewItemModel } from "@genexus/chameleon-controls-library";
4
+ export declare class GxIdeOpenAPIImport {
5
+ #private;
6
+ el: HTMLGxIdeOpenApiImportElement;
7
+ actionListItems: TreeViewItemModel[];
8
+ importingIsInProcess: boolean;
9
+ operations: ApiOperationData[];
10
+ selectedFile: File;
11
+ selectedOperationForDescription: string;
12
+ selectedOperations: string[];
13
+ selectAllCheckboxValue: string;
14
+ selectAllCheckboxIndeterminate: boolean;
15
+ /**
16
+ * Default value for the Module/Folder field.
17
+ */
18
+ readonly defaultParent: EntityData;
19
+ /**
20
+ * If true it displays the component title on the header
21
+ */
22
+ readonly displayTitle = false;
23
+ /**
24
+ * Callback invoked when the user wants to cancel the export process.
25
+ */
26
+ readonly cancelCallback: CancelCallback;
27
+ /**
28
+ * Callback invoked when the user wants to initiate the import process.
29
+ */
30
+ readonly importCallback: ImportCallback;
31
+ /**
32
+ * Callback invoked must be loaded the content for an specification API
33
+ */
34
+ readonly loadCallback: LoadCallback;
35
+ /**
36
+ * Callback invoked when action is executed on Module/Folder filter (button '...').
37
+ */
38
+ readonly selectParentCallback: SelectParentCallback;
39
+ /**
40
+ * @description Gets fired when the component has rendered for the first time.
41
+ */
42
+ componentDidRenderFirstTime: EventEmitter<string>;
43
+ componentDidRender(): void;
44
+ componentWillLoad(): Promise<void>;
45
+ /**
46
+ * Suspends or reactivates the shortcuts
47
+ */
48
+ suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
49
+ render(): any;
50
+ }
51
+ export type ApiOperationData = {
52
+ id: string;
53
+ name: string;
54
+ description: string;
55
+ };
56
+ export type SelectionEventDetail = {
57
+ itemId: string;
58
+ itemValue: string;
59
+ };
60
+ export type CancelCallback = () => Promise<void>;
61
+ export type ImportCallback = (operationIds: string[]) => Promise<boolean>;
62
+ export type SelectParentCallback = () => Promise<EntityData | undefined>;
63
+ export type LoadCallback = (source: string | File, parentId: string) => Promise<ApiOperationData[]>;