@genexus/genexus-ide-ui 0.0.16 → 0.0.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.
Files changed (81) hide show
  1. package/dist/cjs/ch-grid_7.cjs.entry.js +73 -27
  2. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  3. package/dist/cjs/{gx-ide-container_2.cjs.entry.js → gx-ide-container.cjs.entry.js} +0 -31
  4. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +16 -17
  5. package/dist/cjs/gx-ide-references.cjs.entry.js +115 -90
  6. package/dist/cjs/gx-ide-template.cjs.entry.js +2 -2
  7. package/dist/cjs/gx-ide-test.cjs.entry.js +40 -3
  8. package/dist/cjs/{gxg-form-radio-group.cjs.entry.js → gx-ide-top-bar_2.cjs.entry.js} +31 -0
  9. package/dist/cjs/gxg-combo-box_8.cjs.entry.js +3 -8
  10. package/dist/cjs/gxg-menu.cjs.entry.js +2 -2
  11. package/dist/cjs/gxg-test.cjs.entry.js +4 -23
  12. package/dist/cjs/gxg-tree_2.cjs.entry.js +381 -295
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/cjs/update-tree-model-445c63a8.js +53 -0
  15. package/dist/collection/common/render-tree.js +1 -1
  16. package/dist/collection/common/update-tree-model.js +22 -0
  17. package/dist/collection/components/_template/template.js +9 -10
  18. package/dist/collection/components/_test/test.js +129 -2
  19. package/dist/collection/components/new-kb/new-kb.js +16 -35
  20. package/dist/collection/components/references/references.js +119 -113
  21. package/dist/collection/pages/assets/common.js +105 -95
  22. package/dist/components/ch-grid2.js +74 -28
  23. package/dist/components/combo-box.js +4 -3
  24. package/dist/components/form-radio.js +0 -5
  25. package/dist/components/gx-ide-new-kb.js +20 -28
  26. package/dist/components/gx-ide-references.js +131 -111
  27. package/dist/components/gx-ide-template.js +7 -13
  28. package/dist/components/gx-ide-test.js +45 -4
  29. package/dist/components/gxg-menu.js +2 -2
  30. package/dist/components/gxg-test.js +4 -23
  31. package/dist/components/gxg-tree-item2.js +326 -284
  32. package/dist/components/gxg-tree2.js +60 -15
  33. package/dist/components/update-tree-model.js +50 -0
  34. package/dist/esm/ch-grid_7.entry.js +73 -27
  35. package/dist/esm/genexus-ide-ui.js +1 -1
  36. package/dist/esm/{gx-ide-container_2.entry.js → gx-ide-container.entry.js} +1 -31
  37. package/dist/esm/gx-ide-new-kb.entry.js +16 -17
  38. package/dist/esm/gx-ide-references.entry.js +115 -90
  39. package/dist/esm/gx-ide-template.entry.js +2 -2
  40. package/dist/esm/gx-ide-test.entry.js +40 -3
  41. package/dist/esm/{gxg-form-radio-group.entry.js → gx-ide-top-bar_2.entry.js} +32 -2
  42. package/dist/esm/gxg-combo-box_8.entry.js +3 -8
  43. package/dist/esm/gxg-menu.entry.js +2 -2
  44. package/dist/esm/gxg-test.entry.js +4 -23
  45. package/dist/esm/gxg-tree_2.entry.js +382 -296
  46. package/dist/esm/loader.js +1 -1
  47. package/dist/esm/update-tree-model-80419058.js +50 -0
  48. package/dist/genexus-ide-ui/genexus-ide-ui.css +1 -1
  49. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  50. package/dist/genexus-ide-ui/p-1042318d.entry.js +1 -0
  51. package/dist/genexus-ide-ui/p-1d4cf2ae.entry.js +1 -0
  52. package/dist/genexus-ide-ui/p-254f9ce7.entry.js +1 -0
  53. package/dist/genexus-ide-ui/p-49433b58.entry.js +1 -0
  54. package/dist/genexus-ide-ui/p-67cf60f5.js +1 -0
  55. package/dist/genexus-ide-ui/p-7007965c.entry.js +1 -0
  56. package/dist/genexus-ide-ui/p-78a90113.entry.js +1 -0
  57. package/dist/genexus-ide-ui/p-79cf24a3.entry.js +1 -0
  58. package/dist/genexus-ide-ui/p-b66a4121.entry.js +1 -0
  59. package/dist/genexus-ide-ui/p-cd503583.entry.js +1 -0
  60. package/dist/genexus-ide-ui/{p-1e412d88.entry.js → p-fcc98e20.entry.js} +1 -1
  61. package/dist/node_modules/@genexus/gemini/dist/collection/components/tree-item/gxg-tree-item.css +2 -2
  62. package/dist/types/common/update-tree-model.d.ts +2 -0
  63. package/dist/types/components/_template/template.d.ts +2 -2
  64. package/dist/types/components/_test/test.d.ts +19 -1
  65. package/dist/types/components/new-kb/new-kb.d.ts +0 -4
  66. package/dist/types/components/references/references.d.ts +28 -24
  67. package/dist/types/components.d.ts +41 -21
  68. package/package.json +3 -3
  69. package/dist/cjs/render-tree-25d5b8a1.js +0 -29
  70. package/dist/components/render-tree.js +0 -27
  71. package/dist/esm/render-tree-fc8636a3.js +0 -27
  72. package/dist/genexus-ide-ui/p-0f5d0ccc.entry.js +0 -1
  73. package/dist/genexus-ide-ui/p-2761a056.entry.js +0 -1
  74. package/dist/genexus-ide-ui/p-62814082.entry.js +0 -1
  75. package/dist/genexus-ide-ui/p-97430828.entry.js +0 -1
  76. package/dist/genexus-ide-ui/p-9e32e006.entry.js +0 -1
  77. package/dist/genexus-ide-ui/p-a5fee36d.entry.js +0 -1
  78. package/dist/genexus-ide-ui/p-abee8c7b.js +0 -1
  79. package/dist/genexus-ide-ui/p-be9406e7.entry.js +0 -1
  80. package/dist/genexus-ide-ui/p-eb8e9655.entry.js +0 -1
  81. package/dist/genexus-ide-ui/p-f6536bbc.entry.js +0 -1
