@genexus/genexus-ide-ui 0.0.60 → 0.0.61

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 (139) hide show
  1. package/dist/cjs/ch-checkbox.cjs.entry.js +93 -0
  2. package/dist/cjs/{ch-checkbox_3.cjs.entry.js → ch-tree-x_3.cjs.entry.js} +475 -87
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-container.cjs.entry.js +13 -5
  5. package/dist/cjs/gx-ide-file-selector.cjs.entry.js +47 -0
  6. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +11 -9
  7. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +343 -0
  8. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +236 -0
  9. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +8 -9
  10. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-references.cjs.entry.js +2 -2
  12. package/dist/cjs/gx-ide-status-buttons_2.cjs.entry.js +148 -0
  13. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +2 -2
  14. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +2 -2
  15. package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  17. package/dist/cjs/{helpers-9523495a.js → helpers-b62ea39c.js} +12 -0
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/collection/collection-manifest.json +4 -1
  20. package/dist/collection/common/helpers.js +11 -0
  21. package/dist/collection/components/_template/template.js +1 -1
  22. package/dist/collection/components/container/container.css +24 -16
  23. package/dist/collection/components/container/container.js +66 -22
  24. package/dist/collection/components/file-selector/file-selector.css +366 -0
  25. package/dist/collection/components/file-selector/file-selector.js +185 -0
  26. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +1 -0
  27. package/dist/collection/components/kb-manager-export/helpers.js +0 -1
  28. package/dist/collection/components/kb-manager-export/kb-manager-export.css +5 -2
  29. package/dist/collection/components/kb-manager-export/kb-manager-export.js +12 -9
  30. package/dist/collection/components/kb-manager-import/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.en.json +31 -0
  31. package/dist/collection/components/kb-manager-import/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.ja.json +3 -0
  32. package/dist/collection/components/kb-manager-import/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.zh.json +3 -0
  33. package/dist/collection/components/kb-manager-import/helpers.js +128 -0
  34. package/dist/collection/components/kb-manager-import/kb-manager-import.css +233 -0
  35. package/dist/collection/components/kb-manager-import/kb-manager-import.js +415 -0
  36. package/dist/collection/components/list-selector/list-selector-item/list-selector-item.css +51 -14
  37. package/dist/collection/components/list-selector/list-selector-item/list-selector-item.js +160 -24
  38. package/dist/collection/components/list-selector/list-selector.css +6 -0
  39. package/dist/collection/components/list-selector/list-selector.js +234 -33
  40. package/dist/collection/components/new-kb/new-kb.css +13 -0
  41. package/dist/collection/components/new-kb/new-kb.js +7 -8
  42. package/dist/collection/components/references/references.js +2 -2
  43. package/dist/collection/components/status-buttons/gx-ide-status-buttons.css +93 -0
  44. package/dist/collection/components/status-buttons/gx-ide-status-buttons.js +325 -0
  45. package/dist/collection/components/team-dev-commit/team-dev-commit.js +1 -1
  46. package/dist/collection/components/team-dev-update/team-dev-update.js +1 -1
  47. package/dist/components/container.js +16 -6
  48. package/dist/components/form-text.js +1 -1
  49. package/dist/components/gx-ide-file-selector.d.ts +11 -0
  50. package/dist/components/gx-ide-file-selector.js +105 -0
  51. package/dist/components/gx-ide-kb-manager-export.js +13 -11
  52. package/dist/components/gx-ide-kb-manager-import.d.ts +11 -0
  53. package/dist/components/gx-ide-kb-manager-import.js +499 -0
  54. package/dist/components/gx-ide-list-selector-item.js +1 -102
  55. package/dist/components/gx-ide-list-selector.js +1 -73
  56. package/dist/components/gx-ide-new-kb.js +8 -9
  57. package/dist/components/gx-ide-references.js +2 -2
  58. package/dist/components/gx-ide-status-buttons.d.ts +11 -0
  59. package/dist/components/gx-ide-status-buttons.js +6 -0
  60. package/dist/components/gx-ide-status-buttons2.js +131 -0
  61. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  62. package/dist/components/gx-ide-team-dev-update.js +1 -1
  63. package/dist/components/gx-ide-template.js +1 -1
  64. package/dist/components/gxg-ide-loader.js +1 -111
  65. package/dist/components/helpers2.js +12 -1
  66. package/dist/{esm/gxg-ide-loader.entry.js → components/ide-loader.js} +46 -7
  67. package/dist/components/index.d.ts +3 -0
  68. package/dist/components/index.js +3 -0
  69. package/dist/components/list-selector-item.js +158 -0
  70. package/dist/components/list-selector.js +146 -0
  71. package/dist/esm/ch-checkbox.entry.js +89 -0
  72. package/dist/esm/{ch-checkbox_3.entry.js → ch-tree-x_3.entry.js} +476 -88
  73. package/dist/esm/genexus-ide-ui.js +1 -1
  74. package/dist/esm/gx-ide-container.entry.js +13 -5
  75. package/dist/esm/gx-ide-file-selector.entry.js +43 -0
  76. package/dist/esm/gx-ide-kb-manager-export.entry.js +11 -9
  77. package/dist/esm/gx-ide-kb-manager-import.entry.js +339 -0
  78. package/dist/esm/gx-ide-list-selector_2.entry.js +231 -0
  79. package/dist/esm/gx-ide-new-kb.entry.js +8 -9
  80. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  81. package/dist/esm/gx-ide-references.entry.js +2 -2
  82. package/dist/esm/gx-ide-status-buttons_2.entry.js +143 -0
  83. package/dist/esm/gx-ide-team-dev-commit.entry.js +2 -2
  84. package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
  85. package/dist/esm/gx-ide-template.entry.js +1 -1
  86. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  87. package/dist/esm/{helpers-b99024f5.js → helpers-c29a9591.js} +12 -1
  88. package/dist/esm/loader.js +1 -1
  89. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  90. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +1 -0
  91. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.en.json +31 -0
  92. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.ja.json +3 -0
  93. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-import/langs/kb-manager-import.lang.zh.json +3 -0
  94. package/dist/genexus-ide-ui/p-163a93a4.entry.js +1 -0
  95. package/dist/genexus-ide-ui/p-1ff3cf87.entry.js +1 -0
  96. package/dist/genexus-ide-ui/p-2142874f.entry.js +1 -0
  97. package/dist/genexus-ide-ui/p-2b7d4cca.entry.js +1 -0
  98. package/dist/genexus-ide-ui/p-481312bc.entry.js +1 -0
  99. package/dist/genexus-ide-ui/p-8738b63b.entry.js +1 -0
  100. package/dist/genexus-ide-ui/p-9e530c7d.entry.js +1 -0
  101. package/dist/genexus-ide-ui/{p-c63d5b08.js → p-9ee8b615.js} +1 -1
  102. package/dist/genexus-ide-ui/{p-cef1a182.entry.js → p-a3171fdf.entry.js} +1 -1
  103. package/dist/genexus-ide-ui/p-ac3b8e90.entry.js +1 -0
  104. package/dist/genexus-ide-ui/{p-750c726a.entry.js → p-b2ea372b.entry.js} +1 -1
  105. package/dist/genexus-ide-ui/p-b685ffba.entry.js +1 -0
  106. package/dist/genexus-ide-ui/p-c7e11c6b.entry.js +1 -0
  107. package/dist/genexus-ide-ui/p-d04d634e.entry.js +1 -0
  108. package/dist/genexus-ide-ui/{p-462a8f83.entry.js → p-d8096d40.entry.js} +1 -1
  109. package/dist/genexus-ide-ui/p-f83093aa.entry.js +1 -0
  110. package/dist/types/common/helpers.d.ts +2 -0
  111. package/dist/types/common/types.d.ts +16 -0
  112. package/dist/types/components/container/container.d.ts +12 -4
  113. package/dist/types/components/file-selector/file-selector.d.ts +38 -0
  114. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +3 -2
  115. package/dist/types/components/kb-manager-import/helpers.d.ts +10 -0
  116. package/dist/types/components/kb-manager-import/kb-manager-import.d.ts +110 -0
  117. package/dist/types/components/list-selector/list-selector-item/list-selector-item.d.ts +38 -7
  118. package/dist/types/components/list-selector/list-selector.d.ts +47 -8
  119. package/dist/types/components/status-buttons/gx-ide-status-buttons.d.ts +63 -0
  120. package/dist/types/components.d.ts +410 -28
  121. package/package.json +3 -3
  122. package/dist/cjs/gx-ide-list-selector-item.cjs.entry.js +0 -89
  123. package/dist/cjs/gx-ide-list-selector.cjs.entry.js +0 -51
  124. package/dist/cjs/gxg-ide-loader.cjs.entry.js +0 -78
  125. package/dist/cjs/gxg-tree-view.cjs.entry.js +0 -481
  126. package/dist/esm/gx-ide-list-selector-item.entry.js +0 -85
  127. package/dist/esm/gx-ide-list-selector.entry.js +0 -47
  128. package/dist/esm/gxg-tree-view.entry.js +0 -477
  129. package/dist/genexus-ide-ui/p-00ee4c20.entry.js +0 -1
  130. package/dist/genexus-ide-ui/p-16d35368.entry.js +0 -1
  131. package/dist/genexus-ide-ui/p-3e16a46a.entry.js +0 -1
  132. package/dist/genexus-ide-ui/p-83f6db54.entry.js +0 -1
  133. package/dist/genexus-ide-ui/p-845f47ff.entry.js +0 -1
  134. package/dist/genexus-ide-ui/p-85164984.entry.js +0 -1
  135. package/dist/genexus-ide-ui/p-a4b359b1.entry.js +0 -1
  136. package/dist/genexus-ide-ui/p-a5833100.entry.js +0 -1
  137. package/dist/genexus-ide-ui/p-cddb793a.entry.js +0 -1
  138. package/dist/genexus-ide-ui/p-dd676f91.entry.js +0 -1
  139. package/dist/genexus-ide-ui/p-ffddd3ad.entry.js +0 -1
