@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
@@ -105,24 +105,24 @@ export class GxIdeNewKb {
105
105
  return gxOptions;
106
106
  };
107
107
  this.createKbHandler = () => {
108
- var _a, _b, _c;
108
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
109
109
  if (this.createCallback) {
110
110
  const createCallbackPromise = this.createCallback({
111
- kbName: this.kbNameEl.value,
112
- kbLocation: this.locationEl.value,
113
- prototypingTarget: this.prototypingTargetEl.value,
114
- userInterfaceLanguage: this.userInterfaceLanguageEl.value,
115
- prototypingEnvironment: this.prototypingEnvironmentEl.value,
116
- dataSource: this.dataSourceEl.value,
111
+ kbName: (_a = this.kbNameEl) === null || _a === void 0 ? void 0 : _a.value,
112
+ kbLocation: (_b = this.locationEl) === null || _b === void 0 ? void 0 : _b.value,
113
+ prototypingTarget: (_c = this.prototypingTargetEl) === null || _c === void 0 ? void 0 : _c.value,
114
+ userInterfaceLanguage: (_d = this.userInterfaceLanguageEl) === null || _d === void 0 ? void 0 : _d.value,
115
+ prototypingEnvironment: (_e = this.prototypingEnvironmentEl) === null || _e === void 0 ? void 0 : _e.value,
116
+ dataSource: (_f = this.dataSourceEl) === null || _f === void 0 ? void 0 : _f.value,
117
117
  frontEnds: this.getFrontEndOptionsValues(),
118
- serverName: this.serverNameEl.value,
119
- databaseName: this.databaseNameEl.value,
120
- collation: this.collationEl.value,
121
- createDataFilesInKBFolder: this.createDataFilesInKBFolderEl.checked,
122
- authenticationType: this.authenticationTypeEl.value,
123
- userName: (_a = this.userNameEl) === null || _a === void 0 ? void 0 : _a.value,
124
- password: (_b = this.passwordEl) === null || _b === void 0 ? void 0 : _b.value,
125
- savePassword: (_c = this.savePasswordEl) === null || _c === void 0 ? void 0 : _c.checked
118
+ serverName: (_g = this.serverNameEl) === null || _g === void 0 ? void 0 : _g.value,
119
+ databaseName: (_h = this.databaseNameEl) === null || _h === void 0 ? void 0 : _h.value,
120
+ collation: (_j = this.collationEl) === null || _j === void 0 ? void 0 : _j.value,
121
+ createDataFilesInKBFolder: (_k = this.createDataFilesInKBFolderEl) === null || _k === void 0 ? void 0 : _k.checked,
122
+ authenticationType: (_l = this.authenticationTypeEl) === null || _l === void 0 ? void 0 : _l.value,
123
+ userName: (_m = this.userNameEl) === null || _m === void 0 ? void 0 : _m.value,
124
+ password: (_o = this.passwordEl) === null || _o === void 0 ? void 0 : _o.value,
125
+ savePassword: (_p = this.savePasswordEl) === null || _p === void 0 ? void 0 : _p.checked
126
126
  });
127
127
  createCallbackPromise.then(formSubmitResult => {
128
128
  formSubmitValidation(formSubmitResult, this);
@@ -152,7 +152,6 @@ export class GxIdeNewKb {
152
152
  this.userNameVisible = true;
153
153
  this.passwordVisible = true;
154
154
  this.savePasswordVisible = true;
155
- this.hideTopBar = false;
156
155
  this.dataSources = undefined;
157
156
  this.frontEnds = undefined;
158
157
  this.isAdvanced = false;
@@ -188,7 +187,7 @@ export class GxIdeNewKb {
188
187
  * 11.RENDER() FUNCTION
189
188
  ********************************/
190
189
  render() {
191
- 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", null, h("header", { class: {
190
+ return (h(Host, { class: "gx-ide-component" }, h("div", { class: "gx-ide-main-wrapper gx-ide-overflow" }, h("gx-ide-container", null, h("header", { class: {
192
191
  "header": true,
193
192
  "grid": true,
194
193
  "header--is-advanced": this.isAdvanced
@@ -215,24 +214,6 @@ export class GxIdeNewKb {
215
214
  static get assetsDirs() { return ["gx-ide-assets/new-kb"]; }
216
215
  static get properties() {
217
216
  return {
218
- "hideTopBar": {
219
- "type": "boolean",
220
- "mutable": false,
221
- "complexType": {
222
- "original": "false",
223
- "resolved": "boolean",
224
- "references": {}
225
- },
226
- "required": false,
227
- "optional": false,
228
- "docs": {
229
- "tags": [],
230
- "text": "If true, will hide the top-bar"
231
- },
232
- "attribute": "hide-top-bar",
233
- "reflect": false,
234
- "defaultValue": "false"
235
- },
236
217
  "dataSources": {
237
218
  "type": "unknown",
238
219
  "mutable": false,
@@ -1,9 +1,9 @@
1
1
  /* STENCIL IMPORTS */
2
2
  import { Host, h } from "@stencil/core";
3
- /* OTHER LIBRARIES IMPORTS */
4
3
  /* CUSTOM IMPORTS */
5
4
  import { Locale } from "../../common/locale";
6
5
  import { renderTreeItems } from "../../common/render-tree";
6
+ import { updateTreeModel } from "../../common/update-tree-model";
7
7
  import { renderSuggestLists } from "../../common/render-suggest";
8
8
  import { convertObjectDataToSuggestData, convertReferenceDataToTreeData, updateSuggestedObjects } from "./helpers";
9
9
  export class GxIdeReferences {
@@ -20,7 +20,7 @@ export class GxIdeReferences {
20
20
  // 8.PUBLIC METHODS API //
21
21
  // 9.LOCAL METHODS //
22
22
  /**
23
- * @description It attaches on the ch-suggest, the "itemSelected" event triggered by the ch-suggest-list-item. This helps set the new 'selectedObject'.
23
+ * It attaches on the ch-suggest, the "itemSelected" event triggered by the ch-suggest-list-item. This helps set the new 'selectedObject'.
24
24
  */
25
25
  this.attachSelectObjectListener = () => {
26
26
  this.selectObjectSuggestEl.addEventListener("itemSelected", (e) => {
@@ -31,61 +31,7 @@ export class GxIdeReferences {
31
31
  });
32
32
  };
33
33
  /**
34
- * @description It attaches several events on the 'referencedByEl' element, which is a tree.
35
- */
36
- this.attachReferencedByListeners = () => {
37
- /* '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. */
38
- this.referencedByEl.addEventListener("toggleIconClicked", async (e) => {
39
- if (e.detail.lazy && e.detail.id) {
40
- this.loadReferencesCallback(e.detail.id, false)
41
- .then(result => {
42
- this.referencedBy = result;
43
- })
44
- .catch(() => {
45
- // to do
46
- });
47
- }
48
- });
49
- /* 'selectionChanged' Event: Fired when a new tree item was selected.*/
50
- this.referencedByEl.addEventListener("selectionChanged", (e) => {
51
- this.selectReferenceCallback(e.detail.id);
52
- /* Returns void Promise*/
53
- });
54
- /* 'doubleClicked' Event: Fired when a tree item was double-clicked.*/
55
- this.referencedByEl.addEventListener("doubleClicked", (e) => {
56
- this.openObjectCallback(e.detail.id);
57
- /* Returns void Promise*/
58
- });
59
- };
60
- /**
61
- * @description It attaches several events on the 'referencesToEl' element, which is a tree.
62
- */
63
- this.attachReferencesToListeners = () => {
64
- /* 'toggleIconClicked' Event: (Read description on 'attachReferencedByListeners' as it does the same)*/
65
- this.referencesToEl.addEventListener("toggleIconClicked", async (e) => {
66
- if (e.detail.lazy && e.detail.id) {
67
- this.loadReferencesCallback(e.detail.id, true)
68
- .then(result => {
69
- this.referencesTo = result;
70
- })
71
- .catch(() => {
72
- // to do
73
- });
74
- }
75
- });
76
- /* 'selectionChanged' Event: Fired when a new tree item was selected.*/
77
- this.referencesToEl.addEventListener("selectionChanged", (e) => {
78
- this.selectReferenceCallback(e.detail.id);
79
- /* Returns void Promise*/
80
- });
81
- /* 'doubleClicked' Event: Fired when a tree item was double-clicked.*/
82
- this.referencesToEl.addEventListener("doubleClicked", (e) => {
83
- this.openObjectCallback(e.detail.id);
84
- /* Returns void Promise*/
85
- });
86
- };
87
- /**
88
- * @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.
34
+ * 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.
89
35
  */
90
36
  this.selectObjectValueChangedHandler = async (e) => {
91
37
  const value = e.detail;
@@ -105,55 +51,131 @@ export class GxIdeReferences {
105
51
  /* Returns an empty Promise*/
106
52
  };
107
53
  /**
108
- * @description handler that gets fired when the use clicks on the ch-suggest button (...)
54
+ * handler that gets fired when the use clicks on the ch-suggest button (...)
109
55
  */
110
56
  this.openSelectorDialogCallbackHandler = async () => {
111
- this.selectedObject = await this.openSelectorDialogCallback();
57
+ this.openSelectorDialogCallback()
58
+ .then(result => {
59
+ this.selectedObject = result;
60
+ })
61
+ .catch(() => {
62
+ /* to do */
63
+ });
112
64
  };
113
65
  /**
114
- * @description It evaluates if loadReferencesCallback should be called, depending wether there is or not an actual selected object.
66
+ * It evaluates if loadReferencesCallback should be called, depending wether there is or not an actual selected object.
115
67
  */
116
68
  this.evaluateInitialReferenceData = () => {
117
- var _a;
118
- const selectedObjectId = (_a = this.selectedObject) === null || _a === void 0 ? void 0 : _a.id;
119
- selectedObjectId && this.loadReferencesHandler(selectedObjectId);
69
+ if (this.selectedObject) {
70
+ this.selectedObjectHandler(this.selectedObject);
71
+ }
120
72
  };
121
73
  /**
122
- * @description This method invokes 'loadReferencesCallback' callback for 'Is Referenced By' and 'Has References To' panels.
74
+ * 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"
123
75
  */
124
- this.loadReferencesHandler = async (id) => {
125
- /* Referenced By*/
76
+ this.loadReferencesHandler = async (id, to = false) => {
126
77
  if (this.loadReferencesCallback) {
127
- this.loadReferencesCallback(id, false)
128
- .then(result => {
129
- this.referencedBy = result;
130
- })
131
- .catch(() => {
132
- /* To do*/
133
- });
78
+ /* is referenced by*/
79
+ if (!to) {
80
+ this.loadReferencesCallback(id, false)
81
+ .then(result => {
82
+ this.referencedByTreeData = convertReferenceDataToTreeData(result);
83
+ })
84
+ .catch(() => {
85
+ /* To do*/
86
+ });
87
+ }
88
+ /* is referenced by*/
89
+ if (to) {
90
+ this.loadReferencesCallback(id, true)
91
+ .then(result => {
92
+ this.referencesToTreeData = convertReferenceDataToTreeData(result);
93
+ })
94
+ .catch(() => {
95
+ /* To do*/
96
+ });
97
+ }
134
98
  }
135
- /* References To*/
136
- if (this.loadReferencesCallback) {
137
- this.loadReferencesCallback(id, true)
99
+ };
100
+ /**
101
+ * It hides/show the bar (The header bottom section).
102
+ */
103
+ this.hideBarButtonClickedHandler = () => {
104
+ this.barHidden = !this.barHidden;
105
+ };
106
+ /**
107
+ * Simple helper function to get 'this.referencedByTreeData' or 'this.referencesToTreeData'
108
+ */
109
+ this.getRef = (to = false) => {
110
+ if (!to) {
111
+ /* referenced by*/
112
+ return this.referencedByTreeData;
113
+ }
114
+ else {
115
+ /* references to*/
116
+ return this.referencesToTreeData;
117
+ }
118
+ };
119
+ /**
120
+ * Simple helper function to update 'this.referencedByTreeData' or 'this.referencesToTreeData'
121
+ */
122
+ this.updateRef = (to = false, updatedData) => {
123
+ if (!to) {
124
+ /* referenced by*/
125
+ this.referencedByTreeData = updatedData;
126
+ }
127
+ else {
128
+ /* references to*/
129
+ this.referencesToTreeData = updatedData;
130
+ }
131
+ };
132
+ /**
133
+ * Handles changes on any of the references (by or to). Used to:
134
+ * 1) Keep the models updated.
135
+ * 2) call the openObjectCallback.
136
+ * 3) call the loadReferencesCallback if a lazy node was toggled.
137
+ */
138
+ this.referencesPanelStateChangedHandler = (to = false) => (e) => {
139
+ const event = e.detail.emittedBy;
140
+ const nodeData = e.detail.itemData;
141
+ const nodeId = e.detail.itemData.id;
142
+ const nodeLabel = e.detail.itemData.label;
143
+ /* tree item was selected*/
144
+ if (event === "selectionChanged") {
145
+ this.selectReferenceCallback(nodeId);
146
+ /* Returns void Promise*/
147
+ }
148
+ /* tree item was double-clicked.*/
149
+ if (event === "doubleClicked") {
150
+ this.openObjectCallback(nodeId);
151
+ }
152
+ let updatedTreeModel = [];
153
+ const lazy = nodeData.lazy;
154
+ if (lazy) {
155
+ // loadReferencesCallback
156
+ let children = [];
157
+ this.loadReferencesCallback(nodeId, to)
138
158
  .then(result => {
139
- this.referencesTo = result;
159
+ children = convertReferenceDataToTreeData(result);
160
+ // Then update model
161
+ updatedTreeModel = updateTreeModel(this.getRef(to), { id: nodeId, label: nodeLabel, items: children }, nodeId);
162
+ this.updateRef(to, updatedTreeModel);
140
163
  })
141
164
  .catch(() => {
142
165
  /* To do*/
143
166
  });
144
167
  }
168
+ else {
169
+ updatedTreeModel = updateTreeModel(this.getRef(to), nodeData, nodeId);
170
+ this.updateRef(to, updatedTreeModel);
171
+ }
145
172
  };
146
- /**
147
- * @description It hides/show the bar (The header bottom section).
148
- */
149
- this.hideBarButtonClickedHandler = () => {
150
- this.barHidden = !this.barHidden;
151
- };
173
+ this.referencedByTreeData = undefined;
174
+ this.referencesToTreeData = undefined;
152
175
  this.barHidden = false;
153
176
  this.objectsSuggestions = undefined;
154
177
  this.referencedBy = undefined;
155
178
  this.referencesTo = undefined;
156
- this.hideTopBar = false;
157
179
  this.selectedObject = undefined;
158
180
  this.selectorSourceCallback = undefined;
159
181
  this.loadReferencesCallback = undefined;
@@ -162,7 +184,12 @@ export class GxIdeReferences {
162
184
  this.selectReferenceCallback = undefined;
163
185
  }
164
186
  selectedObjectHandler(newSelectedObject) {
165
- this.loadReferencesHandler(newSelectedObject.id);
187
+ if (newSelectedObject.id) {
188
+ /* update "is referenced by*/
189
+ this.loadReferencesHandler(newSelectedObject.id, false);
190
+ /* update "has references to*/
191
+ this.loadReferencesHandler(newSelectedObject.id, true);
192
+ }
166
193
  }
167
194
  // 6.COMPONENT LIFECYCLE EVENTS //
168
195
  async componentWillLoad() {
@@ -171,8 +198,6 @@ export class GxIdeReferences {
171
198
  }
172
199
  componentDidLoad() {
173
200
  this.attachSelectObjectListener();
174
- this.attachReferencedByListeners();
175
- this.attachReferencesToListeners();
176
201
  }
177
202
  componentDidRender() {
178
203
  this.componentDidRenderEvent.emit(this._componentLocale.componentName);
@@ -180,12 +205,12 @@ export class GxIdeReferences {
180
205
  // 10.RENDER() FUNCTION //
181
206
  render() {
182
207
  var _a, _b, _c, _d, _e, _f;
183
- 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: {
208
+ 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: {
184
209
  "header__bottom": true,
185
210
  "header__bottom--hidden": this.barHidden
186
- } }, 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
211
+ } }, 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
187
212
  ? this._componentLocale.main.isReferencedByEmpty
188
- : 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
213
+ : 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
189
214
  ? this._componentLocale.main.hasReferencesEmpty
190
215
  : this._componentLocale.main.hasReferencesToError)))))));
191
216
  }
@@ -204,24 +229,6 @@ export class GxIdeReferences {
204
229
  static get assetsDirs() { return ["gx-ide-assets/references"]; }
205
230
  static get properties() {
206
231
  return {
207
- "hideTopBar": {
208
- "type": "boolean",
209
- "mutable": false,
210
- "complexType": {
211
- "original": "false",
212
- "resolved": "boolean",
213
- "references": {}
214
- },
215
- "required": false,
216
- "optional": false,
217
- "docs": {
218
- "tags": [],
219
- "text": "If true, will hide the top-bar"
220
- },
221
- "attribute": "hide-top-bar",
222
- "reflect": false,
223
- "defaultValue": "false"
224
- },
225
232
  "selectedObject": {
226
233
  "type": "unknown",
227
234
  "mutable": true,
@@ -340,6 +347,8 @@ export class GxIdeReferences {
340
347
  }
341
348
  static get states() {
342
349
  return {
350
+ "referencedByTreeData": {},
351
+ "referencesToTreeData": {},
343
352
  "barHidden": {},
344
353
  "objectsSuggestions": {},
345
354
  "referencedBy": {},
@@ -354,11 +363,8 @@ export class GxIdeReferences {
354
363
  "cancelable": true,
355
364
  "composed": true,
356
365
  "docs": {
357
- "tags": [{
358
- "name": "description",
359
- "text": "Gets fired when the component has rendered for the first time."
360
- }],
361
- "text": ""
366
+ "tags": [],
367
+ "text": "Gets fired when the component has rendered for the first time."
362
368
  },
363
369
  "complexType": {
364
370
  "original": "string",
@@ -8,75 +8,81 @@ const toggleHeightBtn = document.getElementById("toggle-height-btn");
8
8
  const containerComponent = document.getElementById("container-component");
9
9
 
10
10
  /* Toggle Dark */
11
- toggleDarkBtn.addEventListener("click", function () {
12
- html.classList.toggle("dark");
13
- });
11
+ if (toggleDarkBtn) {
12
+ toggleDarkBtn.addEventListener("click", function () {
13
+ html.classList.toggle("dark");
14
+ });
15
+ }
14
16
 
15
17
  /* Toggle Dir */
16
- toggleDirBtn.addEventListener("click", function () {
17
- const dir = html.getAttribute("dir");
18
- if (dir === "ltr") {
19
- html.setAttribute("dir", "rtl");
20
- } else {
21
- html.setAttribute("dir", "ltr");
22
- }
23
- });
18
+ if (toggleDirBtn) {
19
+ toggleDirBtn.addEventListener("click", function () {
20
+ const dir = html.getAttribute("dir");
21
+ if (dir === "ltr") {
22
+ html.setAttribute("dir", "rtl");
23
+ } else {
24
+ html.setAttribute("dir", "ltr");
25
+ }
26
+ });
27
+ }
24
28
 
25
29
  /* Show Parts */
26
- showPartsBtn.addEventListener("click", function () {
27
- /* Parts that are discoverable (for example gxg-combo-item, is not visible until you open the gxg-combo)*/
28
- const hiddenGxgComponents = [
29
- "GXG-COMBO-BOX-ITEM",
30
- "GXG-CONTEXTUAL-MENU",
31
- "GXG-CONTEXTUAL-MENU-ITEM",
32
- "GXG-FILTER-ITEM",
33
- "GXG-LIST-BOX-ITEM",
34
- "GXG-MODAL",
35
- "GXG-TREE-ITEM"
36
- ];
37
- if (gxConsole) {
38
- const parts = window.getElementSelectorParts(gxIdeComponent);
39
- if (parts.length) {
40
- /* Clear*/
41
- gxConsole.innerHTML = "";
42
- let currentSelectedPart = undefined;
43
- parts.forEach(part => {
44
- /* part div*/
45
- const partSelector = document.createElement("div");
46
- partSelector.classList.add("part-selector");
47
- partSelector.innerText = part;
48
- partSelector.setAttribute("tabindex", "1");
49
- /* part span (circle for indicating additional information)*/
50
- const partCircle = document.createElement("span");
51
- partCircle.classList.add("circle");
52
- partSelector.prepend(partCircle);
53
- /* get part*/
54
- currentSelectedPart = window.querySelectorPart(`${part}`);
55
- if (!currentSelectedPart) {
56
- /* This part is not currently rendered by the component, probably because some property is not present*/
57
- partSelector.classList.add("part-selector--hidden");
58
- } else {
59
- currentSelectedPartNodeName = currentSelectedPart.nodeName;
60
- /* add class to indicate if this part belongs to a component that is not visible at a glance*/
61
- if (hiddenGxgComponents.includes(currentSelectedPartNodeName)) {
62
- partSelector.classList.add("part-selector--discoverable");
63
- }
64
- }
65
- partSelector.addEventListener("click", () => {
66
- if (currentSelectedPart) {
67
- /* Remove current selected part style*/
68
- currentSelectedPart.style.outline = "none";
69
- }
30
+ if (showPartsBtn) {
31
+ showPartsBtn.addEventListener("click", function () {
32
+ /* Parts that are discoverable (for example gxg-combo-item, is not visible until you open the gxg-combo)*/
33
+ const hiddenGxgComponents = [
34
+ "GXG-COMBO-BOX-ITEM",
35
+ "GXG-CONTEXTUAL-MENU",
36
+ "GXG-CONTEXTUAL-MENU-ITEM",
37
+ "GXG-FILTER-ITEM",
38
+ "GXG-LIST-BOX-ITEM",
39
+ "GXG-MODAL",
40
+ "GXG-TREE-ITEM"
41
+ ];
42
+ if (gxConsole) {
43
+ const parts = window.getElementSelectorParts(gxIdeComponent);
44
+ if (parts.length) {
45
+ /* Clear*/
46
+ gxConsole.innerHTML = "";
47
+ let currentSelectedPart = undefined;
48
+ parts.forEach(part => {
49
+ /* part div*/
50
+ const partSelector = document.createElement("div");
51
+ partSelector.classList.add("part-selector");
52
+ partSelector.innerText = part;
53
+ partSelector.setAttribute("tabindex", "1");
54
+ /* part span (circle for indicating additional information)*/
55
+ const partCircle = document.createElement("span");
56
+ partCircle.classList.add("circle");
57
+ partSelector.prepend(partCircle);
58
+ /* get part*/
70
59
  currentSelectedPart = window.querySelectorPart(`${part}`);
71
- currentSelectedPart.style.outline = `3px solid var(--color-warning-dark)`;
72
- currentSelectedPart.style.outlineOffset = "-2px";
60
+ if (!currentSelectedPart) {
61
+ /* This part is not currently rendered by the component, probably because some property is not present*/
62
+ partSelector.classList.add("part-selector--hidden");
63
+ } else {
64
+ currentSelectedPartNodeName = currentSelectedPart.nodeName;
65
+ /* add class to indicate if this part belongs to a component that is not visible at a glance*/
66
+ if (hiddenGxgComponents.includes(currentSelectedPartNodeName)) {
67
+ partSelector.classList.add("part-selector--discoverable");
68
+ }
69
+ }
70
+ partSelector.addEventListener("click", () => {
71
+ if (currentSelectedPart) {
72
+ /* Remove current selected part style*/
73
+ currentSelectedPart.style.outline = "none";
74
+ }
75
+ currentSelectedPart = window.querySelectorPart(`${part}`);
76
+ currentSelectedPart.style.outline = `3px solid var(--color-warning-dark)`;
77
+ currentSelectedPart.style.outlineOffset = "-2px";
78
+ });
79
+ /* append*/
80
+ gxConsole.appendChild(partSelector);
73
81
  });
74
- /* append*/
75
- gxConsole.appendChild(partSelector);
76
- });
82
+ }
77
83
  }
78
- }
79
- });
84
+ });
85
+ }
80
86
 
81
87
  /* Sidebar buttons */
82
88
  const sidebarButtons = document.querySelectorAll("gxg-button");
@@ -154,41 +160,45 @@ window.querySelectorPart = selector => {
154
160
  };
155
161
 
156
162
  /* Responsive Buttons */
157
- responsiveMobileBtn.addEventListener("click", () => {
158
- containerComponent.classList.remove("desktop");
159
- containerComponent.classList.add("mobile");
160
- });
161
- responsiveTabletBtn.addEventListener("click", () => {
162
- containerComponent.classList.remove("desktop");
163
- containerComponent.classList.remove("mobile");
164
- });
165
- responsiveDesktopBtn.addEventListener("click", () => {
166
- containerComponent.classList.remove("mobile");
167
- containerComponent.classList.add("desktop");
168
- });
163
+ if (responsiveMobileBtn && responsiveTabletBtn && responsiveDesktopBtn) {
164
+ responsiveMobileBtn.addEventListener("click", () => {
165
+ containerComponent.classList.remove("desktop");
166
+ containerComponent.classList.add("mobile");
167
+ });
168
+ responsiveTabletBtn.addEventListener("click", () => {
169
+ containerComponent.classList.remove("desktop");
170
+ containerComponent.classList.remove("mobile");
171
+ });
172
+ responsiveDesktopBtn.addEventListener("click", () => {
173
+ containerComponent.classList.remove("mobile");
174
+ containerComponent.classList.add("desktop");
175
+ });
176
+ }
169
177
 
170
178
  /* Toggle height button */
171
179
  /* Set initial height*/
172
- gxIdeComponent.addEventListener("componentDidRenderEvent", e => {
173
- console.log(`${e.detail} did render`);
174
- setTimeout(() => {
175
- // Just to be completely sure.
176
- containerComponent.style.height = `${containerComponent.offsetHeight}px`;
177
- }, 250);
178
- });
179
- const heightVariation = 200;
180
- if (toggleHeightBtn) {
181
- toggleHeightBtn.addEventListener("click", () => {
182
- const containerActualHeight = containerComponent.offsetHeight;
183
- if (html.classList.contains("taller")) {
184
- // make shorter
185
- containerComponent.style.height =
186
- containerActualHeight - heightVariation + "px";
187
- } else {
188
- // make taller
189
- containerComponent.style.height =
190
- containerActualHeight + heightVariation + "px";
191
- }
192
- html.classList.toggle("taller");
180
+ if (gxIdeComponent) {
181
+ gxIdeComponent.addEventListener("componentDidRenderEvent", e => {
182
+ console.log(`${e.detail} did render`);
183
+ setTimeout(() => {
184
+ // Just to be completely sure.
185
+ containerComponent.style.height = `${containerComponent.offsetHeight}px`;
186
+ }, 250);
193
187
  });
188
+ const heightVariation = 200;
189
+ if (toggleHeightBtn) {
190
+ toggleHeightBtn.addEventListener("click", () => {
191
+ const containerActualHeight = containerComponent.offsetHeight;
192
+ if (html.classList.contains("taller")) {
193
+ // make shorter
194
+ containerComponent.style.height =
195
+ containerActualHeight - heightVariation + "px";
196
+ } else {
197
+ // make taller
198
+ containerComponent.style.height =
199
+ containerActualHeight + heightVariation + "px";
200
+ }
201
+ html.classList.toggle("taller");
202
+ });
203
+ }
194
204
  }