@@ -1,14 +1,13 @@
1
1
  import { h, proxyCustomElement, HTMLElement, createEvent, Host } from '@stencil/core/internal/client';
2
2
  import { L as Locale } from './locale.js';
3
- import { r as renderTreeItems } from './render-tree.js';
4
- import { d as defineCustomElement$j } from './icon.js';
5
- import { d as defineCustomElement$i } from './ch-suggest2.js';
6
- import { d as defineCustomElement$h } from './ch-suggest-list2.js';
7
- import { d as defineCustomElement$g } from './ch-suggest-list-item2.js';
8
- import { d as defineCustomElement$f } from './ch-window2.js';
9
- import { d as defineCustomElement$e } from './ch-window-close2.js';
10
- import { d as defineCustomElement$d } from './container.js';
11
- import { d as defineCustomElement$c } from './top-bar.js';
3
+ import { u as updateTreeModel, r as renderTreeItems } from './update-tree-model.js';
4
+ import { d as defineCustomElement$i } from './icon.js';
5
+ import { d as defineCustomElement$h } from './ch-suggest2.js';
6
+ import { d as defineCustomElement$g } from './ch-suggest-list2.js';
7
+ import { d as defineCustomElement$f } from './ch-suggest-list-item2.js';
8
+ import { d as defineCustomElement$e } from './ch-window2.js';
9
+ import { d as defineCustomElement$d } from './ch-window-close2.js';
10
+ import { d as defineCustomElement$c } from './container.js';
12
11
  import { d as defineCustomElement$b } from './button.js';
13
12
  import { d as defineCustomElement$a } from './form-checkbox.js';
14
13
  import { d as defineCustomElement$9 } from './icon2.js';
@@ -135,7 +134,7 @@ const GxIdeReferences$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
135
134
  // 8.PUBLIC METHODS API //
136
135
  // 9.LOCAL METHODS //
137
136
  /**
138
- * @description It attaches on the ch-suggest, the "itemSelected" event triggered by the ch-suggest-list-item. This helps set the new 'selectedObject'.
137
+ * It attaches on the ch-suggest, the "itemSelected" event triggered by the ch-suggest-list-item. This helps set the new 'selectedObject'.
139
138
  */
140
139
  this.attachSelectObjectListener = () => {
141
140
  this.selectObjectSuggestEl.addEventListener("itemSelected", (e) => {
@@ -146,61 +145,7 @@ const GxIdeReferences$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
146
145
  });
147
146
  };
148
147
  /**
149
- * @description It attaches several events on the 'referencedByEl' element, which is a tree.
150
- */
151
- this.attachReferencedByListeners = () => {
152
- /* 'toggleIconClicked' Event: This events gets fired when the user clicks on the toggle icon, that opens/close a tree. Here we only use it to check if the item has lazy items to be loaded. */
153
- this.referencedByEl.addEventListener("toggleIconClicked", async (e) => {
154
- if (e.detail.lazy && e.detail.id) {
155
- this.loadReferencesCallback(e.detail.id, false)
156
- .then(result => {
157
- this.referencedBy = result;
158
- })
159
- .catch(() => {
160
- // to do
161
- });
162
- }
163
- });
164
- /* 'selectionChanged' Event: Fired when a new tree item was selected.*/
165
- this.referencedByEl.addEventListener("selectionChanged", (e) => {
166
- this.selectReferenceCallback(e.detail.id);
167
- /* Returns void Promise*/
168
- });
169
- /* 'doubleClicked' Event: Fired when a tree item was double-clicked.*/
170
- this.referencedByEl.addEventListener("doubleClicked", (e) => {
171
- this.openObjectCallback(e.detail.id);
172
- /* Returns void Promise*/
173
- });
174
- };
175
- /**
176
- * @description It attaches several events on the 'referencesToEl' element, which is a tree.
177
- */
178
- this.attachReferencesToListeners = () => {
179
- /* 'toggleIconClicked' Event: (Read description on 'attachReferencedByListeners' as it does the same)*/
180
- this.referencesToEl.addEventListener("toggleIconClicked", async (e) => {
181
- if (e.detail.lazy && e.detail.id) {
182
- this.loadReferencesCallback(e.detail.id, true)
183
- .then(result => {
184
- this.referencesTo = result;
185
- })
186
- .catch(() => {
187
- // to do
188
- });
189
- }
190
- });
191
- /* 'selectionChanged' Event: Fired when a new tree item was selected.*/
192
- this.referencesToEl.addEventListener("selectionChanged", (e) => {
193
- this.selectReferenceCallback(e.detail.id);
194
- /* Returns void Promise*/
195
- });
196
- /* 'doubleClicked' Event: Fired when a tree item was double-clicked.*/
197
- this.referencesToEl.addEventListener("doubleClicked", (e) => {
198
- this.openObjectCallback(e.detail.id);
199
- /* Returns void Promise*/
200
- });
201
- };
202
- /**
203
- * @description This handler gets fired every time the value of the 'Select Object' ch-suggest changes. Then, it calls the 'updateSuggestedObjects' method, that keeps the state of the last suggested objects that were passed bu the host. Also, it shows the suggested objects on the ch-suggest box.
148
+ * This handler gets fired every time the value of the 'Select Object' ch-suggest changes. Then, it calls the 'updateSuggestedObjects' method, that keeps the state of the last suggested objects that were passed bu the host. Also, it shows the suggested objects on the ch-suggest box.
204
149
  */