@@ -1,16 +1,35 @@
1
+ /* STENCIL IMPORTS */
1
2
  import { Host, h } from "@stencil/core";
3
+ /* CUSTOM IMPORTS */
2
4
  export class GxIdeListSelectorItem {
3
5
  constructor() {
6
+ this.hasUniversalSlot = false;
4
7
  // 6.COMPONENT LIFECYCLE METHODS //
5
8
  // 7.LISTENERS //
6
9
  // 8.PUBLIC METHODS API //
7
10
  // 9.LOCAL METHODS //
11
+ /**
12
+ * Checks if this item parentElement is a gx-ide-list-selector, and assigns a reference
13
+ */
14
+ this.evaluateParentIsListSelector = () => {
15
+ const parentList = this.el.parentElement;
16
+ this.parentIsListSelector = (parentList === null || parentList === void 0 ? void 0 : parentList.nodeName) === "GX-IDE-LIST-SELECTOR";
17
+ this.parentIsListSelector && (this.parentList = parentList);
18
+ };
19
+ /**
20
+ * Determines the type of item, based on the parent list-selector 'type' property value
21
+ */
22
+ this.evaluateType = () => {
23
+ const parentList = this.el
24
+ .parentElement;
25
+ this.type = parentList.type === "single-selection" ? "radio" : "checkbox";
26
+ };
8
27
  /**
9
28
  * Evaluates if is selectable, considering the parent list-selector 'selectable' property value, only if it is undefined on this item
10
29
  */
11
30
  this.evaluateSelectable = () => {
12
- if (this.selectable === undefined && this.parentIsListSelector) {
13
- this.selectable = this.parentList.selectable;
31
+ if (this.readonly === undefined && this.parentIsListSelector) {
32
+ this.readonly = this.parentList.readonly;
14
33
  }
15
34
  };
16
35
  /**
@@ -32,13 +51,13 @@ export class GxIdeListSelectorItem {
32
51
  this.checked = true;
33
52
  }
34
53
  };
35
- /**
36
- * Checks if this item parentElement is a gx-ide-list-selector, and assigns a reference
37
- */
38
- this.evaluateParentIsListSelector = () => {
39
- const parentList = this.el.parentElement;
40
- this.parentIsListSelector = (parentList === null || parentList === void 0 ? void 0 : parentList.nodeName) === "GX-IDE-LIST-SELECTOR";
41
- this.parentIsListSelector && (this.parentList = parentList);
54
+ this.evaluateBorder = () => {
55
+ if (this.parentIsListSelector) {
56
+ this.noBorder = this.parentList.noItemsBorder;
57
+ }
58
+ };
59
+ this.evaluateUniversalSlot = () => {
60
+ this.hasUniversalSlot = !!this.el.querySelector("[slot=universal]");
42
61
  };
43
62
  /**
44
63
  * Gets the listName required value, that is needed for the list selection to properly work
@@ -48,30 +67,50 @@ export class GxIdeListSelectorItem {
48
67
  this.parentList.listName &&
49
68
  (this.name = this.parentList.listName);
50
69
  };
51
- this.onChangeHandler = () => {
52
- if (this.selectable) {
53
- this.itemSelected.emit({
54
- itemId: this.itemId,
55
- itemValue: this.itemValue
56
- });
57
- }
70
+ this.evaluateIconColor = () => {
71
+ this.parentIsListSelector &&
72
+ this.parentList.iconsColor &&
73
+ this.iconColor === undefined &&
74
+ (this.iconColor = this.parentList.iconsColor);
75
+ };
76
+ this.evaluateIconSize = () => {
77
+ this.parentIsListSelector &&
78
+ this.parentList.iconsSize &&
79
+ (this.iconSize = this.parentList.iconsSize);
80
+ };
81
+ this.onChangeHandler = (e) => {
82
+ this.itemChecked = e.target.checked;
83
+ this.itemSelectionChanged.emit({
84
+ itemId: this.itemId,
85
+ itemValue: this.itemValue
86
+ });
58
87
  };
59
88
  this.itemId = undefined;
60
89
  this.itemValue = undefined;
61
- this.selectable = undefined;
90
+ this.itemChecked = false;
91
+ this.readonly = undefined;
62
92
  this.ellipsis = undefined;
93
+ this.icon = undefined;
94
+ this.iconColor = undefined;
95
+ this.iconSize = undefined;
96
+ this.noBorder = false;
63
97
  }
64
98
  // 5.EVENTS (EMIT) //
65
99
  componentWillLoad() {
66
100
  this.evaluateParentIsListSelector();
101
+ this.evaluateType();
67
102
  this.evaluateSelectable();
68
103
  this.evaluateEllipsis();
69
104
  this.evaluateChecked();
105
+ this.evaluateIconColor();
106
+ this.evaluateIconSize();
107
+ this.evaluateBorder();
108
+ this.evaluateUniversalSlot();
70
109
  this.assignName();
71
110
  }
72
111
  // 10.RENDER() FUNCTION //
73
112
  render() {
74
- return (h(Host, { role: "listitem" }, h("input", { type: "radio", id: this.itemId, name: this.name, value: this.itemValue, checked: this.checked, onChange: this.onChangeHandler, disabled: !this.selectable }), h("label", { htmlFor: this.itemId }, this.itemValue)));
113
+ return (h(Host, { role: "listitem" }, h("input", { type: this.type, id: this.itemId, name: this.name, value: this.itemValue, checked: this.itemChecked, onChange: this.onChangeHandler, disabled: this.readonly, part: "input" }), h("label", { class: "label", htmlFor: this.itemId, part: "label" }, h("div", { class: "label__wrapper" }, this.icon ? (h("gxg-icon", { class: "label__icon", type: this.icon, size: this.iconSize, color: this.iconColor, part: "icon" })) : null, this.hasUniversalSlot ? (h("span", { class: "label__universal-slot", part: "universal-slot" }, h("slot", { name: "universal" }))) : null, h("span", { class: "label__description", part: "description" }, this.itemValue)))));
75
114
  }
76
115
  static get is() { return "gx-ide-list-selector-item"; }
77
116
  static get originalStyleUrls() {
@@ -101,7 +140,7 @@ export class GxIdeListSelectorItem {
101
140
  "text": "The item id"
102
141
  },
103
142
  "attribute": "item-id",
104
- "reflect": false
143
+ "reflect": true
105
144
  },
106
145
  "itemValue": {
107
146
  "type": "string",
@@ -115,12 +154,30 @@ export class GxIdeListSelectorItem {
115
154
  "optional": false,
116
155
  "docs": {
117
156
  "tags": [],
118
- "text": "The item value, that act as a label as well"
157
+ "text": "The item value, that acts as a label as well"
119
158
  },
120
159
  "attribute": "item-value",
121
160
  "reflect": false
122
161
  },
123
- "selectable": {
162
+ "itemChecked": {
163
+ "type": "boolean",
164
+ "mutable": true,
165
+ "complexType": {
166
+ "original": "boolean",
167
+ "resolved": "boolean",
168
+ "references": {}
169
+ },
170
+ "required": false,
171
+ "optional": false,
172
+ "docs": {
173
+ "tags": [],
174
+ "text": "This will set the input as checked"
175
+ },
176
+ "attribute": "item-checked",
177
+ "reflect": false,
178
+ "defaultValue": "false"
179
+ },
180
+ "readonly": {
124
181
  "type": "boolean",
125
182
  "mutable": true,
126
183
  "complexType": {
@@ -134,7 +191,7 @@ export class GxIdeListSelectorItem {
134
191
  "tags": [],
135
192
  "text": "It allows to select the item by clicking on it. It will emit the item-id"
136
193
  },
137
- "attribute": "selectable",
194
+ "attribute": "readonly",
138
195
  "reflect": true
139
196
  },
140
197
  "ellipsis": {
@@ -153,13 +210,92 @@ export class GxIdeListSelectorItem {
153
210
  },
154
211
  "attribute": "ellipsis",
155
212
  "reflect": true
213
+ },
214
+ "icon": {
215
+ "type": "string",
216
+ "mutable": false,
217
+ "complexType": {
218
+ "original": "string",
219
+ "resolved": "string",
220
+ "references": {}
221
+ },
222
+ "required": false,
223
+ "optional": false,
224
+ "docs": {
225
+ "tags": [],
226
+ "text": "The gemini icon name"
227
+ },
228
+ "attribute": "icon",
229
+ "reflect": false
230
+ },
231
+ "iconColor": {
232
+ "type": "string",
233
+ "mutable": true,
234
+ "complexType": {
235
+ "original": "Color",
236
+ "resolved": "\"alwaysblack\" | \"auto\" | \"disabled\" | \"error\" | \"indeterminate\" | \"negative\" | \"onbackground\" | \"ondisabled\" | \"primary-active\" | \"primary-enabled\" | \"primary-hover\" | \"success\" | \"warning\"",
237
+ "references": {
238
+ "Color": {
239
+ "location": "import",
240
+ "path": "@genexus/gemini/dist/types/components/icon/icon"
241
+ }
242
+ }
243
+ },
244
+ "required": false,
245
+ "optional": false,
246
+ "docs": {
247
+ "tags": [],
248
+ "text": "The gemini icon color. If no one provided, it will inherit the value from the list-selector"
249
+ },
250
+ "attribute": "icon-color",
251
+ "reflect": false
252
+ },
253
+ "iconSize": {
254
+ "type": "string",
255
+ "mutable": true,
256
+ "complexType": {
257
+ "original": "Size",
258
+ "resolved": "\"regular\" | \"small\"",
259
+ "references": {
260
+ "Size": {
261
+ "location": "import",
262
+ "path": "@genexus/gemini/dist/types/components/icon/icon"
263
+ }
264
+ }
265
+ },
266
+ "required": false,
267
+ "optional": false,
268
+ "docs": {
269
+ "tags": [],
270
+ "text": "The gemini icon size. Inherited from the parent."
271
+ },
272
+ "attribute": "icon-size",
273
+ "reflect": false
274
+ },
275
+ "noBorder": {
276
+ "type": "boolean",
277
+ "mutable": true,
278
+ "complexType": {
279
+ "original": "boolean",
280
+ "resolved": "boolean",
281
+ "references": {}
282
+ },
283
+ "required": false,
284
+ "optional": false,
285
+ "docs": {
286
+ "tags": [],
287
+ "text": "Disables the item border"
288
+ },
289
+ "attribute": "no-border",
290
+ "reflect": true,
291
+ "defaultValue": "false"
156
292
  }
157
293
  };
158
294
  }
159
295
  static get events() {
160
296
  return [{
161
- "method": "itemSelected",
162
- "name": "itemSelected",
297
+ "method": "itemSelectionChanged",
298
+ "name": "itemSelectionChanged",
163
299
  "bubbles": true,
164
300
  "cancelable": true,
165
301
  "composed": true,
@@ -10,6 +10,7 @@
10
10
  display: flex;
11
11
  flex-direction: column;
12
12
  max-height: 100%;
13
+ font-family: var(--font-family-primary);
13
14
  }
14
15
 
15
16
  gxg-title {
@@ -62,4 +63,9 @@ gxg-title {
62
63
  display: block;
63
64
  overflow-y: auto;
64
65
  padding-inline-end: 2px;
66
+ }
67
+
68
+ /*no border*/
69
+ :host([no-list-border]) .list {
70
+ border: none;
65
71
  }
@@ -4,35 +4,102 @@ export class GxIdeListSelector {
4
4
  constructor() {
5
5
  // 8.PUBLIC METHODS API //
6
6
  // 9.LOCAL METHODS //
7
- this.getItemByValue = (newValue) => {
7
+ /**
8
+ * It evaluates the checked items, and checks or unchecks if needed
9
+ */
10
+ this.evaluateChecked = () => {
8
11
  const allListItems = Array.from(this.el.querySelectorAll("gx-ide-list-selector-item"));
9
- return allListItems.find(item => {
10
- return item.itemValue === newValue;
12
+ const checkedItems = allListItems.filter(item => item.itemChecked);
13
+ /**
14
+ * INDEX
15
+ * 1.required and no one checked
16
+ * 2.single-selection, and more than one checked
17
+ */
18
+ /* 1.required and no one checked*/
19
+ if (this.required && checkedItems.length === 0) {
20
+ allListItems[0].itemChecked = true;
21
+ }
22
+ else if (this.type === "single-selection" && checkedItems.length > 1) {
23
+ /* 2.single-selection, and more than one checked*/
24
+ checkedItems.forEach((item, i) => {
25
+ if (i !== 0) {
26
+ item.itemChecked = false;
27
+ }
28
+ });
29
+ }
30
+ };
31
+ /**
32
+ * It evaluates the initial value/s
33
+ */
34
+ this.evaluateInitialValue = () => {
35
+ const checkedItems = this.getChecked();
36
+ if (this.type === "single-selection" && checkedItems.length > 0) {
37
+ this.value = checkedItems[0].itemValue;
38
+ }
39
+ else if (this.type === "multi-selection" && checkedItems.length > 0) {
40
+ const values = [];
41
+ checkedItems.forEach(checked => {
42
+ values.push(checked.itemValue);
43
+ });
44
+ this.value = values;
45
+ }
46
+ };
47
+ this.getChecked = () => {
48
+ const checkedItems = [];
49
+ const allItems = this.el.querySelectorAll("gx-ide-list-selector-item");
50
+ allItems.forEach(item => {
51
+ if (item.itemChecked) {
52
+ checkedItems.push(item);
53
+ }
11
54
  });
55
+ return checkedItems;
12
56
  };
13
57
  this.listTitle = undefined;
14
58
  this.ordered = false;
15
- this.selectable = true;
16
- this.ellipsis = true;
59
+ this.readonly = false;
60
+ this.type = "single-selection";
61
+ this.required = false;
62
+ this.ellipsis = false;
17
63
  this.value = undefined;
64
+ this.iconsColor = "auto";
65
+ this.iconsSize = "regular";
18
66
  this.listName = undefined;
67
+ this.noItemsBorder = false;
68
+ this.noListBorder = false;
19
69
  }
20
- valueHandler(newValue) {
21
- const foundItem = this.getItemByValue(newValue);
22
- if (foundItem) {
23
- const input = foundItem.querySelector("input");
24
- input.checked = true;
25
- }
26
- }
27
- // 5.EVENTS (EMIT) //
28
70
  // 6.COMPONENT LIFECYCLE METHODS //
71
+ componentWillLoad() {
72
+ this.evaluateChecked();
73
+ this.evaluateInitialValue();
74
+ }
29
75
  // 7.LISTENERS //
30
- itemSelectedHandler(event) {
31
- this.value = event.detail.itemValue;
76
+ itemSelectionChangedHandler(event) {
77
+ event.stopPropagation();
78
+ const checkedItemsInfo = [];
79
+ const checkedItems = this.getChecked();
80
+ const newValue = [];
81
+ checkedItems.forEach(item => {
82
+ const value = item.itemValue;
83
+ newValue.push(value);
84
+ checkedItemsInfo.push({
85
+ itemId: item.itemId,
86
+ itemValue: value
87
+ });
88
+ });
89
+ /* update this.value*/
90
+ if (this.type === "single-selection" && newValue.length > 0) {
91
+ this.value = newValue[0] || undefined;
92
+ }
93
+ else {
94
+ /* multi-selection*/
95
+ this.value = newValue;
96
+ }
97
+ /* emit selectionChanged*/
98
+ this.selectionChanged.emit(checkedItemsInfo);
32
99
  }
33
100
  // 10.RENDER() FUNCTION //
34
101
  render() {
35
- return (h(Host, null, this.listTitle ? (h("gxg-title", { type: "title-04" }, this.listTitle)) : null, this.ordered ? (h("ol", { class: "list" }, h("slot", null))) : (h("ul", { class: "list" }, h("slot", null)))));
102
+ return (h(Host, { exportparts: "input:input" }, this.listTitle ? (h("gxg-title", { type: "title-04" }, this.listTitle)) : null, this.ordered ? (h("ol", { class: "list", part: "list" }, h("slot", null))) : (h("ul", { class: "list", part: "list" }, h("slot", null)))));
36
103
  }
37
104
  static get is() { return "gx-ide-list-selector"; }
38
105
  static get encapsulation() { return "shadow"; }
@@ -83,11 +150,11 @@ export class GxIdeListSelector {
83
150
  "reflect": false,
84
151
  "defaultValue": "false"
85
152
  },
86
- "selectable": {
153
+ "readonly": {
87
154
  "type": "boolean",
88
155
  "mutable": false,
89
156
  "complexType": {
90
- "original": "true",
157
+ "original": "false",
91
158
  "resolved": "boolean",
92
159
  "references": {}
93
160
  },
@@ -95,17 +162,53 @@ export class GxIdeListSelector {
95
162
  "optional": false,
96
163
  "docs": {
97
164
  "tags": [],
98
- "text": "It allows to select a single item, by clicking on it. It will emit the item-id of the clicked item"
165
+ "text": "Makes the list readonly"
99
166
  },
100
- "attribute": "selectable",
167
+ "attribute": "readonly",
101
168
  "reflect": false,
102
- "defaultValue": "true"
169
+ "defaultValue": "false"
170
+ },
171
+ "type": {
172
+ "type": "string",
173
+ "mutable": false,
174
+ "complexType": {
175
+ "original": "\"single-selection\" | \"multi-selection\"",
176
+ "resolved": "\"multi-selection\" | \"single-selection\"",
177
+ "references": {}
178
+ },
179
+ "required": false,
180
+ "optional": false,
181
+ "docs": {
182
+ "tags": [],
183
+ "text": "It determines the type of list: single-selection or multi-selection"
184
+ },
185
+ "attribute": "type",
186
+ "reflect": false,
187
+ "defaultValue": "\"single-selection\""
188
+ },
189
+ "required": {
190
+ "type": "boolean",
191
+ "mutable": false,
192
+ "complexType": {
193
+ "original": "boolean",
194
+ "resolved": "boolean",
195
+ "references": {}
196
+ },
197
+ "required": false,
198
+ "optional": false,
199
+ "docs": {
200
+ "tags": [],
201
+ "text": "Makes the list required"
202
+ },
203
+ "attribute": "required",
204
+ "reflect": false,
205
+ "defaultValue": "false"
103
206
  },
104
207
  "ellipsis": {
105
208
  "type": "boolean",
106
209
  "mutable": false,
107
210
  "complexType": {
108
- "original": "true",
211
+ "original": "boolean",
109
212
  "resolved": "boolean",
110
213
  "references": {}
111
214
  },
@@ -117,25 +220,71 @@ export class GxIdeListSelector {
117
220
  },
118
221
  "attribute": "ellipsis",
119
222
  "reflect": false,
120
- "defaultValue": "true"
223
+ "defaultValue": "false"
121
224
  },
122
225
  "value": {
123
226
  "type": "string",
124
227
  "mutable": true,
125
228
  "complexType": {
126
- "original": "string",
127
- "resolved": "string",
229
+ "original": "string | string[]",
230
+ "resolved": "string | string[]",
128
231
  "references": {}
129
232
  },
130
233
  "required": false,
131
234
  "optional": false,
132
235
  "docs": {
133
236
  "tags": [],
134
- "text": "The value of the initial or current checked list-item"
237
+ "text": "The value of the initial (or initials) checked list-item/s"
135
238
  },
136
239
  "attribute": "value",
137
240
  "reflect": false
138
241
  },
242
+ "iconsColor": {
243
+ "type": "string",
244
+ "mutable": false,
245
+ "complexType": {
246
+ "original": "Color",
247
+ "resolved": "\"alwaysblack\" | \"auto\" | \"disabled\" | \"error\" | \"indeterminate\" | \"negative\" | \"onbackground\" | \"ondisabled\" | \"primary-active\" | \"primary-enabled\" | \"primary-hover\" | \"success\" | \"warning\"",
248
+ "references": {
249
+ "Color": {
250
+ "location": "import",
251
+ "path": "@genexus/gemini/dist/types/components/icon/icon"
252
+ }
253
+ }
254
+ },
255
+ "required": false,
256
+ "optional": false,
257
+ "docs": {
258
+ "tags": [],
259
+ "text": "Icons color"
260
+ },
261
+ "attribute": "icons-color",
262
+ "reflect": false,
263
+ "defaultValue": "\"auto\""
264
+ },
265
+ "iconsSize": {
266
+ "type": "string",
267
+ "mutable": false,
268
+ "complexType": {
269
+ "original": "Size",
270
+ "resolved": "\"regular\" | \"small\"",
271
+ "references": {
272
+ "Size": {
273
+ "location": "import",
274
+ "path": "@genexus/gemini/dist/types/components/icon/icon"
275
+ }
276
+ }
277
+ },
278
+ "required": false,
279
+ "optional": false,
280
+ "docs": {
281
+ "tags": [],
282
+ "text": "Icons size"
283
+ },
284
+ "attribute": "icons-size",
285
+ "reflect": false,
286
+ "defaultValue": "\"regular\""
287
+ },
139
288
  "listName": {
140
289
  "type": "string",
141
290
  "mutable": false,
@@ -152,22 +301,74 @@ export class GxIdeListSelector {
152
301
  },
153
302
  "attribute": "list-name",
154
303
  "reflect": false
304
+ },
305
+ "noItemsBorder": {
306
+ "type": "boolean",
307
+ "mutable": false,
308
+ "complexType": {
309
+ "original": "boolean",
310
+ "resolved": "boolean",
311
+ "references": {}
312
+ },
313
+ "required": false,
314
+ "optional": false,
315
+ "docs": {
316
+ "tags": [],
317
+ "text": "Disables the items border"
318
+ },
319
+ "attribute": "no-items-border",
320
+ "reflect": false,
321
+ "defaultValue": "false"
322
+ },
323
+ "noListBorder": {
324
+ "type": "boolean",
325
+ "mutable": false,
326
+ "complexType": {
327
+ "original": "boolean",
328
+ "resolved": "boolean",
329
+ "references": {}
330
+ },
331
+ "required": false,
332
+ "optional": false,
333
+ "docs": {
334
+ "tags": [],
335
+ "text": "Disables the list border"
336
+ },
337
+ "attribute": "no-list-border",
338
+ "reflect": true,
339
+ "defaultValue": "false"
155
340
  }
156
341
  };
157
342
  }
158
- static get elementRef() { return "el"; }
159
- static get watchers() {
343
+ static get events() {
160
344
  return [{
161
- "propName": "value",
162
- "methodName": "valueHandler"
345
+ "method": "selectionChanged",
346
+ "name": "selectionChanged",
347
+ "bubbles": true,
348
+ "cancelable": true,
349
+ "composed": true,
350
+ "docs": {
351
+ "tags": [],
352
+ "text": "Emits the actual selection"
353
+ },
354
+ "complexType": {
355
+ "original": "CheckedItemsInfo",
356
+ "resolved": "ItemData[]",
357
+ "references": {
358
+ "CheckedItemsInfo": {
359
+ "location": "local"
360
+ }
361
+ }
362
+ }
163
363
  }];
164
364
  }
365
+ static get elementRef() { return "el"; }
165
366
  static get listeners() {
166
367
  return [{
167
- "name": "itemSelected",
168
- "method": "itemSelectedHandler",
368
+ "name": "itemSelectionChanged",
369
+ "method": "itemSelectionChangedHandler",
169
370
  "target": undefined,
170
- "capture": false,
371
+ "capture": true,
171
372
  "passive": false
172
373
  }];
173
374
  }
@@ -185,6 +185,10 @@ gxg-tabs {
185
185
 
186
186
  /*Basic*/
187
187
  .basic-row-first {
188
+ display: grid;
189
+ gap: var(--gx-ide-grid-column-gap);
190
+ padding: var(--gxg-container--padding);
191
+ border-bottom: 1px solid var(--gx-ide-container-border-color);
188
192
  grid-template-areas: "prototyping-target user-interface-language";
189
193
  grid-template-columns: repeat(2, 1fr);
190
194
  }
@@ -202,6 +206,7 @@ gxg-tabs {
202
206
 
203
207
  /*Advanced*/
204
208
  .knowledge-base-storage {
209
+ display: grid;
205
210
  grid-template-areas: "knowledge-base-storage__col-left knowledge-base-storage__col-right";
206
211
  grid-template-columns: repeat(2, 1fr);
207
212
  flex-grow: 1;
@@ -211,8 +216,12 @@ gxg-tabs {
211
216
  border-right: 1px solid var(--gx-ide-container-border-color);
212
217
  }
213
218
  .knowledge-base-storage__col-left {
219
+ display: grid;
220
+ gap: var(--gx-ide-grid-row-gap);
221
+ padding: var(--gxg-container--padding);
214
222
  grid-area: knowledge-base-storage__col-left;
215
223
  grid-template-columns: 1fr auto;
224
+ grid-template-rows: repeat(4, min-content);
216
225
  grid-template-areas: "server-name-combo-box server-name-button" "database-name ." "collation-combo-box collation-button" "create-data-in-kb .";
217
226
  }
218
227
  .knowledge-base-storage__col-left .server-name-combo-box {
@@ -236,8 +245,12 @@ gxg-tabs {
236
245
  grid-area: create-data-in-kb;
237
246
  }
238
247
  .knowledge-base-storage__col-right {
248
+ display: grid;
249
+ padding: var(--gxg-container--padding);
250
+ gap: var(--gx-ide-grid-row-gap);
239
251
  grid-area: knowledge-base-storage__col-right;
240
252
  grid-template-columns: 1fr;
253
+ grid-template-rows: repeat(4, min-content);
241
254
  grid-template-areas: "authentication-type" "user-name" "password" "save-password";
242
255
  }
243
256
  .knowledge-base-storage__col-right .authentication-type {