@genexus/genexus-ide-ui 1.0.70 → 1.0.72

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 (43) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +24 -11
  3. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +85 -19
  5. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/components/data-selector/data-selector.js +26 -13
  8. package/dist/collection/components/data-selector/data-selector.js.map +1 -1
  9. package/dist/collection/components/select-kb-items/gx-ide-assets/select-kb-items/langs/select-kb-items.lang.en.json +2 -1
  10. package/dist/collection/components/select-kb-items/gx-ide-assets/select-kb-items/langs/select-kb-items.lang.ja.json +2 -1
  11. package/dist/collection/components/select-kb-items/gx-ide-assets/select-kb-items/langs/select-kb-items.lang.zh.json +2 -1
  12. package/dist/collection/components/select-kb-items/helpers.js +68 -15
  13. package/dist/collection/components/select-kb-items/helpers.js.map +1 -1
  14. package/dist/collection/components/select-kb-items/select-kb-items.css +49 -0
  15. package/dist/collection/components/select-kb-items/select-kb-items.js +40 -4
  16. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  17. package/dist/components/gx-ide-data-selector.js +24 -11
  18. package/dist/components/gx-ide-data-selector.js.map +1 -1
  19. package/dist/components/gx-ide-select-kb-items.js +87 -19
  20. package/dist/components/gx-ide-select-kb-items.js.map +1 -1
  21. package/dist/esm/genexus-ide-ui.js +1 -1
  22. package/dist/esm/gx-ide-data-selector.entry.js +24 -11
  23. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  24. package/dist/esm/gx-ide-select-kb-items.entry.js +85 -19
  25. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  26. package/dist/esm/loader.js +1 -1
  27. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  28. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  29. package/dist/genexus-ide-ui/gx-ide-assets/select-kb-items/langs/select-kb-items.lang.en.json +2 -1
  30. package/dist/genexus-ide-ui/gx-ide-assets/select-kb-items/langs/select-kb-items.lang.ja.json +2 -1
  31. package/dist/genexus-ide-ui/gx-ide-assets/select-kb-items/langs/select-kb-items.lang.zh.json +2 -1
  32. package/dist/genexus-ide-ui/p-526a7c54.entry.js +552 -0
  33. package/dist/genexus-ide-ui/p-526a7c54.entry.js.map +1 -0
  34. package/dist/genexus-ide-ui/{p-c624a8da.entry.js → p-eee8a8a9.entry.js} +61 -47
  35. package/dist/genexus-ide-ui/p-eee8a8a9.entry.js.map +1 -0
  36. package/dist/types/components/data-selector/data-selector.d.ts +2 -2
  37. package/dist/types/components/select-kb-items/helpers.d.ts +8 -1
  38. package/dist/types/components/select-kb-items/select-kb-items.d.ts +15 -0
  39. package/dist/types/components.d.ts +10 -2
  40. package/package.json +1 -1
  41. package/dist/genexus-ide-ui/p-72d32141.entry.js +0 -478
  42. package/dist/genexus-ide-ui/p-72d32141.entry.js.map +0 -1
  43. package/dist/genexus-ide-ui/p-c624a8da.entry.js.map +0 -1
@@ -16,28 +16,28 @@ var c = undefined && undefined.__classPrivateFieldGet || function(t, e, i, s) {
16
16
  return i === "m" ? s : i === "a" ? s.call(t) : s ? s.value : e.get(t);
17
17
  };
18
18
 