205
150
  this.selectObjectValueChangedHandler = async (e) => {
206
151
  const value = e.detail;
@@ -220,55 +165,131 @@ const GxIdeReferences$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
220
165
  /* Returns an empty Promise*/
221
166
  };
222
167
  /**
223
- * @description handler that gets fired when the use clicks on the ch-suggest button (...)
168
+ * handler that gets fired when the use clicks on the ch-suggest button (...)
224
169
  */
225
170
  this.openSelectorDialogCallbackHandler = async () => {
226
- this.selectedObject = await this.openSelectorDialogCallback();
171
+ this.openSelectorDialogCallback()
172
+ .then(result => {
173
+ this.selectedObject = result;
174
+ })
175
+ .catch(() => {
176
+ /* to do */
177
+ });
227
178
  };
228
179
  /**
229
- * @description It evaluates if loadReferencesCallback should be called, depending wether there is or not an actual selected object.
180
+ * It evaluates if loadReferencesCallback should be called, depending wether there is or not an actual selected object.
230
181
  */
231
182
  this.evaluateInitialReferenceData = () => {
232
- var _a;
233
- const selectedObjectId = (_a = this.selectedObject) === null || _a === void 0 ? void 0 : _a.id;
234
- selectedObjectId && this.loadReferencesHandler(selectedObjectId);
183
+ if (this.selectedObject) {
184
+ this.selectedObjectHandler(this.selectedObject);
185
+ }
235
186
  };
236
187
  /**
237
- * @description This method invokes 'loadReferencesCallback' callback for 'Is Referenced By' and 'Has References To' panels.
188
+ * This method invokes 'loadReferencesCallback' callback for 'Is Referenced By' and 'Has References To' panels. The second parameter "to" indicates if loadReferencesCallback callback should be called for "has references to" or "is references by"
238
189
  */
