@genexus/genexus-ide-ui 0.0.62 → 0.0.63

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 (113) hide show
  1. package/dist/cjs/{ch-tree-x_3.cjs.entry.js → ch-checkbox_4.cjs.entry.js} +277 -71
  2. package/dist/cjs/ch-next-data-modeling-render.cjs.entry.js +242 -0
  3. package/dist/cjs/{ch-next-data-modeling-item.cjs.entry.js → ch-next-data-modeling_2.cjs.entry.js} +20 -1
  4. package/dist/cjs/ch-tree-view-render-wrapper.cjs.entry.js +160 -0
  5. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  6. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +41 -39
  7. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +23 -11
  8. package/dist/cjs/gx-ide-test.cjs.entry.js +107 -122
  9. package/dist/cjs/gxg-color-picker.cjs.entry.js +2 -2
  10. package/dist/cjs/gxg-title-editable.cjs.entry.js +11 -4
  11. package/dist/cjs/{gxg-tree_2.cjs.entry.js → gxg-tree-item.cjs.entry.js} +0 -212
  12. package/dist/cjs/gxg-tree-view.cjs.entry.js +165 -0
  13. package/dist/cjs/gxg-tree.cjs.entry.js +218 -0
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/collection-manifest.json +5 -3
  16. package/dist/collection/components/_test/test.css +5 -0
  17. package/dist/collection/components/_test/test.js +109 -220
  18. package/dist/collection/components/kb-manager-export/helpers.js +7 -23
  19. package/dist/collection/components/kb-manager-export/kb-manager-export.css +20 -0
  20. package/dist/collection/components/kb-manager-export/kb-manager-export.js +42 -22
  21. package/dist/collection/components/kb-manager-import/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.en.json +1 -0
  22. package/dist/collection/components/kb-manager-import/kb-manager-import.js +23 -11
  23. package/dist/components/ch-next-data-modeling-item.js +1 -457
  24. package/dist/components/ch-next-data-modeling-render.js +295 -0
  25. package/dist/components/ch-next-data-modeling.js +1 -27
  26. package/dist/components/ch-tree-view-item.js +6 -0
  27. package/dist/components/ch-tree-view-render-wrapper.js +224 -0
  28. package/dist/components/ch-tree-view-render.js +6 -0
  29. package/dist/components/ch-tree-view.js +6 -0
  30. package/dist/components/gx-ide-kb-manager-export.js +75 -73
  31. package/dist/components/gx-ide-kb-manager-import.js +38 -20
  32. package/dist/components/gx-ide-references.js +21 -15
  33. package/dist/components/gx-ide-test.js +120 -160
  34. package/dist/components/gxg-color-picker.js +2 -2
  35. package/dist/components/gxg-title-editable.js +12 -4
  36. package/dist/components/gxg-tree-item.js +614 -1
  37. package/dist/components/gxg-tree-view.js +2 -2
  38. package/dist/components/gxg-tree.js +236 -1
  39. package/dist/components/index.js +5 -3
  40. package/dist/components/next-data-modeling-item.js +466 -0
  41. package/dist/{esm/ch-next-data-modeling.entry.js → components/next-data-modeling.js} +21 -7
  42. package/dist/components/{tree-x-list-item.js → tree-view-item.js} +9 -9
  43. package/dist/components/{ch-test-tree-x.js → tree-view-render.js} +168 -28
  44. package/dist/components/tree-view.js +410 -435
  45. package/dist/components/tree-view2.js +226 -0
  46. package/dist/esm/{ch-tree-x_3.entry.js → ch-checkbox_4.entry.js} +275 -70
  47. package/dist/esm/ch-next-data-modeling-render.entry.js +238 -0
  48. package/dist/esm/{ch-next-data-modeling-item.entry.js → ch-next-data-modeling_2.entry.js} +21 -3
  49. package/dist/esm/ch-tree-view-render-wrapper.entry.js +156 -0
  50. package/dist/esm/genexus-ide-ui.js +1 -1
  51. package/dist/esm/gx-ide-kb-manager-export.entry.js +41 -39
  52. package/dist/esm/gx-ide-kb-manager-import.entry.js +23 -11
  53. package/dist/esm/gx-ide-test.entry.js +108 -123
  54. package/dist/esm/gxg-color-picker.entry.js +2 -2
  55. package/dist/esm/gxg-title-editable.entry.js +11 -4
  56. package/dist/{components/gxg-tree-item2.js → esm/gxg-tree-item.entry.js} +9 -79
  57. package/dist/esm/gxg-tree-view.entry.js +161 -0
  58. package/dist/{components/gxg-tree2.js → esm/gxg-tree.entry.js} +8 -32
  59. package/dist/esm/loader.js +1 -1
  60. package/dist/genexus-ide-ui/genexus-ide-ui.css +1 -1
  61. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  62. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.en.json +1 -0
  63. package/dist/genexus-ide-ui/p-13177896.entry.js +1 -0
  64. package/dist/genexus-ide-ui/p-19fef562.entry.js +1 -0
  65. package/dist/genexus-ide-ui/p-2781b92a.entry.js +1 -0
  66. package/dist/genexus-ide-ui/p-2c17e71d.entry.js +1 -0
  67. package/dist/genexus-ide-ui/p-40a57a36.entry.js +1 -0
  68. package/dist/genexus-ide-ui/p-636d02fa.entry.js +1 -0
  69. package/dist/genexus-ide-ui/p-7b63be93.entry.js +1 -0
  70. package/dist/genexus-ide-ui/p-8a7c4561.entry.js +1 -0
  71. package/dist/genexus-ide-ui/p-a2cb0e6b.entry.js +1 -0
  72. package/dist/genexus-ide-ui/p-a9c8b373.entry.js +1 -0
  73. package/dist/genexus-ide-ui/p-b819706e.entry.js +1 -0
  74. package/dist/genexus-ide-ui/p-bacd879c.entry.js +1 -0
  75. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/next/data-modeling-render/next-data-modeling-render.css +3 -0
  76. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/renders/tree-view/tree-view-render.css +3 -0
  77. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-tree-view/tree-view-render-wrapper.css +0 -0
  78. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/tree-view/tree-view.css +45 -0
  79. package/dist/node_modules/@genexus/gemini/dist/collection/components/title-editable/title-editable.css +17 -3
  80. package/dist/node_modules/@genexus/gemini/dist/collection/components/tree-view/tree-view.css +5 -2
  81. package/dist/types/common/helpers.d.ts +2 -2
  82. package/dist/types/components/_test/test.d.ts +3 -35
  83. package/dist/types/components/kb-manager-export/helpers.d.ts +4 -4
  84. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +10 -5
  85. package/dist/types/components/kb-manager-import/helpers.d.ts +3 -3
  86. package/dist/types/components/kb-manager-import/kb-manager-import.d.ts +7 -6
  87. package/dist/types/components/references/helpers.d.ts +2 -2
  88. package/dist/types/components/references/references.d.ts +3 -3
  89. package/dist/types/components.d.ts +3 -60
  90. package/package.json +3 -3
  91. package/dist/cjs/ch-checkbox.cjs.entry.js +0 -93
  92. package/dist/cjs/ch-next-data-modeling.cjs.entry.js +0 -19
  93. package/dist/cjs/ch-test-tree-x.cjs.entry.js +0 -458
  94. package/dist/components/ch-tree-x-list-item.js +0 -6
  95. package/dist/components/ch-tree-x.js +0 -6
  96. package/dist/components/tree-x.js +0 -504
  97. package/dist/esm/ch-checkbox.entry.js +0 -89
  98. package/dist/esm/ch-test-tree-x.entry.js +0 -454
  99. package/dist/esm/gxg-tree_2.entry.js +0 -757
  100. package/dist/genexus-ide-ui/p-092ccacd.entry.js +0 -1
  101. package/dist/genexus-ide-ui/p-1ad68b23.entry.js +0 -3
  102. package/dist/genexus-ide-ui/p-3442d19a.entry.js +0 -1
  103. package/dist/genexus-ide-ui/p-39968306.entry.js +0 -1
  104. package/dist/genexus-ide-ui/p-5755f985.entry.js +0 -1
  105. package/dist/genexus-ide-ui/p-85597097.entry.js +0 -1
  106. package/dist/genexus-ide-ui/p-9e530c7d.entry.js +0 -1
  107. package/dist/genexus-ide-ui/p-ad5040e4.entry.js +0 -1
  108. package/dist/genexus-ide-ui/p-aeb3b032.entry.js +0 -1
  109. package/dist/genexus-ide-ui/p-c53522c9.entry.js +0 -1
  110. package/dist/genexus-ide-ui/p-d104f9a4.entry.js +0 -1
  111. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-tree-x.css +0 -3
  112. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/tree-x/tree-x.css +0 -45
  113. /package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-view/{tree-x-list-item/tree-x-list-item.css → tree-view-item/tree-view-item.css} +0 -0