19
- var d = undefined && undefined.__classPrivateFieldSet || function(t, e, i, s, a) {
19
+ var h = undefined && undefined.__classPrivateFieldSet || function(t, e, i, s, a) {
20
20
  if (s === "m") throw new TypeError("Private method is not writable");
21
21
  if (s === "a" && !a) throw new TypeError("Private accessor was defined without a setter");
22
22
  if (typeof e === "function" ? t !== e || !a : !e.has(t)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
23
23
  return s === "a" ? a.call(t, i) : a ? a.value = i : e.set(t, i), i;
24
24
  };
25
25
 
26
- var h, u, f, p, b, g, m, w, y, k, v, M, W, x, j, C, _, E, T, z;
26
+ var d, u, f, p, b, g, m, w, y, k, v, M, W, x, j, C, _, E, T, z, D;
27
27
 
28
28
  // Best performance bundle
29
- const D = [ "resets/box-sizing", "components/button", "components/edit", "components/tabular-grid", "components/icon", "utils/form", "utils/layout", "utils/spacing", "chameleon/scrollbar" ];
29
+ const P = [ "resets/box-sizing", "components/button", "components/edit", "components/tabular-grid", "components/icon", "utils/form", "utils/layout", "utils/spacing", "chameleon/scrollbar" ];
30
30
 
31
- const P = o({
31
+ const S = o({
32
32
  category: "window-tools",
33
33
  name: "filter",
34
34
  colorType: "on-elevation"
35
35
  });
36
36
 
37
- const S = class {
37
+ const F = class {
38
38
  constructor(s) {
39
39
  t(this, s);
40
- h.set(this, void 0);
40
+ d.set(this, void 0);
41
41
  // used to select the first item after "loadItemsCallback"
42
42
  u.set(this, false);
43
43
  // used to select the first item after "loadItemsCallback"
@@ -52,9 +52,9 @@ const S = class {
52
52
  * After items have been loaded and rendered, the first row should be selected.
53
53
  */ k.set(this, (() => {
54
54
  if (c(this, u, "f")) {
55
- c(this, y, "f").selectRow(c(this, h, "f"));
55
+ c(this, y, "f").selectRow(c(this, d, "f"));
56
56
  }
57
- d(this, u, false, "f");
57
+ h(this, u, false, "f");
58
58
  }));
59
59
  v.set(this, (t => {
60
60
  if (t.key === "Enter") {
@@ -100,9 +100,9 @@ const S = class {
100
100
  this.loading = true;
101
101
  this.loadItemsCallback(s).then((t => {
102
102
  if (t.length) {
103
- this.objects = c(this, z, "f").call(this, t);
104
- d(this, h, this.objects[0].id, "f");
105
- d(this, u, true, "f");
103
+ this.objects = c(this, D, "f").call(this, t);
104
+ h(this, d, this.objects[0].id, "f");
105
+ h(this, u, true, "f");
106
106
  }
107
107
  this.selectedObjectsIds = [];
108
108
  this.loading = false;
@@ -123,13 +123,13 @@ const S = class {
123
123
  part: "filter-pattern",
124
124
  debounce: r.inputDebounce,
125
125
  onInput: c(this, _, "f"),
126
- ref: t => d(this, g, t, "f")
126
+ ref: t => h(this, g, t, "f")
127
127
  })), i("gx-ide-entity-selector", {
128
128
  id: "object-selector",
129
129
  value: this.defaultModule,
130
130
  defaultValue: this.defaultModule,
131
131
  selectEntityCallback: this.selectObjectCallback,
132
- ref: t => d(this, m, t, "f"),
132
+ ref: t => h(this, m, t, "f"),
133
133
  class: "entity",
134
134
  onValueChanged: c(this, _, "f")
135
135
  })) ]));
@@ -137,7 +137,7 @@ const S = class {
137
137
  const t = !this.objects.length;
138
138
  const e = this.loader && this.loading;
139
139
  if (!t || e) {
140
- d(this, p, true, "f");
140
+ h(this, p, true, "f");
141
141
  // improve performance if is first render
142
142
  }
143
143
  return i("ch-tabular-grid", {
@@ -150,7 +150,7 @@ const S = class {
150
150
  onKeyDown: c(this, v, "f"),
151
151
  part: "ch-grid-objects",
152
152
  onSelectionChanged: this.objects.length ? c(this, j, "f") : undefined,
153
- ref: t => d(this, y, t, "f")
153
+ ref: t => h(this, y, t, "f")
154
154
  }, i("ch-tabular-grid-columnset", {
155
155
  class: "tabular-grid-column-set"
156
156
  }, i("ch-tabular-grid-column", {
@@ -200,11 +200,35 @@ const S = class {
200
200
  show: true
201
201
  }) : i("gx-ide-empty-state", {
202
202
  isAnimated: c(this, p, "f"),
203
- stateIconSrc: P,
203
+ stateIconSrc: S,
204
204
  stateTitle: c(this, f, "f").emptyState.title
205
205
  }))));
206
206
  }));
207
- z.set(this, (t =>
207
+ z.set(this, (() => {
208
+ if (!this.editCallback && !this.newVariableCallback) {
209
+ return null;
210
+ }
211
+ const t = this.newVariableCallback && !this.loading;
212
+ const e = this.editCallback && !this.loading && this.selectedObjectsIds.length;
213
+ return i("div", {
214
+ class: "buttons-spacer"
215
+ }, this.newVariableCallback ? i("button", {
216
+ // New Variable Button
217
+ class: "button-secondary",
218
+ disabled: !t,
219
+ part: "button button-new",
220
+ type: "button",
221
+ onClick: c(this, C, "f")
222
+ }, c(this, f, "f").footer.btnNew) : [], this.editCallback ? i("button", {
223
+ // Edit Button
224
+ class: "button-secondary",
225
+ disabled: !e,
226
+ part: "button button-edit",
227
+ type: "button",
228
+ onClick: e && c(this, W, "f")
229
+ }, c(this, f, "f").footer.btnEdit) : []);
230
+ }));
231
+ D.set(this, (t =>
208
232
  // TODO (make this a common helper function
209
233
  // and use it in other dialog grids that
210
234
  // require filter by name).
@@ -233,7 +257,7 @@ const S = class {
233
257
  this.selectionType = "multiple";
234
258
  }
235
259
  async componentWillLoad() {
236
- d(this, f, await n.getComponentStrings(this.el), "f");
260
+ h(this, f, await n.getComponentStrings(this.el), "f");
237
261
  }
238
262
  connectedCallback() {
239
263
  c(this, _, "f").call(this);
@@ -261,39 +285,28 @@ const S = class {
261
285
  }
262
286
  render() {
263
287
  const t = !this.loading;
264
- const e = !this.loading && this.selectedObjectsIds.length;
265
- const a = !this.loading;
288
+ const e = !!this.newVariableCallback || !!this.editCallback;
266
289
  return i(s, {
267
290
  onKeyPress: c(this, x, "f"),
268
291
  class: "widget"
269
292
  }, i("ch-theme", {
270
- model: D
293
+ model: P
271
294
  }), i("ch-shortcuts", {
272
295
  src: c(this, b, "f"),
273
- ref: t => d(this, w, t, "f")
296
+ ref: t => h(this, w, t, "f")
274
297
  }), i("section", {
275
298
  class: "section"
276
299
  }, i("header", {
277
300
  class: "header control-header-with-border spacing-body-block-start spacing-body-inline"
278
301
  }, c(this, E, "f").call(this)), c(this, T, "f").call(this), i("footer", {
279
- class: "footer control-footer-with-border control-footer-space-between spacing-body-inline spacing-body-block-end"
280
- }, i("div", {
281
- class: "buttons-spacer"
282
- }, i("button", {
283
- // New Variable Button
284
- class: "button-secondary",
285
- disabled: !t,
286
- part: "button button-new",
287
- type: "button",
288
- onClick: c(this, C, "f")
289
- }, c(this, f, "f").footer.btnNew), i("button", {
290
- // Edit Button
291
- class: "button-secondary",
292
- disabled: !e,
293
- part: "button button-edit",
294
- type: "button",
295
- onClick: e && c(this, W, "f")
296
- }, c(this, f, "f").footer.btnEdit)), i("div", {
302
+ class: {
303
+ footer: true,
304
+ "control-footer-with-border": true,
305
+ "control-footer-space-between": e,
306
+ "spacing-body-inline": true,
307
+ "spacing-body-block-end": true
308
+ }
309
+ }, c(this, z, "f").call(this), i("div", {
297
310
  class: "buttons-spacer"
298
311
  }, i("button", {
299
312
  // Cancel Button
@@ -305,9 +318,9 @@ const S = class {
305
318
  // Confirm Button
306
319
  class: "button-primary",
307
320
  part: "button button-ok",
308
- disabled: !a,
321
+ disabled: !t,
309
322
  type: "button",
310
- onClick: a && c(this, M, "f")
323
+ onClick: t && c(this, M, "f")
311
324
  }, c(this, f, "f").footer.btnConfirm)))));
312
325
  }
313
326
  static get delegatesFocus() {
@@ -321,12 +334,13 @@ const S = class {
321
334
  }
322
335
  };
323
336
 
324
- h = new WeakMap, u = new WeakMap, f = new WeakMap, p = new WeakMap, b = new WeakMap,
337
+ d = new WeakMap, u = new WeakMap, f = new WeakMap, p = new WeakMap, b = new WeakMap,
325
338
  g = new WeakMap, m = new WeakMap, w = new WeakMap, y = new WeakMap, k = new WeakMap,
326
339
  v = new WeakMap, M = new WeakMap, W = new WeakMap, x = new WeakMap, j = new WeakMap,
327
- C = new WeakMap, _ = new WeakMap, E = new WeakMap, T = new WeakMap, z = new WeakMap;
340
+ C = new WeakMap, _ = new WeakMap, E = new WeakMap, T = new WeakMap, z = new WeakMap,
341
+ D = new WeakMap;
328
342
 
329
- S.style = l;
343
+ F.style = l;
330
344
 
331
- export { S as gx_ide_data_selector };
332
- //# sourceMappingURL=p-c624a8da.entry.js.map
345
+ export { F as gx_ide_data_selector };
346
+ //# sourceMappingURL=p-eee8a8a9.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["dataSelectorCss","CSS_BUNDLES","FILTER_ICON","getIconPath","category","name","colorType","GxIdeDataSelector","_GxIdeDataSelector_firstGridObjectId","set","this","_GxIdeDataSelector_loadItemsCallbackJustCalled","_GxIdeDataSelector_componentLocale","_GxIdeDataSelector_animateEmptyState","_GxIdeDataSelector_shortcutsSrc","getAssetPath","_GxIdeDataSelector_filterPatternEl","_GxIdeDataSelector_filterObjectEl","_GxIdeDataSelector_chShortcutsEl","_GxIdeDataSelector_chTabularGridObjectsEl","_GxIdeDataSelector_evaluateFirstRowSelection","__classPrivateFieldGet","selectRow","__classPrivateFieldSet","_GxIdeDataSelector_chGridKeyDownHandler","e","key","_GxIdeDataSelector_confirmCallbackHandler","call","stopPropagation","confirmCallback","selectedObjectsIds","_GxIdeDataSelector_editCallbackHandler","async","result","editCallback","_GxIdeDataSelector_refreshUIWithNewConfiguration","_GxIdeDataSelector_hostKeyPressHandler","_GxIdeDataSelector_objectsSelectionChangedHandler","event","detail","rowsId","_GxIdeDataSelector_newVariableCallbackHandler","response","newVariableCallback","objects","filters","pattern","_a","value","object","_c","_b","id","loading","loadItemsCallback","then","items","length","_GxIdeDataSelector_sortObjectsByName","_GxIdeDataSelector_renderFilter","h","class","htmlFor","filter","autoFocus","part","debounce","config","inputDebounce","onInput","ref","el","defaultModule","defaultValue","selectEntityCallback","selectObjectCallback","onValueChanged","_GxIdeDataSelector_renderObjects","gridIsEmpty","displayLoader","loader","data","rowSelectionMode","selectionType","onKeyDown","onSelectionChanged","undefined","settingable","size","tabularGrid","colSize","maxContent","tableHead","common","dataType","description","map","obj","rowid","onDblClick","src","type","loaderTitle","title","show","isAnimated","stateIconSrc","stateTitle","emptyState","_GxIdeDataSelector_renderEditButtons","newVariableButtonEnabled","editButtonEnabled","disabled","onClick","footer","btnNew","btnEdit","sort","a","b","nameA","toLowerCase","nameB","componentWillLoad","Locale","getComponentStrings","connectedCallback","componentDidLoad","focus","componentDidRender","suspendShortcuts","suspend","validate","isValid","render","okButtonEnabled","footerJustifySpaceBetween","Host","onKeyPress","model","cancelCallback","btnCancel","btnConfirm"],"sources":["src/components/data-selector/data-selector.scss?tag=gx-ide-data-selector&encapsulation=shadow","src/components/data-selector/data-selector.tsx"],"sourcesContent":["@import \"../../../node_modules/@genexus/mercury/dist/mercury.scss\"; // for the tabular-grid-cell-layout mixin\n\n:host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n block-size: 100%;\n}\n\n.section {\n display: contents;\n}\n\n.header__field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n\n.tabular-grid {\n contain: size;\n}\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".data\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\nch-tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n // to make the loader be positioned relative to 'ch-tabular-grid-rowset-empty'\n position: relative;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport { config } from \"../../common/config\";\nimport { EntityData } from \"../../common/types\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { TabularGridSelectionChangedEvent } from \"@genexus/chameleon-controls-library\";\n\n// Best performance bundle\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-data-selector\",\n styleUrl: \"data-selector.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/data-selector\"]\n})\nexport class GxIdeDataSelector {\n #firstGridObjectId: string; // used to select the first item after \"loadItemsCallback\"\n #loadItemsCallbackJustCalled: boolean = false; // used to select the first item after \"loadItemsCallback\"\n\n #componentLocale: any;\n #animateEmptyState: boolean = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/data-selector/shortcuts.json`);\n /* References needed to collect data */\n #filterPatternEl!: HTMLChEditElement;\n #filterObjectEl!: HTMLGxIdeEntitySelectorElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #chTabularGridObjectsEl: HTMLChTabularGridElement;\n\n @Element() el: HTMLGxIdeDataSelectorElement;\n\n /**\n * True if loadItemsCallback has been called and has not been resolved yet.\n */\n @State() loading: boolean = true;\n\n /**\n * The objects rendered in the table\n */\n @State() objects: ItemData[] = [];\n\n /**\n * The selected objects in the table of objects\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * Callback invoked when the user wishes to cancel the selection of objects.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when the user presses the 'OK' button\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when user presses the edit button. Receives the first\n * selected element id as a parameter.\n */\n @Prop() readonly editCallback: EditCallback;\n\n /**\n * Callback invoked when the component needs to reload the list of attributes.\n */\n @Prop() readonly loadItemsCallback!: LoadItemsCallback;\n\n /**\n * If true, it will display a loader when needed.\n */\n @Prop() readonly loader = false;\n\n /**\n * Callback invoked when the user presses the 'New' button.\n */\n @Prop() readonly newVariableCallback: NewVariableCallback;\n\n /**\n * Callback invoked when the action is executed in the Object filter. It returns\n * the information of the selected object (id and name) or 'undefined' if it was\n * canceled.\n */\n @Prop() readonly selectObjectCallback: SelectObjectCallback;\n\n /**\n * Single if multiple object selection is not allowed. Default is multiple\n */\n @Prop() readonly selectionType: \"single\" | \"multiple\" = \"multiple\";\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n connectedCallback() {\n this.#refreshUIWithNewConfiguration();\n }\n\n componentDidLoad() {\n this.#filterPatternEl.focus();\n }\n\n componentDidRender() {\n this.#evaluateFirstRowSelection();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n /**\n * After items have been loaded and rendered, the first row should be selected.\n */\n #evaluateFirstRowSelection = () => {\n if (this.#loadItemsCallbackJustCalled) {\n this.#chTabularGridObjectsEl.selectRow(this.#firstGridObjectId);\n }\n this.#loadItemsCallbackJustCalled = false;\n };\n\n #chGridKeyDownHandler = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n this.#confirmCallbackHandler(e);\n }\n };\n\n #confirmCallbackHandler = (e: MouseEvent | KeyboardEvent): void => {\n e.stopPropagation();\n this.confirmCallback(this.selectedObjectsIds);\n };\n\n #editCallbackHandler = async (e: MouseEvent): Promise<void> => {\n e.stopPropagation();\n if (this.selectedObjectsIds[0]) {\n const result = await this.editCallback(this.selectedObjectsIds[0]);\n if (result) {\n this.#refreshUIWithNewConfiguration();\n }\n }\n };\n\n #hostKeyPressHandler = (e: KeyboardEvent) => {\n // TODO : revise why this is necessary\n // just prevent keypress propagation\n if (e.key === \"Enter\") {\n e.stopPropagation();\n }\n };\n\n #objectsSelectionChangedHandler = (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n this.selectedObjectsIds = event.detail.rowsId;\n };\n\n #newVariableCallbackHandler = async () => {\n const response = await this.newVariableCallback();\n if (response) {\n this.#refreshUIWithNewConfiguration();\n }\n };\n #refreshUIWithNewConfiguration = (): void => {\n this.objects = [];\n const filters: FiltersData = {\n pattern: this.#filterPatternEl?.value,\n object: this.#filterObjectEl?.value?.id\n };\n this.loading = true;\n this.loadItemsCallback(filters).then((items: ItemData[]) => {\n if (items.length) {\n this.objects = this.#sortObjectsByName(items);\n this.#firstGridObjectId = this.objects[0].id;\n this.#loadItemsCallbackJustCalled = true;\n }\n this.selectedObjectsIds = [];\n this.loading = false;\n });\n };\n\n #renderFilter = (): Element[] => {\n return [\n <div class=\"header__field-group field-group\">\n <div class=\"field field-block pattern-field\">\n <label class=\"label\" htmlFor=\"filter-pattern\">\n {this.#componentLocale.filter.pattern}\n </label>\n <ch-edit\n autoFocus\n id=\"filter-pattern\"\n name=\"filter-pattern\"\n class=\"input pattern-input\"\n part=\"filter-pattern\"\n debounce={config.inputDebounce}\n onInput={this.#refreshUIWithNewConfiguration}\n ref={(el: HTMLChEditElement) =>\n (this.#filterPatternEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n <gx-ide-entity-selector\n id=\"object-selector\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectObjectCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterObjectEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"entity\"\n onValueChanged={this.#refreshUIWithNewConfiguration}\n ></gx-ide-entity-selector>\n </div>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n const displayLoader = this.loader && this.loading;\n if (!gridIsEmpty || displayLoader) {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n return (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"empty-result\": this.objects.length === 0,\n \"data\": true\n }}\n rowSelectionMode={this.selectionType}\n onKeyDown={this.#chGridKeyDownHandler}\n part=\"ch-grid-objects\"\n onSelectionChanged={\n this.objects.length ? this.#objectsSelectionChangedHandler : undefined\n }\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chTabularGridObjectsEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.name}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.dataType}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.description}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: ItemData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n onDblClick={this.#confirmCallbackHandler}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image\n src={\n obj.type === \"attribute\"\n ? \"objects/attribute\"\n : \"objects-parts/variables\"\n }\n class=\"icon-md\"\n ></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.dataType}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {displayLoader ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n ></gx-ide-empty-state>\n )}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderEditButtons = (): JSX.Element | null => {\n if (!this.editCallback && !this.newVariableCallback) {\n return null;\n }\n\n const newVariableButtonEnabled = this.newVariableCallback && !this.loading;\n const editButtonEnabled =\n this.editCallback && !this.loading && this.selectedObjectsIds.length;\n\n return (\n <div class=\"buttons-spacer\">\n {this.newVariableCallback ? (\n <button\n // New Variable Button\n class=\"button-secondary\"\n disabled={!newVariableButtonEnabled}\n part=\"button button-new\"\n type=\"button\"\n onClick={this.#newVariableCallbackHandler}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n ) : (\n []\n )}\n {this.editCallback ? (\n <button\n // Edit Button\n class=\"button-secondary\"\n disabled={!editButtonEnabled}\n part=\"button button-edit\"\n type=\"button\"\n onClick={editButtonEnabled && this.#editCallbackHandler}\n >\n {this.#componentLocale.footer.btnEdit}\n </button>\n ) : (\n []\n )}\n </div>\n );\n };\n\n #sortObjectsByName = (objects: ItemData[]): ItemData[] =>\n // TODO (make this a common helper function\n // and use it in other dialog grids that\n // require filter by name).\n objects.sort((a, b) => {\n const nameA = a.name.toLowerCase(),\n nameB = b.name.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n\n render() {\n const okButtonEnabled = !this.loading;\n const footerJustifySpaceBetween: boolean =\n !!this.newVariableCallback || !!this.editCallback;\n\n return (\n <Host onKeyPress={this.#hostKeyPressHandler} class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-block-start spacing-body-inline\">\n {this.#renderFilter()}\n </header>\n {this.#renderObjects()}\n <footer\n class={{\n \"footer\": true,\n \"control-footer-with-border\": true,\n \"control-footer-space-between\": footerJustifySpaceBetween,\n \"spacing-body-inline\": true,\n \"spacing-body-block-end\": true\n }}\n >\n {this.#renderEditButtons()}\n <div class=\"buttons-spacer\">\n <button\n // Cancel Button\n class=\"button-secondary\"\n part=\"button button-cancel\"\n type=\"button\"\n onClick={this.cancelCallback}\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // Confirm Button\n class=\"button-primary\"\n part=\"button button-ok\"\n disabled={!okButtonEnabled}\n type=\"button\"\n onClick={okButtonEnabled && this.#confirmCallbackHandler}\n >\n {this.#componentLocale.footer.btnConfirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type NewVariableCallback = () => Promise<boolean> | undefined;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SelectObjectCallback = () => Promise<EntityData | undefined>;\n\nexport type EditCallback = (id: string) => Promise<boolean> | undefined;\n\nexport type ConfirmCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadItemsCallback = (filters: FiltersData) => Promise<ItemData[]>;\n\nexport type FiltersData = {\n pattern?: string;\n object?: string;\n};\n\nexport type ItemData = {\n type: ItemType;\n id: string;\n name: string;\n dataType: string;\n description: string;\n};\n\nexport type ItemType = \"variable\" | \"attribute\";\n"],"mappings":"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"}
@@ -71,10 +71,10 @@ export declare class GxIdeDataSelector {
71
71
  validate(): Promise<boolean>;
72
72
  render(): any;
73
73
  }
74
- export type NewVariableCallback = () => Promise<boolean>;
74
+ export type NewVariableCallback = () => Promise<boolean> | undefined;
75
75
  export type CancelCallback = () => Promise<void>;
76
76
  export type SelectObjectCallback = () => Promise<EntityData | undefined>;
77
- export type EditCallback = (id: string) => Promise<boolean>;
77
+ export type EditCallback = (id: string) => Promise<boolean> | undefined;
78
78
  export type ConfirmCallback = (ids: string[]) => Promise<void>;
79
79
  export type LoadItemsCallback = (filters: FiltersData) => Promise<ItemData[]>;
80
80
  export type FiltersData = {
@@ -1,5 +1,6 @@
1
- import { ItemNode, CheckboxType } from "./select-kb-items";
1
+ import { ItemNode, CheckboxType, ActiveNode } from "./select-kb-items";
2
2
  import { TreeViewItemModel } from "@genexus/chameleon-controls-library";
3
+ export declare const ACTIVE_ITEM_DEFAULT_ICON: `${string}/${string}/${string}${string}`;
3
4
  export declare const convertItemsNodeListToFlattenedTreeViewModel: (itemsList: ItemNode[], checkboxType: CheckboxType) => TreeViewItemModel[];
4
5
  export declare const convertItemsListToTreeViewModel: (itemsList: ItemNode[], checkboxType: CheckboxType) => TreeViewItemModel[];
5
6
  export declare const unselectAllNodes: (itemsList: ItemNode[]) => void;
@@ -7,3 +8,9 @@ export declare const checkItems: (itemsList: ItemNode[], idsChecked: string[]) =
7
8
  export declare const expandItems: (itemsList: ItemNode[], idsChecked: string[]) => ItemNode[];
8
9
  export declare const selectItems: (itemsList: ItemNode[], idsSelected: string[]) => ItemNode[];
9
10
  export declare const searchParentsItems: (items: ItemNode[], ids: string[]) => string[] | null;
11
+ /**
12
+ * Recursively searches for the first node with the active=true property
13
+ * @param nodes Array of nodes to search through
14
+ * @returns An object with caption, iconStart, and path to the first active node found, or null if none is found
15
+ */
16
+ export declare const findFirstActiveNode: (nodes: ItemNode[]) => ActiveNode | null;
@@ -3,6 +3,10 @@ import { ContextMenuInfo } from "../../common/types";
3
3
  export declare class GxIdeSelectKbItems {
4
4
  #private;
5
5
  el: HTMLGxIdeSelectKbItemsElement;
6
+ /**
7
+ * Represents the active version node caption and icon (if any)
8
+ */
9
+ activeItemNode: ActiveNode;
6
10
  /**
7
11
  * Represents the nodes list model
8
12
  */
@@ -27,6 +31,10 @@ export declare class GxIdeSelectKbItems {
27
31
  * It maps to the ch-tree-view-render "toggleCheckboxes" property.
28
32
  */
29
33
  toggleCheckboxes: boolean;
34
+ /**
35
+ * Callback emitted when the user clicks on the "Active item"
36
+ */
37
+ readonly activeItemCallback?: () => Promise<void>;
30
38
  /**
31
39
  * Callback emitted when the 'cancel' button is pressed
32
40
  */
@@ -90,6 +98,7 @@ export type ItemCommon = {
90
98
  expanded: boolean;
91
99
  };
92
100
  export type ItemNode = {
101
+ active?: boolean;
93
102
  checkbox?: boolean;
94
103
  checked?: boolean;
95
104
  expanded?: boolean;
@@ -98,9 +107,15 @@ export type ItemNode = {
98
107
  id: string;
99
108
  name: string;
100
109
  nodes?: ItemNode[];
110
+ parts?: string;
101
111
  selected?: boolean;
102
112
  type: ItemType;
103
113
  };
114
+ export type ActiveNode = {
115
+ caption: string;
116
+ iconStart?: string;
117
+ path: string[];
118
+ };
104
119
  export type ItemType = {
105
120
  id: string;
106
121
  name: string;
@@ -1530,6 +1530,10 @@ export namespace Components {
1530
1530
  interface GxIdeScChatContainer {
1531
1531
  }
1532
1532
  interface GxIdeSelectKbItems {
1533
+ /**
1534
+ * Callback emitted when the user clicks on the "Active item"
1535
+ */
1536
+ "activeItemCallback"?: () => Promise<void>;
1533
1537
  /**
1534
1538
  * Callback emitted when the 'cancel' button is pressed
1535
1539
  */
@@ -3777,7 +3781,7 @@ declare namespace LocalJSX {
3777
3781
  /**
3778
3782
  * Callback invoked when user presses the edit button. Receives the first selected element id as a parameter.
3779
3783
  */
3780
- "editCallback": EditCallback;
3784
+ "editCallback"?: EditCallback;
3781
3785
  /**
3782
3786
  * Callback invoked when the component needs to reload the list of attributes.
3783
3787
  */
@@ -3789,7 +3793,7 @@ declare namespace LocalJSX {
3789
3793
  /**
3790
3794
  * Callback invoked when the user presses the 'New' button.
3791
3795
  */
3792
- "newVariableCallback": NewVariableCallback;
3796
+ "newVariableCallback"?: NewVariableCallback;
3793
3797
  /**
3794
3798
  * Callback invoked when the action is executed in the Object filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
3795
3799
  */
@@ -4609,6 +4613,10 @@ declare namespace LocalJSX {
4609
4613
  interface GxIdeScChatContainer {
4610
4614
  }
4611
4615
  interface GxIdeSelectKbItems {
4616
+ /**
4617
+ * Callback emitted when the user clicks on the "Active item"
4618
+ */
4619
+ "activeItemCallback"?: () => Promise<void>;
4612
4620
  /**
4613
4621
  * Callback emitted when the 'cancel' button is pressed
4614
4622
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genexus/genexus-ide-ui",
3
3
  "license": "Apache-2.0",
4
- "version": "1.0.70",
4
+ "version": "1.0.72",
5
5
  "description": "GeneXus IDE UI components",
6
6
  "main": "dist/index.cjs.js",
7
7
  "module": "dist/index.js",