239
- this.loadReferencesHandler = async (id) => {
240
- /* Referenced By*/
190
+ this.loadReferencesHandler = async (id, to = false) => {
241
191
  if (this.loadReferencesCallback) {
242
- this.loadReferencesCallback(id, false)
243
- .then(result => {
244
- this.referencedBy = result;
245
- })
246
- .catch(() => {
247
- /* To do*/
248
- });
192
+ /* is referenced by*/
193
+ if (!to) {
194
+ this.loadReferencesCallback(id, false)
195
+ .then(result => {
196
+ this.referencedByTreeData = convertReferenceDataToTreeData(result);
197
+ })
198
+ .catch(() => {
199
+ /* To do*/
200
+ });
201
+ }
202
+ /* is referenced by*/
203
+ if (to) {
204
+ this.loadReferencesCallback(id, true)
205
+ .then(result => {
206
+ this.referencesToTreeData = convertReferenceDataToTreeData(result);
207
+ })
208
+ .catch(() => {
209
+ /* To do*/
210
+ });
211
+ }
249
212
  }
250
- /* References To*/
251
- if (this.loadReferencesCallback) {
252
- this.loadReferencesCallback(id, true)
213
+ };
214
+ /**
215
+ * It hides/show the bar (The header bottom section).
216
+ */
217
+ this.hideBarButtonClickedHandler = () => {
218
+ this.barHidden = !this.barHidden;
219
+ };
220
+ /**
221
+ * Simple helper function to get 'this.referencedByTreeData' or 'this.referencesToTreeData'
222
+ */
223
+ this.getRef = (to = false) => {
224
+ if (!to) {
225
+ /* referenced by*/
226
+ return this.referencedByTreeData;
227
+ }
228
+ else {
229
+ /* references to*/
230
+ return this.referencesToTreeData;
231
+ }
232
+ };
233
+ /**
234
+ * Simple helper function to update 'this.referencedByTreeData' or 'this.referencesToTreeData'
235
+ */
236
+ this.updateRef = (to = false, updatedData) => {
237
+ if (!to) {
238
+ /* referenced by*/
239
+ this.referencedByTreeData = updatedData;
240
+ }
241
+ else {
242
+ /* references to*/
243
+ this.referencesToTreeData = updatedData;
244
+ }
245
+ };
246
+ /**
247
+ * Handles changes on any of the references (by or to). Used to:
248
+ * 1) Keep the models updated.
249
+ * 2) call the openObjectCallback.
250
+ * 3) call the loadReferencesCallback if a lazy node was toggled.
251
+ */
252
+ this.referencesPanelStateChangedHandler = (to = false) => (e) => {
253
+ const event = e.detail.emittedBy;
254
+ const nodeData = e.detail.itemData;
255
+ const nodeId = e.detail.itemData.id;
256
+ const nodeLabel = e.detail.itemData.label;
257
+ /* tree item was selected*/
258
+ if (event === "selectionChanged") {
259
+ this.selectReferenceCallback(nodeId);
260
+ /* Returns void Promise*/
261
+ }
262
+ /* tree item was double-clicked.*/
263
+ if (event === "doubleClicked") {
264
+ this.openObjectCallback(nodeId);
265
+ }
266
+ let updatedTreeModel = [];
267
+ const lazy = nodeData.lazy;
268
+ if (lazy) {
269
+ // loadReferencesCallback
270
+ let children = [];
271
+ this.loadReferencesCallback(nodeId, to)
253
272
  .then(result => {
254
- this.referencesTo = result;
273
+ children = convertReferenceDataToTreeData(result);
274
+ // Then update model
275
+ updatedTreeModel = updateTreeModel(this.getRef(to), { id: nodeId, label: nodeLabel, items: children }, nodeId);
276
+ this.updateRef(to, updatedTreeModel);
255
277
  })
256
278
  .catch(() => {
257
279
  /* To do*/
258
280
  });
259
281
  }
282
+ else {
283
+ updatedTreeModel = updateTreeModel(this.getRef(to), nodeData, nodeId);
284
+ this.updateRef(to, updatedTreeModel);
285
+ }
260
286
  };
261
- /**
262
- * @description It hides/show the bar (The header bottom section).
263
- */
264
- this.hideBarButtonClickedHandler = () => {
265
- this.barHidden = !this.barHidden;
266
- };
287
+ this.referencedByTreeData = undefined;
288
+ this.referencesToTreeData = undefined;
267
289
  this.barHidden = false;
268
290
  this.objectsSuggestions = undefined;
269
291
  this.referencedBy = undefined;
270
292
  this.referencesTo = undefined;
271
- this.hideTopBar = false;
272
293
  this.selectedObject = undefined;
273
294
  this.selectorSourceCallback = undefined;
274
295
  this.loadReferencesCallback = undefined;
@@ -277,7 +298,12 @@ const GxIdeReferences$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
277
298
  this.selectReferenceCallback = undefined;
278
299
  }
279
300
  selectedObjectHandler(newSelectedObject) {
280
- this.loadReferencesHandler(newSelectedObject.id);
301
+ if (newSelectedObject.id) {
302
+ /* update "is referenced by*/
303
+ this.loadReferencesHandler(newSelectedObject.id, false);
304
+ /* update "has references to*/
305
+ this.loadReferencesHandler(newSelectedObject.id, true);
306
+ }
281
307
  }
282
308
  // 6.COMPONENT LIFECYCLE EVENTS //
283
309
  async componentWillLoad() {
@@ -286,8 +312,6 @@ const GxIdeReferences$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
286
312
  }
287
313
  componentDidLoad() {
288
314
  this.attachSelectObjectListener();
289
- this.attachReferencedByListeners();
290
- this.attachReferencesToListeners();
291
315
  }
292
316
  componentDidRender() {
293
317
  this.componentDidRenderEvent.emit(this._componentLocale.componentName);
@@ -295,12 +319,12 @@ const GxIdeReferences$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
295
319
  // 10.RENDER() FUNCTION //
296
320
  render() {
297
321
  var _a, _b, _c, _d, _e, _f;
298
- return (h(Host, { class: "gx-ide-component" }, !this.hideTopBar ? (h("gx-ide-top-bar", { topBarTitle: this._componentLocale.componentName })) : null, h("div", { class: "gx-ide-main-wrapper gx-ide-overflow" }, h("gx-ide-container", { displayBorderBottom: true }, h("header", { class: "header" }, h("div", { class: "header__top grid" }, h("gxg-button", { icon: "navigation/arrow-down", type: "secondary-icon-only", class: "hide-bar-button", onClick: this.hideBarButtonClickedHandler, part: "toggle-bar-button" }), h("gxg-label", { labelPosition: "start", class: "suggest-label", part: "select-object-label" }, this._componentLocale.header.selectObject), h("gxg-suggest", null, h("ch-suggest", { value: this.selectedObject.id, onValueChanged: this.selectObjectValueChangedHandler, ref: el => (this.selectObjectSuggestEl = el), part: "object-selector-suggest" }, renderSuggestLists(this.objectsSuggestions))), h("gxg-button", { type: "secondary-icon-only", icon: "gemini-tools/show-more-horizontal", onClick: this.openSelectorDialogCallbackHandler, class: "selector-dialog-button", part: "open-selector-dialog-button" })), h("div", { class: {
322
+ return (h(Host, { class: "gx-ide-component" }, h("div", { class: "gx-ide-main-wrapper gx-ide-overflow" }, h("gx-ide-container", { displayBorderBottom: true }, h("header", { class: "header" }, h("div", { class: "header__top grid" }, h("gxg-button", { icon: "navigation/arrow-down", type: "secondary-icon-only", class: "hide-bar-button", onClick: this.hideBarButtonClickedHandler, part: "toggle-bar-button" }), h("gxg-label", { labelPosition: "start", class: "suggest-label", part: "select-object-label" }, this._componentLocale.header.selectObject), h("gxg-suggest", null, h("ch-suggest", { value: this.selectedObject.id, onValueChanged: this.selectObjectValueChangedHandler, ref: el => (this.selectObjectSuggestEl = el), part: "object-selector-suggest" }, renderSuggestLists(this.objectsSuggestions))), h("gxg-button", { type: "secondary-icon-only", icon: "gemini-tools/show-more-horizontal", onClick: this.openSelectorDialogCallbackHandler, class: "selector-dialog-button", part: "open-selector-dialog-button" })), h("div", { class: {
299
323
  "header__bottom": true,
300
324
  "header__bottom--hidden": this.barHidden
301
- } }, h("div", { class: "outer-wrapper" }, h("div", { class: "inner-wrapper" }, h("div", { class: "inner-wrapper__left" }, h("gxg-icon", { type: this.selectedObject.icon, color: "auto" }), h("gxg-text", { padding: "s", type: "text-link", part: "open-object-text-link", onClick: this.openObjectCallbackHandler }, `${this.selectedObject.name} : ${this.selectedObject.description}`)), h("div", { class: "inner-wrapper__right gxi-hidden" }, h("gxg-form-checkbox", { id: "references-by-type", label: "Group references by type", required: true, "display-validation-styles": true, part: "references-type-checkbox" }))))))), h("main", { class: "main grid" }, h("gx-ide-container", { containerTitle: this._componentLocale.main.isReferencedBy, justifyContent: "center", part: "referenced-by-container" }, h("gxg-tree", { ref: el => (this.referencedByEl = el), class: { "gxi-hidden": !((_a = this.referencedBy) === null || _a === void 0 ? void 0 : _a.length) }, checkbox: false, part: "referenced-by-tree" }, renderTreeItems(convertReferenceDataToTreeData(this.referencedBy))), !((_b = this.referencedBy) === null || _b === void 0 ? void 0 : _b.length) && (h("gxg-text", { textAlign: "center", padding: "m", type: "text-regular", maxWidth: this.referencesMessagesMaxWidth, part: "referenced-by-text" }, ((_c = this.referencedBy) === null || _c === void 0 ? void 0 : _c.length) === 0
325
+ } }, h("div", { class: "outer-wrapper" }, h("div", { class: "inner-wrapper" }, h("div", { class: "inner-wrapper__left" }, h("gxg-icon", { type: this.selectedObject.icon, color: "auto" }), h("gxg-text", { padding: "s", type: "text-link", part: "open-object-text-link", onClick: this.openObjectCallbackHandler }, `${this.selectedObject.name} : ${this.selectedObject.description}`)), h("div", { class: "inner-wrapper__right gxi-hidden" }, h("gxg-form-checkbox", { id: "references-by-type", label: "Group references by type", required: true, "display-validation-styles": true, part: "references-type-checkbox" }))))))), h("main", { class: "main grid" }, h("gx-ide-container", { containerTitle: this._componentLocale.main.isReferencedBy, justifyContent: "center", fullHeight: true, part: "referenced-by-container" }, h("gxg-tree", { class: { "gxi-hidden": !((_a = this.referencedByTreeData) === null || _a === void 0 ? void 0 : _a.length) }, checkbox: true, onTreeItemStateChanged: this.referencesPanelStateChangedHandler(false), part: "referenced-by-tree" }, renderTreeItems(this.referencedByTreeData)), !((_b = this.referencedByTreeData) === null || _b === void 0 ? void 0 : _b.length) && (h("gxg-text", { textAlign: "center", padding: "m", type: "text-regular", maxWidth: this.referencesMessagesMaxWidth, part: "referenced-by-text" }, ((_c = this.referencedByTreeData) === null || _c === void 0 ? void 0 : _c.length) === 0
302
326
  ? this._componentLocale.main.isReferencedByEmpty
303
- : this._componentLocale.main.isReferencedByError))), h("gx-ide-container", { containerTitle: this._componentLocale.main.hasReferencesTo, justifyContent: "center", part: "references-to-container" }, h("gxg-tree", { ref: el => (this.referencesToEl = el), class: { "gxi-hidden": !((_d = this.referencesTo) === null || _d === void 0 ? void 0 : _d.length) }, checkbox: false, part: "references-to-tree" }, renderTreeItems(convertReferenceDataToTreeData(this.referencesTo))), !((_e = this.referencesTo) === null || _e === void 0 ? void 0 : _e.length) && (h("gxg-text", { textAlign: "center", padding: "m", type: "text-regular", maxWidth: this.referencesMessagesMaxWidth, part: "references-to-text" }, ((_f = this.referencesTo) === null || _f === void 0 ? void 0 : _f.length) === 0
327
+ : this._componentLocale.main.isReferencedByError))), h("gx-ide-container", { containerTitle: this._componentLocale.main.hasReferencesTo, justifyContent: "center", fullHeight: true, part: "references-to-container" }, h("gxg-tree", { class: { "gxi-hidden": !((_d = this.referencesToTreeData) === null || _d === void 0 ? void 0 : _d.length) }, checkbox: false, onTreeItemStateChanged: this.referencesPanelStateChangedHandler(true), part: "references-to-tree" }, renderTreeItems(this.referencesToTreeData)), !((_e = this.referencesToTreeData) === null || _e === void 0 ? void 0 : _e.length) && (h("gxg-text", { textAlign: "center", padding: "m", type: "text-regular", maxWidth: this.referencesMessagesMaxWidth, part: "references-to-text" }, ((_f = this.referencesToTreeData) === null || _f === void 0 ? void 0 : _f.length) === 0
304
328
  ? this._componentLocale.main.hasReferencesEmpty
305
329
  : this._componentLocale.main.hasReferencesToError)))))));
306
330
  }
@@ -311,13 +335,14 @@ const GxIdeReferences$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
311
335
  }; }
312
336
  static get style() { return referencesCss; }
313
337
  }, [1, "gx-ide-references", {
314
- "hideTopBar": [4, "hide-top-bar"],
315
338
  "selectedObject": [1040],
316
339
  "selectorSourceCallback": [16],
317
340
  "loadReferencesCallback": [16],
318
341
  "openObjectCallback": [16],
319
342
  "openSelectorDialogCallback": [16],
320
343
  "selectReferenceCallback": [16],
344
+ "referencedByTreeData": [32],
345
+ "referencesToTreeData": [32],
321
346
  "barHidden": [32],
322
347
  "objectsSuggestions": [32],
323
348
  "referencedBy": [32],
@@ -327,7 +352,7 @@ function defineCustomElement$1() {
327
352
  if (typeof customElements === "undefined") {
328
353
  return;
329
354
  }
330
- const components = ["gx-ide-references", "ch-icon", "ch-suggest", "ch-suggest-list", "ch-suggest-list-item", "ch-window", "ch-window-close", "gx-ide-container", "gx-ide-top-bar", "gxg-button", "gxg-form-checkbox", "gxg-icon", "gxg-label", "gxg-suggest", "gxg-text", "gxg-title", "gxg-tooltip", "gxg-tree", "gxg-tree-item"];
355
+ const components = ["gx-ide-references", "ch-icon", "ch-suggest", "ch-suggest-list", "ch-suggest-list-item", "ch-window", "ch-window-close", "gx-ide-container", "gxg-button", "gxg-form-checkbox", "gxg-icon", "gxg-label", "gxg-suggest", "gxg-text", "gxg-title", "gxg-tooltip", "gxg-tree", "gxg-tree-item"];
331
356
  components.forEach(tagName => { switch (tagName) {
332
357
  case "gx-ide-references":
333
358
  if (!customElements.get(tagName)) {
@@ -335,41 +360,36 @@ function defineCustomElement$1() {
335
360
  }
336
361
  break;
337
362
  case "ch-icon":
338
- if (!customElements.get(tagName)) {
339
- defineCustomElement$j();
340
- }
341
- break;
342
- case "ch-suggest":
343
363
  if (!customElements.get(tagName)) {
344
364
  defineCustomElement$i();
345
365
  }
346
366
  break;
347
- case "ch-suggest-list":
367
+ case "ch-suggest":
348
368
  if (!customElements.get(tagName)) {
349
369
  defineCustomElement$h();
350
370
  }
351
371
  break;
352
- case "ch-suggest-list-item":
372
+ case "ch-suggest-list":
353
373
  if (!customElements.get(tagName)) {
354
374
  defineCustomElement$g();
355
375
  }
356
376
  break;
357
- case "ch-window":
377
+ case "ch-suggest-list-item":
358
378
  if (!customElements.get(tagName)) {
359
379
  defineCustomElement$f();
360
380
  }
361
381
  break;
362
- case "ch-window-close":
382
+ case "ch-window":
363
383
  if (!customElements.get(tagName)) {
364
384
  defineCustomElement$e();
365
385
  }
366
386
  break;
367
- case "gx-ide-container":
387
+ case "ch-window-close":
368
388
  if (!customElements.get(tagName)) {
369
389
  defineCustomElement$d();
370
390
  }
371
391
  break;
372
- case "gx-ide-top-bar":
392
+ case "gx-ide-container":
373
393
  if (!customElements.get(tagName)) {
374
394
  defineCustomElement$c();
375
395
  }
@@ -1,8 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { L as Locale } from './locale.js';
3
- import { d as defineCustomElement$a } from './icon.js';
4
- import { d as defineCustomElement$9 } from './container.js';
5
- import { d as defineCustomElement$8 } from './top-bar.js';
3
+ import { d as defineCustomElement$9 } from './icon.js';
4
+ import { d as defineCustomElement$8 } from './container.js';
6
5
  import { d as defineCustomElement$7 } from './button.js';
7
6
  import { d as defineCustomElement$6 } from './form-text.js';
8
7
  import { d as defineCustomElement$5 } from './icon2.js';
@@ -18,7 +17,7 @@ const GxIdeTemplate$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
18
17
  this.__registerHost();
19
18
  this.__attachShadow();
20
19
  this.componentDidRenderEvent = createEvent(this, "componentDidRenderEvent", 7);
21
- this.hideTopBar = false;
20
+ this.mainTile = undefined;
22
21
  }
23
22
  // 6.COMPONENT LIFECYCLE METHODS //
24
23
  async componentWillLoad() {
@@ -32,19 +31,19 @@ const GxIdeTemplate$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
32
31
  // 9.LOCAL METHODS //
33
32
  // 10.RENDER() FUNCTION //
34
33
  render() {
35
- return (h(Host, { class: "gx-ide-component" }, !this.hideTopBar ? (h("gx-ide-top-bar", { topBarTitle: this._componentLocale.componentName })) : null, h("div", { class: "gx-ide-main-wrapper gx-ide-overflow" }, h("gx-ide-container", { fullHeight: true, "container-title": "Header Title" }, h("p", null, "Lorem ipsum dolor sit amet consectetur adipisicing elit. Facilis natus nam, veritatis aspernatur consequatur omnis blanditiis! Praesentium, ex labore? Odit, officiis eius rerum pariatur ea dicta possimus perferendis molestiae sunt!q"), h("gxg-form-text", { label: "Name", placeholder: "Elon Musk", labelPosition: "start", centerLabel: true }), h("gxg-button", { slot: "footer" }, "Create")))));
34
+ return (h(Host, { class: "gx-ide-component" }, h("div", { class: "gx-ide-main-wrapper gx-ide-overflow" }, h("gx-ide-container", { fullHeight: true, "container-title": "Header Title" }, h("p", null, "Lorem ipsum dolor sit amet consectetur adipisicing elit. Facilis natus nam, veritatis aspernatur consequatur omnis blanditiis! Praesentium, ex labore? Odit, officiis eius rerum pariatur ea dicta possimus perferendis molestiae sunt!q"), h("gxg-form-text", { label: "Name", placeholder: "Elon Musk", labelPosition: "start", centerLabel: true }), h("gxg-button", { slot: "footer" }, "Create")))));
36
35
  }
37
36
  static get assetsDirs() { return ["gx-ide-assets/template"]; }
38
37
  get el() { return this; }
39
38
  static get style() { return templateCss; }
40
39
  }, [1, "gx-ide-template", {
41
- "hideTopBar": [4, "hide-top-bar"]
40
+ "mainTile": [1, "main-tile"]
42
41
  }]);
43
42
  function defineCustomElement$1() {
44
43
  if (typeof customElements === "undefined") {
45
44
  return;
46
45
  }
47
- const components = ["gx-ide-template", "ch-icon", "gx-ide-container", "gx-ide-top-bar", "gxg-button", "gxg-form-text", "gxg-icon", "gxg-label", "gxg-title", "gxg-tooltip"];
46
+ const components = ["gx-ide-template", "ch-icon", "gx-ide-container", "gxg-button", "gxg-form-text", "gxg-icon", "gxg-label", "gxg-title", "gxg-tooltip"];
48
47
  components.forEach(tagName => { switch (tagName) {
49
48
  case "gx-ide-template":
50
49
  if (!customElements.get(tagName)) {
@@ -52,16 +51,11 @@ function defineCustomElement$1() {
52
51
  }
53
52
  break;
54
53
  case "ch-icon":
55
- if (!customElements.get(tagName)) {
56
- defineCustomElement$a();
57
- }
58
- break;
59
- case "gx-ide-container":
60
54
  if (!customElements.get(tagName)) {
61
55
  defineCustomElement$9();
62
56
  }
63
57
  break;
64
- case "gx-ide-top-bar":
58
+ case "gx-ide-container":
65
59
  if (!customElements.get(tagName)) {
66
60
  defineCustomElement$8();
67
61
  }
@@ -1,5 +1,5 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
- import { r as renderTreeItems } from './render-tree.js';
2
+ import { u as updateTreeModel, r as renderTreeItems } from './update-tree-model.js';
3
3
  import { d as defineCustomElement$9 } from './icon.js';
4
4
  import { d as defineCustomElement$8 } from './button.js';
5
5
  import { d as defineCustomElement$7 } from './form-checkbox.js';
@@ -16,6 +16,8 @@ const GxIdeUiTest = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
16
16
  super();
17
17
  this.__registerHost();
18
18
  this.__attachShadow();
19
+ // 8.PUBLIC METHODS API //
20
+ // 9.LOCAL METHODS //
19
21
  /* Gxg-Tree Methods*/
20
22
  this.closeTreeNodeHandler = () => {
21
23
  this.tree.toggleItems(["number-1-1-2"], false);
@@ -41,9 +43,36 @@ const GxIdeUiTest = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
41
43
  this.deleteNodeHandler = () => {
42
44
  this.treeModel = [];
43
45
  };
46
+ /* Update model test*/
47
+ // private showTree = () => {
48
+ // this.treeModel = [];
49
+ // };
50
+ // private updateTree = () => {
51
+ // this.treeModel = [];
52
+ // };
53
+ this.treeItemStateChangedHandler = (e) => {
54
+ // const event = e.detail.emittedBy;
55
+ const nodeData = e.detail.itemData;
56
+ const nodeId = e.detail.itemData.id;
57
+ if (nodeData.lazy) {
58
+ this.updateLazyCallback(nodeId).then(children => {
59
+ if (children === null || children === void 0 ? void 0 : children.length) {
60
+ const updatedTreeModel = updateTreeModel(this.treeModel, { id: nodeId, label: nodeData.label, items: children }, nodeId);
61
+ this.treeModel = updatedTreeModel;
62
+ }
63
+ });
64
+ }
65
+ };
44
66
  this.treeModel = undefined;
67
+ this.lazyNode = undefined;
68
+ this.updateLazyCallback = undefined;
69
+ this.newNode = undefined;
70
+ this.testUpdateNode = false;
45
71
  this.lazyLoadTreeItemsCallback = undefined;
46
72
  }
73
+ // 5.EVENTS (EMIT) //
74
+ // 6.COMPONENT LIFECYCLE METHODS //
75
+ // 7.LISTENERS //
47
76
  loadLazyChildrenHandler(e) {
48
77
  const treeItemId = e.detail;
49
78
  if (this.lazyLoadTreeItemsCallback) {
@@ -55,9 +84,17 @@ const GxIdeUiTest = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
55
84
  }, 1000);
56
85
  }
57
86
  }
87
+ treeItemStateChanged(event) {
88
+ const updatedTreeModel = updateTreeModel(this.treeModel, event.detail, event.detail.id);
89
+ console.log("updatedTreeModel", updatedTreeModel);
90
+ }
91
+ // 10.RENDER() FUNCTION //
58
92
  render() {
59
- if (this.treeModel) {
60
- return (h(Host, null, h("gxg-tree", { id: "masterTree", 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"))));
93
+ if (!this.testUpdateNode && this.treeModel) {
94
+ 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"))));
95
+ }
96
+ else if (this.testUpdateNode) {
97
+ return (h(Host, null, h("gxg-tree", { checked: true, checkbox: true, multiSelection: true, ref: (el) => (this.tree = el), onTreeItemStateChanged: this.treeItemStateChangedHandler }, renderTreeItems(this.treeModel))));
61
98
  }
62
99
  else {
63
100
  return h("slot", null);
@@ -66,8 +103,12 @@ const GxIdeUiTest = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
66
103
  static get style() { return testCss; }
67
104
  }, [1, "gx-ide-test", {
68
105
  "treeModel": [1040],
106
+ "lazyNode": [16],
107
+ "updateLazyCallback": [16],
108
+ "newNode": [1040],
109
+ "testUpdateNode": [4, "test-update-node"],
69
110
  "lazyLoadTreeItemsCallback": [16]
70
- }, [[0, "loadLazyChildren", "loadLazyChildrenHandler"]]]);
111
+ }, [[0, "loadLazyChildren", "loadLazyChildrenHandler"], [0, "treeItemStateChanged", "treeItemStateChanged"]]]);
71
112
  function defineCustomElement$1() {
72
113
  if (typeof customElements === "undefined") {
73
114
  return;
@@ -107,7 +107,7 @@ const GxgMenu$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
107
107
  this.removeMouseEnter = () => {
108
108
  this.el.removeEventListener("mouseenter", this.detectMouseEnter);
109
109
  };
110
- this.detectMouseEnter = (e) => {
110
+ this.detectMouseEnter = () => {
111
111
  //Mouse enter
112
112
  this.clearMouseOutTimeout();
113
113
  };
@@ -185,7 +185,7 @@ const GxgMenu$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
185
185
  }
186
186
  keyboardNavigationHandler(triggeredItem) {
187
187
  const triggeringItem = triggeredItem.detail.ref;
188
- const triggeringItemIndex = this._enabledItems.findIndex((item, i) => {
188
+ const triggeringItemIndex = this._enabledItems.findIndex((item) => {
189
189
  return item === triggeringItem;
190
190
  });
191
191
  let newFocusedItem;
@@ -35,7 +35,7 @@ const renderTreeItem = (item) => {
35
35
  const childrenLength = item.items ? item.items.length : 0;
36
36
  const isLeaf = childrenLength === 0 || item.leaf ? true : false;
37
37
  const lazy = !item.lazy ? false : true;
38
- return (h("gxg-tree-item", { checkbox: item.checkbox, checked: item.checked, description: item.description, disabled: item.disabled, icon: item.icon, indeterminate: item.indeterminate, id: item.id, key: `tree-item-${item.id}`, label: item.label, leaf: isLeaf && !lazy, numberOfChildren: childrenLength, opened: item.opened, selected: item.selected }, [item.label, ((_a = item.items) === null || _a === void 0 ? void 0 : _a.length) && renderTreeItems(item.items, false)]));
38
+ return (h("gxg-tree-item", { checkbox: item.checkbox, checked: item.checked, description: item.description, disabled: item.disabled, icon: item.icon, indeterminate: item.indeterminate, id: item.id, label: item.label, leaf: isLeaf && !lazy, numberOfChildren: childrenLength, opened: item.opened, selected: item.selected }, [item.label, ((_a = item.items) === null || _a === void 0 ? void 0 : _a.length) && renderTreeItems(item.items, false)]));
39
39
  };
40
40
 
41
41
  const testCss = ".tree-buttons{margin-top:16px;display:flex;gap:8px;flex-wrap:wrap}";
@@ -75,27 +75,8 @@ const GxgTest$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
75
75
  this.deleteNodeHandler = () => {
76
76
  this.treeItemsModel = [];
77
77
  };
78
- this.getIconState = (state) => {
79
- let icon = h("gxg-icon", { type: "gx-server/private" });
80
- switch (state) {
81
- case "inserted":
82
- icon = h("gxg-icon", { type: "gx-server/new", color: "success" });
83
- break;
84
- case "modified":
85
- icon = (h("gxg-icon", { type: "gx-server/changes-commit-pending", color: "primary-active" }));
86
- break;
87
- case "deleted":
88
- icon = h("gxg-icon", { type: "gx-server/delete", color: "error" });
89
- break;
90
- case "conflicted":
91
- icon = h("gxg-icon", { type: "gx-server/conflict", color: "warning" });
92
- break;
93
- }
94
- return icon;
95
- };
96
78
  }
97
79
  toggleIconClickedHandler(e) {
98
- console.log("hola");
99
80
  const treeItemId = e.detail.id;
100
81
  const isLazy = e.detail.lazy;
101
82
  if (this.lazyLoadTreeItemsCallback && isLazy) {
@@ -118,9 +99,9 @@ const GxgTest$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
118
99
  ];
119
100
  }
120
101
  else if (this.showGrid) {
121
- return (h("gxg-grid", null, h("ch-grid", { "row-selection-mode": "none", part: "ch-grid-pending-for-updates", class: "no-border" }, h("ch-grid-columnset", null, h("ch-grid-column", { settingable: false, sortable: false, "column-type": "rich", "rich-row-selector": true, "rich-row-selector-mode": "mark" }), h("ch-grid-column", { "column-name": "name", "column-name-position": "text", settingable: false }), h("ch-grid-column", { "column-name": "productos", "column-name-position": "text", settingable: false })), this.showGridData && [
122
- h("ch-grid-row", { rowid: "123" }, h("ch-grid-cell", { ref: (el) => (el.type = "rich") }), h("ch-grid-cell", null, "Nombre"), h("ch-grid-cell", null, "Productos")),
123
- h("ch-grid-rowset", null, h("ch-grid-rowset-legend", null, "Identidad"), h("ch-grid-row", { rowSelector: true }, h("ch-grid-cell", { rowSelector: true }), h("ch-grid-cell", null, "Nombre"), h("ch-grid-cell", null, "Productos")), h("ch-grid-row", null, h("ch-grid-cell", null), h("ch-grid-cell", null, "English"), h("ch-grid-cell", null, "Products")), h("ch-grid-row", null, h("ch-grid-cell", null), h("ch-grid-cell", null, "Portugu\u00EAs"), h("ch-grid-cell", null, "Produtos"))),
102
+ return (h("gxg-grid", null, h("ch-grid", { "row-selection-mode": "multiple", part: "ch-grid-pending-for-updates", class: "no-border" }, h("ch-grid-columnset", null, h("ch-grid-column", { settingable: false, sortable: false, "column-type": "rich", "rich-row-selector": true, "rich-row-selector-mode": "mark" }), h("ch-grid-column", { "column-name": "name", "column-name-position": "text", settingable: false }), h("ch-grid-column", { "column-name": "productos", "column-name-position": "text", settingable: false })), this.showGridData && [
103
+ h("ch-grid-row", { rowid: "123" }, h("ch-grid-cell", { "cell-type": "rich", "row-selector": true }), h("ch-grid-cell", null, "Nombre"), h("ch-grid-cell", null, "Productos")),
104
+ h("ch-grid-rowset", null, h("ch-grid-rowset-legend", null, "Identidad"), h("ch-grid-row", null, h("ch-grid-cell", { "cell-type": "rich", "row-selector": true }), h("ch-grid-cell", null, "Nombre"), h("ch-grid-cell", null, "Productos")), h("ch-grid-row", null, h("ch-grid-cell", { "cell-type": "rich", "row-selector": true }), h("ch-grid-cell", null, "English"), h("ch-grid-cell", null, "Products")), h("ch-grid-row", null, h("ch-grid-cell", { "cell-type": "rich", "row-selector": true }), h("ch-grid-cell", null, "Portugu\u00EAs"), h("ch-grid-cell", null, "Produtos"))),
124
105
  ])));
125
106
  }
126
107
  else {