@@ -1,3 +1,8 @@
1
1
  :host {
2
2
  display: block;
3
+ }
4
+
5
+ .tree-container {
6
+ display: flex;
7
+ height: 200px;
3
8
  }
@@ -1,64 +1,32 @@
1
1
  /* STENCIL IMPORTS */
2
- import { Host, h } from "@stencil/core";
3
- import { renderTreeItems } from "../../common/render-tree";
4
- import { updateTreeModel } from "../../common/update-tree-model";
2
+ import {
3
+ // Host,
4
+ h } from "@stencil/core";
5
5
  /* CUSTOM IMPORTS */
6
6
  export class GxIdeTest {
7
7
  constructor() {
8
+ /* THIS IS A COMPONENT FOR TESTING PURPOSES. DO WHATEVER YOU WANT.*/
9
+ /*
10
+ INDEX:
11
+ 1.OWN PROPERTIES
12
+ 2.REFERENCE TO ELEMENTS
13
+ 3.STATE() VARIABLES
14
+ 4.PUBLIC PROPERTY API | WATCH'S
15
+ 5.EVENTS (EMIT)
16
+ 6.COMPONENT LIFECYCLE METHODS
17
+ 7.LISTENERS
18
+ 8.PUBLIC METHODS API
19
+ 9.LOCAL METHODS
20
+ 10.RENDER() FUNCTION
21
+ */
22
+ // 1.OWN PROPERTIES //
8
23
  this.renderedFirstTime = false;
24
+ // 7.LISTENERS //
9
25
  // 8.PUBLIC METHODS API //
10
26
  // 9.LOCAL METHODS //
11
- /* Gxg-Tree Methods*/
12
- this.closeTreeNodeHandler = () => {
13
- this.tree.toggleItems(["number-1-1-2"], false);
27
+ this.checkAllHandler = () => {
28
+ this.treeViewEl.updateAllItemsProperties({ checked: true });
14
29
  };
15
- this.openTreeNodeHandler = () => {
16
- this.tree.toggleItems(["number-1-1-2"], true);
17
- };
18
- this.toggleTreeNodeHandler = () => {
19
- this.tree.toggleItems(["number-1-1-2"]);
20
- };
21
- this.getSelectedItemsHandler = () => {
22
- (async () => {
23
- const selected = await this.tree.getSelectedItems();
24
- console.log(selected);
25
- })();
26
- };
27
- this.getCheckedItemsHandler = () => {
28
- (async () => {
29
- const checked = await this.tree.getCheckedItems();
30
- console.log(checked);
31
- })();
32
- };
33
- this.deleteNodeHandler = () => {
34
- this.treeModel = [];
35
- };
36
- /* Update model test*/
37
- // private showTree = () => {
38
- // this.treeModel = [];
39
- // };
40
- // private updateTree = () => {
41
- // this.treeModel = [];
42
- // };
43
- this.treeItemStateChangedHandler = (e) => {
44
- // const event = e.detail.emittedBy;
45
- const nodeData = e.detail.itemData;
46
- const nodeId = e.detail.itemData.id;
47
- if (nodeData.lazy) {
48
- this.updateLazyCallback(nodeId).then(children => {
49
- if (children === null || children === void 0 ? void 0 : children.length) {
50
- const updatedTreeModel = updateTreeModel(this.treeModel, { id: nodeId, label: nodeData.label, items: children }, nodeId);
51
- this.treeModel = updatedTreeModel;
52
- }
53
- });
54
- }
55
- };
56
- this.treeModel = undefined;
57
- this.lazyNode = undefined;
58
- this.updateLazyCallback = undefined;
59
- this.newNode = undefined;
60
- this.testUpdateNode = false;
61
- this.lazyLoadTreeItemsCallback = undefined;
62
30
  }
63
31
  // 6.COMPONENT LIFECYCLE METHODS //
64
32
  componentDidRender() {
@@ -67,33 +35,97 @@ export class GxIdeTest {
67
35
  this.renderedFirstTime = true;
68
36
  }
69
37
  }
70
- // 7.LISTENERS //
71
- loadLazyChildrenHandler(e) {
72
- const treeItemId = e.detail;
73
- if (this.lazyLoadTreeItemsCallback) {
74
- const promise = this.lazyLoadTreeItemsCallback(treeItemId);
75
- setTimeout(() => {
76
- promise.then(result => {
77
- this.treeModel = result;
78
- });
79
- }, 1000);
80
- }
81
- }
82
- treeItemStateChanged(event) {
83
- const updatedTreeModel = updateTreeModel(this.treeModel, event.detail, event.detail.id);
84
- console.log("updatedTreeModel", updatedTreeModel);
38
+ componentDidLoad() {
39
+ this.treeViewEl.treeModel = [
40
+ {
41
+ id: "number-1",
42
+ caption: "number-1 label (always editable)",
43
+ class: "tree-view-item tree-view-item--success",
44
+ leaf: false,
45
+ leftImgSrc: "./objects/datastore",
46
+ editable: true,
47
+ checkbox: true,
48
+ items: [
49
+ {
50
+ id: "number-1-1",
51
+ caption: "number-1-1 (always editable)",
52
+ leaf: false,
53
+ leftImgSrc: "/build/ch-icon-assets/patterns",
54
+ editable: true,
55
+ checkbox: true,
56
+ items: [
57
+ {
58
+ id: "number-1-1-1",
59
+ caption: "number-1-1-1",
60
+ leaf: true,
61
+ checkbox: true,
62
+ leftImgSrc: "./objects/knowledge-base"
63
+ },
64
+ {
65
+ id: "number-1-1-2",
66
+ caption: "number-1-1-2",
67
+ leaf: false,
68
+ checkbox: true,
69
+ leftImgSrc: "./objects/knowledge-base",
70
+ items: [
71
+ {
72
+ id: "number-1-1-2-1",
73
+ caption: "number-1-1-2-1 (lazy, drag disabled)",
74
+ leaf: false,
75
+ leftImgSrc: "./objects/knowledge-base",
76
+ lazy: true,
77
+ checkbox: true,
78
+ dragDisabled: true,
79
+ toggleCheckboxes: true
80
+ },
81
+ {
82
+ id: "number-1-1-2-2",
83
+ caption: "number-1-1-2-2",
84
+ leaf: true,
85
+ checkbox: true,
86
+ leftImgSrc: "/build/ch-icon-assets/java"
87
+ }
88
+ ]
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ id: "number-1-2",
94
+ caption: "number-1-2",
95
+ leaf: true,
96
+ checkbox: true,
97
+ leftImgSrc: "./objects/knowledge-base"
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ id: "number-2",
103
+ caption: "number-2",
104
+ class: "tree-view-item tree-view-item--custom-image",
105
+ checkbox: true,
106
+ leaf: false,
107
+ items: [
108
+ {
109
+ id: "number-2-1",
110
+ caption: "number-2-1",
111
+ leaf: true,
112
+ checkbox: true,
113
+ leftImgSrc: "/build/ch-icon-assets/java"
114
+ },
115
+ {
116
+ id: "number-2-2",
117
+ caption: "number-2-2",
118
+ leaf: true,
119
+ checkbox: true,
120
+ leftImgSrc: "./objects/knowledge-base"
121
+ }
122
+ ]
123
+ }
124
+ ];
85
125
  }
86
126
  // 10.RENDER() FUNCTION //
87
127
  render() {
88
- if (!this.testUpdateNode && this.treeModel) {
89
- return (h(Host, null, h("gxg-tree", { checked: true, checkbox: true, multiSelection: true, ref: (el) => (this.tree = el) }, renderTreeItems(this.treeModel)), ",", h("div", { class: "tree-buttons" }, h("gxg-button", { type: "outlined", onClick: this.closeTreeNodeHandler }, "Close 1-1-2"), h("gxg-button", { type: "outlined", onClick: this.openTreeNodeHandler }, "Open 1-1-2"), h("gxg-button", { type: "outlined", onClick: this.toggleTreeNodeHandler }, "Toggle 1-1-2"), h("gxg-button", { type: "outlined", onClick: this.getSelectedItemsHandler }, "Get Selected Items"), h("gxg-button", { type: "outlined", onClick: this.getCheckedItemsHandler }, "Get Checked Items"), h("gxg-button", { type: "outlined", onClick: this.deleteNodeHandler }, "Delete Tree"))));
90
- }
91
- else if (this.testUpdateNode) {
92
- return (h(Host, null, h("gxg-tree", { checked: true, checkbox: true, multiSelection: true, ref: (el) => (this.tree = el), onTreeItemStateChanged: this.treeItemStateChangedHandler }, renderTreeItems(this.treeModel))));
93
- }
94
- else {
95
- return h("slot", null);
96
- }
128
+ return (h("div", null, h("div", { class: "tree-container" }, h("gxg-tree-view", { ref: el => (this.treeViewEl = el) })), h("label", null, "Check item", h("input", { type: "checkbox", name: "", id: "check-all", onInput: this.checkAllHandler }))));
97
129
  }
98
130
  static get is() { return "gx-ide-test"; }
99
131
  static get encapsulation() { return "shadow"; }
@@ -107,134 +139,6 @@ export class GxIdeTest {
107
139
  "$": ["test.css"]
108
140
  };
109
141
  }
110
- static get properties() {
111
- return {
112
- "treeModel": {
113
- "type": "unknown",
114
- "mutable": true,
115
- "complexType": {
116
- "original": "GxgTreeItemData[]",
117
- "resolved": "GxgTreeItemData[]",
118
- "references": {
119
- "GxgTreeItemData": {
120
- "location": "import",
121
- "path": "@genexus/gemini/dist/types/components/tree-item/gxg-tree-item"
122
- }
123
- }
124
- },
125
- "required": false,
126
- "optional": false,
127
- "docs": {
128
- "tags": [],
129
- "text": "The model for a gxg-tree"
130
- }
131
- },
132
- "lazyNode": {
133
- "type": "unknown",
134
- "mutable": false,
135
- "complexType": {
136
- "original": "GxgTreeItemData[]",
137
- "resolved": "GxgTreeItemData[]",
138
- "references": {
139
- "GxgTreeItemData": {
140
- "location": "import",
141
- "path": "@genexus/gemini/dist/types/components/tree-item/gxg-tree-item"
142
- }
143
- }
144
- },
145
- "required": false,
146
- "optional": false,
147
- "docs": {
148
- "tags": [],
149
- "text": "A new lazy node"
150
- }
151
- },
152
- "updateLazyCallback": {
153
- "type": "unknown",
154
- "mutable": false,
155
- "complexType": {
156
- "original": "(\n id: string\n ) => Promise<GxgTreeItemData[]>",
157
- "resolved": "(id: string) => Promise<GxgTreeItemData[]>",
158
- "references": {
159
- "Promise": {
160
- "location": "global"
161
- },
162
- "GxgTreeItemData": {
163
- "location": "import",
164
- "path": "@genexus/gemini/dist/types/components/tree-item/gxg-tree-item"
165
- }
166
- }
167
- },
168
- "required": false,
169
- "optional": false,
170
- "docs": {
171
- "tags": [],
172
- "text": "A new lazy node"
173
- }
174
- },
175
- "newNode": {
176
- "type": "unknown",
177
- "mutable": true,
178
- "complexType": {
179
- "original": "GxgTreeItemData[]",
180
- "resolved": "GxgTreeItemData[]",
181
- "references": {
182
- "GxgTreeItemData": {
183
- "location": "import",
184
- "path": "@genexus/gemini/dist/types/components/tree-item/gxg-tree-item"
185
- }
186
- }
187
- },
188
- "required": false,
189
- "optional": false,
190
- "docs": {
191
- "tags": [],
192
- "text": "The new tree node to update"
193
- }
194
- },
195
- "testUpdateNode": {
196
- "type": "boolean",
197
- "mutable": false,
198
- "complexType": {
199
- "original": "false",
200
- "resolved": "boolean",
201
- "references": {}
202
- },
203
- "required": false,
204
- "optional": false,
205
- "docs": {
206
- "tags": [],
207
- "text": "Update tree model test"
208
- },
209
- "attribute": "test-update-node",
210
- "reflect": false,
211
- "defaultValue": "false"
212
- },
213
- "lazyLoadTreeItemsCallback": {
214
- "type": "unknown",
215
- "mutable": false,
216
- "complexType": {
217
- "original": "(\n treeItemId: string\n ) => Promise<GxgTreeItemData[]>",
218
- "resolved": "(treeItemId: string) => Promise<GxgTreeItemData[]>",
219
- "references": {
220
- "Promise": {
221
- "location": "global"
222
- },
223
- "GxgTreeItemData": {
224
- "location": "import",
225
- "path": "@genexus/gemini/dist/types/components/tree-item/gxg-tree-item"
226
- }
227
- }
228
- },
229
- "required": false,
230
- "optional": false,
231
- "docs": {
232
- "tags": [],
233
- "text": "A callback that returns a Promise with the new tree model"
234
- }
235
- }
236
- };
237
- }
238
142
  static get events() {
239
143
  return [{
240
144
  "method": "componentDidRenderFirstTime",
@@ -256,19 +160,4 @@ export class GxIdeTest {
256
160
  }
257
161
  }];
258
162
  }
259
- static get listeners() {
260
- return [{
261
- "name": "loadLazyChildren",
262
- "method": "loadLazyChildrenHandler",
263
- "target": undefined,
264
- "capture": false,
265
- "passive": false
266
- }, {
267
- "name": "treeItemStateChanged",
268
- "method": "treeItemStateChanged",
269
- "target": undefined,
270
- "capture": false,
271
- "passive": false
272
- }];
273
- }
274
163
  }
@@ -7,21 +7,10 @@ INDEX:
7
7
  5. findObjectInTree
8
8
  6. findPropertyInTree
9
9
  7. convertPropertyToTreeItem
10
- 8. convertObjectDataToTreeItemData
10
+ 8. updateTreeModelWithObjects
11
11
  9. convertKbPropertiesDataToTreeItemData
12
12
  10. clearKbPropertiesFromTree
13
13
  */
14
- /* 1.1 getIcon (for objects)*/
15
- const getObjectIcon = (typeId, objectTypes) => {
16
- // The object icon has to be retrieved from the ObjetTypes array, by matching the ObjectData typeId with the ObjectType id.
17
- const objectType = objectTypes.find(objectType => objectType.id === typeId);
18
- if (objectType) {
19
- return objectType.icon;
20
- }
21
- else {
22
- return undefined;
23
- }
24
- };
25
14
  /* 1.2 getIcon (for properties)*/
26
15
  const getPropertyIcon = (typeId, kbPropertiesTypes) => {
27
16
  // The object icon has to be retrieved from the ObjetTypes array, by matching the ObjectData typeId with the ObjectType id.
@@ -48,17 +37,11 @@ const convertObjectTypeToTreeItem = (objectType) => ({
48
37
  const convertObjectToTreeItem = (object, objectTypes) => ({
49
38
  caption: object.name,
50
39
  id: object.id,
51
- leftImgSrc: getObjectIcon(object.typeId, objectTypes),
40
+ leftImgSrc: objectTypes.get(object.typeId).icon,
52
41
  checkbox: true,
53
42
  class: "object tree-view-item",
54
43
  leaf: true
55
44
  });
56
- /* 4. getObjectType*/
57
- const getObjectType = (object, objectTypes) => {
58
- return objectTypes.find(objectType => {
59
- return objectType.id === object.typeId;
60
- });
61
- };
62
45
  /* 5. findObjectInTree*/
63
46
  const findObjectInTree = (object, actualTreeState) => {
64
47
  var _a;
@@ -99,12 +82,13 @@ const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
99
82
  caption: property.name,
100
83
  id: property.id,
101
84
  leftImgSrc: getPropertyIcon(property.typeId, kbPropertiesTypes),
102
- checkbox: true,
85
+ // checkbox: true,
103
86
  class: "property tree-view-item",
87
+ metadata: "property",
104
88
  leaf: true
105
89
  });
106
- /* 8. convertObjectDataToTreeItemData*/
107
- export const convertObjectDataToTreeItemData = (objects, objectTypes, actualTreeState) => {
90
+ /* 8. updateTreeModelWithObjects*/
91
+ export const updateTreeModelWithObjects = (objects, objectTypes, actualTreeState) => {
108
92
  const updatedTreeData = [...actualTreeState];
109
93
  if (!objects) {
110
94
  // nothing to do
@@ -119,7 +103,7 @@ export const convertObjectDataToTreeItemData = (objects, objectTypes, actualTree
119
103
  // if the objectType tree node exists, insert inside.
120
104
  // if the objectType tree node does not exists, create object type node first.
121
105
  if (objectTreeItemInfo.objectTypeIndex === -1) {
122
- const objectType = getObjectType(object, objectTypes);
106
+ const objectType = objectTypes.get(object.typeId);
123
107
  if (objectType !== undefined) {
124
108
  const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
125
109
  objectTreeItemInfo.objectTypeIndex =
@@ -202,6 +202,13 @@ gxg-tabs {
202
202
  align-items: center;
203
203
  justify-content: center;
204
204
  }
205
+ .tree-container .tree-view-item.object-type {
206
+ animation-duration: 200ms;
207
+ animation-fill-mode: forwards;
208
+ }
209
+ .tree-container--export-all .tree-view-item.object-type {
210
+ animation-name: toggleTreeObjectsVisibility;
211
+ }
205
212
  .tree-container .gx-ide-message {
206
213
  padding: 100px 0;
207
214
  }
@@ -211,4 +218,17 @@ gxg-tabs {
211
218
  display: grid;
212
219
  gap: var(--gx-ide-grid-column-gap);
213
220
  grid-template-columns: 100px 100px;
221
+ }
222
+
223
+ @keyframes toggleTreeObjectsVisibility {
224
+ 0% {
225
+ opacity: 1;
226
+ }
227
+ 95% {
228
+ opacity: 0;
229
+ }
230
+ 100% {
231
+ opacity: 0;
232
+ display: none;
233
+ }
214
234
  }
@@ -3,18 +3,20 @@ import { Host, h } from "@stencil/core";
3
3
  /* CUSTOM IMPORTS */
4
4
  import { Locale } from "../../common/locale";
5
5
  import { config } from "../../common/config";
6
- import { convertObjectDataToTreeItemData, convertKbPropertiesDataToTreeItemData, clearKbPropertiesFromTree } from "./helpers";
6
+ import { updateTreeModelWithObjects, convertKbPropertiesDataToTreeItemData, clearKbPropertiesFromTree } from "./helpers";
7
+ const KB_PROPERTIES = "properties";
7
8
  export class GxIdeKbManagerExport {
8
9
  constructor() {
9
10
  this.checkedObjectsIds = [];
10
11
  this.checkedPropertiesIds = [];
11
12
  this.renderedFirstTime = false;
13
+ this.flattenedObjectTypes = new Map();
12
14
  // 7.LISTENERS //
13
15
  // 8.PUBLIC METHODS API //
14
16
  // 9.LOCAL METHODS //
15
17
  this.evaluateObjects = () => {
16
18
  var _a;
17
- this.noObjects = !!(((_a = this.objectsTreeState) === null || _a === void 0 ? void 0 : _a.length) === 0 || !this.objectsTreeState);
19
+ this.noObjects = !!(((_a = this.treeModel) === null || _a === void 0 ? void 0 : _a.length) === 0 || !this.treeModel);
18
20
  };
19
21
  this.optionsCallbackHandler = () => {
20
22
  if (this.optionsCallback) {
@@ -31,14 +33,14 @@ export class GxIdeKbManagerExport {
31
33
  }
32
34
  else {
33
35
  // 'convertObjectDataToTreeItemData' can be used for converting KBPropertiesData as well, because the two types share the same properties
34
- const objectsNewTreeState = convertKbPropertiesDataToTreeItemData(kBPropertiesData, this.kbPropertiesTypes, this.objectsTreeState);
35
- this.objectsTreeState = objectsNewTreeState;
36
+ const newTreeModel = convertKbPropertiesDataToTreeItemData(kBPropertiesData, this.kbPropertiesTypes, this.treeModel);
37
+ this.treeModel = newTreeModel;
36
38
  }
37
39
  }
38
40
  else if (!checked) {
39
41
  // previous properties (if any) should be removed
40
- const objectsWithoutProperties = clearKbPropertiesFromTree(this.objectsTreeState);
41
- this.objectsTreeState = objectsWithoutProperties;
42
+ const objectsWithoutProperties = clearKbPropertiesFromTree(this.treeModel);
43
+ this.treeModel = objectsWithoutProperties;
42
44
  }
43
45
  };
44
46
  this.addObjectsCallbackHandler = async () => {
@@ -58,9 +60,9 @@ export class GxIdeKbManagerExport {
58
60
  */
59
61
  this.updateObjects = (objects) => {
60
62
  if (objects.length) {
61
- const objectsNewTreeState = convertObjectDataToTreeItemData(objects, this.objectTypes, this.objectsTreeState);
62
- // console.log("objectsNewTreeState", objectsNewTreeState);
63
- this.objectsTreeState = objectsNewTreeState;
63
+ const newTreeModel = updateTreeModelWithObjects(objects, this.flattenedObjectTypes, this.treeModel);
64
+ console.log(JSON.stringify(newTreeModel, undefined, 2));
65
+ this.treeModel = newTreeModel;
64
66
  }
65
67
  };
66
68
  /*
@@ -108,12 +110,17 @@ export class GxIdeKbManagerExport {
108
110
  };
109
111
  this.clearButtonHandler = () => {
110
112
  /* revisar*/
113
+ console.log("clear button clicked");
111
114
  this.objectsTreeEl.updateAllItemsProperties({ checked: false });
112
115
  };
116
+ this.exportAllChangedHandler = (event) => {
117
+ this.exportAllIsChecked = event.detail.value;
118
+ };
119
+ this.exportAllIsChecked = false;
113
120
  this.fileName = "";
114
121
  this.exportFilePathName = undefined;
115
122
  this.noObjects = undefined;
116
- this.objectsTreeState = [];
123
+ this.treeModel = [];
117
124
  this.dummyInitialTree = undefined;
118
125
  this.kbPropertiesTypes = undefined;
119
126
  this.objectTypes = undefined;
@@ -125,17 +132,21 @@ export class GxIdeKbManagerExport {
125
132
  this.exportCallback = undefined;
126
133
  this.cancelCallback = undefined;
127
134
  }
128
- watchObjectsTreeStateHandler(newState) {
135
+ watchtreeModelHandler(newState) {
129
136
  this.noObjects = !!(newState.length === 0 || !newState);
130
137
  }
131
138
  watchDummyInitialTreeHandler(newTree) {
132
- this.objectsTreeState = newTree;
139
+ this.treeModel = newTree;
140
+ }
141
+ watchObjectTypeslHandler(newState) {
142
+ this.flattenObjectTypes(newState);
133
143
  }
134
144
  // 6.COMPONENT LIFECYCLE EVENTS //
135
145
  async componentWillLoad() {
136
146
  this._componentLocale = await Locale.getComponentStrings(this.el);
137
147
  this.componentDidLoadEvent.emit(true);
138
148
  this.evaluateObjects();
149
+ this.flattenObjectTypes(this.objectTypes);
139
150
  }
140
151
  componentDidRender() {
141
152
  if (!this.renderedFirstTime) {
@@ -143,18 +154,23 @@ export class GxIdeKbManagerExport {
143
154
  this.renderedFirstTime = true;
144
155
  }
145
156
  }
157
+ flattenObjectTypes(newState) {
158
+ newState.forEach(objectType => {
159
+ this.flattenedObjectTypes.set(objectType.id, objectType);
160
+ });
161
+ }
146
162
  // 10.RENDER() FUNCTION //
147
163
  render() {
148
164
  return (h(Host, { class: "gx-ide-component" }, h("div", { class: "gx-ide-main-wrapper" }, h("gx-ide-container", { noContentPadding: true, noHeadingPadding: true, headingPaddingTop: true, containerTitle: this._componentLocale.componentName, slimmerFooter: config.gxIdeContainer.slimmerFooter }, h("header", { slot: "header", class: "header" }, h("div", { class: "header__top" }, h("gx-ide-directory-selector", { class: { "select-file-input": true }, value: this.exportFilePathName, part: "xpz-file", label: this._componentLocale.header.exportFileName, ref: el => (this.fileNameEl = el), selectDirectoryCallback: this.exportFileDirectoryCallback }), h("gxg-button-group", { class: "export-cancel-buttons-group", "default-selected-btn-id": "responsive-tablet-btn" }, h("button", { id: "export-kb-btn", part: "export-btn", onClick: this.exportCallbackHandler }, this._componentLocale.header.exportButton), h("button", { id: "cancel-kb-export-btn", part: "cancel-button", onClick: this.cancelCallbackHandler }, this._componentLocale.header.cancelButton)), h("gxg-button", { type: "secondary-icon-only", icon: "gemini-tools/settings", part: "select-kb-btn", class: { "options-btn": true }, onClick: this.optionsCallbackHandler }, this._componentLocale.header.optionsButton)), h("div", { class: "header__bottom" }, h("div", { class: { "checkboxes-wrapper": true } }, h("gxg-form-checkbox", { label: this._componentLocale.main.addKnowledgeBaseDescription, onChange: this.addKBPropertiesCallbackHandler, part: "add-kb-checkbox" }), h("gxg-form-checkbox", { label: this._componentLocale.main.exportAll, part: "export-all-checkbox", ref: el => (this.exportAllCheckboxEl =
149
- el) })))), h("div", { class: {
165
+ el), onChange: this.exportAllChangedHandler })))), h("div", { class: {
150
166
  "tree-container": true,
151
167
  "tree-container--empty": this.noObjects
168
+ // "tree-container--export-all": this.exportAllIsChecked
152
169
  } }, !this.noObjects ? (
153
170
  /* objects tree */
154
- h("gxg-tree-view", { treeModel: this.objectsTreeState, dragDisabled: true, dropDisabled: true, toggleCheckboxes: true, onCheckedItemsChange: this.objectsTreeCheckedItemsChangedHandler, ref: el => (this.objectsTreeEl = el) })) : (h("gxg-text", { textAlign: config.gxgMessage.common.textAlign, padding: config.gxgMessage.common.textAlign, type: config.gxgMessage.common.type, maxWidth: config.gxgMessage.common.maxWidth, class: "gx-ide-message gx-ide-message--short", part: "referenced-by-empty-status-message" }, "There are no Objects to display. ", h("br", null), h("gxg-text", { type: "text-link-no-line", textAlign: "center", onClick: this.addObjectsCallbackHandler }, "Begin by adding some.")))), h("gxg-button", { type: "secondary-text-only", part: "export-button", class: { "cancel-btn": true }, slot: "footer-start", onClick: this.clearButtonHandler }, this._componentLocale.footer.clearButton), h("div", { class: { "footer-right-wrapper": true }, slot: "footer-end" }, h("gxg-button", { onClick: this.addReferencesCallbackHandler, type: "outlined-text-icon", icon: "general/references", part: "export-button", class: { "cancel-btn": true } }, this._componentLocale.footer.referencesButton), h("gxg-button", { type: "primary-text-icon", icon: "menus/new-object", part: "export-button", class: { "cancel-btn": true }, onClick: this.addObjectsCallbackHandler, grabAttention: this.noObjects }, this._componentLocale.footer.addButton))))));
171
+ h("ch-tree-view-render", { treeModel: this.treeModel, dragDisabled: true, dropDisabled: true, toggleCheckboxes: true, checked: true, checkbox: true, filter: KB_PROPERTIES, filterType: this.exportAllIsChecked ? "metadata" : "none", onCheckedItemsChange: this.objectsTreeCheckedItemsChangedHandler, ref: el => (this.objectsTreeEl = el) })) : (h("gxg-text", { textAlign: config.gxgMessage.common.textAlign, padding: config.gxgMessage.common.textAlign, type: config.gxgMessage.common.type, maxWidth: config.gxgMessage.common.maxWidth, class: "gx-ide-message gx-ide-message--short", part: "referenced-by-empty-status-message" }, "There are no Objects to display. ", h("br", null), h("gxg-text", { type: "text-link-no-line", textAlign: "center", onClick: this.addObjectsCallbackHandler }, "Begin by adding some.")))), h("gxg-button", { type: "secondary-text-only", part: "export-button", class: { "cancel-btn": true }, slot: "footer-start", onClick: this.clearButtonHandler }, this._componentLocale.footer.clearButton), h("div", { class: { "footer-right-wrapper": true }, slot: "footer-end" }, h("gxg-button", { onClick: this.addReferencesCallbackHandler, type: "outlined-text-icon", icon: "general/references", part: "export-button", class: { "cancel-btn": true }, disabled: this.exportAllIsChecked }, this._componentLocale.footer.referencesButton), h("gxg-button", { type: "primary-text-icon", icon: "menus/new-object", part: "export-button", class: { "cancel-btn": true }, onClick: this.addObjectsCallbackHandler, disabled: this.exportAllIsChecked, grabAttention: this.noObjects }, this._componentLocale.footer.addButton))))));
155
172
  }
156
173
  static get is() { return "gx-ide-kb-manager-export"; }
157
- static get encapsulation() { return "shadow"; }
158
174
  static get originalStyleUrls() {
159
175
  return {
160
176
  "$": ["kb-manager-export.scss"]
@@ -172,12 +188,12 @@ export class GxIdeKbManagerExport {
172
188
  "type": "unknown",
173
189
  "mutable": false,
174
190
  "complexType": {
175
- "original": "TreeXItemModel[]",
176
- "resolved": "TreeXItemModel[]",
191
+ "original": "TreeViewItemModel[]",
192
+ "resolved": "TreeViewItemModel[]",
177
193
  "references": {
178
- "TreeXItemModel": {
194
+ "TreeViewItemModel": {
179
195
  "location": "import",
180
- "path": "@genexus/chameleon-controls-library/dist/types/components/tree-view/tree-x/types"
196
+ "path": "@genexus/chameleon-controls-library/dist/types/components/tree-view/tree-view/types"
181
197
  }
182
198
  }
183
199
  },
@@ -381,10 +397,11 @@ export class GxIdeKbManagerExport {
381
397
  }
382
398
  static get states() {
383
399
  return {
400
+ "exportAllIsChecked": {},
384
401
  "fileName": {},
385
402
  "exportFilePathName": {},
386
403
  "noObjects": {},
387
- "objectsTreeState": {}
404
+ "treeModel": {}
388
405
  };
389
406
  }
390
407
  static get events() {
@@ -423,11 +440,14 @@ export class GxIdeKbManagerExport {
423
440
  static get elementRef() { return "el"; }
424
441
  static get watchers() {
425
442
  return [{
426
- "propName": "objectsTreeState",
427
- "methodName": "watchObjectsTreeStateHandler"
443
+ "propName": "treeModel",
444
+ "methodName": "watchtreeModelHandler"
428
445
  }, {
429
446
  "propName": "dummyInitialTree",
430
447
  "methodName": "watchDummyInitialTreeHandler"
448
+ }, {
449
+ "propName": "objectTypes",
450
+ "methodName": "watchObjectTypeslHandler"
431
451
  }];
432
452
  }
433
453
  }
@@ -9,6 +9,7 @@
9
9
  "main": {
10
10
  "objectsInFile": {
11
11
  "title": "Objects in File",
12
+ "selectUnselect": "Select All / Unselect All",
12
13
  "selectAll": "Click to select all",
13
14
  "deselectAll": "Click to deselect all",
14
15
  "importButton": "Import",